Я предполагаю, что вы смотрите на Java реализацию SODA (поскольку вы упомянули, что выполняете проект Java).
Компонент версии каждого документ автоматически поддерживается SODA и используется в качестве индикатора того, что содержимое документа изменилось. Каждый раз, когда содержимое документа изменяется (например, из-за оператора замены), версия изменяется. Один из распространенных способов, который полезен, - это «optimisti c блокировка»: вы можете использовать версию, чтобы убедиться, что документ не изменился, прежде чем обновлять или удалять документ в транзакции. Например:
col.find().key("k1").version("123E...").replaceOneAndGet(...)
Это заменит документ с ключом k1
, но только если его версия совпадает с предоставленной строкой шестнадцатеричной версии (т.е. если другая транзакция обновила документ после того, как ваша транзакция прочитала его в последний раз, тогда его сохраненная версия не будет соответствовать той, которая была предоставлена в методе version(...)
, и замена не будет успешной).
Как получить текущую версию документа? Когда вы изначально вставляете документ с использованием insertAndGet(...)
, возвращаемый результат будет содержать автоматически созданную версию для этого документа. Если вы успешно обновите документ, используя replaceOneAndGet(...)
, возвращенный результат также будет иметь обновленную версию.
Версия также может использоваться как eTag, если вы создаете приложение REST.
Доступны различные методы управления версиями (их можно выбрать во время создания коллекции). Их описание смотрите здесь . Соответствующий метод можно выбрать во время создания коллекции.
В настоящее время значение по умолчанию для локальной базы данных - SHA256, но мы переходим от этого к UUID (его дешевле генерировать, и он не блокирует некоторые оптимизации, которые мы хотим сделать в будущем). Это уже новый стандарт по умолчанию для SODA в некоторых облачных средах (облачные сервисы автономных баз данных). Если вам нужна дополнительная информация о плюсах и минусах различных методов управления версиями или о том, как настроить коллекцию с их помощью, дайте мне знать. В общем, мы рекомендуем использовать UUID, если нет веских причин выбрать другой метод управления версиями.