Skip to content
This repository has been archived by the owner on Mar 9, 2019. It is now read-only.

Commit

Permalink
README
Browse files Browse the repository at this point in the history
Remove the 'Internals' section since it is half-assed right now.
  • Loading branch information
benbjohnson committed Apr 2, 2014
1 parent 8c56469 commit 76acd60
Showing 1 changed file with 1 addition and 30 deletions.
31 changes: 1 addition & 30 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.

0 comments on commit 76acd60

Please sign in to comment.