Spring-Couchbase автоматически генерирует уникальный идентификатор не для производства? - PullRequest
0 голосов
/ 30 сентября 2018

Документация по функциям и справочный документ модуля spring-data-couchbase говорят, что функция генерации идентификаторов с использованием встроенной стратегии генерации 'UNIQUE' должна быть толькоиспользуется для испытаний лесов.Это утверждение дается без объяснения.

Почему этот метод не подходит для производства?


Пример использования:

@Document
class Entity(
             @Id
             @GeneratedValue(strategy = GenerationStrategy.UNIQUE)
             val id: String?,
             @Version
             val version: String?,
             @CreatedDate
             val creationTime: LocalDateTime?
)

1 Ответ

0 голосов
/ 01 октября 2018

Запись в couchbase по умолчанию асинхронна, то же самое с представлениями и индексами.Но если вам нужна строгая согласованность (прочитайте после того, как вы напишите), вы должны получить документ по его ключу.

Итак, если вы полагаетесь на базу данных, чтобы автоматически сгенерировать для них ключ, вам нужно будет подождать, пока документ фактически не сохранится в базе данных, чтобы вернуть сгенерированный идентификатор.Это ожидание может значительно увеличить общую пропускную способность записи.

Создание собственных идентификаторов также считается хорошей практикой, но, пожалуйста, избегайте генерации последовательных идентификаторов (недостаток безопасности owasp - последовательные идентификаторы).

Этокод, который я использую для генерации идентификатора:

public String generateId(Class t) {
    return t.getSimpleName()+"--"+UUID.randomUUID().toString()+UUID.randomUUID().toString();
}
...