Последовательность чтения-записи-записи - большое улучшение по сравнению с так называемой согласованностью в конечном итоге: если я изменю свой профиль picture Меня не волнует, увидят ли другие изменения через минуту, но это выглядит странно, если после перезагрузки страницы я все еще вижу старую.
Можно ли этого добиться в Cassandra без необходимости выполнять полную проверку чтения на более одного узла?
Использование ConsistencyLevel.QUORUM
допустимо при чтении неуказанных данных, и фактически читается n> 1 узлов. Однако, когда клиент читает с того же узла, что и записывает (и фактически использует то же соединение), это может быть расточительным - некоторые базы данных в этом случае всегда будут гарантировать, что ранее записанные (мои) данные возвращаются, а не какой-нибудь постарше. Использование ConsistencyLevel.ONE
не гарантирует это и предполагает, что это приводит к условиям гонки. Некоторые тесты показали это: http://cassandra-user-incubator-apache-org.3065146.n2.nabble.com/per-connection-quot-read-after-my-write-quot-consistency-td6018377. html
Моя гипотетическая установка для этого сценария: 2 узла, фактор репликации 2, уровень чтения 1, уровень записи 1. Это приводит к конечной согласованности, но я хочу согласованность чтения ваших собственных записей на читает.
Использование 3 узлов, RF = 3, RL = кворум и WL = кворум, на мой взгляд, приводит к бесполезным запросам чтения, если мне достаточно согласованности только «моих» данных.
// поисковая оптимизация: также известна как: согласованность сеанса, согласованность чтения после моей записи