Code Monkey home page Code Monkey logo

forestdb's Introduction

ForestDB

ForestDB is a key-value storage engine developed by Couchbase Caching and Storage Team, and its main index structure is built from Hierarchical B+-Tree based Trie, called HB+-Trie. ForestDB paper has been published in IEEE Transactions on Computers.

Compared with traditional B+-Tree based storage engines, ForestDB shows significantly better read and write performance with less storage overhead. ForestDB has been tested on various server OS environments (Centos, Ubuntu, Mac OS x, Windows) and mobile OSs (iOS, Android). The test coverage stats for ForestDB are available in ForestDB Code Coverage Report.

ForestDB benchmark program is also available for performance comparisons with other key-value storage engines.

Please visit the ForestDB wiki for more details.

Main Features

  • Keys and values are treated as an arbitrary binary.
  • Applications can supply a custom compare function to support a customized key order.
  • A value can be retrieved by its sequence number or disk offset in addition to a key.
  • Write-Ahead Logging (WAL) and its in-memory index are used to reduce the main index lookup / update overhead.
  • Multi-Version Concurrency Control (MVCC) support and append-only storage layer.
  • Multiple snapshot instances can be created from a given ForestDB instance to provide different views of database.
  • Rollback is supported to revert the database to a specific point.
  • Ranged iteration by keys or sequence numbers is supported for a partial or full range lookup operation.
  • Manual or auto compaction can be configured per ForestDB database file.
  • Transactional support with read_committed or read_uncommitted isolation level.

How to build

See INSTALL.MD

How to Use

Please refer to Public APIs and tests/fdb_functional_test.cc in ForestDB source directory.

How to contribute code

  1. Sign the Couchbase Contributor License Agreement
  2. Submit code changes via either a Github PR or via Gerrit (for Gerrit usage, see Instructions from the couchbase-spark-connector project.)

Note regarding master branch

The 'master' git branch of forestdb contains a number of changes which ultimately were not kept for production builds of Couchbase Server. Production builds were kept on an earlier release branch named 'watson' corresponding to Couchbase Server 4.5. Couchbase Server 5.0, 5.1, 5.5, and 6.0 added some bug fixes on branches made from 'watson', namely 'spock' and 'vulcan'. For Couchbase Server 6.5 and forward, a new branch 'cb-master' was created from the then-current 'vulcan' branch.

'cb-master' should be seen as the equivalent of 'master' for all Couchbase Server production build purposes. Any additional production bug fixes will go there, and release-specific branches will be made from there when necessary.

The current 'master' branch is left untouched and unsupported, for use by community users who may depend on the work done there.

forestdb's People

Contributors

abhinavdangeti avatar avsej avatar borrrden avatar ceejatec avatar chippiewill avatar chiyoung avatar daverigby avatar greensky00 avatar hisundar avatar jimwwalker avatar kbhute-ibm avatar snej avatar t3rm1n4l avatar tahmmee avatar tleyden avatar trondn avatar vmx avatar wurikiji avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.