Releases: brianfrankcooper/YCSB
YCSB 0.17.0
Downstream users should note that these release notes cover some changes already included in the 0.16.0 non-production release.
Incompatible Changes
- ‼️ The project's maven coordinates have changed to use group id- site.ycsband Java packages have changed to be in- site.ycsb(#1340)
- ❗ Azure Document DB has been removed (#1295)
- ❗ 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
- 🆕 Apache Crail (incubating) (#1266)
- Apache HBase  on HDP 2.6.5 via hbase098,hbase10,hbase12,hbase14, andasynchbasebindings and CDH6 viahbase20binding
- Apache Ignite (incubating) 2.6.0 (via igniteandignite-sql)- client versoin bump (#1270)
 
- 🆕 Azure Cosmos DB (#1264 #1298 #1300)
- and Azure Cosmos DB Cassandra API via the cassandra-cqlbinding with SSL (#1294)
 
- and Azure Cosmos DB Cassandra API via the 
- JDBC checked with MsSQL and CockroachDB 2.0.3
- 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)
 
- 🆕 Postgres NoSQL with Postgres 9.5 and 9.6 via the postgrenosqlbinding (#1242)
- 🆕 Table Store from Alibaba Cloud (#1286)
- 🆕 Toshiba GridDB (#1258)
- 🆕 VoltDB v9.1.1 via the voltdbbinding (#1319)
Unchanged in this release and previously verified
- Apache Accumulo 1.9.2 and 1.7.2-cdh5.5.0 (via accumulo1.7andaccumulo1.8)
- Apache Cassandra 3.11.2 (via cassandra-cql)
- Apache Geode 1.2.0, 1.3.0, and 1.6.0 (via geode)
- Apache Kudu 1.8.0 (via kudu)
- ArangoDB 3.3 and 3.4 (nightly) (via arangodb)
- Azure Table Storage (via azuretablestoragebinding).
- Couchbase2 4.0 and 4.5 (via couchbase2binding).
- DynamoDB using AWS SDK 1.10.48 (via dynamodbbinding).
- FoundationDB 5.2.5 (via foundationdb)
- Google Cloud Datastore (via googledatastore)
- MapR 6.0.1 (via maprdbandmaprjsondb)
- Riak 2.x.y (via riakbinding).
- Redis 4.0.9 in non-cluster mode (via redis)
- REST (via restbinding).
- RocksDB (via rocksdb)
- Tarantool 1.6.6-249, 1.6.8, 1.7-alpha (via tarantoolbinding).
- 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
- 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 Release Candidate 1
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.
YCSB 0.16.0
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
0.16.0 Release Candidate 1
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.
YCSB 0.15.0
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.7andaccumulo1.8)- client version bump (#1167)
 
- ArangoDB 3.3 and 3.4 (nightly) (via arangodb)- The arangodbbinding should now work with versions 2.7-3.3. Thearangodb3binding is deprecated. (#1166)
 
- The 
- 🆕 FoundationDB 5.2.5 (via foundationdb)
- 🆕 Apache Ignite (incubating) 2.6.0 (via igniteandignite-sql)
- 🆕 RocksDB (via rocksdb)
Tested in previous releases, unchanged in this release
- Aerospike 4.2.0.3 (via aerospike)
- AsyncHBase 1.7 (via asynchbasebinding).
- Google Bigtable (via googlebigtablebinding).
- Google Bigtable accessing using the HBase client (via hbase10binding)
- Apache Cassandra 3.11.2 (via cassandra-cql)
- Couchbase2 4.0 and 4.5 (via couchbase2binding).
- Google Cloud Datastore (via googledatastore)
- DynamoDB using AWS SDK 1.10.48 (via dynamodbbinding).
- Apache Geode 1.2.0, 1.3.0, and 1.6.0 (via geode)
- Apache HBase 1.2 (CDH 5.14.2) and 2.0 (CDH 6.0.0-beta1) (via hbase10,hbase12,hbase14, andhbase20)
- Apache Kudu 1.8.0 (via kudu)
- MapR 6.0.1 (via maprdbandmaprjsondb)
- MongoDB 3.6.4 (via mongodbandmongodb-async)
- OrientDB 2.2.10 (via orientdbbinding).
- Riak 2.x.y (via riakbinding).
- Redis 4.0.9 in non-cluster mode (via redis)
- REST (via restbinding).
- Azure Table Storage (via azuretablestoragebinding).
- Tarantool 1.6.6-249, 1.6.8, 1.7-alpha (via tarantoolbinding).
- Amazon S3 (via s3)
- YugaByte DB 1.0.0 (via cassandra-cql)
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 Release Candidate 1
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)
YCSB 0.14.0
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 intprimitive type tolongas 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)
- ❗ [JDBC] The JDBC binding now expects fields to be TEXTinstead ofVARCHAR. 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)
- ❗️ 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)
- Apache HBase 1.2 (CDH 5.14.2) and 2.0 (CDH 6.0.0-beta1) (via hbase10,hbase12,hbase14, andhbase20)
- Apache Kudu 1.8.0 (via kudu)
- 🆕 MapR 6.0.1 (via maprdbandmaprjsondb)
- MongoDB 3.6.4 (via mongodbandmongodb-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)
- 🆕 YugaByte DB 1.0.0 (via cassandra-cql)
Tested in previous releases, unchanged in this release
- AsyncHBase 1.7 (via asynchbasebinding).
- Google Bigtable (via googlebigtablebinding).
- Google Bigtable accessing using the HBase client (via hbase10binding)
- Couchbase2 4.0 and 4.5 (via couchbase2binding).
- DynamoDB using AWS SDK 1.10.48 (via dynamodbbinding).
- OrientDB 2.2.10 (via orientdbbinding).
- REST (via restbinding).
- Riak 2.x.y (via riakbinding).
- Azure Table Storage (via azuretablestoragebinding).
- Tarantool 1.6.6-249, 1.6.8, 1.7-alpha (via tarantoolbinding).
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 Release Candidate 1
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.
YCSB 0.13.0
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 intprimitive type tolongas 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 TEXTinstead ofVARCHAR. 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.shandycsb.bat, don't work from a source checkout. Work around by using the python scriptycsb(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.countmode 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.
YCSB 0.13.0 Release Candidate 1
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