Like sands through the hourglass, so are the days of our lives. And with that, the H-Store project is pleased to announce the release of the latest version of its high-performance, distributed transaction processing database management system. This version contains a significant new advancement in main memory NewSQL systems called anti-caching. H-Store now includes a disk-resident, block storage anti-cache to store “cold” data that has been removed from the memory-resident storage in order to free up space for new data. Preliminary experiments show that H-Store with anti-caching outperforms traditional DBMSs even for databases that are larger than the amount of memory available on a single node.
If the amount of memory used in the partitions for an HStoreSite goes above an administrator-defined threshold, then H-Store will evict the least recently used tuples and write them out to the anti-cache storage disk. H-Store still maintains index information in memory for any evicted tuples stored on disk. If a transaction attempts to access one of these evicted tuples, then it is switched into a “pre-pass” mode where the engine records all tuples that it tried to access. Once that transaction attempts to do something with those tuples (e.g., modify them, return them to the stored procedure), then it is aborted and put in a queue while the AntiCacheManager thread asynchronously retrieves those records and merge them back into memory.
Additional information about the new anti-caching architecture in H-Store is available on-line:
- Anti-Caching and Non-Volatile Memory for Transactional DBMSs (Pavlo / Stonebraker)
- The Traditional Wisdom is All Wrong (DeBrabant)
Major highlights of this release:
- New anti-caching feature allows H-Store to support databases that are larger than the amount of memory available to an HStoreSite. This initial implementation uses BerkeleyDB’s hash table (which is now included in the source code).
- Improved H-Store’s built-in implementation of the YCSB benchmark. The data generator is now multi-threaded and the transactions are guaranteed to be deterministic. [2ec227a] [7302cd8] [5747a41] [9791e1d]
- Improved runtime performance of command logging. The PartitionExecutors will now send completed transactions to the TransactionPostProcessor threads. This helps to reduce the latency of transactions. [9d66da2] [88550be]  [3b13cd4]
- Reduced the number of TransactionCleaner threads needed to clean-up finished transactions and return them to internal object pools. [844db91]
- Various performance optimizations and stability fixes. [fb81eb9] [5b15079] [8de21a6] [2895a38] [4a12097] [2fa67a0] [923e155] [831ab1c] [06e8144] [7ee989d]
The source code for this release can be downloaded via Github: