Skip to content

YCSB 0.2.0

Compare
Choose a tag to compare
@busbey busbey released this 08 Jul 02:19

Incompatible Changes

Datastore Bindings

  • ‼️ The Voldemort binding has been removed due to lack of published client artifacts (see #297)
  • ‼️ The MapKeeper binding has been removed due to lack of published client artifacts (see #210)
  • The HBase binding no longer supports HBase versions prior to 0.94 (previously 0.90 worked)
  • The Gemfire binding has updated its expected version to Gemfire 8

Framework

  • ❗ The latency measurements reported for Read-Modify-Write workloads have changed from milliseconds to microseconds (see #86)

Other

  • The WIP script bin/ycsb.sh has been removed (see #191)
  • YCSB no longer provides a CHANGES.txt file (see #294)

Known Issues

  • ❗ Current Cassandra CQL binding does not work with Cassandra 2.1 (see #293)
  • Current HBase binding does not work with HBase 0.94, 0.96, or 0.98 (see #343)
  • ❗ MongoDB's current driver doesn't properly handle scan workloads (see #344)
  • Client status thread continues to run for several seconds after operations are completed (see #316)
  • The mongodb binding does not honor the maxPoolSize=XX parameter and instead opens a connection per client thread (see #317)
  • ‼️ Running directly from a source checkout on Windows is not supported (see #335)
  • Running directly from a source checkout against the Basic datastore fails (see #336)
  • Several unsupported datastore bindings are still listed in CLI help (see #328)

Datastore Bindings

Tested Support

The following datastore bindings have been verified as working as of this release:

  • 🆕 Apache Accumulo 1.6.0 via the accumulo binding (see #170)
  • Apache Cassandra 2.0.15 via the cassandra-cql and cassandra-10 bindings
    • The Cassandra binding has been updated to use CQL. Downstream users are advised to transition. (see #145)
  • Apache HBase 1.0.0 via the hbase-10 binding
    • The HBase binding has added support for the new stable HBase 1 API (see #225). Several bug fixes are also present (#79, #100, #141, #188, #256, #274, #278, #283, #325); notably, HBase clients no longer buffer client side by default.
  • MongoDB 2.0.9, 2.2.7, 2.4.14, 2.6.10, 3.0.4 via the mongodb and mongodb-async bindings. Additionally MongoDB 1.8.5 via the mongodb-async binding.
    • The MongoDB binding has added a new binding that leverages a third-party asynchronous client (see #180). Additionally, several bug fixes are present (#81, #82, #95, #137, #253, #277, #301).
  • 🆕 Tarantool 1.6.1 via the tarantool binding (see #292, #319)

Untested

The following datastore bindings are present but have not been confirmed as a part of release testing. Referenced issue numbers are those fixed as a part of this release.

  • Apache Cassandra versions prior to 2.0 (#89)
  • 🆕 Couchbase 1.1 (#136)
  • 🆕 DynamoDB 1.3 (#88, #97)
  • 🆕 ElasticSearch 0.19 (#93, #108)
  • Gemfire 8.1 (#94, #123, #268)
  • 🆕 HyperTable 0.9 (#85)
  • Infinispan 7.1
  • JDBC (#47)
  • 🆕 OrientDB 1.0 (#76)
  • Redis 2.0 (#167, #173)

Framework Changes

Latency capture via HDRHistogram

Users may opt-in to having transaction latencies measured via the HdrHistogram library by specifying hdrhistogram for the measurementtype property.

$ bin/ycsb load basic -P workloads/workloada -p measurementtype=hdrhistogram 

See #214 and HdrHistogram: A better latency capture method for more information.

Measuring transaction latency against a fixed schedule

This release incorporates changes to properly measure latency against a regular schedule of transactions (also referred to as the coordinated omission problem). Users must opt-in to this methodology by setting the measurement.interval property to intended.

$ bin/ycsb load basic -P workloads/workloada -p measurement.interval=intended 

See #214 and Correcting YCSB's Coordinated Omission problem for more information.

Verifying written data

Users may opt-in to writing a verifiable data set and having the correctness of stored values checked via the dataintegrity property. Note that turning on this feature changes the kinds of values that are written as a part of the test.

$ bin/ycsb load basic -P workloads/workloada -p dataintegrity=true

See #91 for more information

Exporting measurements as a JSON array

In addition to the extant ability to export measurements as a series of JSON objects, users may now opt-in to exporting measurements as a single JSON array by setting the exporter property to the JSONArrayMeasurementsExporter class.

$ bin/ycsb load basic -P workloads/workloada -p exportfile=somefile.json -p exporter=com.yahoo.ycsb.measurements.exporter.JSONArrayMeasurementsExporter

See #289 for more information.

Measurements changes

  • #100 YCSB now measures the cleanup phase of testing in microseconds. For datastore bindings that include the option of client-side buffering, such as HBase, the clean up period should also be measured by the datastore binding as an UPDAE to cover the final flush to the datastore.
  • #207 Measurements.getSummary is now synchronized.

Workload changes

  • #275 Zipfian generator now respects min/max parameters
  • #288 RandomByteIterator now generates bytes between 0x20 and 0x7F (previously 0x20 and 0x3F)

Other Changes

Datastore binding specific binary artifacts

YCSB now provides convenience binary artifacts that contain just the files needed to run against a particular datastore (e.g. just MongoDB). These artifacts should work just like the normal distribution but will be substantially smaller in size.

Artifacts are generated during the build for any datastore binding that provides a README.md. Artifacts are published as a part of the release process if they are tested during the release process.

See #250 for more information.

Workload Template

Users interested in creating their own workloads can now start from the set of all available properties; found in workloads/workload_template.

See #92 for more information

Status output changes

Status updates during a job run now include a timestamp. (#111)

Travis-CI for testing

YCSB now uses Travis-CI to test proposed patches. Contributors who add new datastore bindings are encouraged to leverage Travis-CI's support for standing up local test datastore instances to provide better tests.

See #164 and #284 for more information.