#replication #rdf #semantic-web #virtuoso
#репликация #rdf #semantic-web #virtuoso
Вопрос:
Я работаю над репликацией сред моего приложения, и одним из компонентов является хранилище Virtuoso
RDF
данных. Что мне нужно сделать, это скопировать всю базу данных с одного хоста на другой.
Я нашел эти инструкции, но они предполагают права администратора в источнике для создания дампа. У меня есть только права администратора на целевом хосте.
Есть ли способ легко скопировать всю исходную базу данных в целевую без многократного sparql
чтения или, по крайней мере, с помощью простого sparql, который не требует знания структуры данных, если я не администратор и не могу сделать дамп из источника?
Комментарии:
1. Это звучит ужасно похоже на «Я хочу украсть чью-то базу данных. Как я могу это сделать?» Отложим это в сторону… Вы можете просто скопировать
virtuoso.db
иvirtuoso.ini
, следуя чистомуcheckpoint
иshutdown
. Для полного перемещения базы данных это или резервное копирование / дамп / перезагрузка — лучшие способы. Если это действительно невозможно … вам нужно будет подробнее объяснить, почему нет, и что вы можете сделать, чтобы кто-нибудь дал вам полезный совет. (ObDisclaimer: программное обеспечение OpenLink производит Virtuoso и нанимает меня.)2. У меня есть доступ на чтение к БД и я могу видеть каждый байт, хранящийся внутри, когда я запрашиваю с помощью sparql. У меня нет доступа к файлам db и ini, поскольку я не являюсь администратором исходного кода. что касается «украсть чью-то базу данных»… Я хочу реплицировать базу данных, чтобы она была у меня локально на моем ноутбуке вместе с другими (реляционными) базами данных, которые использует мое приложение, чтобы я мог работать с приложением без подключения к Интернету, т. Е. Быть На парусной лодке или в лесу в каком-нибудь месте и работать без подключения…
3. например, для реляционных баз данных я просто считываю схему из системных таблиц, создаю свои таблицы и ограничения локально, затем импортирую данные каждой таблицы, затем создаю внешние ключи. это работает с любой базой данных. я делаю это в
Python
. Я пытаюсь выполнить ту же репликацию с Virtuoso, надеясь, что это будет не так сложно, как с SQL, потому что это, по сути, одна большая таблица с 3 полями, если мое ограниченное понимание virtuoso верно4. Внутреннее хранилище RDF не так просто, как вы себе представляете (для начала 4 столбца — субъект, предикат, объект, график / Контекст)… Инструкции, которые вы нашли, предназначены для полного дампа Virtuoso DB — не только RDF, но и всех таблиц SQL, объектов WebDAV и т. Д. Если вам просто нужен дамп RDF одного или нескольких графиков , вы можете использовать разные инструменты — но для такого рода действий обычно требуется доступ пользователя (не обязательно администратора ) к файловой системе.
5. Вы можете использовать такие вещи, как
CONSTRUCT
запросы к конечной точке SPARQL через curl или веб-браузер, чтобы получить файлы RDF в различных сериализациях, которые могут доставить то, что вам нужно… но гораздо лучше получить временный доступ к текущему хосту или попросить администратора отправить вам файлы.
Ответ №1:
Если вы хотите перенести документ базы данных Virtuoso из одной системы в другую, вы можете это сделать, если в месте назначения установлен двоичный файл сервера базы данных Virtuoso.
Ваша целевая база данных (копия) будет включать все данные, хранящиеся в Virtuoso SQL Relational, RDF Property Graph и в хранилищах WebDAV.
В идеале вы должны перевести исходную базу данных в стабильное состояние перед копированием файлов virtuoso.db и virtuoso.ini через контрольную точку или завершение работы системы (которое включает контрольную точку).