В Google Spanner временные метки фиксации генерируются сервером на основе TrueTime, как описано в https://cloud.google.com/spanner/docs/commit-timestamp. На этой странице также указано, что временные метки не гарантированно уникальны, поэтому несколько независимых авторов могут генерировать одинаковые временные метки.
В документации о гарантиях согласованности указано, что In addition if one transaction completes before another transaction starts to commit, the system guarantees that clients can never see a state that includes the effect of the second transaction but not the first.
Я пытаюсь понять комбинацию
- Множественные параллельные транзакции, фиксирующиеся «одновременно», приводящие к одной и той же временной метке фиксации (где временная метка фиксации является частью ключа для таблицы)
- Читатель наблюдает за вводом новых строк в таблицу выше
В этих обстоятельствах возможно ли, что читатель может наблюдать некоторые, но не все строки, которые (в конечном итоге) будут сохранены с одной и той же меткой времени? Или, иначе говоря, если поиск всех строк до известной точной метки времени и строки вставляются с этой меткой времени, возможно ли, что запрос сначала возвращает некоторые результаты, но при повторном выполнении возвращает больше?
Контекст этого - попытка смоделировать поток событий, упорядоченных по времени, способом только добавления - мне нужно иметь возможность удерживать то, что фактически является курсором, в определенный момент времени (точка в потоке событий) и мне нужно знать, означает ли наличие событий в момент T, что вы больше никогда не сможете получить больше событий точно в момент T.