-
Notifications
You must be signed in to change notification settings - Fork 0
RocksJava API TODO
This page sets out the known TODO items for the RocksJava API, it also shows who is thinking/working on a particular topic; Through this mechanism hopefully we can avoid duplicating effort.
-
Adjust RocksJava Comparator implementation - We analyzed the current implementation and noticed a significant loss of performance using the current implementation. So we decided to do the following steps in order
-
Analyze which one of the comparator implementations is performing better either
DirectComparator
orComparator
-
Outline a proper way to use Custom-C++-Comparators with RocksJava.
-
Remove everything but one Comparator implementation. Depending on the analysis listed above.
-
Document the performance penalties in related JavaDoc.
-
FindShortestSeparator
andFindShortSuccessor
shall only do something if the Java method is implemented. What`s currently not the case. -
Rework
WBWIIterator
to use bothSlice
andDirectSlice
(see above). -
Introducefinal
on variables/members everywhere they are immutable. -
Implement
ldb
for Java. For example, the ability to specify the Comparator which implemented in Java. @adamretter -
Custom merge operator for Java. At the moment it is only possible to use merge operators which are available in C++ but not implementing custom functionality solely in Java.Decision: will not be implemented. -
Expose an AbstractLogger. RocksDB C++ api allows to provide a custom Logger. This shall also be possible from Java side and allows to attach RocksDB logging to application logging facilities. -
Document the performance penalties if log level is too verbose. -
Port remaining functionality in
db.h
to RocksJava. @fyrz -
Update Statistics/HistogramData to 3.10@fyrz -
Build isolation. Building Java API should not require building RocksDB. You should be able to use a Java API build with a separate existing RocksDB installation. The Java API native aspect will instead indirectly depend on a shared or static RocksDB lib. @adamretter
-
Expose optimistic locking @fyrz
-
Move on to Java-8, especially because Java-7 is EOL this year.
-
Look at Java 8 Long#unsigned operations.
-
Consider whether we should add an UnsignedLong, UnsignedInt class types of our own to prevent users from sending invalid DBOptions.
-
Restructure the package layout within the Java part.
-
Implement ARM (Automatic Resource Management) e.g.DONE @adamrettertry-with-resources
Java 7 use viaCloseable
/AutoCloseable
for iterators, db, write batches etc. Along with this change we will remove the auto-cleanup for c++ resources usingfinalize
. Instead we will throw an exception if a C++ resource is going to be finalized without freeing the native handle first. -
Consider converting callbacks to lambda expressions
Contents
- RocksDB Wiki
- Overview
- RocksDB FAQ
-
Developer's Guide
- Basic Operations
- Known Issues
- Block-based Table Format
- MANIFEST
- Block Cache
- PlainTable Format
- Bloom Filter
- Hash-Based Memtable
- Prefix seek
- Read-Modify-Write Operator
- Tailing Iterator
- Single Delete
- Time to Live (TTL) Support
- Huge Page TLB Support
- Column Families
- Universal compaction style
- FIFO compaction style
- Write Ahead Log File Format
- WAL Recovery Modes
- EventListener
- Rate Limiter
- RocksDB Options File
- Transactions
- Creating and Ingesting SST files
- Statistics
- Perf Context and IO Stats Context
- Logger
- Tools / Utilities
- Implementation Details
- RocksJava
- Performance
- Misc