Halo, saya ingin menerapkan replikasi antara instance rockdb. Sejauh yang saya mengerti, sekarang rust-rocksdb mendukung semua api yang diperlukan, kecuali satu fitur terakhir - serialisasi writebatch. Saya ingin membuat WriteBatch dari byte dan membuat serial menjadi byte, untuk dapat mengirimkannya melalui jaringan untuk replikasi.
Apakah ada cara untuk mencapainya? Atau saya bisa membuat PR dengan solusi saya.
Maaf untuk jawaban yang terlambat. Sejujurnya, saya kurang terlibat dengan apa pun yang terkait dengan RocksDB sekarang, jadi saya tidak sepenuhnya memahami situasi Anda. Bisakah Anda menjelaskan tentang api apa yang perlu ditambahkan?
Saya butuh sesuatu seperti:
impl WriteBatch {
/// Tries to serialize writebatch as raw bytes vector with null values
/// Its useful for sending write batches over network.
pub fn try_into_raw(&self) -> Result<Vec<u8>, Error> {
let data;
unsafe {
let mut repsize1: size_t = 0;
let rep: *const i8 = ffi::rocksdb_writebatch_data(self.inner, &mut repsize1);
let cs = slice_from_raw_parts(rep as *const u8, repsize1);
data = cs.as_ref().ok_or_else(|| {
Error::new("writeBatch reference is Null".to_string())
})?.to_vec();
}
Ok(data)
}
/// creates writeBatch from raw input
pub fn from_raw(data: &[u8]) -> Self {
let u8slice = unsafe {
&*(data as *const _ as *const [i8])
};
WriteBatch {
inner: unsafe { ffi::rocksdb_writebatch_create_from(u8slice.as_ptr(), data.len() as size_t) }
}
}
}
Dengan nilai mentah writeBatch, saya akan dapat mengirimkannya melalui jaringan ke replika database sekunder.
Saya kira masuk akal untuk menambahkan api seperti itu. Apakah Anda ingin mengajukan permintaan tarik?
Tentu.
Komentar yang paling membantu
Saya butuh sesuatu seperti:
Dengan nilai mentah writeBatch, saya akan dapat mengirimkannya melalui jaringan ke replika database sekunder.