update_sequence изменил семантику в облачной базе данных?
Я использую cloudant couchdb и заметил, что запрос "_changes" к базе данных возвращает "update_sequence", которая не является числом, например
"437985-g1AAAADveJzLYWBgYM..........".
Более того, ответ не является стабильным: я получаю 3 различных update_sequence, если запрос в БД 3 раза.
Есть ли какие-либо изменения в известной семантике "update_sequence", "Since" и т. Д. Или как?
С уважением, Вангелис
2 ответа
Перефразируя ответ, который Роберт ранее дал:
Значения последовательности обновления являются непрозрачными. В CouchDB они в настоящее время являются целыми числами, но в Cloudant значение представляет собой кодировку значения последовательности для каждого сегмента базы данных. CouchDB, вероятно, примет это в будущем, так как добавлена поддержка кластеризации (через слияние BigCouch).
И в CouchDB, и в Cloudant _changes будет возвращать значение "seq" для каждой строки, которая гарантированно будет возвращать более новые обновления, если вы передадите его как "с тех пор". В случае аварийного переключения это может включать изменения, которые вы уже видели.
Таким образом, правильный способ считывания изменений, поскольку конкретная последовательность обновления такова;
- вызов / имя_базы /_changes? с =
- прочитайте весь ответ, применяя изменения по мере продвижения
- Запишите значение last_seq в качестве нового значения seq контрольной точки.
Не интерпретируйте эти два значения, вы не можете сравнить их на равенство. При необходимости вы можете записать любое значение "seq", которое вы выполняете на шаге 2, в качестве текущего значения seq контрольной точки. Главное, что вы не можете сделать, это сравнить их.
Он будет прыгать, представление представляет собой упакованную строку base64, представляющую update_seq различных реплик каждого сегмента вашей базы данных. Это не может быть простым целым числом, потому что это снимок распределенной базы данных.
Что касается CouchDB, обработайте update_seq как непрозрачный JSON, и все будет в порядке.