1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/opensci-gStore

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
USAGE.md 28 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 27.11.2024 22:42 364e048

gStore в настоящее время включает тринадцать исполняемых файлов и другие.

Все команды gStore должны использоваться в корневом каталоге gStore, например, bin/gconsole, поскольку исполняемые файлы размещаются в bin/, и они могут использовать некоторые файлы, пути к которым указаны в коде, а не абсолютные пути. Мы обеспечим, чтобы все пути были абсолютными позже, попросив пользователей указать абсолютный путь в своих системах для реальной установки/конфигурации gStore. Однако вы должны сделать так, как мы сказали сейчас, чтобы избежать ошибок.

0. Формат данных

Данные RDF должны быть представлены в формате N-Triple (XML на данный момент не поддерживается), а запросы должны быть заданы в синтаксисе SPARQL 1.1. Не весь синтаксис в SPARQL 1.1 анализируется и обрабатывается в системе gStore, например, путь свойства выходит за рамки возможностей системы gStore. В сущности, литерале или предикатах данных и запросов не допускаются вкладки, '<' и '>'.


1. gbuild

После того как вы скачаете и скомпилируете код системы gStore, автоматически будет создана база данных с именем system (реальное имя каталога — system.db). Это база данных, которая управляет информацией о системной статистике, включая всех пользователей и все базы данных. Вы можете запросить эту базу данных с помощью команды gquery, но вам запрещено изменять её с помощью редакторов.

gbuild используется для создания новой базы данных из файла формата RDF-тройки.

# bin/gbuild db_name rdf_triple_file_path

Например, мы создаём базу данных из lubm.nt, которую можно найти в папке data.

[bookug@localhost gStore]$ bin/gbuild lubm ./data/lubm/lubm.nt 
gbuild...
argc: 3 DB_store:lubm      RDF_data: ./data/lubm/lubm.nt  
begin encode RDF from : ./data/lubm/lubm.nt ...

Обратите внимание:

— Вы не должны создавать пустую базу данных, потому что это вызовет проблемы.


2. gquery

gquery используется для запроса существующей базы данных файлами, содержащими запросы SPARQL (каждый файл содержит ровно один запрос SPARQL).

Введите bin/gquery db_name query_file, чтобы выполнить запрос SPARQL, полученный из query_file в базе данных с именем db_name.

Используйте bin/gquery --help для получения подробной информации об использовании gquery.

Чтобы войти в консоль gquery, введите bin/gquery db_name. Программа покажет командную строку («gsql>»), и вы сможете ввести здесь команду. Используйте help, чтобы увидеть основную информацию обо всех командах, а help command_t показывает детали указанной команды.

Введите quit, чтобы выйти из консоли gquery.

Для команды sparql введите путь к файлу, который содержит один запрос SPARQL. (Ответ перенаправления в файл поддерживается)

Когда программа завершает ответ на запрос, она снова показывает командную строку.

gStore2.0 поддерживает только простые запросы «select» (не для предикатов).

Мы также берём lubm.nt в качестве примера.

[bookug@localhost gStore]$ bin/gquery lubm
gquery...
argc: 2 DB_store:lubm/
loadTree...
LRUCache initial...
LRUCache initial finish
finish loadCache
finish loadEntityID2FileLineMap
open KVstore
finish load
finish loading
Type `help` for information of all commands
Type `help command_t` for detail of command_t
gsql>sparql ./data/lubm/lubm_q0.sql
... ...
Total time used: 4ms.
final result is : 
<http://www.Department0.University0.edu/FullProfessor0>
<http://www.Department1.University0.edu/FullProfessor0>
<http://www.Department2.University0.edu/FullProfessor0>
<http://www.Department3.University0.edu/FullProfessor0>
<http://www.Department4.University0.edu/FullProfessor0>
<http://www.Department5.University0.edu/FullProfessor0>
<http://www.Department6.University0.edu/FullProfessor0>
<http://www.Department7.University0.edu/FullProfessor0>
<http://www.Department8.University0.edu/FullProfessor0>
<http://www.Department9.University0.edu/FullProfessor0>
<http://www.Department10.University0.edu/FullProfessor0>
<http://www.Department11.University0.edu/FullProfessor0>
<http://www.Department12.University0.edu/FullProfessor0>
<http://www.Department13.University0.edu/FullProfessor0>
<http://www.Department14.University0.edu/FullProfessor0>

Обратите внимание:

— «[empty Использование библиотеки readline

Используется библиотека readline, поэтому в вашей клавиатуре можно использовать клавишу со стрелкой вверх для просмотра истории команд, а также клавиши со стрелками влево и вправо для перемещения и изменения всей команды.

Поддержка завершения пути для утилиты

Для утилиты поддерживается завершение пути. (Не встроенное завершение команд.)

Чтобы вывести результат в файлы на диске, используйте команду sparql ${YOUR_QUERY} > ${YOUR_FILE} в консоли.


3. ghttp

ghttp запускает gStore как HTTP-сервер с портом 9000 (вам нужно открыть этот порт в своей среде, рекомендуется использовать инструмент iptables). Посетите сервер из браузера по предварительному URL, после чего gStore выполнит соответствующую операцию.

Тип:

bin/ghttp db_name serverPort или bin/ghttp serverPort db_name, чтобы запустить сервер с serverPort и изначально загрузить базу данных с именем db_name.

Внимание: аргумент serverPort или db_name можно опустить.

Если вы опустите аргумент serverPort в команде, соответствующее значение будет установлено по умолчанию равным 9000.

Если вы опускаете аргумент db_name в команде, сервер запустится без загруженной базы данных.

Операция: сборка, загрузка, выгрузка, пользователь, showUser, запрос, удаление, мониторинг, показ, контрольная точка, getCoreVersion, getAPIVersion.

// инициализация
GstoreConnector gc("127.0.0.1", 9000, "root", "123456");

// создать новую базу данных из файла RDF.
gc.build("lubm", "data/lubm/lubm.nt");

// загрузить созданную базу данных.
gc.load("lubm");

// добавить пользователя (с именем пользователя: Jack, паролем: 2)
gc.user("add_user", "Jack", "2");

// предоставить привилегии пользователю Jack (add_query, add_load, add_unload)
gc.user("add_query", "Jack", "lubm");

// удалить привилегии пользователя Jack (delete_query, delete_load, delete_unload)
gc.user("delete_query", "Jack", "lubm");

//удалить пользователя (с именем пользователя: Jack, паролем: 2)
gc.user("delete_user", "Jack", "2");

// показать всех пользователей
gc.showUser();

// запрос
res = gc.query("lubm", "json", sparql);
std::cout << res << std::endl;

// сохранить обновления загруженной базы данных
gc.checkpoint("lubm");

// показать статистическую информацию о загруженной базе данных
gc.monitor("lubm");

// показать все уже созданные базы данных и загружены ли они
gc.show();

// выгрузить эту базу данных.
gc.unload("lubm");

// полностью удалить уже созданную базу данных
gc.drop("lubm", false);

// удалить уже созданную базу данных, но оставить резервную копию.
gc.drop("lubm", true);

// получить CoreVersion и APIVersion
gc.getCoreVersion();
gc.getAPIVersion();

db_name: имя базы данных, например lubm format: html, json, txt, csv sparql: select ?s where { ?s ?p ?o . } ds_path на сервере: например /home/data/test.n3 операция: тип операции: например, загрузка, выгрузка, запрос... тип: тип операции, которую вы выполняете над пользователем, например: add_user, delete_user, add_query, add_load... имя пользователя: имя пользователя, который выполняет операцию пароль: пароль пользователя, который выполняет операцию

ghttp поддерживает запросы типа GET и POST. ghttp поддерживает одновременные запросы только для чтения, но когда приходят запросы, содержащие обновления, вся база данных будет заблокирована. Рекомендуется, чтобы количество одновременно выполняемых запросов было меньше 300 на машине с десятками потоков ядра, хотя в наших экспериментах мы можем выполнять 13 000 запросов одновременно. Чтобы использовать функцию параллелизма, вам лучше изменить системные настройки «открытых файлов» и «максимальных процессов» на 65 535 или больше. В папке setup размещены три скрипта, которые помогут вам изменить настройки в различных дистрибутивах Linux.

Если запросы, содержащие обновления, отправляются через ghttp, вам лучше часто отправлять команду checkpoint в консоль ghttp. В противном случае обновления могут не синхронизироваться с диском и будут потеряны, если сервер ghttp остановится ненормально (например, введите «Ctrl+C»).

Внимание: лучше не останавливать ghttp простым вводом команды «Ctrl+C», потому что это небезопасно.

Чтобы остановить сервер ghttp, вы можете ввести bin/shutdown serverPort.


4. gserver

Это сейчас не поддерживается.

gserver — это демон. Его следует запускать первым при доступе к gStore через gclient или... API

API взаимодействует с клиентом через сокет.

[bookug@localhost gStore]$ bin/gserver -s
Сервер запущен на порту 3305.

Вы также можете назначить пользовательский порт для прослушивания.

[bookug@localhost gStore]$ bin/gserver -s -p 3307
Сервер запущен на порту 3307.

Остановить сервер можно:

[bookug@localhost gStore]$ bin/gserver -t
Сервер остановлен на порту 3305.

Примечание: gserver не поддерживает несколько потоков. Если вы запустите gclient более чем в одном терминале одновременно, gserver упадёт.


5. gclient

В настоящее время не поддерживается.

gclient предназначен как клиент для отправки команд и получения обратной связи.

[bookug@localhost gStore]$ bin/gclient 
ip=127.0.0.1 port=3305
gsql>

Вы также можете указать IP-адрес и порт gserver.

[bookug@localhost gStore]$ bin/gclient 172.31.19.15 3307
ip=172.31.19.15 port=3307
gsql>

Теперь мы можем использовать следующие команды:

  • help показывает информацию обо всех командах;

  • import db_name rdf_triple_file_name создаёт базу данных из файла троек RDF;

  • load db_name загружает существующую базу данных;

  • unload db_name выгружает базу данных, но не удаляет её с диска, вы можете загрузить её в следующий раз;

  • sparql "query_string" запрашивает текущую базу данных с помощью строки запроса SPARQL (в кавычках);

  • show отображает имя текущей загруженной базы данных.

Примечание:

  • в консоли gclient может быть загружена только одна база данных;

  • вы можете использовать ' ' или '\t' между различными частями команды, но не используйте такие символы, как ';';

  • не следует размещать пробел или табуляцию перед началом любой команды.


6. gconsole

В настоящее время не поддерживается.

gconsole — это основная консоль gStore, которая интегрируется со всеми функциями для работы с gStore, а также некоторыми системными командами. Предоставляются завершение имени команд, функции редактирования строк и доступ к списку истории. Не стесняйтесь попробовать, и у вас может получиться замечательное путешествие! (Пробелы или табуляции в начале или конце допустимы, и нет необходимости вводить какие-либо специальные символы в качестве разделителей).

Просто введите bin/gconsole в корневом каталоге gStore, чтобы использовать эту консоль, и вы увидите подсказку gstore>, которая указывает, что вы находитесь в собственном режиме и теперь можете вводить собственные команды. Существует ещё один режим этой консоли, который называется удалённым режимом. Просто введите connect в собственном режиме, чтобы войти в удалённый режим, и введите disconnect, чтобы выйти в собственный режим. (Консоль подключается к серверу gStore с IP-адресом '127.0.0.1' и портом 3305, вы можете указать их, набрав connect gStore_server_ip gStore_server_port).

В собственном или удалённом режиме вы можете использовать help или ?, чтобы просмотреть справочную информацию, или ввести help command_name или ? command_name, чтобы увидеть информацию о данной команде. Обратите внимание, что существуют некоторые различия между командами в собственном и удалённом режимах. Например, системные команды, такие как ls, cd и pwd, предоставляются в собственном режиме, но не в удалённом. Также обратите внимание, что не все команды, содержащиеся на странице справки, полностью реализованы, и мы можем изменить некоторые функции консоли в будущем.

Того, что мы сделали, достаточно, чтобы обеспечить вам большое удобство использования gStore, просто наслаждайтесь!


7. gadd

gadd используется для вставки троек в файл в существующую базу данных.

Использование: bin/gadd db_name rdf_triple_file_path

[bookug@localhost gStore]$ bin/gadd lubm ./data/lubm/lubm.nt
...
argc: 3 DB_store:lubm   insert file:./data/lubm/lubm.nt
get important pre ID
...
insert rdf triples done.
inserted triples num: 99550

8. gsub

gsub используется для удаления троек в файле из существующей базы данных.

Использование: bin/gsub db_name rdf_triple_file_path

[bookug@localhost gStore]$ bin/gsub lubm ./data/lubm/lubm.nt
...
argc: 3 DB_store:lubm  remove file: ./data/lubm/lubm.nt
...
remove rdf triples done.
removed triples num: 99550

9. gmonitor

После запуска ghttp введите bin/gmonitor ip port db_name, чтобы проверить текущее состояние базы данных db_name в gStore. bin/gmonitor 127.0.0.1 9000 lubm

*parameter: ?operation=monitor&db_name=lubm*

*request: http://127.0.0.1:9000/%3Foperation%3Dmonitor%26db_name%3Dlubm*

*null--->[HTTP/1.1 200 OK]*

*Content-Length--->[127]*

*database: lubm*

*triple num: 99550*

*entity num: 28413*

*literal num: 0*

*subject num: 14569*

*predicate num: 17*

*connection num: 7*

10. gshow

После запуска ghttp введите bin/gshow ip port, чтобы проверить загруженную базу данных.

*[bookug@localhost gStore]$ bin/gshow 127.0.0.1 9000*

*parameter: ?operation=show*

*request: http://127.0.0.1:9000/%3Foperation%3Dshow*

*null--->[HTTP/1.1 200 OK]*

*Content-Length--->[4]*

*database: lubm*

11. gdrop

Чтобы удалить базу данных, не следует просто вводить rm -r db_name.db, потому что это не обновит встроенную базу данных с именем system. Вместо этого введите bin/gdrop db_name.


12. shutdown

После запуска ghttp введите bin/shutdown port, чтобы остановить сервер, вместо того чтобы просто ввести команду «Ctrl+C».


13. ginit

Если вы хотите восстановить исходную конфигурацию сервера ghttp, введите bin/ginit, чтобы перестроить system.db.


14. Тестовые утилиты

Серия тестовых программ находится в папке scripts, и мы представим несколько полезных: full_test.sh, basic_test.sh, update_test.cpp, parser_test.sh, dataset_test.cpp и gtest.cpp.

full_test.sh используется для сравнения производительности gStore и других систем баз данных на нескольких наборах данных и запросах.

Для использования утилиты full_test.sh необходимо загрузить систему базы данных, которую вы хотите протестировать и сравнить, и установить точное положение систем баз данных и наборов данных в этом скрипте. Стратегия именования должна быть такой же, как требования gtest, а также стратегия журналов.

В этом сценарии тестируются и сравниваются только gStore и Jena, но легко добавить другие системы баз данных, если вы захотите потратить некоторое время на чтение этого сценария. Вы можете перейти к отчёту об испытаниях (pdf/gstore测试报告.pdf) или часто задаваемым вопросам (FAQ.md), если у вас возникнут проблемы.

basic_test.sh используется для проверки правильности сборки/запроса/добавления/вычитания/удаления на нескольких небольших наборах данных.

Просто запустите bash scripts/basic_test.sh, чтобы использовать этот скрипт.

На самом деле make test проведёт basic_test.sh выше, update_test.cpp и parser_test.sh ниже.

Рекомендуется завершать эту проверку каждый раз после добавления некоторых модификаций и повторной компиляции (включая случай обновления кода с помощью git pull).

update_test.cpp используется для проверки корректности многократной вставки/удаления.

Чтобы использовать эту утилиту, вы найдёте исполняемый файл update_test в каталоге scripts после компиляции всего проекта с помощью make.

Запустите scripts/update_test > /dev/null, чтобы завершить этот тест, и вы увидите вывод в конце, указывающий, успешно он выполнен или нет.

Эта команда проверит 10 000 групп вставок/удалений и 1–5 троек для каждой группы по умолчанию. Чтобы изменить количество групп и размер группы, можно запустить следующим образом:

bin/update_test ${YOUR_GROUP_NUMBER} > /dev/null

bin/update_test ${YOUR_GROUP_NUMBER} ${YOUR_GROUP_SIZE} > /dev/null

parser_test.sh используется для проверки корректности парсера.

Просто запустите bash scripts/parser_test.sh, чтобы использовать этот сценарий.

dataset_test.cpp используется для проверки корректности сборки/запроса на нескольких больших наборах данных.

Если вы хотите проверить правильность сборки/запроса для больших наборов данных, вы можете найти исполняемый файл dataset_test в каталоге scripts после компиляции всего проекта с помощью make.

Запустите scripts/dataset_test ${DB_NAME} ${DATASET_PATH} ${QUERY_PATH} ${ANSWER_PATH}> /dev/null, чтобы закончить этот тест, и вы увидите вывод в конце, указывающий, успешно ли он выполнен.

Обратите внимание:

— Вы должны разместить запросы и ответы следующим образом:

${YOUR_DATA_PATH}*.sql 

${YOUR_DATA_PATH}*.txt

— ${QUERY_PATH} и ${ANSWER_PATH} должны заканчиваться символом '/'.

— Запрос и его ответ должны иметь одинаковое имя, для Для тестирования gStore с использованием различных наборов данных и запросов применяется gtest.

Чтобы использовать утилиту gtest, сначала скомпилируйте программу gtest с помощью команды make gtest. Программа gtest представляет собой инструмент тестирования, который генерирует структурированные логи для наборов данных. Подробные сведения можно получить, введя команду ./gtest --help в рабочем каталоге.

При необходимости измените пути в файле test/gtest.cpp.

Наборы данных и запросы следует размещать следующим образом:

DIR/WatDiv/database/*.nt 

DIR/WatDir/query/*.sql 

Обратите внимание, что DIR — это корневой каталог, куда помещаются все наборы данных, которые будут использоваться gtest. WatDir — класс наборов данных, как и lubm. Внутри WatDir (или lubm и т. д.) разместите все наборы данных (с расширением .nt) в папке database/, а все запросы (соответствующие наборам данных, с расширением .sql) — в папке query/.

Затем вы можете запустить программу gtest с заданными параметрами. Выходные данные будут разделены на три лога в корневом каталоге gStore: load.log (время и размер загрузки базы данных), time.log (время запроса) и result.log (результаты всех запросов, не полные выходные строки, а информация о том, совпадают ли две выбранные системы баз данных).

Все логи, созданные этой программой, имеют формат TSV (разделены символом '\t'), их можно загрузить непосредственно в Calc/Excel/Gnumeric. Обратите внимание, что единица измерения времени — мс, единица измерения пространства — кб.

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/opensci-gStore.git
git@api.gitlife.ru:oschina-mirror/opensci-gStore.git
oschina-mirror
opensci-gStore
opensci-gStore
master