Skip to content

YCSB 0.14.0

Compare
Choose a tag to compare
@busbey busbey released this 13 Jun 20:01
· 149 commits to master since this release
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 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)
  • ❗ [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)
  • ❗️ 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
  • 🆕 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()
  • 🆕 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