The default approximate size of a range is 64M (2^26 B). In order to support 1P (2^50 B) of logical data, metadata is needed for roughly 2^(50 - 26) = 2^24 ranges. A reasonable upper bound on range metadata size is roughly 256 bytes (3 12 bytes for the triplicated node locations and 220 bytes for the range key itself). 2^24 ranges 2^8 B would require roughly 4G (2^32 B) to store--too much to duplicate between machines. Our conclusion is that range metadata must be distributed for large installations.
To distribute the range metadata and keep key lookups relatively fast, we use two levels of indirection. All of the range metadata sorts first in our key-value map. We accomplish this by prefixing range metadata with two null characters (\0\0). The meta1 or meta2 suffixes are additionally appended to distinguish between the first level and second level of range metadata. In order to do a lookup for key1, we first locate the range information for the lower bound of \0\0meta1
Insert range table here...