milvus icon indicating copy to clipboard operation
milvus copied to clipboard

[Feature]: PebbleMQ

Open xiaofan-luan opened this issue 3 years ago • 5 comments

Is there an existing issue for this?

  • [X] I have searched the existing issues

Is your feature request related to a problem? Please describe.

Pebble is a KV storage written in go and aims to replace rocksdb in cockroach.

https://github.com/cockroachdb/pebble

We want to investigate the possibility of replace pebble with rocksdb so milvus can be more go native.

Some other benefits:

  1. more easier cross platform support
  2. maybe faster speed
  3. better code readibility
  4. better memory control

Describe the solution you'd like.

  1. check if all features used in rmq is also supported with pebble
  2. replace rmq with pebble
  3. test the performance between rmq and pebble
  4. make sure all files can be upgraded

Describe an alternate solution.

No response

Anything else? (Additional Context)

No response

xiaofan-luan avatar May 12 '22 14:05 xiaofan-luan

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions. Rotten issues close after 30d of inactivity. Reopen the issue with /reopen.

stale[bot] avatar Jun 11 '22 15:06 stale[bot]

keep it open

xiaofan-luan avatar Jun 12 '22 03:06 xiaofan-luan

/assign

vishjain avatar Jun 25 '22 17:06 vishjain

/assign

caesarjuly avatar May 10 '23 17:05 caesarjuly

Anyone interested please take it~

xiaofan-luan avatar May 10 '23 20:05 xiaofan-luan

Hi @xiaofan-luan , I'm looking into the previous PR. It's quite a huge PR. Since I'm still getting familiar with Milvus code, I'd like to know if it's better for me to replace the modules one by one - splitting the huge PR into several small PRs. As @jiaoew1991 shared before, I will keep the RocksDB code and add another implementation based on PebbleDB.

  1. Add PebbleDB to the kv module and write basic tests
  2. Add PebbleDB to mq module with the required tests
  3. Add PebbleDB to configs and other modules
  4. Do an integration test and verify the performance
  5. Remove RocksDB from the dependency

Any suggestion is welcome :).

caesarjuly avatar May 17 '23 00:05 caesarjuly

  • Add PebbleDB to the kv module and write basic tests
  • Add PebbleDB to mq module with the required tests
  • Add PebbleDB to configs and other modules
  • Do an integration test and verify the performance
  • Remove RocksDB from the dependenc

One thing I want to understand:

  1. is pebble fully compatible with rocksdb? which is saying we can upgrade without change any data format?
  2. is there a possibility to make pebble store data on S3? Others looks good to me. Migrate from unnecessary cgo to pure go is a big plus to me

xiaofan-luan avatar May 17 '23 02:05 xiaofan-luan

1. is pebble fully compatible with rocksdb? which is saying we can upgrade without change any data format?

2. is there a possibility to make pebble store data on S3?
   Others looks good to me. Migrate from unnecessary cgo to pure go is a big plus to me

All are good questions. I still need some time to figure it out. Let me come back later.

caesarjuly avatar May 17 '23 02:05 caesarjuly

Hi @xiaofan-luan , I'm looking into the previous PR. It's quite a huge PR. Since I'm still getting familiar with Milvus code, I'd like to know if it's better for me to replace the modules one by one - splitting the huge PR into several small PRs. As @jiaoew1991 shared before, I will keep the RocksDB code and add another implementation based on PebbleDB.

  1. Add PebbleDB to the kv module and write basic tests
  2. Add PebbleDB to mq module with the required tests
  3. Add PebbleDB to configs and other modules
  4. Do an integration test and verify the performance
  5. Remove RocksDB from the dependency

Any suggestion is welcome :).

Feel free to continue or redevelop a new set based on my PR. I hope this work can be completed, as it will greatly help with the Milvus standalone mode.

jiaoew1991 avatar May 17 '23 03:05 jiaoew1991

Hi @xiaofan-luan , regarding the questions:

  1. There are some features not supported by Pebble, according to the readme. But all the features we are using are included, like simply load/set/prefix_scanning, these kinds of primitive APIs. If there is any other concern, please point out.
  2. They don't have plan to support s3, according to this issue.

Hi @jiaoew1991 , I created the first PR and left a few questions. Please have a look at your convenience. Thank you~

caesarjuly avatar May 18 '23 21:05 caesarjuly