YCSB Versions Save

Yahoo! Cloud Serving Benchmark

0.17.0

4 years ago

Downstream users should note that these release notes cover some changes already included in the 0.16.0 non-production release.

Incompatible Changes

  • :bangbang: The project's maven coordinates have changed to use group id site.ycsb and Java packages have changed to be in site.ycsb (#1340)
  • :exclamation: Azure Document DB has been removed (#1295)
  • :exclamation: JDBC binding now semicolon for sharding (#1233)

Known Issues

  • The mongodb binding does not honor the maxPoolSize=XX parameter and instead opens a connection per client thread. (see #317)
  • Mongodb binding use with AWS DocumentDB requires manually converting SSL CA format (see #1314)
  • Datastore drivers that lack timeouts may result in YCSB failing to honor the maxexecutiontime parameter. (see #618)
  • "Latest" distribution does not work properly on update transactions. (see #640)
  • Accumulo client currently always claims success even when the record it's supposed to operate on (e.g. for a read) doesn't exist. (see #699)
  • JDK 9 and JDK 10 are not supported. (see #704)
  • ArangoDB client bindings fail to work with ArangoDB authentication (see #1155)
  • HBase 2.0 client bindings doesn't include an slf4j logging-binding and so doesn't provide log messages from the client library (see #1173)
  • The Accumulo client bindings do not work with kerberos enabled clusters (see #1211)
  • Memcached update deletes all fields except the one updated (see #1358)
  • Data integrity verification doesn't check the number of fields. (see #1359)
  • Workload D reports read failures when used with client side batched inserts (see #1356)

Tested Datastores

Changed in this release and verified to work

  • :new: Apache Crail (incubating) (#1266)
  • Apache HBase on HDP 2.6.5 via hbase098, hbase10, hbase12, hbase14, and asynchbase bindings and CDH6 via hbase20 binding
    • add documentation for using client side buffering (#1283)
    • changed API for table checks (#1315)
    • fixed doc for skipping WAL writes (#1324)
  • Apache Ignite (incubating) 2.6.0 (via ignite and ignite-sql)
    • client versoin bump (#1270)
  • :new: Azure Cosmos DB (#1264 #1298 #1300)
  • JDBC checked with MsSQL and CockroachDB 2.0.3
    • :new: now works with mssql (#1350)
    • adds multi-row inserts (#1220)
    • :exclamation: uses semicolon for sharding (#1233)
  • MongoDB versions 4.2.0, 4.0.12. 3.6.14, 3.4.23, 3.2.22, 3.0.15, 2.6.12
    • added compatibility for MongoDB v4 (#1217)
  • :new: Postgres NoSQL with Postgres 9.5 and 9.6 via the postgrenosql binding (#1242)
  • :new: Table Store from Alibaba Cloud (#1286)
  • :new: Toshiba GridDB (#1258)
  • :new: VoltDB v9.1.1 via the voltdb binding (#1319)

Unchanged in this release and previously verified

  • Apache Accumulo 1.9.2 and 1.7.2-cdh5.5.0 (via accumulo1.7 and accumulo1.8)
  • ArangoDB 3.3 and 3.4 (nightly) (via arangodb)
  • Google Cloud Datastore (via googledatastore)
  • MapR 6.0.1 (via maprdb and maprjsondb)
  • Riak 2.x.y (via riak binding).
  • Redis 4.0.9 in non-cluster mode (via redis)
  • REST (via rest binding).
  • Tarantool 1.6.6-249, 1.6.8, 1.7-alpha (via tarantool binding).
  • YugaByte DB 1.0.0 (via cassandra-cql)

Untested Datastores

If you make use of one of these stores and can verify it works, please add a note to #1355

  • Apache Accumulo versions prior to 1.7
  • Apache Cassandra versions prior to 3
  • Apache Solr 5 and 6
  • Cloud Spanner
    • client version bump (#1293)
  • Couchbase versions prior to 4
  • Elastic Search
  • :new: Elastic Search 5 REST client (#1231)
  • Google Cloud Bigtable
    • client version bump (#1293)
  • HyperTable
  • Infinispan
  • Mapkeeper
  • memcached
    • work done on logic error where individual fields would not get updated (#1153)
  • NoSQLDB
  • OrientDB
    • client version bump (#1256)
  • Rados
  • Redis versions prior to 4
  • Redis in cluster mode

Framework changes

  • Maven Group Id changed to site.ycsb (#1340)
  • Java packages changed to site.ycsb (#1340)
  • Core and binding-parent artifacts now published to Maven central (#1340)
  • Number of threads used by client is capped by number of operations (#1323)
  • Allow configuration of field names via fieldnameprefix property (#117)
  • JDK 8 or 11 should be used, we no longer test JDK9 or JDK10 (#1253)
  • Improvements to some internal byte iterators (notably Strings) (#1112)
  • Correct configuration of exponential distribution in the Core workloads (#1260)

0.17.0-RC1

4 years ago

UPPERCASE WARNING: THIS IS A RELEASE CANDIDATE AND IS NOT INTENDED FOR DOWNSTREAM USE.

This source is a candidate for release 0.17.0. Please see #1355 issue for changes since 0.15.0, testing instructions, and where to leave your feedback.

0.16.0

4 years ago

Note on non-production status: due to available testing time from our volunteers, core and datastore changes for this release did not meet our usual bar for release testing. As a result, we've decided to publish this release as-is and put effort towards reestablishing testing for the next release cycle. Users interested in making use of this release are advised to check on issue #1265 for any status updates. If you get to test out one of the bindings changed in this release, please leave a note on that issue so that the work isn't repeated.

Incompatible Changes

  • Azure Document DB has been removed (#1295)

Known Issues

  • The mongodb binding does not honor the maxPoolSize=XX parameter and instead opens a connection per client thread. (see #317)
  • Mongodb binding use with AWS DocumentDB requires manually converting SSL CA format (see #1314)
  • Datastore drivers that lack timeouts may result in YCSB failing to honor the maxexecutiontime parameter. (see #618)
  • "Latest" distribution does not work properly on update transactions. (see #640)
  • Accumulo client currently always claims success even when the record it's supposed to operate on (e.g. for a read) doesn't exist. (see #699)
  • JDK 9 and JDK 10 are not supported. (see #704)
  • ArangoDB client bindings fail to work with ArangoDB authentication (see #1155)
  • HBase 2.0 client bindings doesn't include an slf4j logging-binding and so doesn't provide log messages from the client library (see #1173)
  • The Accumulo client bindings do not work with kerberos enabled clusters (see #1211)

added bindings

  • ElasticSearch 5 REST client (#1231)
  • Azure Cosmos DB (#1264 #1298 #1300)
  • Postgres NoSQL (#1242)
  • Apache Crail (incubating) (#1266)
  • Table Store from Alibaba Cloud (#1286)
  • Toshiba GridDB (#1258)

updated bindings

  • Compat for MongoDB 4 (#1217)
  • JDBC adds multi-row inserts (#1220)
  • OrientDB updated to version 2.2.37 (#1256)
  • memcached fixes a logic error where individual fields would not get checked (#1153)
  • Apache Cassandra can optionally use SSL to connect to the cluster (#1294)
  • Apache HBase add documentation for using client side buffering (#1283)
  • Apache Ignite version upgraded (#1270)
  • Google Cloud Bigtable client upgraded (#1293)
  • Cloud Spanner client upgraded (#1293)
  • AsyncHBase client upgrade (#1255)

framework changes

  • Allow configuration of field names via fieldnameprefix property (#117)
  • JDK 8 or 11 should be used, we no longer test JDK9 or JDK10 (#1253)
  • Improvements to some internal byte iterators (notably Strings) (#1112)
  • Correct configuration of exponential distribution in the Core workloads (#1260)

0.16.0-RC1

4 years ago

UPPERCASE WARNING: THIS IS A RELEASE CANDIDATE AND IS NOT INTENDED FOR DOWNSTREAM USE.

This source is a candidate for release 0.16.0. Please see #1265 issue for changes since 0.15.0, testing instructions, and where to leave your feedback.

0.15.0

5 years ago

Known Issues

  • The mongodb binding does not honor the maxPoolSize=XX parameter and instead opens a connection per client thread. (see #317)
  • Datastore drivers that lack timeouts may result in YCSB failing to honor the maxexecutiontime parameter. (see #618)
  • "Latest" distribution does not work properly on update transactions. (see #640)
  • Accumulo client currently always claims success even when the record it's supposed to operate on (e.g. for a read) doesn't exist. (see #699)
  • JDK 9 and JDK 10 are not supported. (see #704)
  • ArangoDB client bindings fail to work with ArangoDB authentication (see #1155)
  • HBase 2.0 client bindings doesn't include an slf4j logging-binding and so doesn't provide log messages from the client library (see #1173)
  • The Accumulo client bindings do not work with kerberos enabled clusters (see #1211)

Tested Datastores

New or changed, tested and verified to work in this release

  • Apache Accumulo 1.9.2 and 1.7.2-cdh5.5.0 (via accumulo1.7 and accumulo1.8)
    • client version bump (#1167)
  • ArangoDB 3.3 and 3.4 (nightly) (via arangodb)
    • The arangodb binding should now work with versions 2.7-3.3. The arangodb3 binding is deprecated. (#1166)
  • :new: FoundationDB 5.2.5 (via foundationdb)
  • :new: Apache Ignite (incubating) 2.6.0 (via ignite and ignite-sql)
  • :new: RocksDB (via rocksdb)

Tested in previous releases, unchanged in this release

Untested Datastores

  • Apache Accumulo versions prior to 1.7
  • Apache Cassandra versions prior to 3
  • Couchbase versions prior to 4
  • Google Cloud Bigtable
  • Google Cloud Spanner
  • Azure DocumentDB
  • Elastic Search
  • HyperTable
  • Infinispan
  • JDBC
  • Mapkeeper
  • Memcached
  • MongoDB versions prior to 3.6
  • NoSQLDB
  • Rados
  • Redis versions prior to 4
  • Redis in cluster mode
  • Apache Solr 5 and 6

Framework Changes

field and scan length minimums are now configurable

When using a field length that has a non-constant distribution (i.e. uniform or zipfian) via the fieldlengthdistribution property, you can now specify a minimum length by setting the property minfieldlength. It defaults to a value of 1 and must be set to something less than or equal to the fieldlength property.

When running a workload with SCAN operations, you can now specify a minimum length for the scan by setting the property minscanlength. It defaults to a value of 1 and must be set to something less than or equal to the maxscanlength property.

For more information see #1177.

0.15.0-RC1

5 years ago

UPPERCASE WARNING: THIS IS A RELEASE CANDIDATE AND IS NOT INTENDED FOR DOWNSTREAM USE.

This source is a candidate for release 01.5.0. Please see #1204 issue for testing instructions and where to leave your feedback.

Compared to the previous release, this candidate includes

  • Core Workload - New configuration options: minscanlength and minfieldlength (#1177)
  • Accumulo - client version change, should be compatible (#1167)
  • ArangoDB - deprecation for arangodb3 and now arangodb should work with ArangoDB versions 2.7-3.3 (#1166)
  • new binding for RocksDB (#1052)
  • new binding for Ignite, IgniteSQL (#1118, #1183)
  • new binding for FoundationDB (#1162)

0.14.0

5 years ago

Downstream users should note that these release notes cover some changes already included in the 0.13.0 non-production release.

Incompatible Changes

  • [generators] Our key generators have changed from using the int primitive type to long as a step towards providing greater key ranges. If you've implemented your own generator, measurements, or db binding this change will likely impact you. (see #911)
  • [core] Our DB API now makes use of the more basic interfaces of Java Collections Framework instead of HashMaps directly. If you've implemented your own db bindings this change will likely impact you. (see #553)
  • :exclamation: [JDBC] The JDBC binding now expects fields to be TEXT instead of VARCHAR. The Table setup utility has been updated to reflect this.
  • :exclamation: [Geode] Our Geode client binding now requires a minimum cluster version of 1.2.0. (see #995)
  • ❗️ The HBase binding specific to testing HBase 0.94 clusters has been removed. (see #1032)

Known Issues

  • The mongodb binding does not honor the maxPoolSize=XX parameter and instead opens a connection per client thread. (see #317)
  • Datastore drivers that lack timeouts may result in YCSB failing to honor the maxexecutiontime parameter. (see #618)
  • "Latest" distribution does not work properly on update transactions. (see #640)
  • Accumulo client currently always claims success even when the record it's supposed to operate on (e.g. for a read) doesn't exist. (see #699)
  • JDK 9 and JDK 10 are not supported. (see #704)
  • ArangoDB client bindings fail to work with ArangoDB authentication (see #1155)
  • HBase 2.0 client bindings doesn't include an slf4j logging-binding and so doesn't provide log messages from the client library (see #1173)

Tested Datastores

New or changed, tested and verified to work in this release

  • Apache Accumulo 1.9.1 (via accumulo1.8)
  • Aerospike 4.2.0.3 (via aerospike)
    • #937 write policy updated to REPLACE_ONLY
  • Apache Cassandra 3.11.2 (via cassandra-cql)
    • #1051 CassandraCQLClient now uses PreparedStatement for better performance
  • Google Cloud Datastore (via googledatastore)
    • #984 use default credentials when available
  • Apache Geode 1.2.0, 1.3.0, and 1.6.0 (via geode)
    • #995 Update client libraries to v1.2
    • #1069 Ensure geode binding will work with later versions by avoiding internal classes
  • Apache HBase 1.2 (CDH 5.14.2) and 2.0 (CDH 6.0.0-beta1) (via hbase10, hbase12, hbase14, and hbase20)
    • #970 Add packaging specific to v1.2 client artifacts
    • #1028 HBase 1.y bindings now use same locking structure as the 0.98 binding
  • Apache Kudu 1.8.0 (via kudu)
    • #879 improve table partitioning
    • #1098 Make Kudu buffer size configurable, update to client 1.6.0, avoid string encoding
  • :new: MapR 6.0.1 (via maprdb and maprjsondb)
  • MongoDB 3.6.4 (via mongodb and mongodb-async)
    • #1138 update client library to 3.6.3
  • Redis 4.0.9 in non-cluster mode (via redis)
    • #1072 Add cluster mode option
  • Amazon S3 (via s3)
    • #1010, #1021 Fixed the S3 client to parse the entire object from the datastore
    • #1060 Remove unnecessary getObjectMetadata() from getS3ObjectAndMetadata()
  • :new: YugaByte DB 1.0.0 (via cassandra-cql)

Tested in previous releases, unchanged in this release

Untested Datastores

  • Apache Accumulo versions prior to 1.9
  • ArangoDB
  • Apache Cassandra versions prior to 3
  • Couchbase versions prior to 4
  • Google Cloud Bigtable
  • Google Cloud Spanner
  • Azure DocumentDB
  • Elastic Search
  • HyperTable
  • Infinispan
  • JDBC
  • Mapkeeper
  • Memcached
  • MongoDB versions prior to 3.6
  • NoSQLDB
  • Rados
  • Redis versions prior to 4
  • Redis in cluster mode
  • Apache Solr 5 and 6

Framework Changes

Basic no-op binding added operations counting

The built-in no-op binding basicdb has added a property basicdb.count. When set to true, we'll count operations that happen. Defaults to false. (see #1005)

New workload base for timeseries testing (experimental)

The core of YCSB now contains a new base workload type to enable building timeseries based workloads. The current state is in flux and should be considered experimental by folks who would like to build on it. For details on work to date, see #1008, #1091, #1095. Interested parties are encouraged to check in on PR #1068 for ongoing work.

Packaging Changes

  • Running the platform-specific scripts (i.e. ycsb.sh) from a source checkout now works. (see #908)

Thanks

Special thanks for helping to test this release goes out to: @twblamer, @robertpang, @metatype, @upthewaterspout, @fwang29, @haih-g, @bosher, @ctubbsii , @rohanjayaraj, @isuntsov-gridgain, @petersomogyi, @jojochuang

0.14.0-RC1

5 years ago

UPPERCASE WARNING: THIS IS A RELEASE CANDIDATE AND IS NOT INTENDED FOR DOWNSTREAM USE.

This source is a candidate for release 0.14.0. Please see #1117 issue for a list of changes since the 0.12.0 release, testing instructions, and where to leave your feedback.

0.13.0

6 years ago

Note on non-production status: due to available testing time from our volunteers, core and datastore changes for this release did not meet our usual bar for release testing. As a result, we've decided to publish this release as-is and put effort towards reestablishing testing for the next release cycle. Users interested in making use of this release are advised to check on issue #981 for any status updates. If you get to test out one of the bindings changed in this release, please leave a note on that issue so that the work isn't repeated.

Incompatible Changes

  • [generators] Our key generators have changed from using the int primitive type to long as a step towards providing greater key ranges. If you've implemented your own generator, measurements, or db binding this change will likely impact you. (see #911)
  • [core] Our DB API now makes use of the more basic interfaces of Java Collections Framework instead of HashMaps directly. If you've implementerd your own db bindings this change will likely impact you. (see #553)
  • [JDBC] The JDBC binding now expects fields to be TEXT instead of VARCHAR. The Table setup utility has been updated to reflect this.
  • [Geode] Our Geode client binding now requires a minimum cluster version of 1.2.0. (see #995)

Known Issues

  • The Cassandra CQL clients do not use prepared statements. (see #458)
  • The mongodb binding does not honor the maxPoolSize=XX parameter and instead opens a connection per client thread. (see #317)
  • Datastore drivers that lack timeouts may result in YCSB failing to honor the maxexecutiontime parameter. (see #618)
  • "Latest" distribution does not work properly on update transactions. (see #640)
  • Accumulo client currently always claims success even when the record it's supposed to operate on (e.g. for a read) doesn't exist. (see #699)
  • JDK 9 and JDK 10 are not supported. (see #704)
  • The newer scripts, ycsb.sh and ycsb.bat, don't work from a source checkout. Work around by using the python script ycsb (see #877)

Changes

  • [Accumulo] client binding for Accumulo has been through a refactoring (see #947)
  • [Aerospike] write policy updated to REPLACE_ONLY (see #937)
  • [ArangoDB3] New binding added for Arango DB V3 (see #903)
  • [Azure Document DB] New binding added for Azure Document DB (see #838)
  • [Basic DB] New basicdb.count mode to track counts of operations (see #1005)
  • [Basic DB] New timeseries specific basicdb for use with experimental new timeseries workload (see #1008)
  • [BigTable] Updated to the V2 client in 0.9.7 (see #978)
  • [CloudSpanner] New binding added for Google's CloudSpanner (see #939)
  • [Elasticsearch] New binding added for Elasticsearch version 5.x (see #925)
  • [Geode] Updated binding to version 1.2 (see #995)
  • [Google Datastore] Now uses default credentials when available (see #984)
  • [HBase] New binding packaging added for HBase version 1.2 (see #970)
  • [HBase] HBase 1.y bindings now use the same locking structure as the HBase 0.98 specific client (see #1028)
  • [HBase] The HBase 0.98 binding now properly interrupts client threads (see #1025)
  • [Memcached] Added support for the binary protocol (see #965)
  • [S3] Fixed the S3 client to parse the entire object from the datastore (see #1010, #1021)
  • [Solr] Add authentication for Kerberos protected Solr installations (see #887)

Framework Fixes and Changes

  • [licensing] We discovered our ALv2 LICENSE text was malformed and corrected it (see #967)
  • [core] Our ByteIterator implementation added an optional reset methods that may be used by binding implementers (see #999)
  • [core] Our workload client now optionally can see the total thread count and an ID for itself (see #1000)
  • [core] The workload class provide an operation enum that workloads can build on rather than Strings. (see #1002)
  • [metrics] We now export histogram details for HdrHistogram to mimic the non-HDR histogram output (see #983)
  • [core] Binding implementors can make use of a new NumericByteIterator to store encoded longs or double values (see #1003)
  • [generators] Added the RandomDiscreteTimestampGenerator generator (see #1004)
  • [workloads] Added a time series workload for testing time series focused data store. It is currently experimental. (see #1008)
  • [logging] The estimated time remaining output now properly handles non-plural times. If you parse YCSB output instead of using a measurement exporter, this will break things. (see #1029)
  • [community] We've added a CONTRIBUTING doc! (see #1026, or the CONTRIBUTING.md file)
  • [cli] Some old bindings that didn't work are no longer listed in the CLI help. (see #328)

Thanks

Thanks to all the contributors that pushed on this release: @manolama, @twblamer.

0.13.0-RC1

6 years ago

UPPERCASE WARNING: THIS IS A RELEASE CANDIDATE AND IS NOT INTENDED FOR DOWNSTREAM USE.

This source is the first release candidate for version 0.13.0. The associated issue #981:

provides the list of changes since version 0.12.0 contains testing instructions is the recommended location for leaving any feedback