The property storage of Neo4j has seen several upgrades and improvements with recent releases, which has made it more usable and stable, while optimizing the layer to use lesser disk space without compromising on features, and improving the speed of operations.
Originally, the Neo4j property store was in the form of a doubly linked list, in which the nodes contained additional information about the structure, along with the property-related data. The node structure then is represented in the following format:
Byte(s) |
Information |
---|---|
0 |
The 4 high bits of the previous pointer and |
1 |
unused |
2 |
The 4 high bits of next pointer |
3-4 |
The type of property |
5-8 |
The index of property |
9-12 |
32 low bits of the previous pointer |
13-16 |
32 low bits of the next pointer |
17-24 |
Data for the property |
So, the 8 bytes at the end were used to store the value and were sufficient to hold all primitive types, small strings, or pointer references to the...