What I mean is that these details for an ordinary user is irrelevant. Unless you are auditing the code or wanting to contribute to the code. There would be no need to go that deep if it weren’t for these cases.
No, there are only “KV keys” and “Conflict keys”. Nothing more as far as I know.
“Conflict keys” are keys that contain the state of the transaction. Through it, Dgraph checks a series of things for the transaction to be successful. Using an ACID model.
Through this keys Dgraph can also do concurrent conflict checking trying to modify the same data at the same time. Using Upsert directive(not to be confused with upsert query).
I think your point has been addressed. The difference is that the example is outdated and Dgraph has changed a lot over the years. And it’s likely that the size has to do with the addition of Namespaces. Because namespaces add a string of zeros in front of the predicate. This makes a logical separation of the data. This may be the strongest source of this difference.
I believe that physically they are not 100% separate. But logically they are. They are separated by an extra suffix that cannot be accessed by a query executed in another namespace.
I haven’t studied in depth what namespaces are like. But according to my reviews, reading code. It seems to me that it is so. I think the paper doesn’t talk about namespaces. Well, it’s a recent thing.