Проблема синхронизации облачного dashdb

Мы создали хранилище с исходной базой данных в облачном хранилище. Изначально мы запустили процесс обнаружения схемы для примерно 40 000 записей. Наша облачная база данных насчитывает около 2 миллионов записей. Теперь проблема, с которой мы сталкиваемся, состоит в том, что у нас есть много записей в таблице _OVERFLOW в DashDB (означает, что они были отклонены) с ошибкой типа "[столбец не существует в обнаруженной схеме. Документ не был импортирован.]"

Мне кажется, проблема в том, что облачная база данных, которая на самом деле является результатом dbcopy, содержит частичные элементы в документах, и поскольку эти частичные значения создаются внутренне облачными средствами со значением, о котором мы можем судить только после создания частичных значений, таких как "40000000-5fffffff" в dd не обнаруживается процессом обнаружения схемы, и теперь все документы, которые имеют неоткрытые частичные значения, отклоняются синхронизацией cloudant-dashdb.

У кого-нибудь есть идеи, как это решить..

2 ответа

Первоначально мы запустили процесс обнаружения схемы на примерно 40 000 записей. Наша база данных состоит из около 2 миллионов записей

Все ли эти 2 миллиона используют одну и ту же схему? Я верю нет.

"[столбец не существует в обнаруженной схеме. Документ не был импортирован.]"

Это означает, что в течение ваших первых 40 000 приложений сканирования записей не было найдено ни одного документа с этим полем.

Допустим, последовательность документов в вашей базе данных Cloudant:

  • 500 000 документов, соответствующих схеме А
  • 800'000 документов, соответствующих схеме B
  • 700 000 документов, соответствующих схеме C

И ваш процесс обнаружения проверен только первые 40'000. Это никогда не доходило до схемы B и C.

Я бы порекомендовал заново запустить процесс обнаружения и обработать все 2 миллиона записей. Это займет время, но гарантирует, что все поля будут обнаружены.

Лучше всего решить эту проблему с помощью простого трюка: передать алгоритму обнаружения схемы ровно один документ со структурой, которую вы хотите создать в своей цели dashDB.

Если вы можете создать такой "шаблонный" документ заранее, пусть алгоритм обнаружит его и загрузит в dashDB. С непрерывной репликацией из Cloudant в dashDB вы можете сделать так, чтобы dbcopy загружал ваши фактические документы в базу данных, которая служит источником для вашей синхронизации cloudant-dashdb.

Другие вопросы по тегам