2016-12-11 3 views
1

Мне нужно сделать репликацию базы данных Marklogic в MySql db. Хранилище Xml-файлов Marklogic Мне нужно сохранить как поля blob в таблицах MySql. Как мне это сделать?Миграция с Marklogic на MySql

+0

Сколько файлов в MarkLogic? Является ли это одноразовым дампом или периодической синхронизацией или постоянной репликацией в реальном времени? Вы уже просмотрели [mlcp] (https://developer.marklogic.com/products/mlcp) для экспорта из MarkLogic? Как насчет [marklogic java-api] (http://developer.marklogic.com/adventure/developer/java/start) или [node.js api] (http://developer.marklogic.com/adventure/developer/ nodejs/запуска)? –

ответ

1

Прежде всего, вам нужно решить, какие ваши документы MarkLogic xml и как их назвать. Например, если ваша база данных заполнена каталогизацией записей для книг, возможно, у вас есть один xml-документ на книгу.

Если в вашей системе MarkLogic имеется только одна серия документов, вы создадите одну таблицу в MySQL. Каждая строка таблицы будет содержать один XML-документ. Набор символов для таблицы должен быть utf8mb4 для получения наилучших результатов хранения xml. Он будет иметь, по крайней мере, три столбца:

  • ID INT первичный ключ суррогатного аутсорсинга.
  • имя VARCHAR (250) имя каждого документа xml. Это имя, вероятно, связано с элементом внутри каждого документа, который вы извлекаете.
  • док TEXT

Вы можете дать id столбец типа BIGINT данных, если вы знаете, что вы будете иметь больше, чем 2^31 строк в таблице.

Я предполагаю (250) размер колонки name. Это зависит от ваших данных.

Тип данных TEXT вмещает до 64 Кбайт в каждой строке. Если какой-либо из ваших xml-документов больше этого, вы можете использовать тип данных MEDIUMTEXT; он вмещает до 2^24 байта в каждой строке. TEXT и MEDIUMTEXT являются CLOB-символами больших объектов.

Как правило, лучше использовать CLOB, чем BLOB для документов xml, потому что они более элегантно обрабатывают utf8 xml.

Затем вы создаете программу для извлечения каждого документа MarkLogic по очереди и вставляете его в свою собственную строку в базе данных MySQL.

Если ваша база данных MarkLogic содержит более одной серии документов, вы должны принять решение. Например, у вас могут быть книги и периодические издания. В этом случае у вас есть два варианта.

  1. создать отдельную таблицу для каждого типа документа, например book и periodical стола.
  2. введите столбец doctype в свою единственную таблицу и сохраните все документы в одной таблице. Например, вы можете дать колонке doctype каждой строки значение book или periodical в зависимости от его содержимого.

Трудно помочь вам выбрать между этими двумя альтернативами, не зная больше о вашем приложении.

Преимущество MarkLogic - эффективный поиск в xpath больших наборов xml-документов. Если вам нужно выполнить поиск в этой базе данных MySQL на чем-либо помимо имени документа, вам нужно будет построить таблицы для перекрестных ссылок других целей, содержащие

  • доступная для поиска ценность.
  • идентификатор (идентификатор документа в первой таблице)

Если у вас есть библиографические записи, вы можете иметь перекрестные ссылки таблицы для автора, название, ISBN, номер по каталогу и т.д.

Затем вы можете получить документы, соответствующие определенным значениям поиска.

Смежные вопросы