Every 6 months, RocksDB team gets together to prioritize the work ahead of us. We just went through this exercise and we wanted to share the results with the community. Here’s what RocksDB team will be focusing on for the next 6 months:
As you might know, we’re working hard to integrate RocksDB as a storage engine for MySQL. This project is pretty important for us because we’re heavy users of MySQL. We’re already getting pretty good performance results, but there is more work to be done. We need to focus on both performance and stability. The most high priority items on are list are:
Reduce CPU costs of RocksDB as a MySQL storage engine
Implement pessimistic concurrency control to support repeatable read isolation level in MyRocks
Reduce P99 read latency, which is high mostly because of lingering tombstones
Port ZSTD compression
Another database that we’re working on is MongoDB. The project of integrating MongoDB with RocksDB storage engine is called MongoRocks. It’s already running in production at Parse  and we’re seeing surprisingly few issues. Our plans for the next half:
Keep improving performance and stability, possibly reuse work done on MyRocks (workloads are pretty similar).
Increase internal and external adoption.
Support new MongoDB 3.2.
RocksDB on cheaper storage media
Up to now, our mission was to build the best key-value store “for fast storage” (flash and in-memory). However, there are some use-cases at Facebook that don’t need expensive high-end storage. In the next six months, we plan to deploy RocksDB on cheaper storage media. We will optimize performance to RocksDB on either or both:
Hard drive storage array.
Quality of Service
When talking to our customers, there are couple of issues that keep reoccurring. We need to fix them to make our customers happy. We will improve RocksDB to provide better assurance of performance and resource usage. Non-exhaustive list includes:
Iterate P99 can be high due to the presence of tombstones.
Write stalls can happen during high write loads.
Better control of memory and disk usage.
Service quality and performance of backup engine.
Operation’s user experience
As we increase deployment of RocksDB, engineers are spending more time on debugging RocksDB issues. We plan to improve user experience when running RocksDB. The goal is to reduce TTD (time-to-debug). The work includes monitoring, visualizations and documentations.
What’s the status of this roadmap? “RocksDB on cheaper storage media”, has this been implemented?