@@ -28,8 +28,7 @@ all data changes before they ever become visible.
28
28
29
29
In MongoDB, transactions run within logical **sessions**. A
30
30
session is a grouping of related read or write operations that you intend to run
31
- sequentially. Sessions enable **causal consistency** for a
32
- group of operations and allow you to run operations in an
31
+ sequentially. Sessions allow you to run operations in an
33
32
**ACID-compliant transaction**, which is a transaction that meets an expectation
34
33
of atomicity, consistency, isolation, and durability. MongoDB guarantees that the
35
34
data involved in your transaction operations remains consistent, even if the
@@ -47,6 +46,64 @@ creating a new client each time.
47
46
``ClientSession`` with a different ``MongoClient`` results in operation
48
47
errors.
49
48
49
+ Causal Consistency
50
+ ~~~~~~~~~~~~~~~~~~
51
+
52
+ MongoDB enables **causal consistency** in client sessions.
53
+ The causal consistency model guarantees that operations within a session
54
+ run in a causal order. Clients observe results that are consistent
55
+ with the causal relationships, or the dependencies between
56
+ operations. For example, if you perform a series of operations where
57
+ one operation logically depends on the result of another, any subsequent
58
+ reads reflect the dependent relationship.
59
+
60
+ The following table describes the guarantees that causally
61
+ consistent sessions provide:
62
+
63
+ .. list-table::
64
+ :widths: 40 60
65
+ :header-rows: 1
66
+
67
+ * - Guarantee
68
+ - Description
69
+
70
+ * - Read your writes
71
+ - Read operations reflect the results of preceding write operations.
72
+
73
+ * - Monotonic reads
74
+ - Read operations do not return results that reflect an earlier data state than
75
+ a preceding read operation.
76
+
77
+ * - Monotonic writes
78
+ - If a write operation must precede other write operations, the driver
79
+ runs this write operation first.
80
+
81
+ For example, if you call ``insert_one()`` to insert a document, then call
82
+ ``update_one()`` to modify the inserted document, the driver runs the
83
+ insert operation first.
84
+
85
+ * - Writes follow reads
86
+ - If a write operation must follow other read operations, the driver runs
87
+ the read operations first.
88
+
89
+ For example, if you call ``find()`` to retrieve a document, then call
90
+ ``delete_one()`` to delete the retrieved document, the driver runs the find
91
+ operation first.
92
+
93
+ In a causally consistent session, MongoDB ensures a causal relationship between the
94
+ following operations:
95
+
96
+ - Read operations that have a ``majority`` read concern
97
+ - Write operations that have a ``majority`` write concern
98
+
99
+ .. tip::
100
+
101
+ To learn more about the concepts mentioned in this section, see the
102
+ following {+mdb-server+} manual entries:
103
+
104
+ - :manual:`Causal Consistency </core/read-isolation-consistency-recency/#causal-consistency>`
105
+ - :manual:`Causal Consistency and Read and Write Concerns </core/causal-consistency-read-write-concerns/>`
106
+
50
107
Sample Data
51
108
~~~~~~~~~~~
52
109
0 commit comments