Neo4j transactions have ACID compliance, and I want to know neo4j how to promise consistency and durability.
Source code shows that disk file loads into page cache which neo4j allocated, if the file mapped into page cache, it should no longer be accessed directly through the file system, and page cache will keep changes in memory.
Is it right that new data value will be kept in memory if a transaction contains a write operation, then the data will be kept multiple copies in memory？So noe4j how to promise consistency? and neo4j do log to promise atomic. but it can not promise consistency fully, so the isolation level is read committed.
I know that neo4j use copy-on-write technology to improve write performance. but update value still be kept in memory, how neo4j do to promise durability？
At last, I want to ask how neo4j does write operations, how to ensure consistency, and what level of consistency is guaranteed? I found very few documents describe these.
I will continue to understand the code in depth. I would be very grateful if anyone can reply to me!