ΠΠ΄ΡΠ°Π²ΡΡΠ²ΡΠΉΡΠ΅, Ρ Ρ ΠΎΡΡ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ°ΠΌΠΈ rockdb. ΠΠ°ΡΠΊΠΎΠ»ΡΠΊΠΎ Ρ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ, ΡΠ΅ΠΏΠ΅ΡΡ rust-rocksdb ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π²ΡΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ API, ΠΊΡΠΎΠΌΠ΅ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΉ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ β ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ writebatch. Π― Ρ ΠΎΡΡ ΡΠΎΠ·Π΄Π°ΡΡ WriteBatch ΠΈΠ· Π±Π°ΠΉΡΠΎΠ² ΠΈ ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ Π² Π±Π°ΠΉΡΡ, ΡΡΠΎΠ±Ρ ΠΈΠΌΠ΅ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡ Π΅Π³ΠΎ ΠΏΠΎ ΡΠ΅ΡΠΈ Π΄Π»Ρ ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ.
ΠΡΡΡ Π»ΠΈ ΡΠΏΠΎΡΠΎΠ± Π΄ΠΎΡΡΠΈΡΡ ΡΡΠΎΠ³ΠΎ? ΠΠ»ΠΈ Ρ ΠΌΠΎΠ³Ρ ΡΠ΄Π΅Π»Π°ΡΡ PR Ρ ΠΌΠΎΠΈΠΌ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ.
ΠΠ·Π²ΠΈΠ½ΠΈΡΠ΅ Π·Π° Π·Π°Π΄Π΅ΡΠΆΠΊΡ Ρ ΠΎΡΠ²Π΅ΡΠΎΠΌ. Π§Π΅ΡΡΠ½ΠΎ Π³ΠΎΠ²ΠΎΡΡ, ΡΠ΅ΠΉΡΠ°Ρ Ρ ΠΌΠ΅Π½ΡΡΠ΅ Π·Π°Π½ΠΈΠΌΠ°ΡΡΡ ΡΠ΅ΠΌ-Π»ΠΈΠ±ΠΎ, ΡΠ²ΡΠ·Π°Π½Π½ΡΠΌ Ρ RocksDB, ΠΏΠΎΡΡΠΎΠΌΡ Π½Π΅ ΡΠΎΠ²ΡΠ΅ΠΌ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ Π²Π°ΡΡ ΡΠΈΡΡΠ°ΡΠΈΡ. ΠΠ΅ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ Π²Ρ ΡΡΠΎΡΠ½ΠΈΡΡ, ΠΊΠ°ΠΊΠΎΠΉ API Π½ΡΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ?
ΠΠ½Π΅ Π½ΡΠΆΠ½ΠΎ ΡΡΠΎ-ΡΠΎ Π²ΡΠΎΠ΄Π΅:
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) }
}
}
}
Π‘ Π½Π΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ writeBatch Ρ ΡΠΌΠΎΠ³Ρ ΠΎΡΠΏΡΠ°Π²ΠΈΡΡ Π΅Π³ΠΎ ΠΏΠΎ ΡΠ΅ΡΠΈ Π²ΠΎ Π²ΡΠΎΡΠΈΡΠ½ΡΡ ΡΠ΅ΠΏΠ»ΠΈΠΊΡ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ .
ΠΡΠΌΠ°Ρ Π΅ΡΡΡ ΡΠΌΡΡΠ» Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΡΠ°ΠΊΠΎΠΉ Π°ΠΏΠΈ. Π₯ΠΎΡΠΈΡΠ΅ ΠΎΡΠΏΡΠ°Π²ΠΈΡΡ Π·Π°ΠΏΡΠΎΡ Π½Π° Π²ΡΡΡΠ³ΠΈΠ²Π°Π½ΠΈΠ΅?
ΠΠΎΠ½Π΅ΡΠ½ΠΎ.
Π‘Π°ΠΌΡΠΉ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ
ΠΠ½Π΅ Π½ΡΠΆΠ½ΠΎ ΡΡΠΎ-ΡΠΎ Π²ΡΠΎΠ΄Π΅:
Π‘ Π½Π΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ writeBatch Ρ ΡΠΌΠΎΠ³Ρ ΠΎΡΠΏΡΠ°Π²ΠΈΡΡ Π΅Π³ΠΎ ΠΏΠΎ ΡΠ΅ΡΠΈ Π²ΠΎ Π²ΡΠΎΡΠΈΡΠ½ΡΡ ΡΠ΅ΠΏΠ»ΠΈΠΊΡ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ .