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 idsite.ycsb
and Java packages have changed to be insite.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
, andasynchbase
bindings and CDH6 viahbase20
binding - Apache Ignite (incubating) 2.6.0 (via
ignite
andignite-sql
)- client versoin bump (#1270)
- 🆕 Azure Cosmos DB (#1264 #1298 #1300)
- and Azure Cosmos DB Cassandra API via the
cassandra-cql
binding 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
postgrenosql
binding (#1242) - 🆕 Table Store from Alibaba Cloud (#1286)
- 🆕 Toshiba GridDB (#1258)
- 🆕 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
andaccumulo1.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
azuretablestorage
binding). - Couchbase2 4.0 and 4.5 (via
couchbase2
binding). - DynamoDB using AWS SDK 1.10.48 (via
dynamodb
binding).
- FoundationDB 5.2.5 (via
foundationdb
)
- Google Cloud Datastore (via
googledatastore
) - MapR 6.0.1 (via
maprdb
andmaprjsondb
) - Riak 2.x.y (via
riak
binding). - Redis 4.0.9 in non-cluster mode (via
redis
) - REST (via
rest
binding).
- RocksDB (via
rocksdb
)
- 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
- 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.7
andaccumulo1.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. Thearangodb3
binding is deprecated. (#1166)
- The
- 🆕 FoundationDB 5.2.5 (via
foundationdb
) - 🆕 Apache Ignite (incubating) 2.6.0 (via
ignite
andignite-sql
) - 🆕 RocksDB (via
rocksdb
)
Tested in previous releases, unchanged in this release
- Aerospike 4.2.0.3 (via
aerospike
) - AsyncHBase 1.7 (via
asynchbase
binding). - Google Bigtable (via
googlebigtable
binding). - Google Bigtable accessing using the HBase client (via
hbase10
binding) - Apache Cassandra 3.11.2 (via
cassandra-cql
) - Couchbase2 4.0 and 4.5 (via
couchbase2
binding). - Google Cloud Datastore (via
googledatastore
) - DynamoDB using AWS SDK 1.10.48 (via
dynamodb
binding). - 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
maprdb
andmaprjsondb
) - MongoDB 3.6.4 (via
mongodb
andmongodb-async
) - OrientDB 2.2.10 (via
orientdb
binding). - Riak 2.x.y (via
riak
binding). - Redis 4.0.9 in non-cluster mode (via
redis
) - REST (via
rest
binding). - Azure Table Storage (via
azuretablestorage
binding). - Tarantool 1.6.6-249, 1.6.8, 1.7-alpha (via
tarantool
binding). - 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
int
primitive type tolong
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)
- ❗ [JDBC] The JDBC binding now expects fields to be
TEXT
instead 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
maprdb
andmaprjsondb
) - MongoDB 3.6.4 (via
mongodb
andmongodb-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
asynchbase
binding). - Google Bigtable (via
googlebigtable
binding). - Google Bigtable accessing using the HBase client (via
hbase10
binding) - Couchbase2 4.0 and 4.5 (via
couchbase2
binding). - DynamoDB using AWS SDK 1.10.48 (via
dynamodb
binding). - OrientDB 2.2.10 (via
orientdb
binding). - REST (via
rest
binding). - Riak 2.x.y (via
riak
binding). - Azure Table Storage (via
azuretablestorage
binding). - Tarantool 1.6.6-249, 1.6.8, 1.7-alpha (via
tarantool
binding).
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
int
primitive type tolong
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 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.sh
andycsb.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.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.
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