CouchDB - Автоинкремент - PullRequest
0 голосов
/ 26 апреля 2011

В сценарии без репликации (или в сценарии, в котором у нас только один мастер записи), следующий код будет работать как быстрый способ присвоения документу идентификатора с автоматическим приращением для небольшой внутренней базы данных клиентов.

При вставке нового запроса клиента http://couhdb/mydb для получения метаданных

Затем добавьте doc_count + doc_deleted_count = autoIncId

Установить свойство в документе как .oldDbCompatIdThatClientIsUsedTo = auotIncId

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

1 Ответ

1 голос
/ 26 апреля 2011

Я могу придумать пару способов сделать это:

  • Создайте представление, которое возвращает max(id), и просто присвойте max(id) + 1 новому элементу (хотя здесь есть вероятность столкновения)
  • Сохраните в базе данных другой документ, который не является обычной записью, а содержит только значение последовательности. Если вы хотите сделать новую вставку, извлеките текущее значение из этого документа, добавьте его, сохраните его обратно в документ, а затем, если ничего из этого не получилось, используйте этот идентификатор для новой записи
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...