Перейти к содержанию

NATS JetStream Key/Value

Требования применяются к прикладным данным и операциям в NATS JetStream Key/Value. Уровни обязательности определены в корневом README.md.

INT-NATS-003. Область применения JetStream KV

Уровень: MUST

Применяется к: данным проекта в JetStream Key/Value bucket

Проект должен определить роль bucket, владельца ключей, схему значения, history, TTL, максимальный размер и поведение watch после разрыва соединения. Конкурентное изменение должно использовать revision и compare-and-set (create или update), когда потерянное обновление нарушает контракт.

Код не должен предполагать read-your-writes при чтении, которое может обслуживаться follower или mirror. Он должен читать через путь с требуемой согласованностью либо быть проверяемо устойчивым к предыдущей revision.

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

Обоснование

KV предоставляет versioned key operations, но не транзакционную модель реляционной или документной базы данных.

Проверка

  • конкурентный тест create и update с устаревшей revision;
  • тест чтения предыдущей revision и восстановления watch;
  • проверка TTL, history и лимита значения;
  • сопоставление инварианта с границей одного ключа.

Исключения

Last-write-wins допустим только для значения с явно объявленной такой семантикой и тестом конкурентной записи.