tikv / rust-rocksdb

rust wrapper for rocksdb

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Support rocksdb-cloud

yiwu-arbug opened this issue · comments

Add bindings for rocksdb-cloud(https://github.com/rockset/rocksdb-cloud)'s CloudEnv interface. In particular the following tasks need to be done:

updated plan:

  • port cloud-env code from rocksdb-cloud to tikv/rocksdb 6.4.tikv branch, but make the code compile conditionally.
  • add crocksdb binding for the cloud env code.
  • add rust binding code. Gate the code and building of the cloud code behind a "rocksdb-cloud" feature.

(original plan):

  • make rocksdb-cloud a submodule of rust-rocksdb
  • create a custom CMake script to build only the CloudEnv code but not the rest of rocksdb code in it. Instead use rocksdb headers from /librocksdb/rocksdb while building.
  • add C bindings to manipulate CloudEnvOptions and call NewAwsEnv. The rocksdb-cloud submodule and the C binding should be in a librocksdb_cloud_sys crate.
  • implement Env::new_aws_env in src/rocksdb.rs.

Most of the task is similar to how we support titan (librocksdb_sys/libtitan_sys), but this time let don't put librocksdb_cloud_sys inside librocksdb_sys directory.

So we are supposed to be integrating the code within the same path, i.e. librock_sys/rocksdb-cloud so that we can start utilising rocksdb-cloud/cloud. Are we supposed to make the submodule at branch master?

but this time let don't put librocksdb_cloud_sys

To be more clear, are we supposed to or not supposed to create a new crate?

So we are supposed to be integrating the code within the same path, i.e. librock_sys/rocksdb-cloud so that we can start utilising rocksdb-cloud/cloud. Are we supposed to make the submodule at branch master?

I would like to add the path librocksdb_cloud_sys under root directory. And yes, in master branch, but probably guard it behind a rocksdb-cloud feature.

#517 merged. work done.