Skip to content

Latest commit

 

History

History
 
 

spec

The Chronicle Map Data Store Specification, revision 1

  1. Design goals, assumptions and guarantees
  2. Design overview
  3. Memory layout
  4. Header fields
  5. Lock structure and locking operations
  6. Key hashing and checksum algorithms
  7. Initialization operations
  8. Query operations

Rational behind this Specification

  • To provide the ability to write a small, drastically simplified Chronicle Map implementation in Java for a specific use-case. It could hard-code many aspects which the reference implementation has to handle as abstractions which are harder for the JVM to execute efficiently. Another way of improving performance is by weakening guarantees implied by the specification and the reference implementation.

  • To provide the ability to write a Chronicle Map implementation in a non-JVM language e.g. C, C++, C#, or Go. As Chronicle Map is designed for concurrent inter-process access, performance-critical operations on a Chronicle Map store could be done from a C++ process, while a concurrent process running the Java implementation is doing some duty tasks such as backup to a rational database.

  • This specification is the source of truth to reason about the Chronicle Map data store behaviour and correctness. If the reference implementation doesn't follow the specification, it is considered as an implementation bug.

  • To provide the ability for Chronicle Map adopters, database developers and researchers to study the Chronicle Map design and possibly draw their own conclusions about it's behaviour, guarantees and efficiency. The reference implementation is quite complex so it's hard to understand how it works by solely reading the code, especially for people who don't know Java.

  • To keep the rationalization of the design decisions together in one place.