mirror of https://github.com/etcd-io/bbolt.git
parent
8c5646982c
commit
76acd60ff3
31
README.md
31
README.md
|
@ -46,37 +46,8 @@ So why use Bolt? The goal of Bolt is provide a simple, fast data store that is e
|
|||
|
||||
Below is a list of public, open source projects that use Bolt:
|
||||
|
||||
* [Skybox Analytics](https://github.com/skybox/skybox)
|
||||
* [Skybox Analytics](https://github.com/skybox/skybox) - A standalone funnel analysis tool for web analytics.
|
||||
* [DVID](https://github.com/janelia-flyem/dvid) - Added Bolt as optional storage engine and testing it against Basho-tuned leveldb.
|
||||
|
||||
If you are using Bolt in a project please send a pull request to add it to the list.
|
||||
|
||||
|
||||
## Internals
|
||||
|
||||
The Bolt database is meant to be a clean, readable implementation of a fast single-level key/value data store.
|
||||
This section gives an overview of the basic concepts and structure of the file format.
|
||||
|
||||
### B+ Tree
|
||||
|
||||
Bolt uses a data structure called an append-only B+ tree to store its data.
|
||||
This structure allows for efficient traversal of data.
|
||||
|
||||
TODO: Explain better. :)
|
||||
|
||||
|
||||
### Pages
|
||||
|
||||
Bolt stores its data in discrete units called pages.
|
||||
The page size can be configured but is typically between 4KB and 32KB.
|
||||
|
||||
There are several different types of pages:
|
||||
|
||||
* Meta pages - The first two pages in a database are meta pages. These are used to store references to root pages for system buckets as well as keep track of the last transaction identifier.
|
||||
|
||||
* Branch pages - These pages store references to the location of deeper branch pages or leaf pages.
|
||||
|
||||
* Leaf pages - These pages store the actual key/value data.
|
||||
|
||||
* Overflow pages - These are special pages used when a key's data is too large for a leaf page and needs to spill onto additional pages.
|
||||
|
||||
|
|
Loading…
Reference in New Issue