Как скопировать одну базу данных Virtuoso в другую без прав администратора?

#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 через контрольную точку или завершение работы системы (которое включает контрольную точку).