-
Notifications
You must be signed in to change notification settings - Fork 49
[Drivers] ACID transaction description #143
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
jeff-allen-mongo
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@rachel-mack thanks for this update! Left a few minor comments.
drivers/acid-transactions.rst
Outdated
| ACID transactions using sessions. These transactions use the snapshot isolation | ||
| level so applications see a consistent set of data while the transaction is |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is a nit, but a small suggestion to possibly better explain what we mean by "snapshot isolation".
| ACID transactions using sessions. These transactions use the snapshot isolation | |
| level so applications see a consistent set of data while the transaction is | |
| ACID transactions using sessions. Sessions operate on data from a single point-in-time snapshot, so applications see a consistent set of data while the transaction is |
drivers/acid-transactions.rst
Outdated
| operations on multiple documents or collections, MongoDB supports multi-document | ||
| ACID transactions using sessions. These transactions use the snapshot isolation | ||
| level so applications see a consistent set of data while the transaction is | ||
| running and write concerns to ensure changes are safely saved. With these |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Re "write concerns to ensure changes are safely saved.", I'm not totally sure I understand what this means. Maybe something like:
"changes to data are committed safely" ?
drivers/acid-transactions.rst
Outdated
| level so applications see a consistent set of data while the transaction is | ||
| running and write concerns to ensure changes are safely saved. With these | ||
| features, MongoDB provides ACID guarantees that are comparable to those found in | ||
| traditional relational databases. No newline at end of file |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
How important is this last sentence? I'm a little concerned that it could potentially read like we are "comparable", but maybe not as a good. But if this is a requirement from product or similar, I'm fine leaving.
jeff-allen-mongo
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM!
colbying
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
what context are these documentation changes? could you link me to a staging URL so I can understand the context?
|
|
||
| By default, operations on single documents conform to ACID standards. For | ||
| operations on multiple documents or collections, MongoDB supports multi-document | ||
| ACID transactions by using sessions. Sessions operate on data from a single |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
using sessions alone won't guarantee that your mutli-document writes will happen atomically, you need to create a transaction within that session.
| transactions are required in some industries where errors or partial updates | ||
| could lead to serious financial, legal, or safety consequences. | ||
|
|
||
| By default, operations on single documents conform to ACID standards. For |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
who is the intended reader here? for readers who are technical, "conform to ACID standards" may be a bit too vague of a statement here.
Consistency - MongoDB offers causal consistency using sessions
Isolation - Any insert/update/delete of a single document is atomic and fully isolated; other clients never see a partial update to a document. MongoDB’s multi-document transaction protocol is designed to provide snapshot isolation: a transaction reads from a stable snapshot taken at (or just before) the transaction start, and other clients cannot see its in-progress writes.
Durability - as long as you have write concern: majority, your writes are durable though node failures.
It depends on how technical the reader is, but I would er on the side of including some of the nuance above.
This snippet will be applies to all driver's docs sets, along with instructions to update the existing transaction example to ensure that:
majorityat the client level