Code Monkey home page Code Monkey logo

forestdb-benchmark's Introduction

ForestDB-Benchmark

ForestDB-Benchmark is a benchmark program for embedded key-value storage engines, based on a sophisticated workload generation which is more realistic than performing a bunch of read/write operations. It generates key-value store operations using the APIs of Couchstore, which is the current storage engine of Couchbase Server. We currently provide API-wrappers for ForestDB, LevelDB, RocksDB, and WiredTiger.

How to Build

Please refer to INSTALL.MD

How to Use

Please visit wiki pages.

forestdb-benchmark's People

Contributors

borillion avatar chiyoung avatar greensky00 avatar hisundar avatar uvenum avatar vmx avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

forestdb-benchmark's Issues

WiredTiger configuration split percentage

The WiredTiger configuration split percentage is explicitly set to 100; this should only be done in response to specific workloads and key/value insert patterns, and is almost certainly a bad idea in a benchmark.

wrapper functions

The inner loop of couchstore_save_documents in every wrapper -- except ForestDB -- has a malloc/free pair and a bunch of memory copies.

Every wrapper -- except ForestDB -- gets two more malloc/free pairs and associated memory copies in the inner loop of couchstore_walk_id_tree, and WiredTiger gets another malloc and memory copy in couchstore_open_document nobody else has.

I won't speak for LevelDB or RocksDB, but any data copy is almost certainly unnecessary in WiredTiger's case.

At the least it would be utterly trivial to limit the malloc/free calls to a single call per set of documents or cursor traversal, or why aren't these buffers allocated per cursor?

WiredTiger key/page size configuration

The WiredTiger configuration is using small page sizes (4KB) with a relatively large default key/value size (550B). This is a bad idea; further, when larger key/value pair sizes are configured, the page/item sizes aren't adapted to match the larger key sizes.

transactional guarantees and recoverability

What are the transactional guarantees enforced by each of these engines/configurations? I'm asking because:

  • WiredTiger is configured for both checkpointing and the logging, which may or may not make sense,
  • WiredTiger's checkpoint frequency is configured to match the LSM engines' compaction frequency, which doesn't make sense,
  • WiredTiger is logging to the same disk partition as the data store, which will significantly affect performance.

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.