Skip to content

Commit f30b736

Browse files
authored
Merge pull request #103487 from abinav2307/main
Update consistency-levels for Session Consistency
2 parents 0c80782 + 466952c commit f30b736

File tree

1 file changed

+19
-17
lines changed

1 file changed

+19
-17
lines changed

articles/cosmos-db/consistency-levels.md

Lines changed: 19 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -92,40 +92,42 @@ The following graphic illustrates the bounded staleness consistency with musical
9292

9393
### Session consistency
9494

95-
In session consistency, within a single client session reads are guaranteed to honor the consistent-prefix, monotonic reads, monotonic writes, read-your-writes, and write-follows-reads guarantees. This assumes a single "writer" session or sharing the session token for multiple writers.
95+
In session consistency, within a single client session, reads are guaranteed to honor the read-your-writes, and write-follows-reads guarantees. This assumes a single writer session or sharing the session token for multiple writers.
9696

97-
Clients outside of the session performing writes will see the following guarantees:
97+
Like all consistency levels weaker than Strong, writes are replicated to a minimum of three replicas (in a four replica set) in the local region, with asynchronous replication to all other regions.
9898

99-
- Consistency for clients in same region for an account with single write region = [Consistent Prefix](#consistent-prefix-consistency)
100-
- Consistency for clients in different regions for an account with single write region = [Consistent Prefix](#consistent-prefix-consistency)
101-
- Consistency for clients writing to a single region for an account with multiple write regions = [Consistent Prefix](#consistent-prefix-consistency)
102-
- Consistency for clients writing to multiple regions for an account with multiple write regions = [Eventual](#eventual-consistency)
103-
- Consistency for clients using the [Azure Cosmos DB integrated cache](integrated-cache.md) = [Eventual](#eventual-consistency)
99+
After every write operation, the client receives an updated Session Token from the server. These tokens are cached by the client and sent to the server for read operations in a specified region. If the replica against which the read operation is issued contains data for the specified token (or a more recent token), the requested data is returned. If the replica does not contain data for that session, the client will retry the request against another replica in the region. If necessary, the client will retry the read against additional available regions until data for the specified session token is retrieved.
100+
101+
> [!IMPORTANT]
102+
> In Session Consistency, the client’s usage of a session token guarantees that data corresponding to an older session will never be read. However, if the client is using an older session token and more recent updates have been made to the database, the more recent version of the data will be returned despite an older session token being used. The Session Token is used as a minimum version barrier but not as a specific (possibly historical) version of the data to be retrieved from the database.
103+
104+
If the client did not initiate a write to a physical partition, it will not contain a session token in its cache and reads to that physical partition will behave as reads with Eventual Consistency. Similarly, if the client is re-created, its cache of session tokens will also be re-created. Here too, read operations will follow the same behavior as Eventual Consistency until subsequent write operations rebuild the client’s cache of session tokens.
105+
106+
> [!IMPORTANT]
107+
> If Session Tokens are being passed from one client instance to another, the contents of the token should not be modified.
104108
105109
Session consistency is the most widely used consistency level for both single region as well as globally distributed applications. It provides write latencies, availability, and read throughput comparable to that of eventual consistency but also provides the consistency guarantees that suit the needs of applications written to operate in the context of a user. The following graphic illustrates the session consistency with musical notes. The "West US 2 writer" and the "West US 2 reader" are using the same session (Session A) so they both read the same data at the same time. Whereas the "Australia East" region is using "Session B" so, it receives data later but in the same order as the writes.
106110

107111
:::image type="content" source="media/consistency-levels/session-consistency.gif" alt-text="Illustration of session consistency level":::
108112

109113
### Consistent prefix consistency
110114

111-
In consistent prefix, updates made as single document writes see eventual consistency. Updates made as a batch within a transaction, are returned consistent to the transaction in which they were committed. Write operations within a transaction of multiple documents are always visible together.
112-
113-
Assume two write operations are performed on documents Doc1 and Doc2, within transactions T1 and T2. When client does a read in any replica, the user will see either “Doc1 v1 and Doc2 v1” or “ Doc1 v2 and Doc2 v2”, but never “Doc1 v1 and Doc2 v2” or “Doc1 v2 and Doc2 v1” for the same read or query operation.
115+
Like all consistency levels weaker than Strong, writes are replicated to a minimum of three replicas (in a four-replica set) in the local region, with asynchronous replication to all other regions.
114116

115-
Below are the consistency guarantees for Consistent Prefix within a transaction context (single document writes see eventual consistency):
117+
In consistent prefix, updates made as single document writes see eventual consistency.
118+
Updates made as a batch within a transaction, are returned consistent to the transaction in which they were committed. Write operations within a transaction of multiple documents are always visible together.
116119

117-
- Consistency for clients in same region for an account with single write region = [Consistent Prefix](#consistent-prefix-consistency)
118-
- Consistency for clients in different regions for an account with single write region = [Consistent Prefix](#consistent-prefix-consistency)
119-
- Consistency for clients writing to a single region for an account with multiple write region = [Consistent Prefix](#consistent-prefix-consistency)
120-
- Consistency for clients writing to multiple regions for an account with multiple write region = [Eventual](#eventual-consistency)
120+
Assume two write operations are performed transactionally (all or nothing operations) on document Doc1 followed by document Doc2, within transactions T1 and T2. When client does a read in any replica, the user will see either “Doc1 v1 and Doc2 v1” or “Doc1 v2 and Doc2 v2” or neither document if the replica is lagging, but never “Doc1 v1 and Doc2 v2” or “Doc1 v2 and Doc2 v1” for the same read or query operation.
121121

122-
The following graphic illustrates the consistency prefix consistency with musical notes. In all the regions, the reads never see out of order writes:
122+
The following graphic illustrates the consistency prefix consistency with musical notes. In all the regions, the reads never see out of order writes for a transactional batch of writes:
123123

124124
:::image type="content" source="media/consistency-levels/consistent-prefix.gif" alt-text="Illustration of consistent prefix":::
125125

126126
### Eventual consistency
127127

128-
In eventual consistency, there's no ordering guarantee for reads. In the absence of any further writes, the replicas eventually converge.
128+
Like all consistency levels weaker than Strong, writes are replicated to a minimum of three replicas (in a four replica set) in the local region, with asynchronous replication to all other regions.
129+
130+
In Eventual consistency, the client will issue read requests against any one of the four replicas in the specified region. This replica may be lagging and could return stale or no data.
129131

130132
Eventual consistency is the weakest form of consistency because a client may read the values that are older than the ones it had read before. Eventual consistency is ideal where the application does not require any ordering guarantees. Examples include count of Retweets, Likes, or non-threaded comments. The following graphic illustrates the eventual consistency with musical notes.
131133

0 commit comments

Comments
 (0)