Проблема синхронизации облачного 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.