Импорт и экспорт базы данных OrientDB

OrientDB – это многомодельная база данных NoSQL, поддерживающая графики и документальные БД. Это приложение Java можно использовать в любой системе. OrientDB также предоставляет полную поддержку ACID и репликаций master-master.

СУБД OrientDB разработана одноименной компанией и имеет Enterprise и Community edition.

Примечание: Для демонстрации операций импорта и экспорта данных будет использоваться стандартная БД GratefulDeadConcerts.

Требования

  • Настроенный сервер Ubuntu 14.04 (инструкции по начальной настройке сервера можно найти здесь);
  • Предварительно установленная и настроенная СУБД OrientDB (пошаговое руководство по установке OrientDB – здесь).

1: Экспорт базы данных OrientDB

Чтобы выполнить операцию импортирования, нужно сначала экспортировать данные.

Если сервис OrientDB не запущен, запустите его:

sudo service orientdb start

Если вы не знаете точно, запущен он или нет, проверь его состояние:

sudo service orientdb status

Подключитесь к серверу OrientDB при помощи консоли:

sudo -u orientdb /opt/orientdb/bin/console.sh

Вывод выглядит так:

OrientDB console v.2.1.3 (build UNKNOWN@r; 2015-10-04 10:56:30+0000) www.orientdb.com
Type 'help' to display all the supported commands.
Installing extensions for GREMLIN language v.2.6.0
orientdb>

Затем подключитесь к БД, которую нужно экспортировать. В данном случае пользователь admin с паролем admin подключается к стандартной БД GratefulDeadConcerts:

connect plocal:/opt/orientdb/databases/GratefulDeadConcerts  admin admin
Connecting to database [plocal:/opt/orientdb/databases/GratefulDeadConcerts] with user 'admin'...OK
orientdb {db=GratefulDeadConcerts}>

Также можно подключиться к БД в удалённом режиме, что позволяет устанавливать соединение с БД одновременно нескольким пользователям.

connect remote:127.0.0.1/GratefulDeadConcerts  admin admin
Disconnecting from the database [null]...OK
Connecting to database [remote:127.0.0.1/GratefulDeadConcerts] with user 'admin'...OK
orientdb {db=GratefulDeadConcerts}>

Теперь нужно экспортировать БД.

Команда export экспортирует текущую БД в сжатый файл в формате JSON. Для примера попробуйте экспортировать БД в каталог баз данных OrientDB, /opt/orientdb/databases:

export database /opt/orientdb/databases/GratefulDeadConcerts.export

Команда вернёт такой вывод:

Exporting current database to: database /opt/orientdb/databases/GratefulDeadConcerts.export in GZipped JSON format ...
Started export of database 'GratefulDeadConcerts' to /opt/orientdb/databases/GratefulDeadConcerts.export.gz...
Exporting database info...OK
Exporting clusters...OK (15 clusters)
Exporting schema...OK (14 classes)
Exporting records...
- Cluster 'internal' (id=0)...OK (records=3/3)
- Cluster 'index' (id=1)...OK (records=5/5)
- Cluster 'manindex' (id=2)...OK (records=1/1)
- Cluster 'default' (id=3)...OK (records=0/0)
- Cluster 'orole' (id=4)...OK (records=3/3)
- Cluster 'ouser' (id=5)...OK (records=3/3)
- Cluster 'ofunction' (id=6)...OK (records=0/0)
- Cluster 'oschedule' (id=7)...OK (records=0/0)
- Cluster 'orids' (id=8)...OK (records=0/0)
- Cluster 'v' (id=9).............OK (records=809/809)
- Cluster 'e' (id=10)...OK (records=0/0)
- Cluster 'followed_by' (id=11).............OK (records=7047/7047)
- Cluster 'written_by' (id=12).............OK (records=501/501)
- Cluster 'sung_by' (id=13).............OK (records=501/501)
- Cluster '_studio' (id=14)...OK (records=0/0)
Done. Exported 8873 of total 8873 records
Exporting index info...
- Index OUser.name...OK
- Index dictionary...OK
- Index ORole.name...OK
OK (3 indexes)
Exporting manual indexes content...
- Exporting index dictionary ...OK (entries=0)
OK (1 manual indexes)
Database export completed in 60498ms

База данных успешно экспортирована.

Откройте новый терминал сервера и просмотрите содержимое каталога databases:

ls -lh /opt/orientdb/databases

В нём должна появиться экспортированная база данных:

total 164K
drwxr-xr-x 2 orientdb orientdb 4.0K Nov 27 02:36 GratefulDeadConcerts
-rw-r--r-- 1 orientdb orientdb 158K Nov 27 14:19 GratefulDeadConcerts.export.gz

Вернитесь в предыдущий терминал, в котором открыта консоль OrientDB, и отключитесь от БД:

disconnect
Disconnecting from the database [GratefulDeadConcerts]...OK
orientdb>

2: Импорт базы данных

Теперь нужно импортировать БД. По умолчанию импортируемые данные переписывает существующие данные в БД, в которую они импортируются. Подключитесь к целевой БД. В данном примере будет использована стандартная БД, как и в предыдущем разделе.

connect plocal:/opt/orientdb/databases/GratefulDeadConcerts  admin admin

Также можно подключиться к ней с помощью:

connect remote:127.0.0.1/GratefulDeadConcerts  admin admin

Появится примерно такой вывод:

Connecting to database [remote:127.0.0.1/GratefulDeadConcerts] with user 'admin'...OK
orientdb {db=GratefulDeadConcerts}>

В зависимости от количества импортируемых записей на выполнение этой операции может уйти несколько минут.

Вывод команды выглядит так (ниже приведён фрагмент):

Importing database database /opt/orientdb/databases/GratefulDeadConcerts.export.gz...
Started import of database 'remote:127.0.0.1/GratefulDeadConcerts' from /opt/orientdb/databases/GratefulDeadConcerts.export.gz...
Non merge mode (-merge=false): removing all default non security classes
...
Done. Imported 8,865 records in 915.51 secs
Importing indexes ...
- Index 'OUser.name'...OK
- Index 'dictionary'...OK
- Index 'ORole.name'...OK
Done. Created 3 indexes.
Importing manual index entries...
- Index 'dictionary'...OK (0 entries)
Done. Imported 1 indexes.
Rebuild of stale indexes...
Stale indexes were rebuilt...
Deleting RID Mapping table...OK
Database import completed in 1325943 ms

Отключитесь от БД:

disconnect

Закройте консоль OrientDB и вернитесь в стандартную сессию:

exit

Заключение

Обратите внимание, что в течение всего процесса импортирования и экспортирования данных БД не блокируется, а потому может принимать новые записи.

Для получения более подробной информации по этой теме обратитесь к официальному руководству OrientDB.

Tags: ,

Добавить комментарий