utsaslab / pebblesdb

The PebblesDB write-optimized key-value store (SOSP 17)
BSD 3-Clause "New" or "Revised" License
508 stars 101 forks source link

Implement Java JNI Wrapper #2

Closed vijay03 closed 6 years ago

vijay03 commented 7 years ago

Implement Java JNI Wrapper so that Java applications can access PebblesDB.

dotnwat commented 7 years ago

The rocksdb jni wrappers are well written. It'd probably be straight forward to start with that and nuke parts of the api that aren't available in pebbles. https://github.com/facebook/rocksdb/tree/master/java

vijay03 commented 7 years ago

thanks @noahdesu, this is really useful! We'll take a look at the RocksDB JNI wrappers.

vijay03 commented 7 years ago

Actually, there are JNI wrappers for LevelDB itself, which might be a better fit for PebblesDB: https://github.com/fusesource/leveldbjni (@jialin-li: check it out?)

calin-iorgulescu commented 6 years ago

Don't know if this is still of interest, but I was recently able to build the leveldbjni code with PebblesDB. I've pushed my changes here: https://github.com/calin-iorgulescu/leveldbjni/tree/pebblesdb . I also changed the build instructions to apply to pebblesdb.

It seems that the main differences are the lack of Suspend/ResumeCompaction operations from the flavour of LevelDB that the authors originally used. One test also needed to be commented out due to it expecting a different compaction behavior than that of PebblesDB.

I have yet to fully test it, but the built-in simple tests seem to work.

vijay03 commented 6 years ago

Hi @calin-iorgulescu, thank you for the note! As it turns out, @abhijith97 has been working on the same thing, and we have the changes merged into our group's fork of leveldbjni: https://github.com/utsaslab/leveldbjni. I believe the changes are exactly the same. Abhijith just done with the work, or I could have saved you some effort.

calin-iorgulescu commented 6 years ago

Ah, missed that. Nevertheless, the YCSB driver implementation is definitely useful. Thanks!

vijay03 commented 6 years ago

Closed by pull request #15 by @abhijith97. Thanks @abhijith97!