neo4j/neo4j — pull request #2982 by jakewins (2014-09-02 19:43:10+00:00)
Title: Introduce StandardStore, similar to the The One Ring, a store to rule them all.

StandardStore implements and coordinates the infrastructure of being a store,
startup/shutdown logic and a common base interface for all stores. It takes as
input a store-specific format specification (StoreFormat), which describes how
to read and write records and any store headers.

The Store provides a cursor to navigate records, which may be augmented by the
StoreFormat to provide non-standard operations, like reading record fields
directly as opposed to deserializing full records.

This commit contains two store format implementations, NodeStoreFormat and
RelationshipStoreFormat.

The new stores are not plugged in, and so this commit does not change any live
part of the code base. It is meant as a first step, and a pause point to peer
review the current state of the code.

Remaining work, in proposed order:

o Implement store format for RelationshipGroupStore
Plug new stores in to run side-by-side with existing stores, with existing
stores remaining in charge of startup/shutdown procedures.
o Implement RecordTraversalLogic for expand() operation
o Implement all other store formats
o Move all code over to use new stores
o Make new stores responsbile for startup/shutdown and similar infrastructure
o Remove old stores.

Conflicts:
community/io/src/main/java/org/neo4j/io/pagecache/impl/standard/OffsetTrackingCursor.java