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 допустим только для значения с явно объявленной такой семантикой и тестом конкурентной записи.