git db is a layered design, consisting of:
Layer | Name | Description |
---|---|---|
7 | Distribution | How change information is passed from node to node |
6 | Transactions | How bundled changes are prepared, and how ACID or BASE semantics are achieved. |
5 | MetaFormat | metamodel which can express basic schemas, including itself, which can be stored in the filesystem structure, |
4 | TreeFormat | a filesystem structure for arranging similarly typed pretty-printed packaged rows in git trees, |
3 | Filenames | a pretty-printing row packaging standard, for filename-izing a series of columns, to refer to binary encoded rows |
2 | ColumnFormat | a binary value packaging standard, to combine encoded values into binary sequences representing lists of columns |
1 | Encoding | a set of binary encoding formats for some basic types like Integers, Floats, Strings, etc, |
The system is designed to support a wide variety of use cases, some of which will not use all of the layers. See the scalability page for more information.
Hopefully the basic layers will be simple enough to be a useful back-end for SQLite or embedded uses. A a traditional multi-user RDBMS might want to use layers 1 through 5 as a backing store; a distributed computing system might use all of them.
Hopefully, the basic layers will be simple enough to be a useful back-end for SQLite or embedded uses. A a traditional multi-user RDBMS might want to use layers 1 through 5 as a backing store; a distributed computing system might use all of them. For more on this see scalability