ํน์ ๋ฐฉ์์ผ๋ก ์์ฑ๋ DB๋ฅผ ๋ค์ ์ด๋ฉด ์๋์ ๊ฐ์ ์๋ฌ๊ฐ ๋๋ ๊ฒ์ ๋ฐ๊ฒฌํ์ต๋๋ค.
Invalid argument: leveldb.BytewiseComparator: does not match existing comparator
CF๋ฅผ ์ง์ ํ์ง ์๊ณ DB๋ฅผ ์ด๋ฉด ์ฌ์ฉ์ ์ ์ ์ต์ ์ ์ฌ์ฉํ์ง ์๊ณ ๊ธฐ๋ณธ CF๊ฐ ์์ฑ๋๊ธฐ ๋๋ฌธ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ฌธ์ ๊ฐ ์ฝ๋์ https://github.com/rust-rocksdb/rust-rocksdb/blob/master/src/db.rs#L214 ์ ์์ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
๊ฐ๋ฅํ ์์ ์ https://github.com/rust-rocksdb/rust-rocksdb/blob/master/src/db.rs#L219 ๊ฒ์ฌ๋ฅผ empty
๊ฒ์ฌ ์ ์ ์๋ก ์ด๋ํ๊ณ ๊ธฐ๋ณธ๊ฐ์ ์ถ๊ฐํ๋ ๊ฒ์
๋๋ค. cf ๋ฌธ์์ด ๋ชฉ๋ก์.
์ฌํ ๋จ๊ณ:
์ ๊ณ ๊ฐ์ฌํฉ๋๋ค!
์ด ๋ฌธ์ ๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค. ๋ถํํ๋ ๋ชจ๋ ์ด ํจ๋ฐ๋ฆฌ(๊ธฐ๋ณธ ์ด ํจ๋ฐ๋ฆฌ๋ฟ ์๋๋ผ)๊ฐ ๊ธฐ๋ณธ ์ต์
์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ๊ทํ์ ์ ์์ด ์๋ํ์ง ์์ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
https://github.com/rust-rocksdb/rust-rocksdb/blob/master/src/db.rs#L123
์ปฌ๋ผํจ๋ฐ๋ฆฌ๋ณ๋ก ๋น๊ต๊ธฐ๋ฅผ ๋ฐ๋ก ์ ๊ณตํด์ผ ํ ๊ฒ ๊ฐ์ต๋๋ค. ์ด๋ฌํ ๊ฒฝ์ฐ์๋ ์ฝ๊ฐ ๋ค๋ฅธ API๋ฅผ ์ ๊ณตํด์ผ ํ ๊ฒ ๊ฐ์ต๋๋ค.
@DarkEld3r ๊ฐ์ฌํฉ๋๋ค. ๋๋ ๊ฐ์ ์๊ฐ์ ํ๋ค. ์์งํ ๋๋ ์ ๋น๊ต๊ธฐ๊ฐ ๋น์ ์ด ์ค ์ ํํ ์ด์ ์ ๋ํด ์ ํ ์๋ํ๊ณ ์๋์ง ํผ๋ ์ค๋ฌ์ ์ต๋๋ค. ๋๋ ๊ทธ๊ฒ์ด ์กฐ๊ฑด๋ฌธ์ ๋ค๋ฅธ ์ชฝ์ ํก๋จํ ๋ ๋ฌด์จ ๋ง๋ฒ์ด ์ผ์ด๋๊ณ ์์๋ ๊ทธ๊ฒ ๋๋ฌธ์ ๊ณ ์น ๊ธฐํ๊ฐ ์๋ค๊ณ ์๊ฐํ์ต๋๋ค.
์์งํ ๋๋ ์ ๋น๊ต๊ธฐ๊ฐ ๋น์ ์ด ์ค ์ ํํ ์ด์ ์ ๋ํด ์ ํ ์๋ํ๊ณ ์๋์ง ํผ๋ ์ค๋ฌ์ ์ต๋๋ค.
create_cf
ํธ์ถ๋ก ์ปฌ๋ผ ํจ๋ฐ๋ฆฌ๋ฅผ ์์ฑํ๊ณ DB์ ์ฌ์ฉํ ๊ฒ๊ณผ ๋์ผํ ์ต์
์ ์ฌ์ฉํ๋ค๊ณ ๊ฐ์ ํฉ๋๋ค. ์ด๋ฌํ ์ต์
์ rockdb์ ์ ๋ฌ๋๊ธฐ ๋๋ฌธ์ ๋ชจ๋ ๊ฒ์ด ์๋ํ ๋๋ก ์๋ํ๋ ์ด์ ์ธ ๊ฒ ๊ฐ์ต๋๋ค.
@zach-schoenberger 4๋จ๊ณ์์ DB๋ฅผ ์ฌ๋ ๋ฐฉ๋ฒ์ ๋ฌด์์ธ๊ฐ์?
@zach-schoenberger ์ฌ๊ธฐ๋ฅผ ์ดํด
@aleksuss ๊ฐ์ฌํฉ๋๋ค. open_cf_descriptors
๊ธฐ๋ฅ์ ์์ ํ ๋์ณค์ต๋๋ค. ๋ค์์ด ํจ๊ณผ๊ฐ ์์์ ํ์ธํ ์ ์์ต๋๋ค.
let path = "...";
fn comparator(left: &[u8], right: &[u8]) -> Ordering {
right.cmp(left)
}
let mut options = Options::default();
options.create_if_missing(true);
options.set_comparator("comparator", comparator);
{
let mut db = DB::open(&options, &path).expect("Unable to create a DB");
db.create_cf("cf1", &options).expect("Unable ");
}
{
let mut cf_options = Options::default();
cf_options.set_comparator("comparator", comparator);
let descriptors = vec![ColumnFamilyDescriptor::new("cf1", cf_options)];
let _ = DB::open_cf_descriptors(&options, &path, descriptors);
}
ํฅ๋ฏธ๋ก์ด. ๋ถ๋ช ์ฒ์์๋ ๊ทธ๋ ๊ฒ ์๊ฐํ์ง ์์์ ๊ฒ์ด๋ค. ์์ ๋ด์ฉ์ ์ฌ์ฉํ๋๋ก ์ ๋ฐ์ดํธํ๊ฒ ์ต๋๋ค. ํ์คํ ๋์๊ฒ ์ง๊ด์ ์ด์ง ์์์ต๋๋ค. DB::open_cf() ๋ฐ DB::open()์ ์ฌ์ฉํ๊ณ ์์์ต๋๋ค. DB::open ๋์ ์ด๊ธฐ DB::open_cf์ ํจ๊ป "๊ธฐ๋ณธ" cf ์ด๋ฆ์ ํฌํจํ์ฌ ์๋ํ๋ ๊ฒ์ฒ๋ผ ๋ณด์ด๋ ์๋ ์๋๋ฆฌ์ค๋ฅผ ์ป์์ง๋ง ์ต์ ์ ์กด์คํ๋ ๊ฒ์ฒ๋ผ ๋ณด์ด๊ธฐ ๋๋ฌธ์ ์์ ๋ด์ฉ์ด ํจ์ฌ ๋ ๋ง์์ ๋ญ๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
@zach-schoenberger ์ฌ๊ธฐ๋ฅผ ์ดํด