เปเบเบฅเบฐเบเบนเปเบเปเบกเปเบเบปเปเบเบเบญเบเบเบต 2019, เปเบซเบเบเบฒเบเบเบตเปเบฅเปเบเบญเบเบกเบฒเบเบปเบเบเบฒเบเปเบเปเปเบเบตเบเบเบถเปเบเปเบเบเบตเบก Mail.ru Cloud iOS. เบเบฒเบเบเปเปเบกเบนเบเบเบปเปเบเบเปเบชเปเบฒเบฅเบฑเบเบเบฒเบเปเบเบฑเบเบฎเบฑเบเบชเบฒเบขเปเบฒเบเบเปเปเปเบเบทเปเบญเบเบเบญเบเบฅเบฑเบเบเปเบฒเบฎเปเบญเบเบชเบฐเบซเบกเบฑเบเปเบเปเบเบฒเบเปเบเบฑเบ exotic เบซเบผเบฒเบเบชเปเบฒเบฅเบฑเบเปเบฅเบเบกเบทเบเบท
เปเบเบทเปเบญเปเบ
เปเบฎเบเบเบนเบเปเบเปเบเบเบฒเบเบเบฐเบเบดเบเบฑเบ เบเบฒเบเบเบฑเบเบเปเบฒเปเบซเบเปเบ LMDB เบชเบฒเบกเปเบชเบปเบฒเบเปเบณเบเบญเบ LMDB
3.1โ.เบเบฒเบงเบฒเบ #1. เปเบเบฅเปเบเบตเปเบกเบตเปเบเบเบเบตเปเบเปเบงเบเปเปเบงเบเบเบงเบฒเบกเบเบณ
3.2โ.เบเบฒเบงเบฒเบ #2. B+-เบเบปเปเบเปเบกเป
3.3โ.เบเบฒเบงเบฒเบ #3. เบชเบณเปเบเบปเบฒ-เบเบฝเบ เบเบฒเบเบญเบญเบเปเบเบเปเบเบเบฎเปเบฒเบเบเปเปเบกเบนเบเบขเบนเปเปเบเบดเบเบชเบธเบเบเบญเบ key-value API
4.1โ.เบเบปเบเบเบฑเบเบซเบเปเปเบเบทเปเบเบเบฒเบ
4.2โ.เบเบฒเบเบชเปเบฒเบเปเบเบเบเปเบฒเบฅเบญเบเบเบฒเบเบฐเบฅเบฒเบ
4.3โ.เบเบฒเบเบชเปเบฒเบเปเบเบเบเปเบฒเบฅเบญเบเบเบงเบฒเบกเบชเปเบฒเบเบฑเบเบฅเบฐเบซเบงเปเบฒเบเบเบฒเบเบฐเบฅเบฒเบ
1. เปเบฎเบเบเบนเบเปเบเปเบเบเบฒเบเบเบฑเบเบเบฑเปเบเบเบฐเบเบดเบเบฑเบ
เบซเบเบถเปเบเบเบตเปเบเบเบต 2015, เบเบงเบเปเบฎเบปเบฒเปเบเปเปเบญเบปเบฒเบเบฑเบเบซเบฒเปเบเบเบฒเบเบงเบฑเบเปเบเบเปเบฅเบทเปเบญเบเปเบงเปเบฒเบเบฒเบเปเบเปเบเบญเบเบเบญเบเบเปเบฒเบฎเปเบญเบเบชเบฐเบซเบกเบฑเบเบเบญเบเบเบงเบเปเบฎเบปเบฒเบเบฑเบเบเปเบฒ. เบเบงเบเปเบฎเบปเบฒเปเบฎเบฑเบเบญเบฑเบเบเบตเปเบเปเบงเบเปเบซเบเบเบปเบ. เบเบงเบเปเบฎเบปเบฒเปเบเปเบฎเบฑเบเบเบฒเบเบฎเปเบญเบเบเบธเบเปเบฅเบทเปเบญเบเปเปเบฅเบทเปเบญเบเปเบงเปเบฒเบเบฒเบเบเบฑเปเบเปเบญเบฑเบเบเบฅเบดเปเบเบเบฑเบเบขเบธเบเบเบฒเบเบเบญเบเบชเบฐเบซเบเบญเบเบเปเปเบเบฒเบเบเบฐเบเปเบฒเบเบญเบเบเบนเปเปเบเป: เบเบธเปเบกเบเปเปเบชเบฒเบกเบฒเบเบเบปเบเปเบเป, เบฅเบฒเบเบเบทเปเบเปเปเปเบฅเบทเปเบญเบ, เปเบฅเบฐเบญเบทเปเบเป. เบเปเบฝเบงเบเบฑเบเบเบปเบเปเบเบเบฒเบเบงเบฑเบเปเบเบ
เบเบปเบเปเบเปเบฎเบฑเบเบเบฒเบเบงเบฑเบเปเบเบเปเบเปเบเบฒเบเปเบเบฑเบเบญเบฒเบเบเปเปเบฒเปเบขเบฑเบเบชเปเบฒเบฅเบฑเบเบเบงเบเปเบฎเบปเบฒ. เบกเบฑเบโเปเบเปโเบซเบฑเบโเบญเบญเบโเบงเปเบฒโเบกเบตโเบซเบผเบฒเบโเบเบฑเบโเบซเบฒโเบเบตเปโเปเบเบตเบโเบเบฒเบ freezes เบโเปโเบงเบฒโเบญเบทเปเบเปโ. เบเปเบฒเบเปเบญเบเบเบตเปเบเบฐเบฎเบฑเบเบฎเบนเปเบเบงเบฒเบกเปเบเบฑเบเบเบดเบเบเบตเปเบเบปเบงเบเบตเปเบงเบฑเบเบเปเบฒเบเบงเบดเบเบฒเบเบฒเบเบเบปเปเบเบเปเบเบญเบเบเบธเบเบเบฐเบเบฒเบเปเบกเปเบเบเปเปเบกเบตเบญเบธเบเบฐเบเบดเปเบซเบ, เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบซเบผเบฑเบเบเบฒเบเบชเบธเบกเปเบชเป
เบกเบตเบเบฒเบเบเปเปเบชเปเบฒเบ
เบฎเบนเบเปเบเบเบเบปเบงเบฅเบฐเบเบญเบเบเบญเบเบญเบปเบเบเบฒเบเบเบฑเบเบเบฑเปเบเบฅเบฐเบเบปเบเบเบทเบงเปเบฒ multithreading เบเบฒเบเปเบเบฑเบเบเบงเบฒเบกเบชเปเบฒเบเบฑเบเบเบตเบชเบญเบเบเบญเบเบกเบฑเบ. เบงเบฑเบเบเบธเปเบเบเบเปเบฒเบฅเบญเบเปเบเบกเบฑเบเบขเบฒเบเบเบฐเบเปเบฒเบกเบเบญเบเปเบเบเบเบฒเบเบเปเบฒเบเบเบญเบ. เปเบฅเบฐโเปเบเบปเบฒโเปเบเบปเปเบฒโเปเบฎเบฑเบโเปเบเบงโเบเบตเปโเบเปเปโเปเบกเปเบโเบเบฒเบโเบเบฑเปเบโเปเบฅเบฐโเบเบตเปโเบเบตเปโเปเบฅเบฐโเบเบตเปโเบเบฑเปเบโ, เปเบเปโเปเบเบทเบญเบโเบชเบฐโเปเบซเบกเบตโเปเบฅเบฐโเบขเบนเปโเบเบปเปเบงโเบเบธเบโเปเบซเปเบ ..
เบเบฒเบเบเปเปเบกเบนเบเปเบกเปเบเบซเบเบถเปเบเปเบเบญเบปเบเบเบฐเบเบญเบเบเบทเปเบเบเบฒเบเปเบเปเบเบเบงเบฒเบเบเบตเปเบเปเบฒเบชเบฐเปเบซเบเบต. เบงเบฝเบเบเบฒเบเบเบปเปเบเบเปเบเบญเบเบกเบฑเบเปเบกเปเบเบเบฒเบเบเบฐเบเบดเบเบฑเบ macropattern
เบเบฑเบเปเบเบเบตเปเบชเปเบฒเบเบฑเบเบเบตเบชเบญเบเบเบตเปเบกเบตเบญเบดเบเบเบดเบเบปเบเบเปเปเบเบฒเบเปเบฅเบทเบญเบเบเบฒเบเบเปเปเบกเบนเบเปเบกเปเบ API เบเบฑเบเบเบญเบเบเบงเบเปเบฎเบปเบฒ. เบกเบฑเบเปเบเปเบฎเบฑเบเบเบฒเบเบเบปเบเปเบเปเบเบเบงเบดเบเบตเบเบฒเบ synchronization เปเบเปเบฎเบฑเบเบฎเบญเบเปเบญเบปเบฒเปเบเบ git. เปเบเบฑเปเบเบเบฝเบงเบเบฑเบเบเบฑเบเบฅเบฒเบง, เบเบงเบเปเบฎเบปเบฒเบกเบตเบเบธเบเบเบฐเบชเบปเบ
เบเบฑเปเบเบเบฑเปเบ, เบเปเบฒเบเปเบฒเบเบเบดเบเบเบฐเบเบฒเบเบฒเบ git, เปเบเบดเปเบ, เปเบกเบทเปเบญเบเบฐเบเบดเบเบฑเบเบเปเบฒเบชเบฑเปเบเบเบถเบ, เปเบเบเบเบตเปเบเบฐเปเบเป patches เบเบฑเบ snapshot เบเปเบญเบเบเบดเปเบ, เบเบฝเบเบเบฝเบเบชเบฐเบเบฒเบเบฐเปเบเบฑเบกเบเบญเบเบกเบฑเบเบเบฑเบเบฅเบฑเบเปเบเบตเบเปเบงเบตเปเบเบฑเบก, เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเปเบเบปเปเบฒเบเบฐเบกเบตเบเบงเบฒเบกเบเบดเบเบเบตเปเบเบทเบเบเปเบญเบเบเปเบฝเบงเบเบฑเบเบงเบดเบเบต synchronization เปเบเบตเบเบเบทเปเบเปเบ cloud. เบฅเบนเบเบเปเบฒ. เบกเบฑเบเบเปเบฒเบเบเบตเปเบเบฐเปเบเบปเบฒเบงเปเบฒเปเบเบทเปเบญเบเบฐเบเบดเบเบฑเบเบกเบฑเบ, เบเปเบฒเบเบเปเบฒเปเบเบฑเบเบเปเบญเบเบเบฑเบเบชเบฑเบเบชเบญเบเบเบปเปเบเปเบกเป DOM เปเบเบซเบเปเบงเบเบเบงเบฒเบกเบเปเบฒเบเบตเปเบกเบตเบเปเปเบกเบนเบ meta เบเปเบฝเบงเบเบฑเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบเปเบฅเบฐเปเบเบฅเปเบเปเบญเบเบเบดเปเบเบเบฑเบเบซเบกเบปเบ. เบกเบฑเบเบเบฐเบเบปเบเบงเปเบฒเบเปเบฒเบเบนเปเปเบเปเปเบเบฑเบเบฎเบฑเบเบชเบฒ 500 เบเบฑเบเปเบเบฅเปเบขเบนเปเปเบเปเบกเบ, เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเปเบเบทเปเบญ synchronize เบกเบฑเบเบเปเบฒเปเบเบฑเบเบเปเบญเบเบชเปเบฒเบเปเบซเบกเปเปเบฅเบฐเบเปเบฒเบฅเบฒเบเบเบปเปเบเปเบกเปเบชเบญเบเบขเปเบฒเบเบเบตเปเบกเบต 1 เบฅเปเบฒเบ nodes. เปเบเปเปเบเปเบฅเบฐ node เปเบกเปเบเบเบฒเบเบฅเบงเบกเบเบฑเบเบเบตเปเบกเบตเปเบชเบฑเปเบเบชเบฐเปเบเบเบเบญเบเบซเบปเบงเบเปเปเบเปเบญเบ. เปเบเบเบงเบฒเบกเบชเบฐเบซเบงเปเบฒเบเบเบตเป, เบเบปเบเปเบเปเบฎเบฑเบเบเบญเบ profile เบเบฒเบเบงเปเบฒเบเบฐเปเบเบฑเบ. เบกเบฑเบเปเบเปเบซเบฑเบเบญเบญเบเบงเปเบฒเปเบเบดเบเปเบกเปเบเบงเปเบฒเปเบเบเบเปเปเบกเบตเบเบฒเบเบเปเบฒเบเบถเบเปเบเบดเบเบชเบนเบเบเบฒเบเบฅเบงเบก, เบเบฑเปเบเบเบญเบเบเบฒเบเบชเปเบฒเบเปเบฅเบฐเบเปเปเบกเบฒเบเปเบฒเบฅเบฒเบเบเปเบฒเบเบงเบเบเบฐเบซเบเบฒเบเปเบซเบเปเบเบญเบเบงเบฑเบเบเบธเบเบฐเบซเบเบฒเบเบเปเบญเบเบเปเบฒเปเบเปเบเปเบฒเบเปเบเบฑเบ penny pretty. เบเบญเบเบชเบฐเบเบฃเบดเบเบเบนเปเปเบเป. เบเบฑเปเบเบเบฑเปเบ, เบเบงเบเปเบฎเบปเบฒเปเบเปเปเบเปเบเบทเปเบญเบเปเบเบเบตเปเบชเปเบฒเบเบฑเบเบเบตเบชเบญเบเปเบเบเบฒเบเปเบฅเบทเบญเบเบเบฒเบเบเปเปเบกเบนเบ - เบเบงเบฒเบกเบชเบฒเบกเบฒเบเปเบเบเบฒเบเบเบฐเบเบดเบเบฑเบเบเบฒเบเบเบฐเบเบดเบเบฑเบ CRUD เปเบเบเบเปเปเบกเบตเบเบฒเบเบเบฑเบเบชเบฑเบเปเบเบเปเบเบทเปเบญเบเปเบซเบงเบเบญเบเบงเบฑเบเบเบธ.
เบเบงเบฒเบกเบเปเบญเบเบเบฒเบเบญเบทเปเบเปเปเบกเปเบเปเบเบเบเบฑเปเบเปเบเบตเบกเบซเบผเบฒเบเปเบฅเบฐเบเบฑเบเบเบตเบฅเบฒเบเบเบทเปเบเบฑเบเบซเบกเบปเบเบเบญเบเบเบงเบเปเบเบปเบฒเปเบกเปเบเบเบฑเปเบเบเปเปเปเบเบเบตเป.
- เบเบงเบฒเบกเบเบญเบเปเบเบเบฐเบเบนเป.
- Multiprocessing. dictated เปเบเบเบเบงเบฒเบกเบเบฒเบเบฐเบซเบเบฒเบเบตเปเบเบฐเบเปเบฒเปเบเปเบเบปเบงเบขเปเบฒเบเบเบฒเบเบเปเปเบกเบนเบเบเบฝเบงเบเบฑเบเปเบเบทเปเบญ synchronize เบชเบฐเบเบฒเบเบฐเบเปเปเบเบฝเบเปเบเปเบฅเบฐเบซเบงเปเบฒเบเบเบฐเบเบนเป, เปเบเปเบเบฑเบเบฅเบฐเบซเบงเปเบฒเบเบเปเบฒเบฎเปเบญเบเบชเบฐเบซเบกเบฑเบเบเบปเปเบเบเปเปเบฅเบฐ iOS extensions.
- เบเบงเบฒเบกโเบชเบฒโเบกเบฒเบโเบเบตเปโเบเบฐโเปเบเบฑเบโเบเบปเบงโเปเบเบโเบซเบเปเบงเบโเบเบฒเบโเบเบตเปโเปเบเบฑเบโเบฎเบฑเบโเบชเบฒโเปเบงเปโเปเบเบฑเบโเบงเบฑเบโเบเบธโเบเบตเปโเบเปเปโเบเปเบฝเบโเปเบเบ ..
- เบเปเปเบกเบตเบเบฒเบเบเบฑเบเบชเบฑเบเปเบเบเปเบเบทเปเบญเบเปเบซเบงเบเบฒเบเปเบเบเบฒเบเบเปเบฒเปเบเบตเบเบเบฒเบ CRUD.
- เบเบฒเบเบชเบฐเบซเบเบฑเบเบชเบฐเบซเบเบนเบเบเบฒเบเปเบฎเบฑเบเบเบธเบฅเบฐเบเปเบฒเบชเปเบฒเบฅเบฑเบเบเบธเบเบชเบปเบกเบเบฑเบเบเบทเปเบเบเบฒเบ
เปเบญเบเบตเบเบต : เบเบฐเบฅเปเบฒเบกเบฐเบเบน, เบเบงเบฒเบกเบชเบญเบเบเปเบญเบ, เบเบฒเบเปเบเบเบเปเบฝเบงเปเบฅเบฐเบเบงเบฒเบกเบซเบเปเบฒเปเบเบทเปเบญเบเบท. - เบเบงเบฒเบกเปเบงเปเบเบเปเบฅเบฐเบเบตเบเบตเปเบเบดเบเบปเบกเบซเบผเบฒเบเบเบตเปเบชเบธเบ.
เบเปเบงเบเบเบงเบฒเบกเบเปเบญเบเบเบฒเบเบเบตเปเบเปเบฒเบเบปเบเปเบงเปเบเบตเป, SQLite เปเบกเปเบเปเบฅเบฐเบเบฑเบเปเบเบฑเบเบเบฒเบเปเบฅเบทเบญเบเบเบตเปเบเบต. เบขเปเบฒเบเปเบเบเปเบเบฒเบก, เปเบเบฑเบเบชเปเบงเบเบซเบเบถเปเบเบเบญเบเบเบฒเบเบชเบถเบเบชเบฒเบเบฒเบเปเบฅเบทเบญเบ, เบเปเบฒเบเบฐเปเบเบปเปเบฒเปเบเปเบเบปเบเบซเบเบฑเบเบชเบท
2. เบเบฒเบเบเบฑเบเบเปเบฒเปเปเปเบ LMDB
LMDB เปเบเบฑเบเบซเปเบญเบเบชเบฐเบซเบกเบธเบเบเบฐเบซเบเบฒเบเบเปเบญเบเบซเบผเบฒเบ (เบเบฝเบเปเบเป 10K เปเบเบง) เบเบตเปเบเบฐเบเบดเบเบฑเบเบเบฑเปเบเบเบทเปเบเบเบฒเบเบเปเปเบฒเบชเบธเบเบเบญเบเบเบฒเบเบเปเปเบกเบนเบ - เบเบฒเบเปเบเบฑเบเบฎเบฑเบเบชเบฒ.
เปเบเบเบงเบฒเบเบเปเบฒเบเปเบเบดเบเบชเบฐเปเบเบเปเบซเปเปเบซเบฑเบเบงเปเบฒเบเบฒเบเบเบฝเบเบเบฝเบ LMDB เบเบฑเบ SQLite, เปเบเบดเปเบเบเบฑเบเบเบฐเบเบดเบเบฑเบเบฅเบฐเบเบฑเบเบเบตเปเบชเบนเบเบเบงเปเบฒ, เปเบเบเบเบปเปเบงเปเบเปเบฅเปเบงเบเปเปเบกเบตเบเบงเบฒเบกเบเบทเบเบเปเบญเบเบซเบผเบฒเบเบเปเบงเบฒ SQLite เบเบฑเบ Core Data. เบกเบฑเบเบเบฐเบกเบตเบเบงเบฒเบกเบเบธเบเบดเบเปเบฒเบเบงเปเบฒเบเบตเปเบเบฐเบญเปเบฒเบเปเบเบดเบเปเบเบทเปเบญเบเบเบฑเบเบเบฒเบเปเบเบฑเบเบฎเบฑเบเบชเบฒเบเบฝเบงเบเบฑเบเบเบฑเบเบเบนเปเปเบเปเบเบเบตเปเปเบเบปเปเบฒเบเบฝเบกเบเบฑเบ - BerkeleyDB, LevelDB, Sophia, RocksDB, เปเบฅเบฐเบญเบทเปเบเป. เบเบฑเบเบกเบตเบเบฒเบเบเบฑเบเบเบฐเบเบฒเบเบตเป LMDB เปเบฎเบฑเบเบซเบเปเบฒเบเบตเปเปเบเบฑเบเบญเบปเบเบเบฐเบเบญเบเบเบญเบเปเบเบทเปเบญเบเบเบฑเบเปเบเบเบฒเบเปเบเบฑเบเบฎเบฑเบเบชเบฒเบชเปเบฒเบฅเบฑเบ SQLite. เบเบฒเบเบเบปเบเบฅเบญเบเบเบฑเปเบเบเบณเบญเบดเบเปเบกเปเบเปเบเบเบต 2012
LMDB เบชเปเบงเบเปเบซเบเปเปเบกเปเบเปเบเปเปเบเบฑเบเปเบเบทเปเบญเบเบเบฑเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเบเปเปเบกเบนเบเบเปเบฒเบฎเปเบญเบเบชเบฐเบซเบกเบฑเบ. เบซเปเบญเบเบชเบฐเบซเบกเบธเบเปเบเบฑเบเบซเบเบตเปเบฎเบนเบเบฅเบฑเบเบชเบฐเบเบฐเบเบญเบเบกเบฑเบเบเบฑเบเบเบฑเบเบเบฑเบเบเบฐเบเบฒ
LMDB เบกเบฑเบเบเบฐเบเบทเบเบเปเบฒเปเบเปเปเบเบฑเบเบเปเบญเบเปเบเบฑเบเบเปเปเบกเบนเบ. เบเบปเบงเบขเปเบฒเบ, เบเบปเบงเบเปเบญเบเปเบงเบฑเบ Mozilla Firefox
เปเบเบทเปเบญเบเบเบฑเบเบเบฑเบเปเบเปเบชเปเบฒเบเปเบเบทเปเบญเบเบซเบกเบฒเบเบเบญเบเบเบปเบเปเบเปเบฅเบเบเบญเบเบเบฒเบเบเบฑเบเบเบฐเบเบฒเบกเบทเบเบท. เบฎเปเบญเบเบฎเบญเบเบเบญเบเบเบฒเบเบเปเบฒเปเบเปเบเบญเบเบกเบฑเบเบชเบฒเบกเบฒเบเปเบเบฑเบ
LMDB เบเปเบฒเบฅเบฑเบเบเบฐเบชเบปเบเบเบงเบฒเบกเบชเปเบฒเปเบฅเบฑเบเปเบเบเบฒเบเบเปเปเบชเบนเปเปเบเบทเปเบญเบชเบฐเบเบฒเบเบเบตเปเบขเบนเปเปเบเปเบเบเปเบเบเปเบญเบเบซเบงเปเบฒเบเปเบเบ BerkeleyDB เบซเบผเบฑเบเบเบฒเบเบเบตเปเบกเบฑเบเบขเบนเปเบเบฒเบเปเบเปเบเบฒเบเบเบงเบเบเบธเบกเบเบญเบ Oracle. เบซเปเบญเบเบชเบฐเบซเบกเบธเบเปเบเปเบเบทเบเบฎเบฑเบเบชเปเบฒเบฅเบฑเบเบเบงเบฒเบกเปเบงเปเบฅเบฐเบเบงเบฒเบกเบซเบเปเบฒเปเบเบทเปเบญเบเบทเบเบญเบเบกเบฑเบ, เปเบเบดเบเปเบกเปเบเบงเปเบฒเปเบกเบทเปเบญเบเบฝเบเบเบฑเบเปเบเบทเปเบญเบเบกเบดเบเบเบญเบเบเบปเบ. เบเบฒเบกเบเบตเปเบเปเบฒเบเบฎเบนเป, เบเปเปเบกเบตเบญเบฒเบซเบฒเบเบเปเบฝเบเบเบฃเบต, เปเบฅเบฐเบเปเบฒเบเบฐเปเบเบปเปเบฒเบขเบฒเบเบเบฐเปเบเบฑเปเบเบซเบเบฑเบเปเบเบดเบเบเบฒเบเบเปเบฒเบเบตเปเปเบเบปเปเบฒเบเบฐเบเปเบญเบเบเบฐเปเบเบตเบเปเบเปเบงเบฅเบฒเปเบฅเบทเบญเบเบฅเบฐเบซเบงเปเบฒเบ LMDB เปเบฅเบฐ SQLite. เปเบเบเบงเบฒเบเบเปเบฒเบเปเบเบดเบเบเบตเปเบชเบฐเปเบเบเปเบซเปเปเบซเบฑเบเบขเปเบฒเบเบเบฐเปเบเปเบเบงเปเบฒเบเบงเบฒเบกเปเบงเบเบตเปเปเบเบตเปเบกเบเบถเปเบเปเบกเปเบเบเบฑเบเบฅเบธเปเบเปเบขเปเบฒเบเปเบ. เบเปเบฒเบญเบดเบ, เบเบงเบเปเบฎเบปเบฒเบเปเปเปเบเปเบเปเบฒเบเปเบเบดเบเบชเปเบฒเบฅเบฑเบเบเบฑเปเบเปเบเบตเปเบกเปเบเบตเบกเบเบญเบ abstraction เบขเบนเปเปเบเบดเบเบชเบธเบเบเบญเบเบเบฒเบเปเบเบฑเบเบฎเบฑเบเบชเบฒเปเบเปเบ. เบกเบฑเบเปเบเบฑเบเบเบตเปเบเบฑเบเปเบเบเบงเปเบฒเบชเบฐเบเบฒเบเบฑเบเบเบฐเบเบฐเบเปเบฒเบเบตเปเบเบตเบเบฑเบเบเปเปเบชเบฒเบกเบฒเบเปเบฎเบฑเบเปเบเปเปเบเบเบเปเปเบกเบตเบเบงเบเบกเบฑเบ, เปเบฅเบฐเบเบงเบเบกเบฑเบเบเบฐเบเบฒเบเบปเบเบขเบนเปเปเบเบฅเบฐเบซเบฑเบเบเปเบฒเบฎเปเบญเบเบชเบฐเบซเบกเบฑเบเบขเปเบฒเบเบซเบผเบตเบเบฅเปเบฝเบ, เปเบเปเบเบงเบเบกเบฑเบเบเบฐเบญเปเบญเบเบเบงเปเบฒเบซเบผเบฒเบ. เบเบงเบเบกเบฑเบเบเบฐเบเปเปเบเบฐเบเบญเบเบเปเบงเบเบเบธเบเบชเบปเบกเบเบฑเบเบเบตเปเบเปเปเบเปเบญเบเบเบฒเบเปเบเบเปเบญเบฑเบเบเบฅเบดเปเบเบเบฑเบเบชเบฐเปเบเบฒเบฐ, เบเบปเบงเบขเปเบฒเบ, เบเบฒเบเบชเบฐเบซเบเบฑเบเบชเบฐเบซเบเบนเบเบเบฒเบเบชเบญเบเบเบฒเบกเปเบเบเบฒเบชเบฒ SQL. เบญเบฑเบเบเบตเบชเบญเบ, เบกเบฑเบเปเบเบฑเบเปเบเปเบเปเบเบตเปเบเบฐเบเบฐเบเบดเบเบฑเบเปเบเบเบเบตเปเบเบญเบเบเบฒเบเบเปเบฒเปเบเบตเบเบเบฒเบเบเบญเบเปเบญเบฑเบเบเบฅเบดเปเบเบเบฑเบเบเบฒเบกเบเปเบฒเบฎเปเบญเบเบเปเบเบฒเบเปเบเบฑเบเบฎเบฑเบเบชเบฒเปเบเปเบเบเบตเปเบเบตเบเบตเปเบชเบธเบ. เบเปเบฒ SQLite
3. เบชเบฒเบกเปเบชเบปเบฒเบเปเบณเบเบญเบ LMDB
เปเบเบเปเบเปเปเบเบดเปเบ LMDB เบเบฒเบเบชเบฒเบเบเบฒเบเบญเบเบเบปเบ, เบกเบฑเบเปเบกเปเบเปเบงเบฅเบฒเบเบตเปเบเบฐเบฅเบปเบเปเบฅเบดเบ. เบชเบฒเบกเบเบฒเบเบเปเปเปเบเบเบฐเบเบทเบเบญเบธเบเบดเบเปเบซเปเบเบฑเบเบเบฒเบเบงเบดเปเบเบฒเบฐเบเบญเบเปเบชเบปเบฒเบซเบผเบฑเบเบเบปเปเบเบเปเบเบตเปเบชเบฐเบเบฒเบเบฑเบเบเบฐเบเบฐเบเปเบฒเปเบเบฑเบเบฎเบฑเบเบชเบฒเปเบงเป:
- เปเบเบฅเปเบเบตเปเบกเบตเปเบเบเบเบตเปเบซเบเปเบงเบเบเบงเบฒเบกเบเปเบฒเปเบเบฑเบเบเบปเบเปเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเปเบฎเบฑเบเบงเบฝเบเบเบฑเบเปเบเปเบเปเบฅเบฐ synchronizing เปเบเบเบชเปเบฒเบเบเปเปเบกเบนเบเบเบฒเบเปเบ.
- B+-tree เปเบเบฑเบเบญเบปเบเบเบฒเบเบเบฑเบเบเบฑเปเบเบเบญเบเปเบเบเบชเปเบฒเบเบเบญเบเบเปเปเบกเบนเบเบเบตเปเปเบเบฑเบเปเบงเป.
- Copy-on-write เปเบเบฑเบเบงเบดเบเบตเบเบฒเบเบชเบฐเบซเบเบญเบเบเบธเบเบชเบปเบกเบเบฑเบเบเบฒเบเปเบฎเบฑเบเบเบธเบฅเบฐเบเปเบฒ ACID เปเบฅเบฐ multiversion.
3.1. เบเบฒเบงเบฒเบ #1. เปเบเบฅเปเบเบตเปเบกเบตเปเบเบเบเบตเปเบเปเบงเบเปเปเบงเบเบเบงเบฒเบกเบเบณ
เปเบเบฅเปเบเบตเปเบกเบตเปเบเบเบเบตเปเบเบงเบฒเบกเบเบปเบเบเปเบฒเปเบกเปเบเบญเบปเบเบเบฐเบเบญเบเบชเบฐเบเบฒเบเบฑเบเบเบฐเบเบฐเบเปเบฒเบเบตเปเบชเปเบฒเบเบฑเบเบเบตเปเบเบงเบเบกเบฑเบเบเบฐเบเบฒเบเบปเบเบขเบนเปเปเบเบเบทเปเบเบญเบ repository. เบเบฑเบเบซเบฒเบเบญเบ caching เปเบฅเบฐ synchronization เบเบฒเบเปเบเบปเปเบฒเปเบเบดเบเบเปเปเบกเบนเบเบเบตเปเปเบเบฑเบเปเบงเปเปเบกเปเบเบเบฐเปเบงเปเบเบฑเบเบซเบกเบปเบเปเบเบฅเบฐเบเบปเบเบเบฐเบเบดเบเบฑเบเบเบฒเบ. LMDB เบเปเปเบกเบตเปเบเบเบเบฒเบเปเบเบเบปเบงเบเบญเบเบกเบฑเบเปเบญเบ. เบเบตเปเปเบกเปเบเบเบฒเบเบเบฑเบเบชเบดเบเปเบเบเบตเปเบกเบตเบชเบฐเบเบดเปเบเบเบเบนเปเบเบฝเบ, เบเบฑเบเบเบฑเปเบเปเบเปเบเบฒเบเบญเปเบฒเบเบเปเปเบกเบนเบเปเบเบเบเบปเบเบเบฒเบเปเบเบฅเปเปเบเบเบเบตเปเบเปเบงเบเปเบซเปเบเปเบฒเบเบชเบฒเบกเบฒเบเบเบฑเบเบกเบธเบกเบซเบผเบฒเบเปเบเบเบฒเบเบเบฐเบเบดเบเบฑเบเปเบเบทเปเบญเบเบเบฑเบ. เบเปเบฒเบเบฅเบธเปเบกเบเบตเปเปเบกเปเบเบขเบนเปเปเบเบเบฒเบเบเบฑเบเบเบตเบฅเบฒเบเบเบทเปเบเบปเบเบเปเบงเบเบเบญเบเบเบฒเบเบชเปเบงเบเบเบญเบเบเบงเบเปเบเบปเบฒ.
- เบเบฒเบเบฎเบฑเบเบชเบฒเบเบงเบฒเบกเบชเบญเบเบเปเบญเบเบเบญเบเบเปเปเบกเบนเบเปเบเบเบฒเบเปเบเบฑเบเบฎเบฑเบเบชเบฒเปเบเปเบงเบฅเบฒเบเบตเปเปเบฎเบฑเบเบงเบฝเบเบเบฑเบเบกเบฑเบเบเบฒเบเบซเบผเบฒเบเบเบฐเบเบงเบเบเบฒเบเบเบฒเบเปเบเบฑเบเบเบงเบฒเบกเบฎเบฑเบเบเบดเบเบเบญเบเบเบญเบเบฅเบฐเบเบปเบเบเบฐเบเบดเบเบฑเบเบเบฒเบ. เปเบเบเบฒเบเบเปเปเปเบ, เบเบปเบเปเบเบเบตเปเปเบเปเบเบทเบเบเบถเบเบชเบฒเบซเบฒเบฅเบทเปเบเบฅเบฒเบเบฅเบฐเบญเบฝเบเปเบฅเบฐเบฎเบนเบเบเบฒเบ.
- เบเบฒเบเบเบฒเบเปเบเบชเบเบฐเบฅเบปเบเบฅเปเบฒเบ LMDB เบญเบญเบเบเบฒเบเบชเปเบงเบเปเบเบตเบเบเบตเปเบเปเบฝเบงเบเปเบญเบเบเบฑเบเบเบฒเบเบเบฑเบเบชเบฑเบเปเบเบเปเบเบทเปเบญเบเปเบซเบง. เบเบฒเบเบญเปเบฒเบเบเปเปเบกเบนเบเปเบเบเบฒเบเบเบฐเบเบดเบเบฑเบเบซเบกเบฒเบเปเบเบดเบเบเบฒเบเบเปเบฒเบเบปเบเบเบปเบงเบเบตเปเปเบเบซเบฒเบเบตเปเบขเบนเปเบเบตเปเบเบทเบเบเปเบญเบเปเบเบซเบเปเบงเบเบเบงเบฒเบกเบเปเบฒ virtual เปเบฅเบฐเบเปเปเบกเบตเบซเบเบฑเบเบญเบตเบ. เบกเบฑเบเบเบฑเบเบเบทเบเบดเบเบฒเบเบงเบดเบเบฐเบเบฒเบชเบฒเบ, เปเบเปเปเบเบฅเบฐเบซเบฑเบเปเบซเบผเปเบเบเบฒเบเปเบเบฑเบเบฎเบฑเบเบชเบฒเบเบธเบเบเบฒเบเปเบเปเบเบซเบฒ calloc เปเบกเปเบเบชเบธเบกเปเบชเปเบเบฒเบเบเปเบฒเบเบฒเบเบเบญเบเบเบฒเบเบเบฑเปเบเบเปเบฒเบเบฒเบเปเบเบฑเบเบฎเบฑเบเบชเบฒ.
- เบเบฒเบเบเปเปเบกเบต cache เบเบฑเบเบซเบกเบฒเบเบเบงเบฒเบกเบงเปเบฒเบเปเปเบกเบต locks เบเบตเปเบเปเบฝเบงเบเปเบญเบเบเบฑเบ synchronization เบเบญเบเบเบฒเบเปเบเบปเปเบฒเปเบเบดเบเบเบญเบเปเบเบปเบฒเปเบเบปเปเบฒ. เบเบนเปเบญเปเบฒเบ, เปเบเบดเปเบเบชเบฒเบกเบฒเบเบกเบตเบเปเบฒเบเบงเบเบเบนเปเบญเปเบฒเบเบเบตเปเบเบปเบเปเบญเบเบกเบฑเบเปเบเปเบงเบฅเบฒเบเบฝเบงเบเบฑเบ, เบเปเปเบเบปเบ mutex เบเบฝเบงเปเบเบงเบดเบเบตเบเบฒเบเบเบญเบเปเบเบปเบฒเปเบเบปเปเบฒเบเบฑเบเบเปเปเบกเบนเบ. เบเปเบงเบเปเบซเบเบเบตเป, เบเบงเบฒเบกเปเบงเปเบเบเบฒเบเบญเปเบฒเบเบกเบตเบเบงเบฒเบกเบชเบฒเบกเบฒเบเปเบเบเบฒเบเบเบฐเบซเบเบฒเบเปเบชเบฑเปเบเบเบตเปเปเบซเบกเบฒเบฐเบชเบปเบกเปเบเบเบญเบตเบเปเบชเปเบเปเบฒเบเบงเบ CPU. เปเบ LMDB, เบเบฝเบเปเบเปเบเบฒเบเบเบฑเบเปเบเปเบเบฒเบเบเปเบฒเปเบเบตเบเบเบฒเบเปเบกเปเบ synchronized. เบชเบฒเบกเบฒเบเบกเบตเบเบฑเบเบเบฝเบเปเบเปเปเบเบทเปเบญเบฅเบฐเบเบปเบเปเบเบปเปเบฒเบเบฑเปเบ.
- เบเปเบฒเปเบชเบธเบเบเบตเปเบเบญเบ caching เปเบฅเบฐ synchronization logic เบฅเบปเบเบฅเปเบฒเบเบเบฐเปเบเบเบเบญเบเบเบงเบฒเบกเบชเบฑเบเบชเบปเบเบเบตเปเบชเบธเบเบเบญเบเบเบงเบฒเบกเบเบดเบเบเบฒเบเบเบตเปเบเปเบฝเบงเบเปเบญเบเบเบฑเบเบเบฒเบเปเบฎเบฑเบเบงเบฝเบเปเบเบชเบฐเบเบฒเบเปเบงเบเบฅเปเบญเบกเบซเบผเบฒเบ threaded. เบกเบตเบชเบญเบเบเบฒเบเบชเบถเบเบชเบฒเบเบฒเบเบเปเปเบกเบนเบเบเบตเปเบซเบเปเบฒเบชเบปเบเปเบเปเบเบเบญเบเบเบฐเบเบธเบก Usenix OSDI 2014:
"เบฅเบฐเบเบปเบเปเบเบฅเปเบเบฑเบเบซเบกเบปเบเบเปเปเปเบเปเบเบทเบเบชเปเบฒเบเบเบทเปเบเปเบเบปเปเบฒเบเบฝเบกเบเบฑเบ: เบเปเบฝเบงเบเบฑเบเบเบงเบฒเบกเบชเบฑเบเบชเบปเบเบเบญเบเบเบฒเบเบชเปเบฒเบเบเปเบฒเบฎเปเบญเบเบชเบฐเบซเบกเบฑเบเบเบตเปเบชเบญเบเบเปเบญเบเบเบฑเบ" ะธ"เบเบฒเบเบเปเบฅเบฐเบกเบฒเบเบเบฒเบเบเปเปเบกเบนเบเปเบเบทเปเบญเบเบงเบฒเบกเบกเปเบงเบเปเบฅเบฐเบเบปเบเบเปเบฒเปเบฅ" . เบเบฒเบเบเบงเบเบกเบฑเบเบเปเบฒเบเบชเบฒเบกเบฒเบเบฅเบงเบเบฅเบงเบกเบเปเปเบกเบนเบเบเปเบฝเบงเบเบฑเบเบเบฑเบเบเบงเบฒเบกเบซเบเปเบฒเปเบเบทเปเบญเบเบทเบเบตเปเบเปเปเปเบเบตเบเบกเบตเบกเบฒเบเปเบญเบเบเบญเบ LMDB เปเบฅเบฐเบเบฒเบเบเบฐเบเบดเบเบฑเบเปเบเบทเบญเบเบเปเปเบกเบตเบเปเปเบเบปเบเบเปเบญเบเบเบญเบเบเบธเบเบชเบปเบกเบเบฑเบเบเบฒเบเปเบฎเบฑเบเบเบธเบฅเบฐเบเปเบฒ ACID, เปเบเบดเปเบเบเบตเบเบงเปเบฒเบเบญเบ SQLite. - เบซเบเปเบญเบเบเบตเปเบชเบธเบเบเบญเบ LMDB เบญเบฐเบเบธเบเบฒเบเปเบซเปเปเบเบทเปเบญเบเปเบเบฑเบเบเบปเบงเปเบเบเบเบญเบเบฅเบฐเบซเบฑเบเบเบญเบเบกเบฑเบเบขเบนเปเปเบ cache L1 เบเบญเบเปเบเปเบเบเปเบเบตเบเบตเปเบกเบตเบฅเบฑเบเบชเบฐเบเบฐเบเบงเบฒเบกเปเบงเบเปเปเปเบ.
เปเบเปเบซเบเปเบฒเปเบชเบเบเบฒเบ, เปเบ iOS, เบเปเบงเบเปเบเบฅเปเบเบตเปเบกเบตเปเบเบเบเบตเปเบซเบเปเบงเบเบเบงเบฒเบกเบเปเบฒ, เบเบธเบเบชเบดเปเบเบเบธเบเบขเปเบฒเบเปเบกเปเบเบเปเปเปเบเบฑเบ cloudless เบเบฑเปเบเบเบตเปเบเบงเบเปเบฎเบปเบฒเบเปเบญเบเบเบฒเบ. เปเบเบทเปเบญเบชเบปเบเบเบฐเบเบฒเบเปเบฝเบงเบเบฑเบเบเปเปเบเบปเบเบเปเบญเบเบเบตเปเบเปเบฝเบงเบเปเบญเบเบเบฑเบเบเบงเบเปเบเบปเบฒเบขเปเบฒเบเบกเบตเบชเบฐเบเบดเบซเบผเบฒเบเบเบถเปเบ, เบกเบฑเบเบเปเบฒเปเบเบฑเบเบเปเบญเบเบเบทเปเบเปเบฒเบซเบผเบฑเบเบเบฒเบเบเบปเปเบงเปเบเบเบญเบเบเบฒเบเบเบฐเบเบดเบเบฑเบเบเบปเบเปเบเบเบตเปเปเบเบฅเบฐเบเบปเบเบเบฐเบเบดเบเบฑเบเบเบฒเบ.
เบเปเปเบกเบนเบเบเบปเปเบงเปเบเบเปเบฝเบงเบเบฑเบเปเบเบฅเปเบเบตเปเบกเบตเปเบเบเบเบตเปเบซเบเปเบงเบเบเบงเบฒเบกเบเปเบฒ
เบเปเบงเบเบเบธเบเปเปเบญเบฑเบเบเบฅเบดเปเบเบเบฑเบเบเบตเปเปเบฎเบฑเบเบงเบฝเบ, เบฅเบฐเบเบปเบเบเบฐเบเบดเบเบฑเบเบเบฒเบเปเบเปเปเบเบทเปเบญเบกเปเบเบเบเบฑเบเบซเบเปเบงเบเบเบฒเบเบเบตเปเปเบญเบตเปเบเบงเปเบฒเบเบฐเบเบงเบเบเบฒเบ. เปเบเปเบฅเบฐเบเบฐเบเบงเบเบเบฒเบเปเบเปเบเบทเบเบเบฑเบเบชเบฑเบเปเบเบฑเบเบเบตเปเบขเบนเปเบเบดเบเบเปเปเบเบฑเบ, เปเบเบดเปเบเบกเบฑเบเบงเบฒเบเบเบธเบเบขเปเบฒเบเบเบตเปเบกเบฑเบเบเปเบญเบเบเบฒเบเปเบเบทเปเบญเบเปเบฒเปเบเบตเบเบเบฒเบ. เบขเบนเปเบเบตเปเบเบตเปเบขเบนเปเบเปเปเบฒเบชเบธเบเบกเบตเบชเปเบงเบเบเบตเปเบกเบตเบฅเบฐเบซเบฑเบเปเบฅเบฐเบเปเปเบกเบนเบเปเบฅเบฐเบเบฑเบเบเบฐเบเบฒเบเบญเบเบเบตเปเบเบฒเบ. เบเปเปเปเบเปเบกเปเบเบเบฒเบเบเบฐเบซเบเบฒเบเบเบปเบงเบเบญเบเบเบทเปเบเบเบตเปเบเบตเปเบขเบนเปเปเบเบเปเบเบทเปเบญเบเปเบซเบง, เบเบตเปเบฎเบนเปเบเบฑเบเบเบฑเบเบเบตเบเบฑเบเบเบงเบเปเบฎเบปเบฒเบเบฒเบเปเบเปเบเบทเป heap. เบกเบฑเบเบเบฐเบเบญเบเบเปเบงเบเบเบตเปเบขเบนเปเบเบญเบเบซเบเปเบงเบเบเบฒเบเบเบตเปเบเบฒเบเบปเบเปเบเบฅเบฐเบซเบงเปเบฒเบเบเบฒเบเบเปเบฒเปเบเบตเบเบเบฒเบเบเบญเบเปเบเบเบเบฒเบ. เบขเบนเปเปเบเบดเบเบชเบธเบเปเบกเปเบเบเบทเปเบเบเบตเปเบเบงเบฒเบกเบเบปเบเบเปเบฒเบเบตเปเปเบเปเปเบเบ stack เบเปเบฒเบฎเปเบญเบเบชเบฐเบซเบกเบฑเบ. เบกเบฑเบเปเบเบตเบเปเบเบซเบผเบทเปเบฎเบฑเบเบชเบฑเบเบเบฒ; เปเบเบเปเบฒเบชเบฑเบเบเปเบฒเบเปเบญเบทเปเบเป, เบเบฐเบซเบเบฒเบเบเบญเบเบกเบฑเบเบเบฑเบเบกเบตเบฅเบฑเบเบชเบฐเบเบฐเปเบเบทเปเบญเบเปเบซเบง. เปเบเบทเปเบญเบเปเบญเบเบเบฑเบเบเปเปเปเบซเป stack เปเบฅเบฐ heap เบเบนเปเปเบฅเบฐเปเบเบเปเบเบเปเบเบดเปเบเบเบฑเบเปเบฅเบฐเบเบฑเบ, เบเบงเบเบกเบฑเบเบเบฑเปเบเบขเบนเปเบเบฒเบเบเบตเปเปเบเบเบเปเบฒเบเบเบฑเบเบเบญเบเบเบทเปเบเบเบตเปเบเบตเปเบขเบนเป. เบกเบฑเบเบกเบตเบเบธเบกเบฅเบฐเบซเบงเปเบฒเบเบชเบญเบเบชเปเบงเบเปเบเบเปเบเบทเปเบญเบเปเบซเบงเบขเบนเปเบเปเบฒเบเปเบเบดเบเปเบฅเบฐเบฅเบธเปเบก. เบฅเบฐเบเบปเบเบเบฐเบเบดเบเบฑเบเบเบฒเบเปเบเปเบเบตเปเบขเบนเปเปเบเบเบฒเบเบเบฒเบเบเบตเปเปเบเบทเปเบญเปเบเบทเปเบญเบกเปเบเบเบเบฑเบเบซเบผเบฒเบเปเบซเบเปเบงเบเบเบฒเบเบเบฑเบเบเบฐเบเบงเบเบเบฒเบ. เปเบเบเบชเบฐเปเบเบฒเบฐ, เบกเบฑเบเบชเบฒเบกเบฒเบเปเบเบทเปเบญเบกเปเบเบเบเบธเบเบเบตเปเบขเบนเปเบขเปเบฒเบเบเปเปเปเบเบทเปเบญเบเบเบตเปเปเบเปเบเบญเบเบเบฑเบเปเบเบฅเปเปเบเปเบเปเบ. เปเบเบฅเปเบเบฑเปเบเบเปเบฒเบงเปเบญเบตเปเบเบงเปเบฒ memory-mapped.
เบเบทเปเบเบเบตเปเบเบตเปเบขเบนเปเบเบฑเบเบชเบฑเบเปเบซเปเบเบฐเบเบงเบเบเบฒเบเปเบกเปเบเปเบซเบเปเบซเบผเบงเบ. เปเบเบเบฒเบเบเบดเบเบชเบฐเบเบต, เบเปเบฒเบเบงเบเบเบตเปเบขเบนเปเบเบทเบเบเปเบฒเบเบฑเบเบเบฝเบเปเบเปเบเบฐเบซเบเบฒเบเบเบญเบเบเบปเบงเบเบตเป, เปเบเบดเปเบเบเบทเบเบเปเบฒเบเบปเบเปเบเบเบเบงเบฒเบกเบญเบฒเบเบชเบฒเบกเบฒเบเบเบดเบเบเบญเบเบฅเบฐเบเบปเบ. เบเปเบฒเบเบงเบฒเบกเบเบปเบเบเปเบฒเบเบฒเบเบเบฒเบเบฐเบเบฒเบเบเบทเบเปเบเบเบเบตเปเบเบฑเบเบกเบฑเบ 1-to-1, เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบเบฐเบเบงเบเบเบฒเบเบเปเบฒเบญเบดเบเบเบฐเบเบญเบ RAM เบเบฑเบเบซเบกเบปเบ, เปเบฅเบฐเบเบฐเบเปเปเบกเบตเบเบฒเบเปเบงเบปเปเบฒเบเปเบฝเบงเบเบฑเบ multitasking เปเบเป.
เบขเปเบฒเบเปเบเบเปเบเบฒเบก, เบเบฒเบเบเบฐเบชเบปเบเบเบฒเบเบเบญเบเบเบงเบเปเบฎเบปเบฒเบเบงเบเปเบฎเบปเบฒเบฎเบนเปเบงเปเบฒเบฅเบฐเบเบปเบเบเบฐเบเบดเบเบฑเบเบเบฒเบเบเบตเปเบเบฑเบเบชเบฐเปเบซเบกเบชเบฒเบกเบฒเบเบเบฐเบเบดเบเบฑเบเบเบฐเบเบงเบเบเบฒเบเบซเบผเบฒเบเปเบเบปเปเบฒเบเบตเปเบเปเบญเบเบเบฒเบ. เบเบตเปเปเบกเปเบเปเบเบฑเบเปเบเปเบเปเบเปเบญเบเบเบงเบฒเบกเบเบดเบเบเบตเปเบงเปเบฒเบเบงเบเปเบเบปเบฒเบเบฝเบเปเบเปเบเบฑเบเบชเบฑเบเบเบงเบฒเบกเบเบปเบเบเปเบฒเบซเบผเบฒเบเปเบเบเบฒเบเบเบธเบเปเบเปเบเปเบเปเบเปเบ, เปเบเปเปเบเบเบงเบฒเบกเปเบเบฑเบเบเบดเบเปเบฅเปเบงเบเบงเบเปเบเบปเบฒเปเบซเบฅเบเปเบเบปเปเบฒเปเบเปเบเบซเบเปเบงเบเบเบงเบฒเบกเบเปเบฒเบเบฒเบเบเปเบฒเบเบฎเปเบฒเบเบเบฒเบเบเบปเปเบเบเปเบเบฝเบเปเบเปเบชเปเบงเบเบเบตเปเบกเบตเบเบงเบฒเบกเบเปเบญเบเบเบฒเบเบขเบนเปเบเบตเปเบเบตเปเปเบฅเบฐเปเบเบเบฑเบเบเบธเบเบฑเบ. เบเบฑเปเบเบเบฑเปเบ, เบซเบเปเบงเบเบเบงเบฒเบกเบเปเบฒเบเบตเปเบเปเบฝเบงเบเปเบญเบเบเบฑเบเบเบฐเบเบงเบเบเบฒเบเปเบญเบตเปเบเบงเปเบฒ virtual.
เบฅเบฐโเบเบปเบโเบเบฐโเบเบดโเบเบฑเบโเบเบฒเบโเบเบฑเบโเบเบฑเปเบโเบเบงเบฒเบกโเบเบปเบโเบเปเบฒ virtual เปเบฅเบฐโเบเบฒเบโเบเปเบฒเบโเบฎเปเบฒเบโเบเบฒเบโเปเบเบปเปเบฒโเปเบโเปเบโเบซเบเปเบฒโเบเบญเบโเบเบฐโเบซเบเบฒเบโเปเบโเบซเบเบถเปเบโ. เบเบฑเบเบเบตเบเบตเปเบซเบเปเบฒเบเบตเปเปเบเปเบเบญเบเบเบญเบเบซเบเปเบงเบเบเบงเบฒเบกเบเปเบฒ virtual เปเบกเปเบเบขเบนเปเปเบเบเบงเบฒเบกเบเปเบญเบเบเบฒเบ, เบฅเบฐเบเบปเบเบเบฐเบเบดเบเบฑเบเบเบฒเบเบเบฐเปเบซเบฅเบเบกเบฑเบเปเบเบปเปเบฒเปเบเปเบเบซเบเปเบงเบเบเบงเบฒเบกเบเปเบฒเบเบฒเบเบเปเบฒเบเบฎเปเบฒเบเบเบฒเบเปเบฅเบฐเบเบปเบเบเบฑเบเบเบงเบเปเบเบปเบฒเบขเบนเปเปเบเบเบฒเบเบฐเบฅเบฒเบเบเบดเปเบชเบ. เบเปเบฒเบเปเปเบกเบตเบชเบฐเบฅเบฑเบญเบเบเบดเบเบเบฃเบต, เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบซเบเบถเปเบเปเบเบซเบเปเบฒเบเบตเปเปเบซเบฅเบเบเปเบญเบเบซเบเปเบฒเบเบตเปเบเบฐเบเบทเบเบเบฑเบเบฅเบญเบเปเบชเปเปเบเปเบเบเบดเบ, เปเบฅเบฐเบซเบเบถเปเบเบเบตเปเบเปเบญเบเบเบฒเบเบเบฐเปเบญเบปเบฒเบชเบฐเบเบฒเบเบเบตเปเบเบญเบเบกเบฑเบ. เบเบฑเปเบเบเบญเบเบเบตเป, เบเบตเปเบเบงเบเปเบฎเบปเบฒเบเบฐเบเบฑเบเบเบทเบเปเบเปเบเปเบงเปเบเบตเป, เปเบญเบตเปเบเบงเปเบฒ swapping. เบฎเบนเบเบเปเบฒเบเบฅเบธเปเบกเบเบตเปเบชเบฐเปเบเบเปเบซเปเปเบซเบฑเบเบเบฐเบเบงเบเบเบฒเบเบเบตเปเปเบเปเบญเบฐเบเบดเบเบฒเบ. เปเบเบกเบฑเบ, เบซเบเปเบฒ A เบเบตเปเบกเบตเบเบตเปเบขเบนเป 0 เปเบเปเบเบทเบเปเบซเบฅเบเปเบฅเบฐเบงเบฒเบเปเบงเปเปเบเบซเบเปเบฒเบซเบเปเบงเบเบเบงเบฒเบกเบเปเบฒเบเบปเปเบเบเปเบเบตเปเบกเบตเบเบตเปเบขเบนเป 4. เบเบงเบฒเบกเบเบดเบเบเบตเปเปเบเปเบเบทเบเบชเบฐเบเปเบญเบเปเบซเปเปเบซเบฑเบเปเบเบเบฒเบเบฐเบฅเบฒเบเบเบฒเบเบเบดเบเบเปเปเบขเบนเปเปเบเบซเปเบญเบเปเบฅเบ 0.
เปเบฅเบทเปเบญเบเปเบกเปเบเบเบทเบเบฑเบเปเบเปเบเบฑเบเปเบเบฅเปเบเบตเปเบกเบตเปเบเบเบเบตเปเบขเบนเปเปเบเบซเบเปเบงเบเบเบงเบฒเบกเบเปเบฒ. เบเบฒเบกเปเบซเบเบเบปเบ, เบเบงเบเบกเบฑเบเบเบทเบ supposedly เบขเปเบฒเบเบเปเปเปเบเบทเปเบญเบเปเบฅเบฐเบเบฑเปเบเบขเบนเปเบเบฑเบเบซเบกเบปเบเปเบเบเบทเปเบเบเบตเปเบเบตเปเบขเบนเป virtual. เบขเปเบฒเบเปเบเบเปเบเบฒเบก, เบเบงเบเปเบเบปเบฒเปเบเบปเปเบฒเปเบเบปเปเบฒเปเบเปเบเบซเบเปเบฒเบเบงเบฒเบกเบเบปเบเบเปเบฒเบเบฒเบเบเปเบฒเบเบฎเปเบฒเบเบเบฒเบเปเบเบเบซเบเปเบฒเปเบฅเบฐเบเบฝเบเปเบเปเบเบฒเบกเบเปเบฒเบฎเปเบญเบเบเป. เบเบฒเบโเบเบฑเบโเปเบเปโเบเบญเบโเบซเบเปเบฒโเบเบฑเปเบโเบเปเบฒเบงโเปเบกเปเบ synchronized เบเบฑเบโเปเบเบฅโเปโเปเบโเปเบเปเบโ. เบเปเบงเบเบงเบดเบเบตเบเบตเป, เบเปเบฒเบเบชเบฒเบกเบฒเบเบเบฐเบเบดเบเบฑเบ I / O เปเบเบฅเปเปเบเบเบเบฝเบเปเบเปเปเบฎเบฑเบเบงเบฝเบเบเบฑเบ bytes เปเบเบซเบเปเบงเบเบเบงเบฒเบกเบเปเบฒ - เบเบฒเบเบเปเบฝเบเปเบเบเบเบฑเบเบซเบกเบปเบเบเบฐเบเบทเบเปเบญเบเปเบเบเบญเบฑเบเบเบฐเปเบเบกเบฑเบเปเบเบ kernel เบฅเบฐเบเบปเบเบเบฐเบเบดเบเบฑเบเบเบฒเบเปเบเบซเบฒเปเบเบฅเปเปเบซเบผเปเบ.
'' '"
เบฎเบนเบเบเบฒเบเบเปเบฒเบเบฅเบธเปเบกเบเบตเปเบชเบฐเปเบเบเปเบซเปเปเบซเบฑเบเบงเบดเบเบตเบเบฒเบ LMDB synchronizes เบชเบฐเบเบฒเบเบฐเบเบญเบเบเบปเบเปเบเปเบงเบฅเบฒเบเบตเปเปเบฎเบฑเบเบงเบฝเบเบเบฑเบเบเบฒเบเบเปเปเบกเบนเบเบเบฒเบเบเบฐเบเบงเบเบเบฒเบเบเบตเปเปเบเบเบเปเบฒเบเบเบฑเบ. เปเบเบเบเบฒเบเบชเปเบฒเบเปเบเบเบเบตเปเบเบงเบฒเบกเบเบปเบเบเปเบฒ virtual เบเบญเบเบเบฐเบเบงเบเบเบฒเบเบเบตเปเปเบเบเบเปเบฒเบเบเบฑเบเบเบฑเบเปเบเบฅเปเบเบฝเบงเบเบฑเบ, เบเบงเบเปเบฎเบปเบฒ de facto oblige เบฅเบฐเบเบปเบเบเบฐเบเบดเบเบฑเบเบเบฒเบเปเบเบทเปเบญ synchronize transitively เบเบฑเบเบเบญเบเบชเบฐเบเบฒเบเบเบตเปเบเบตเปเบขเบนเปเบเบญเบเปเบเบปเบฒเปเบเบปเปเบฒเบเบฑเบเบเบฑเบเปเบฅเบฐเบเบฑเบ, เบเปเบญเบเบเบตเป LMDB เปเบเบดเปเบ.
'' '"
nuance เบเบตเปเบชเปเบฒเบเบฑเบเปเบกเปเบเบงเปเบฒ LMDB, เปเบเบเบเปเบฒเปเบฅเบตเปเบกเบเบปเปเบ, เบเบฑเบเปเบเปเปเบเบฅเปเบเปเปเบกเบนเบเปเบเบเบเปเบฒเบเบเบปเบเปเบเบเบฒเบเปเบเบซเบฒเบฅเบฐเบเบปเบเบเบฒเบเบเบฝเบ, เปเบฅเบฐเบชเบฐเปเบเบเปเบเบฅเปเบเบปเบงเบกเบฑเบเปเบญเบเปเบเบฎเบนเบเปเบเบเบญเปเบฒเบเปเบเบปเปเบฒเบเบฑเปเบ. เบงเบดเบเบตเบเบฒเบเบเบตเปเบกเบตเบชเบญเบเบเบปเบเบชเบฐเบเปเบญเบเบเบตเปเบชเปเบฒเบเบฑเบ.
เบเบปเบเบชเบฐเบเปเบญเบเบเปเบฒเบญเบดเบเปเบกเปเบเบเบปเปเบงเปเบเบเบฑเบเบเบธเบเบฅเบฐเบเบปเบเบเบฐเบเบดเบเบฑเบเบเบฒเบ. เปเบเบเปเบเบทเปเบญเปเบเปเปเบฅเปเบงเบเบญเบเบกเบฑเบเปเบกเปเบเปเบเบทเปเบญเปเบเบตเปเบกเบเบฒเบเบเปเบญเบเบเบฑเบเบเบงเบฒเบกเปเบชเบเบซเบฒเบเปเบเบเบเปเปเปเบเปเบเบฑเปเบเปเบเบเบฑเบเบเบฒเบเบเปเปเบกเบนเบเปเบเบเบฅเบฐเบซเบฑเบเบเบตเปเบเปเปเบเบทเบเบเปเบญเบ. เบเบฒเบกเบเบตเปเบเปเบฒเบเบฎเบนเป, เบเปเบฒเปเบเบฐเบเปเบฒเบเบตเปเบชเบฒเบกเบฒเบเบเบฐเบเบดเบเบฑเบเปเบเปเบเบญเบเบเบฐเบเบงเบเบเบฒเบเปเบกเปเบเบเปเปเปเบชเบเบเปเบฒเปเบเบทเปเบญเปเบเบปเปเบฒเปเบเบดเบเบเปเปเบกเบนเบเบเบฒเบเบเบธเบเบเปเบญเบเปเบเบเบทเปเบเบเบตเปเบเบตเปเบขเบนเปเบเบญเบเบกเบฑเบ. เปเบเปเบงเบฅเบฒเบเบฝเบงเบเบฑเบ, เบเบฑเปเบเบเบตเปเบเบงเบเปเบฎเบปเบฒเบเบฝเบเปเบเปเบเบทเป, เบเบฒเบเบชเบฐเปเบเบเปเบเบฅเปเปเบเบฎเบนเบเปเบเบเบญเปเบฒเบ - เบเบฝเบเบซเบกเบฒเบเบเบงเบฒเบกเบงเปเบฒเบเปเบฒเปเบเบฐเบเปเบฒเปเบเปเบเปเปเบชเบฒเบกเบฒเบเบเบฑเบเปเบเบเบกเบฑเบเปเบเป. เบเปเบฒเบเบฒเบเปเบฎเบฑเบเบกเบฑเบเปเบเบเบเบงเบฒเบกเบเบดเบเบเบฒเบ, เบเบฐเบเบฒเบเบฒเบก, เบเบปเบงเบขเปเบฒเบ, เปเบเบทเปเบญเบเบฝเบเบเบฑเบเบญเบปเบเบเบฐเบเบญเบ array เบขเบนเปเปเบเบเบฑเบเบเบฐเบเบตเบเบตเปเบเปเปเบกเบตเบขเบนเป, เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบเบฒเบเบชเบฒเบกเบฒเบเบเปเบฝเบเปเบเบฅเปเบเบตเปเบเบฑเปเบเบขเบนเปเปเบเบเบตเปเบขเบนเปเบเบตเปเปเบเบเบเบฑเบเปเบญเบตเบ, เปเบเบดเปเบเบเบฐเบเปเบฒเปเบเบชเบนเปเบเบฒเบเบชเปเปเบฅเบฒเบเบเบฑเบเบซเบผเบงเบเบเบญเบเบเบฒเบเบเปเปเบกเบนเบ. เบเปเบฒเปเบเบฅเปเบเบทเบเบชเบฐเปเบเบเบขเบนเปเปเบเปเบซเบกเบเบญเปเบฒเบเปเบเบปเปเบฒเบเบฑเปเบ, เบเบงเบฒเบกเบเบฐเบเบฒเบเบฒเบกเบเบตเปเบเบฐเบเปเบฝเบเบเบทเปเบเบเบตเปเบเบตเปเบขเบนเปเบเบตเปเบชเบญเบเบเปเบญเบเบเบฑเบเบเบฐเบเปเบฒเปเบเบชเบนเปเบเบฒเบเบเบดเบเปเบเบเบเบฒเบเบชเบธเบเปเบชเบตเบเบเปเบงเบเบชเบฑเบเบเบฒเบ. SIGSEGV
, เปเบฅเบฐเปเบเบฅเปเบเบฐเบเบฑเบเบเบปเบ intact.
เบเบปเบเบชเบฐเบเปเบญเบเบเบตเบชเบญเบเปเบกเปเบเบชเบฐเปเบเบฒเบฐเบเบฑเบ iOS เปเบฅเปเบง. เบเบฑเบเบเบนเปเบเบฝเบเบซเบผเบทเปเบซเบผเปเบเบญเบทเปเบเปเบเปเปเปเบเปเบเปเบฒเบงเปเบเบดเบเบกเบฑเบเบขเปเบฒเบเบเบฐเปเบเปเบ, เปเบเปเบเปเบฒเบเปเปเบกเบตเบกเบฑเบ LMDB เบเบฐเบเปเปเปเบซเบกเบฒเบฐเบชเบปเบกเบชเปเบฒเบฅเบฑเบเบเบฒเบเปเบฎเบฑเบเบงเบฝเบเปเบเบฅเบฐเบเบปเบเบเบฐเบเบดเบเบฑเบเบเบฒเบเบกเบทเบเบทเบเบตเป. เบเบฒเบเบเปเปเปเบเปเบกเปเบเบญเบธเบเบดเบเปเบซเปเบเบดเบเบฒเบฅเบฐเบเบฒเบเบญเบเบเบปเบ.
เบเปเปเบกเบนเบเบชเบฐเปเบเบฒเบฐเบเบญเบเปเบเบฅเปเบเบตเปเบกเบตเปเบเบเบเบตเปเบเบงเบฒเบกเบเบณเปเบ iOS
เบกเบตเบเบปเบเบฅเบฒเบเบเบฒเบเบเบตเปเบกเบฐเบซเบฑเบเบชเบฐเบเบฑเบเบขเบนเป WWDC เปเบเบเบต 2018
เปเปเบงเบเบเบงเบฒเบกเบเบณเบเบตเปเบชเบฐเบญเบฒเบเปเบกเปเบเบเบธเบเปเปเบฒเบเบตเปเบชเบฒเบกเบฒเบเบเบญเบเบญเบญเบเปเบเปเบขเปเบฒเบเบเปเปเปเบเบฑเบเบเบงเบเบเบฒเบเบเบงเบฒเบกเบเบปเบเบเบณเบเบฒเบเบฎเปเบฒเบเบเบฒเบ. เบเปเปโเบกเบนเบโเบเบตเปโเปเบเบปเบฒโเปเบเบปเปเบฒโเบกเบตโเบชเบฒโเบกเบฒเบโเปเบเปโเบฎเบฑเบโเบเบฒเบโเปเบซเบผเบโเปเบซเบกเปโเปเบเปโเบเบฒเบกโเบเบงเบฒเบกโเบเปเบญเบโเบเบฒเบโเบเบฒเบโเปเบซเบผเปเบโเบเปเปโเบกเบนเบโเบเบปเปเบโเบชเบฐโเบเบฑเบโเบเบญเบโเบเบปเบโ. เปเบเบฅเปเบเบตเปเบกเบตเปเบเบเบเบตเปเบซเบเปเบงเบเบเบงเบฒเบกเบเปเบฒเปเบเบเบญเปเบฒเบเปเบเบปเปเบฒเบเบฑเปเบเบเบปเบเบขเบนเปเปเบเบซเบกเบงเบเบเบตเป. iOS เบเปเปเบขเปเบฒเบเบเบตเปเบเบฐเบเบปเบเปเบฅเบตเบเบเบฒเบเปเบซเบผเบเปเปเบฒเปเบงเบฑเบเบเบตเปเปเบฎเบฑเบเปเบเบเบเบตเปเปเบชเปเปเบเบฅเปเบเบฒเบเปเปเบงเบเบเบงเบฒเบกเบเบณเปเบเปเบเบธเบเปเบงเบฅเบฒ, เปเบเบฒเบฐเบงเปเบฒเบเบงเบเบกเบฑเบเบเบทเบเบฎเบฑเบเบเบฐเบเบฑเบเบงเปเบฒเบเบฐเบเบทเบ synchronized เบเบฑเบเปเบเบฅเปเปเบเปเบเปเบ.
'' '"
เบซเบเปเบฒเบเบตเปเบเบทเบเบเบฑเบเปเบเปเบเบฑเบเบซเบกเบปเบเบชเบดเปเบเบชเบธเบเบฅเบปเบเบขเบนเปเปเบเบเบงเบฒเบกเบเบปเบเบเปเบฒเบเบตเปเปเบเบทเปเบญเบ, เบเปเปเบงเปเบฒเบเบงเบเบกเบฑเบเบเบฐเบเบฑเปเบเบขเบนเปเบเปเบญเบเปเบเบเปเปเบเบฒเบก. เปเบเบเบชเบฐเปเบเบฒเบฐ, เปเบเบฅเปเบเบตเปเบกเบตเปเบเบเบเบตเปเบซเบเปเบงเบเบเบงเบฒเบกเบเปเบฒเบเบตเปเบเบทเบเบเบฑเบเปเบเปเปเบเบเบเบฒเบเบเบฝเบเปเบชเปเบซเบเปเบงเบเบเบงเบฒเบกเบเปเบฒ virtual เบเบตเปเบเปเบฝเบงเบเปเบญเบเบเบฑเบเบเบงเบเบกเบฑเบเบเบฐเบเบทเบเบเบฑเบเบเบฐเปเบเบเบเปเบงเบเบงเบดเบเบตเบเบตเป. เปเบเบตเบ LMDB เบเปเบงเบเบเบธเบ MDB_WRITEMAP
, เบซเบผเบฑเบโเบเบฒเบโเบเบฒเบโเบเปเบฝเบโเปเบเบโเบกเบฑเบโ, เบเปเบฒเบโเบชเบฒโเบกเบฒเบโเบเบงเบโเบชเบญเบโเบเบฒเบโเบเบตเปโเบชเปเบงเบโเบเบธเบโเบเบปเบ ..
เบเบฑเบเบเบตเบเบตเปเปเบญเบฑเบเบเบฅเบดเปเบเบเบฑเบเปเบฅเบตเปเบกเบฎเบฑเบเปเบญเบปเบฒเบเบงเบฒเบกเบเบปเบเบเปเบฒเบเบฒเบเบเบฒเบเบฐเบเบฒเบเบซเบผเบฒเบเปเบเบตเบเปเบ, iOS เบเบฐเบเบทเบเบเบตเบเบญเบฑเบเบซเบเปเบฒเปเบเบทเปเบญเบ. เบซเบเปเบงเบเบเบงเบฒเบกเบเปเบฒเบเบฑเบเบซเบกเบปเบเบเบทเบเบเบญเบเบเบญเบเปเบเบเบซเบเปเบฒเบเบตเปเปเบเบทเปเบญเบเปเบฅเบฐเบเบทเบเบเบตเบเบญเบฑเบเบเบฐเบเบญเบเปเบเบฑเบเบญเบฑเบเบเบตเปเปเบญเบตเปเบเบงเปเบฒเบฎเบญเบเบเบญเบเบซเบเปเบงเบเบเบงเบฒเบกเบเปเบฒเบเบญเบเปเบญเบฑเบเบเบฅเบดเปเบเบเบฑเบ. เปเบกเบทเปเบญเบกเบฑเบเบฎเบญเบเปเบเบเบเบตเปเปเบเปเบเบญเบ, daemon เบฅเบฐเบเบปเบ killer OOM เบกเบฒเบซเบผเบฑเบเบเบฒเบเบเบฐเบเบงเบเบเบฒเบเปเบฅเบฐเบเบฑเบเบเบฑเบเบกเบฑเบ. เบเบตเปเปเบกเปเบเบฅเบฑเบเบชเบฐเบเบฐเบเบดเปเบชเบเบเบญเบ iOS เปเบกเบทเปเบญเบเบฝเบเบเบฑเบเบฅเบฐเบเบปเบเบเบฐเบเบดเบเบฑเบเบเบฒเบ desktop. เปเบเบเบฒเบเบเบปเบเบเบฑเบเบเปเบฒเบก, เบเบฒเบเบซเบผเบธเบเบเปเบญเบเบเบงเบฒเบกเบเบปเบเบเปเบฒเปเบเบเบเบฒเบเบชเบฐเบซเบผเบฑเบเปเปเบฒเบเบฒเบเปเปเบงเบเบเบงเบฒเบกเบเบณเบเบฒเบเบเบฒเบเปเบเปเบชเปเปเบเปเบเปเบกเปเบเบเปเปเปเบเปเบชเบฐเปเบญเบเปเบซเปเปเบ iOS. เปเบซเบเบเบปเบเบเบฝเบเปเบเปเบชเบฒเบกเบฒเบเบเบฒเบเปเบเบปเบฒเปเบเป. เบเบฒเบเบเบตเบเบฑเปเบเบเบญเบเบเบญเบเบเบฒเบเบเปเบฒเบเบซเบเปเบฒเบขเปเบฒเบเปเบเบฑเปเบกเบเบงเบเปเบเบซเบฒเปเบเปเบเปเบฅเบฐเบเบฑเบเบเบทเบเปเบเบเปเบญเบเปเบกเปเบเปเบเปเบเบฐเบฅเบฑเบเบเบฒเบเปเบเบตเบเปเบเบชเปเบฒเบฅเบฑเบเบญเบธเบเบฐเบเบญเบเบกเบทเบเบท, เบซเบผเบท iOS เบเปเบงเบเบเบฐเบขเบฑเบเบเบฑเบเบเบฐเบเบฒเบเบญเบเบเบญเบเบเบธเบฅเบฑเบเบเบฒเบเบเบฝเบเบเบทเบเปเบซเบกเปเปเบ SSD drives, เบซเบผเบทเบเบฒเบเบเบตเบเบนเปเบญเบญเบเปเบเบเบเปเปเบเปเปเบเบเบฑเบเบเบฒเบเบเบฐเบเบดเบเบฑเบเปเบเบเบฅเบงเบกเบเบญเบเบฅเบฐเบเบปเบ, เบเปเบญเบเบเบตเปเบเบธเบเบชเบดเปเบเบเบธเบเบขเปเบฒเบเปเบกเปเบ. เปเบฅเบเบเปเบฝเบเบขเบนเปเบชเบฐเปเบซเบกเบต. เบเปเบญเบเบงเปเบฒเบกเบฑเบเบญเบฒเบเบเบฐเปเบเบฑเบ, เบเบงเบฒเบกเบเบดเบเบเบฑเบเบเบปเบเปเบเบฑเบเบเบงเบฒเบกเบเบดเบ.
เบเปเบฒเบงเบเบต, เบเบตเปเปเบเปเบเปเบฒเบงเบกเบฒเปเบฅเปเบงเบเปเบญเบเบซเบเปเบฒเบเบตเป, เปเบกเปเบเบงเปเบฒ LMDB เปเบเบเบเปเบฒเปเบฅเบตเปเบกเบเบปเปเบเบเปเปเปเบเปเปเบเปเบเบปเบเปเบ mmap เปเบเบทเปเบญเบเบฑเบเบเบธเบเปเบเบฅเป. เบเบตเปเบซเบกเบฒเบเบเบงเบฒเบกเบงเปเบฒเบเปเปเบกเบนเบเบเบตเปเบชเบฐเปเบเบเปเบเปเบเบทเบเบเบฑเบเบเบฐเปเบเบเปเบเบ iOS เปเบเบฑเบเบซเบเปเบงเบเบเบงเบฒเบกเบเปเบฒเบเบตเปเบชเบฐเบญเบฒเบเปเบฅเบฐเบเปเปเปเบเปเบเบฐเบเบญเบเบชเปเบงเบเปเบเบปเปเบฒเปเบเบเบงเบฒเบกเบเปเบฒ. เบเปเบฒเบเบชเบฒเบกเบฒเบเบเบงเบเบชเบญเบเบเบตเปเปเบเบเปเบเปเปเบเบทเปเบญเบเบกเบท Xcode เบเบตเปเปเบญเบตเปเบเบงเปเบฒ VM Tracker. เบฎเบนเบเปเปเบฒเบเปเบเปเบฒเบเบฅเบธเปเบกเบเบตเปเบชเบฐเปเบเบเบชเบฐเบเบฒเบเบฐเบเบญเบเปเปเบงเบเบเบงเบฒเบกเบเบณเบชเบฐเปเปเบทเบญเบเบเบญเบ iOS เบเบญเบเปเบญเบฑเบเบเบฅเบดเปเบเบเบฑเบ Cloud เปเบเบฅเบฐเบซเบงเปเบฒเบเบเบฒเบเปเบฎเบฑเบเบงเบฝเบ. เปเบเบเบญเบเปเบฅเบตเปเบกเบเบปเปเบ, 2 เบเบปเบงเบขเปเบฒเบ LMDB เปเบเปเบเบทเบเปเบฅเบตเปเบกเบเบปเปเบเบขเบนเปเปเบเบกเบฑเบ. เบเปเบฒเบญเบดเบเปเบเปเบเบทเบเบญเบฐเบเบธเบเบฒเบเปเบซเปเบชเบฐเปเบเบเปเบเบฅเปเบเบญเบเบฅเบฒเบงเปเบ 1GiB เบเบญเบเบซเบเปเบงเบเบเบงเบฒเบกเบเปเบฒ virtual, เบเบตเบชเบญเบ - 512MiB. เปเบเบดเบเบงเปเบฒเบเบฐเบกเบตเบเบงเบฒเบกเบเบดเบเบเบตเปเบงเปเบฒเบเบฒเบเปเบเบฑเบเบฎเบฑเบเบชเบฒเบเบฑเบเบชเบญเบเบเบญเบเบเบญเบเบเปเบฒเบเบงเบเบเบตเปเปเบเปเบเบญเบเบเบญเบเบเบงเบฒเบกเบเบปเบเบเปเบฒเบเบตเปเบขเบนเปเบญเบฒเปเบช, เบเบฑเบเบชเบญเบเบเบญเบเบเบงเบเปเบเบปเบฒเบเปเปเบเบฐเบเบญเบเบชเปเบงเบเบเบฐเบซเบเบฒเบเปเบเบทเปเบญเบ.
เปเบฅเบฐเปเบเบเบฑเบเบเบธเบเบฑเบเบกเบฑเบเปเบเบดเบเปเบงเบฅเบฒเบชเปเบฒเบฅเบฑเบเบเปเบฒเบงเบฎเปเบฒเบ. เบเปเบเบญเบเปเบเบเบฑเบเบเบปเบเปเบ swap เปเบเบฅเบฐเบเบปเบเบเบฐเบเบดเบเบฑเบเบเบฒเบ desktop 64-bit, เปเบเปเบฅเบฐเบเบฐเบเบงเบเบเบฒเบเบชเบฒเบกเบฒเบเบเบญเบเบเบญเบเบเบทเปเบเบเบตเปเบเบตเปเบขเบนเป virtual เบซเบผเบฒเบเปเบเบปเปเบฒเบเบตเปเบเบทเปเบเบเบตเปเบฎเบฒเบเบเบดเบเบเบฃเบตเบชเปเบฒเบฅเบฑเบเบเบฒเบเปเบฅเบเบเปเบฝเบเบเบตเปเบกเบตเบเปเบฒเปเบฎเบเบเบญเบเบกเบฑเบเบญเบฐเบเบธเบเบฒเบเปเบซเป. เบเบฒเบเบเปเบฝเบเปเบเบ swap เบเปเบงเบเบเบฒเบเบเบตเบเบญเบฑเบเปเบ iOS เบซเบผเบธเบเบฅเบปเบเบขเปเบฒเบเบซเบผเบงเบเบซเบผเบฒเบเบเบฒเบเบเบดเบเบชเบฐเบเบต. เปเบเบเบฑเบเบเบธเบเบฑเบเบเบฐเบเบงเบเบเบฒเบเบเปเบฒเบฅเบปเบเบเบตเบงเบดเบเบเบฑเบเบซเบกเบปเบเบเปเบญเบเปเบซเบกเบฒเบฐเบเบฑเบเบซเบเปเบงเบเบเบงเบฒเบกเบเปเบฒเบเบปเปเบเบเป (เบญเปเบฒเบ RAM), เปเบฅเบฐเบเบฑเบเบซเบกเบปเบเบเบตเปเบเปเปเปเบซเบกเบฒเบฐเบเปเบญเบเบเบทเบเบเบฑเบเบเบฑเบเปเบซเปเบขเบธเบเปเบเบปเบฒ. เบเบตเปเปเบกเปเบเปเบเปเบฅเบฐเบเบธเปเบงเปเปเบเบเบตเปเปเบเปเบเปเบฒเบงเบกเบฒเบเปเบฒเบเปเบเบดเบ
เบญเบตเบเบเบฒเบกเบเบปเบเบเบญเบเบเบฒเบเบเบปเบเบฅเบญเบเปเบ Cloud, เบเบงเบเปเบฎเบปเบฒเบกเบฒเบฎเบญเบเบเปเบฒเบเบฐเบเบตเบเบฐเบเบญเบกเบเปเปเปเบเบเบตเปเบชเปเบฒเบฅเบฑเบเบซเบเปเบงเบเบเบงเบฒเบกเบเปเบฒเบเบตเปเบเบฑเบเบชเบฑเบเปเบเบ LMDB: 384 megabytes เบชเปเบฒเบฅเบฑเบเบญเบธเบเบฐเบเบญเบ 32-bit เปเบฅเบฐ 768 เบชเปเบฒเบฅเบฑเบเบญเบธเบเบฐเบเบญเบ 64-bit. เบซเบผเบฑเบเบเบฒเบเบเบฐเบฅเบดเบกเบฒเบเบเบตเปเบเบทเบเปเบเปเบซเบกเบปเบเปเบฅเปเบง, เบเบฒเบเบเบฐเบเบดเบเบฑเบเบเบฒเบเบเบฑเบเปเบเปเปเบเปเบเปเปเปเบฅเบตเปเบกเบชเบดเปเบเบชเบธเบเบเปเบงเบเบฅเบฐเบซเบฑเบ MDB_MAP_FULL
. เบเบงเบเปเบฎเบปเบฒเบชเบฑเบเปเบเบเปเบซเบฑเบเบเบงเบฒเบกเบเบดเบเบเบฒเบเบเบฑเปเบเบเปเบฒเบงเปเบเบเบฒเบเบเบดเบเบเบฒเบกเบเบญเบเบเบงเบเปเบฎเบปเบฒ, เปเบเปเบเบงเบเบกเบฑเบเบกเบตเบเบฐเบซเบเบฒเบเบเปเบญเบเบเบฝเบเบเปเบเบตเปเบเบฐเบขเบนเปเปเบเบเบฑเปเบเบเบญเบเบเบตเปเบเบงเบเปเบเบปเบฒเบชเบฒเบกเบฒเบเบเบทเบเบฅเบฐเปเบฅเบตเบ.
เปเบซเบเบเบปเบเบเบตเปเบเปเปเบเบฑเบเปเบเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเบเปเบฅเบดเปเบเบเบเบงเบฒเบกเบเปเบฒเบซเบผเบฒเบเปเบเบตเบเปเบเปเบเบเบเบฒเบเปเบเบฑเบเบฎเบฑเบเบชเบฒเบชเบฒเบกเบฒเบเปเบเบฑเบเบเบธเบฅเบฐเบเปเบฒเบเบตเปเบกเบตเบเบตเบงเบดเบเบเบตเบงเบฒ. เปเบเบทเปเบญเปเบเบปเปเบฒเปเบเบงเปเบฒเบชเบญเบเบเบฐเบเบปเบเบเบฒเบเบเบตเปเปเบเบทเปเบญเบกเบเปเปเบเบฑเบเปเบเบงเปเบ, เบเบงเบเปเบฎเบปเบฒเบเบฐเปเบเปเบฎเบฑเบเบเบฒเบเบเปเบงเบเปเบซเบผเบทเบญเปเบเบเบเบฒเบเบเบดเบเบฒเบฅเบฐเบเบฒเบชเบญเบเปเบชเบปเบฒเบเปเปเบฒเบเบตเปเบเบฑเบเปเบซเบผเบทเบญเบเบญเบ LMDB.
3.2. เบเบฒเบงเบฒเบ #2. B+-เบเบปเปเบเปเบกเป
เปเบเบทเปเบญเบเบณเบฅเบญเบเบเบฒเบเบฐเบฅเบฒเบเบขเบนเปเปเบเบดเบเบเปเบญเบเปเบเบฑเบเบเปเปเบกเบนเบเบเบตเปเบชเบณเบเบฑเบ, เบเบณเบชเบฑเปเบเบเปเปเปเบเบเบตเปเบเบฐเบเปเบญเบเบกเบตเบขเบนเปเปเบ API เบเบญเบเบกเบฑเบ:
- เบเบฒเบเปเบชเปเบญเบปเบเบเบฐเบเบญเบเปเบซเบกเป.
- เบเบญเบเบซเบฒเบญเบปเบเบเบฐเบเบญเบเบเบตเปเบกเบตเบฅเบฐเบซเบฑเบเบเบตเปเปเบซเป.
- เบเบฒเบเบเบญเบเบญเบปเบเบเบฐเบเบญเบ.
- Iterate เปเบเปเบฅเบเบฐเบซเปเบฒเบเบเบญเบเบเบฐเปเบเปเบเบฅเปเบฒเบเบฑเบเบเบตเปเปเบเบปเบฒเปเบเบปเปเบฒเปเบเปเบเบทเบเบเบฑเบเบฎเบฝเบ.
เปเบเบเบชเปเบฒเบเบเปเปเบกเบนเบเบเบตเปเบเปเบฒเบเบเบฒเบเบเบตเปเบชเบธเบเบเบตเปเบชเบฒเบกเบฒเบเบเบฐเบเบดเบเบฑเบเบเบฒเบเบเบฑเบเบซเบกเบปเบเบชเบตเปเบขเปเบฒเบเบเปเบฒเบเบเบฒเบเปเบกเปเบเบเบปเปเบเปเบกเปเบเบปเปเบเบซเบฒเบชเบญเบ. เปเบเปเบฅเบฐเบเปเปเบเบญเบเบกเบฑเบเปเบเบฑเบเบเบปเบงเปเบเบเบเบญเบเบเบฐเปเบเบเบตเปเปเบเปเบเบเบธเบเบเปเบญเบเบเบฑเบเปเบปเบเบเบญเบเบเบฐเปเบเบฅเบนเบเบญเบญเบเปเบเบฑเบเบชเบญเบเบเบปเปเบเบเปเบญเบ. เปเบเบทเปเบญเบเบเปเบฒเบเบเบฑเบเบเบธเบชเบดเปเบเบเบตเปเบกเบตเบเบฐเปเบฒเบเบเปเบญเบเบเบงเปเบฒเบเปเปเปเบกเป, เปเบฅเบฐเปเบเบทเปเบญเบเบเบงเบฒเบเบฑเบเบเบธเบชเบดเปเบเบเบตเปเปเบซเบเปเบเบงเปเบฒ. เบเบฒเบโเปเบเปโเบฎเบฑเบโเบเบธเบโเบเบฐโเปเบโเบเบตเปโเบเบทเบโเบชเบฑเปเบโเปเบกเปเบโเบเบฑเบโเบฅเบธโเปเบเปโเปเบเบโเบเปเบฒเบโเบเบฒเบโเบซเบเบถเปเบโเบเบญเบโเบเบฒเบโเปเบเบตเบโเบเบฒเบโเบเบปเปเบโเปเบกเปโเบเบฅเบฒโเบชโเบชเบดเบ
เบเบปเปเบเปเบกเปเปเบเบเบฒเบฃเบตเบกเบตเบเปเปเบเบปเบเบเปเบญเบเบเบทเปเบเบเบฒเบเบชเบญเบเบขเปเบฒเบเบเบตเปเบเปเบญเบเบเบฑเบเบเปเปเปเบซเปเบเบงเบเบกเบฑเบเบกเบตเบเบฐเบชเบดเบเบเบดเบเบฒเบเปเบเบฑเบเปเบเบเบชเปเบฒเบเบเปเปเบกเบนเบเบเบตเปเบญเบตเบเปเบชเปเปเบเปเบ. เบเปเบญเบเบญเบทเปเบ เปเบปเบ, เบฅเบฐเบเบฑเบเบเบงเบฒเบกเบชเบปเบกเบเบธเบเบเบญเบเบเบงเบเปเบเบปเบฒเปเบกเปเบเบเปเปเบชเบฒเบกเบฒเบเบเบฒเบเปเบเบปเบฒเปเบเป. เบกเบตเบเบงเบฒเบกเบชเปเบฝเบเบซเบผเบฒเบเบเบญเบเบเบฒเบเปเบเปเบฎเบฑเบเบเบปเปเบเปเบกเปเบเบตเปเบเบงเบฒเบกเบชเบนเบเบเบญเบเบชเบฒเบเบฒเบเบตเปเปเบเบเบเปเบฒเบเบเบฑเบเบชเบฒเบกเบฒเบเปเบเบเบเปเบฒเบเบเบฑเบเบขเปเบฒเบเบซเบผเบงเบเบซเบผเบฒเบ, เปเบเบดเปเบเปเบฎเบฑเบเปเบซเปเบเบงเบฒเบกเบชเบฑเบเบชเบปเบเบเบญเบเบเบฒเบเบเบปเปเบเบซเบฒเปเบเบ algorithmic เบฎเปเบฒเบเปเบฎเบเบเบถเปเบเปเบกเบทเปเบญเบเบฝเบเบเบฑเบเบชเบดเปเบเบเบตเปเบเบฒเบเบซเบงเบฑเบ. เบญเบฑเบเบเบตเบชเบญเบ, เบเบงเบฒเบกเบญเบธเบเบปเบกเบชเบปเบกเบเบนเบเบเบญเบเบเบฒเบเปเบเบทเปเบญเบกเบเปเปเบเปเบฒเบกเบฅเบฐเบซเบงเปเบฒเบ nodes deprives binary tree เบเบญเบเบเปเบญเบเบเบดเปเบเปเบเบซเบเปเบงเบเบเบงเบฒเบกเบเปเบฒ. nodes เบเบดเบ (เปเบเปเบเปเบเบญเบเบเบฒเบเปเบเบทเปเบญเบกเบเปเปเบฅเบฐเบซเบงเปเบฒเบเปเบเบปเบฒเปเบเบปเปเบฒ) เบชเบฒเบกเบฒเบเบเบฑเปเบเบขเบนเปเปเบเบซเบเปเบฒเบเบตเปเปเบเบเบเปเบฒเบเบเบฑเบเบซเบกเบปเบเปเบเบซเบเปเบงเบเบเบงเบฒเบกเบเปเบฒ virtual. เบเบฑเปเบเบเบฑเปเบ, เปเบเบดเบเปเบกเปเบเบงเปเบฒเบเบฒเบเบเปเบฒเบกเบเปเบฒเบเปเบเบเบเปเบฒเบเปเบเบญเบเบซเบผเบฒเบเบเบธเบเปเบเปเบเบฝเบเบขเบนเปเปเบเบเบปเปเบเปเบกเปเบญเบฒเบเบเบฐเบฎเบฝเบเบฎเปเบญเบเปเบซเปเบกเบตเบเบฒเบเปเบเบขเปเบฝเบกเบขเบฒเบกเบเปเบฒเบเบงเบเบซเบเปเบฒเบเบฝเบเบเบฝเบ. เบเบตเปเปเบกเปเบเบเบฑเบเบซเบฒเปเบเบดเบเปเบกเปเบเบงเปเบฒเปเบเปเบงเบฅเบฒเบเบตเปเบเบงเบเปเบฎเบปเบฒเบชเบปเบเบเบฐเบเบฒเบเปเบฝเบงเบเบฑเบเบเบฐเบชเบดเบเบเบดเบเบฒเบเบเบญเบเบเบปเปเบเปเบกเปเบเบนเปเปเบเบฑเบเปเบเบเบชเปเบฒเบเบเปเปเบกเบนเบเปเบเบซเบเปเบงเบเบเบงเบฒเบกเบเปเบฒ, เบเบฑเบเบเบฑเปเบเปเบเป rotating เบซเบเปเบฒเบขเปเบฒเบเบเปเปเปเบเบทเปเบญเบเปเบ cache เบเบญเบเปเบเปเบเบเปเบเบตเบเปเปเปเบกเปเบเบเบงเบฒเบกเบชเบธเบเบฅเบฒเบเบฒเบเบทเบ. เปเบกเบทเปเบญเบกเบฑเบเบกเบฒเบเบฑเบเบเบฒเบเบเบถเบเปเบญเบปเบฒเบซเบเปเบฒเบเบตเปเบเปเบฝเบงเบเปเบญเบเบเบฑเบเปเบซเบเบเบเบฒเบเปเบเปเบเปเบฅเบทเปเบญเบเป, เบชเบฐเบเบฒเบเบฐเบเบฒเบเบเบฐเบซเบกเบปเบเปเบ
B-trees, เปเบเบฑเบเบงเบดเบงเบฑเบเบเบฐเบเบฒเบเบญเบเบเบปเปเบเปเบกเปเบชเบญเบ, เปเบเปเปเบเบเบฑเบเบซเบฒเบเบตเปเปเบเปเบฅเบฐเบเบธเปเบงเปเปเบเบงเบฑเบเบเบตเปเบเปเบฒเบเบกเบฒ. เบเบฐเบเบฒเบเบเปเบฒเบญเบดเบ, เบเบงเบเปเบเบปเบฒเปเบเบปเปเบฒเปเบกเปเบเบเบฒเบเบเบธเปเบเบเปเบฝเบเบเบปเบเปเบญเบ. เบญเบฑเบเบเบตเบชเบญเบ, เปเบเปเบฅเบฐเบเปเปเบเบญเบเบเบงเบเบกเบฑเบเปเบเบเบเบธเบเบเบญเบเบฅเบนเบเบเบฐเปเบเบเปเปเบญเบญเบเปเบเบฑเบ 2, เปเบเปเปเบเบฑเบเบเบธเบเบเปเบญเบเบเปเบญเบเบเบญเบ M, เปเบฅเบฐเบเปเบฒเบเบงเบ M เบชเบฒเบกเบฒเบเบเปเบญเบเบเปเบฒเบเปเบซเบเป, เบเบฒเบกเบฅเปเบฒเบเบฑเบเบเบญเบเบซเบผเบฒเบเบฎเปเบญเบ, เบซเบผเบทเบซเบผเบฒเบเบเบฑเบเบเบปเบ.
เบเปเบงเบเปเบซเบเบเบตเป:
- เปเบเปเบฅเบฐ node เบกเบตเบเปเบฒเบเบงเบเบเบฐเบซเบเบฒเบเปเบซเบเปเบเบญเบเบเบฐเปเบเบเบตเปเบชเบฑเปเบเปเบฅเปเบงเปเบฅเบฐเบเบปเปเบเปเบกเปเบชเบฑเปเบเบซเบผเบฒเบ.
- เบเบปเปเบเปเบกเปเปเบเปเบฎเบฑเบเบเบฑเบเบชเบดเบเบเบญเบเบเปเบญเบเบเบดเปเบเบเบญเบเบชเบฐเบเบฒเบเบเบตเปเปเบเบเบงเบฒเบกเบเบปเบเบเปเบฒ, เปเบเบทเปเบญเบเบเบฒเบเบงเปเบฒเบเบฐเปเบเบเบตเปเบกเบตเบกเบนเบเบเปเบฒเปเบเปเบเบฝเบเปเบกเปเบเบเบฑเปเบเบขเบนเปเบเบฒเบกเบเปเบฒเบกเบฐเบเบฒเบเบขเบนเปเบเปเบฒเบเบเบฑเบเปเบเบเปเปเบเบฝเบงเบเบฑเบเบซเบผเบทเปเบเปเบเบฝเบ.
- เบเปเบฒโเบเบงเบโเบเบญเบโเปเบชเบฑเปเบโเบเบฒเบโเบเปเบฒเบโเปเบโเปเบงโเบฅเบฒโเบเบตเปโเบซเบผเบธเบโเบฅเบปเบโเบเบปเปเบโเปเบกเปโเปเบโเบฅเบฐโเบซเบงเปเบฒเบโเบเบฒเบโเบเบฐโเบเบดโเบเบฑเบโเบเบฒเบโเบเบญเบโเบซเบฒโเปเบกเปเบโเบซเบผเบธเบโเบฅเบปเบโ.
- เบเปเบฒโเบเบงเบโเบเบญเบโเบเปเปโเบกเบนเบโเปเบเบปเปเบฒโเบซเบกเบฒเบโเบเบตเปโเปเบเปโเบญเปเบฒเบโเปเบโเบฅเบฐโเบซเบงเปเบฒเบโเบเบฒเบโเบชเบญเบโเบเบฒเบกโเปเบฅโเบเบฐโเปเบกเปเบโเบซเบผเบธเบโเบฅเบปเบโ, เปเบเบทเปเบญเบโเบเบฒเบโเบงเปเบฒโเบเบงเบโเปเบเบปเบฒโเปเบเปโเบฅเบฐโเบกเบตโเบเปเบฒโเบเบงเบโเบซเบผเบฒเบโเบเบญเบโเบเบฐโเปเบโเบชเบฑเปเบโเปเบฅเปเบงโ.
LMDB เปเบเปเบเบฒเบเบเปเบฝเบเปเบเบเบเบญเบเบเบปเปเบเปเบกเป B เบเบตเปเปเบญเบตเปเบเบงเปเบฒเบเบปเปเบเปเบกเป B+ เปเบเบทเปเบญเปเบเบฑเบเบฎเบฑเบเบชเบฒเบเปเปเบกเบนเบ. เปเบเบเบงเบฒเบเบเปเบฒเบเปเบเบดเบเบชเบฐเปเบเบเปเบซเปเปเบซเบฑเบเบชเบฒเบกเบเบฐเปเบเบเบเบญเบ nodes เบเบตเปเบกเบตเบขเบนเปเปเบเบกเบฑเบ:
- เบขเบนเปเปเบเบดเบเบชเบธเบเปเบกเปเบเบฎเบฒเบ. เบกเบฑเบ materializes เบเปเปเบกเบตเบซเบเบฑเบเบซเบผเบฒเบเบเปเบงเบฒเปเบเบงเบเบงเบฒเบกเบเบดเบเบเบญเบเบเบฒเบเบเปเปเบกเบนเบเบเบฒเบเปเบเบชเบฒเบ. เบเบฒเบเปเบเบซเบเบถเปเบเบเบปเบงเบขเปเบฒเบ LMDB, เบเปเบฒเบเบชเบฒเบกเบฒเบเบชเปเบฒเบเบเบฒเบเบเปเปเบกเบนเบเบเปเบฒเบเบงเบเบซเบเบถเปเบเบเบตเปเปเบเปเบเบเบฑเบเบเบทเปเบเบเบตเปเบเบตเปเบขเบนเป virtual. เปเบเปเบฅเบฐเบเบปเบเปเบฅเบตเปเบกเบเบปเปเบเบเบฒเบเบฎเบฒเบเบเบญเบเบเบปเบเปเบญเบ.
- เปเบเบฅเบฐเบเบฑเบเบเปเปเบฒเบชเบธเบเปเบกเปเบเปเบ. เบเบงเบเปเบเบปเบฒเปเบฅเบฐเบเบฝเบเปเบเปเบเบงเบเปเบเบปเบฒเบกเบตเบเบนเปเบเบตเปเบชเปเบฒเบเบฑเบเบเบตเปเปเบเบฑเบเปเบงเปเปเบเบเบฒเบเบเปเปเบกเบนเบ. เปเบเบเบงเบดเบเบตเบเบฒเบเบเบฒเบ, เบเบตเปเปเบกเปเบเบฅเบฑเบเบชเบฐเบเบฐเบเบดเปเบชเบเบเบญเบเบเบปเปเบเปเบกเป B +. เบเปเบฒ B-tree เบเบปเบเบเบฐเบเบดเปเบเบฑเบเบฎเบฑเบเบชเบฒเบชเปเบงเบเบกเบนเบเบเปเบฒเปเบ nodes เบเบญเบเบเบธเบเบฅเบฐเบเบฑเบ, เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบเบฒเบเบเปเบฝเบเปเบเบ B+ เปเบกเปเบเบกเบตเบเบฝเบเปเบเปเบซเบเบถเปเบเบเปเปเบฒเบชเบธเบ. เบกเบตเบเบฒเบเบชเปเบญเบกเปเบเบกเบเบงเบฒเบกเปเบเบฑเบเบเบดเบเบเบตเป, เบเบงเบเปเบฎเบปเบฒเบเบฐเปเบเบซเบฒเบเบฐเปเบเบเบเปเบญเบเบเบญเบเบเบปเปเบเปเบกเปเบเบตเปเปเบเปเปเบ LMDB เบเบฝเบเปเบเปเปเบเบฑเบ B-tree.
- เบฅเบฐเบซเบงเปเบฒเบเบฎเบฒเบเปเบฅเบฐเปเบเบกเบต 0 เบซเบผเบทเบซเบผเบฒเบเบเบงเปเบฒเบฅเบฐเบเบฑเบเบเปเบฒเบเบงเบดเบเบฒเบเบฒเบเบเบตเปเบกเบตเปเบชเบฑเปเบเบเปเบฒเบเบฒเบ (เบชเบฒเบเบฒ). เบงเบฝเบเบเบฒเบเบเบญเบเปเบเบปเบฒเปเบเบปเปเบฒเปเบกเปเบเปเบเบทเปเบญเปเบเปเบเบเบธเบเบเบฑเบเบฅเบฝเบเบเบญเบเบเบตเบฅเบฐเบซเบงเปเบฒเบเปเบ.
เบเบฒเบเบเบฒเบเบเบฐเบเบฒเบ, เปเบเบเปเบกเปเบเบเบฑเบเบเบญเบเบเบงเบฒเบกเบเบปเบเบเบณเบเบญเบเบเบงเบฒเบกเบเบฒเบงเบเบตเปเบเบณเบเบปเบเปเบงเปเบฅเปเบงเบเปเปเบฒ. เบเบฐเบซเบเบฒเบเบเบญเบเบเบงเบเบกเบฑเบเปเบกเปเบเบซเบผเบฒเบเบเบฐเบซเบเบฒเบเบเบญเบเบซเบเปเบฒเบซเบเปเบงเบเบเบงเบฒเบกเบเปเบฒเปเบเบฅเบฐเบเบปเบเบเบฐเบเบดเบเบฑเบเบเบฒเบ, เบเบตเปเบเบงเบเปเบฎเบปเบฒเบชเบปเบเบเบฐเบเบฒเบเปเบฒเบเปเบเบดเบ. เปเบเบเบชเปเบฒเบเบเบญเบ node เปเบกเปเบเบชเบฐเปเบเบเปเบซเปเปเบซเบฑเบเบเปเบฒเบเบฅเบธเปเบกเบเบตเป. เบชเปเบงเบเบซเบปเบงเบกเบตเบเปเปเบกเบนเบ meta, เบเบตเปเบเบฐเปเบเปเบเบเบตเปเบชเบธเบเบชเปเบฒเบฅเบฑเบเบเบปเบงเบขเปเบฒเบเปเบกเปเบ checksum. เบเปเปเปเบเปเบกเปเบเบเปเปเบกเบนเบเบเปเบฝเบงเบเบฑเบเบเบฒเบเบเบปเบเปเบเบตเบเบเบตเปเบเบธเบฅเบฑเบเบเบตเปเบกเบตเบเปเปเบกเบนเบเบเบฑเปเบเบขเบนเป. เบเปเปเบกเบนเบเบชเบฒเบกเบฒเบเปเบเบฑเบเบเบฐเปเบเปเบเป, เบเปเบฒเบเบงเบเปเบฎเบปเบฒเปเบงเบปเปเบฒเบเปเบฝเบงเบเบฑเบ nodes navigation, เบซเบผเบทเบเบนเปเบเบต-value เบเบฑเบเบซเบกเบปเบเปเบเบเปเบฅเบฐเบเบตเบเบญเบเปเบ. เบเปเบฒเบเบชเบฒเบกเบฒเบเบญเปเบฒเบเปเบเบตเปเบกเปเบเบตเบกเบเปเบฝเบงเบเบฑเบเปเบเบเบชเปเบฒเบเบเบญเบเบซเบเปเบฒเปเบเบเบฒเบเปเบฎเบฑเบเบงเบฝเบ.
เปเบเบเปเบเปเบเบฑเบเบเบฒเบเบเบฑเบเปเบเบทเปเบญเปเบเบเบฒเบเปเบเบเบญเบเบซเบเปเบฒ, เบเบงเบเปเบฎเบปเบฒเบเบฐเปเบเบฑเบเบเบปเบงเปเบเบเบเบญเบ LMDB B-tree เปเบเบฅเบฑเบเบชเบฐเบเบฐเบเบตเปเบเปเบฒเบเบเบฒเบเปเบเบฎเบนเบเปเบเบเบเปเปเปเบเบเบตเป.
เบซเบเปเบฒเบเบตเปเบกเบต nodes เบเบฑเปเบเบขเบนเปเบเบฒเบกเบฅเปเบฒเบเบฑเบเบขเบนเปเปเบเปเบเปเบ. เบซเบเปเบฒเบเบปเบงเปเบฅเบเบเบตเปเบชเบนเบเบเบงเปเบฒเปเบกเปเบเบเบฑเปเบเบขเบนเปเปเบเบเบญเบเบเปเบฒเบเบเบญเบเปเบเบฅเป. เบญเบฑเบเบเบตเปเปเบญเบตเปเบเบงเปเบฒเบซเบเปเบฒ meta เบกเบตเบเปเปเบกเบนเบเบเปเบฝเบงเบเบฑเบเบเบฒเบเบเบปเบเปเบเบตเบเบเบตเปเบฎเบฒเบเบเบญเบเบเบปเปเบเปเบกเปเบเบฑเบเบซเบกเบปเบเบชเบฒเบกเบฒเบเบเบปเบเปเบเป. เปเบกเบทเปเบญเปเบเบตเบเปเบเบฅเป, LMDB เบชเบฐเปเบเบเบซเบเปเบฒเปเบเบฅเปเปเบเปเบฅเบฐเบซเบเปเบฒเบเบฒเบเบเปเบฒเบเปเบเบซเบฒเบเบปเปเบเปเบเบเบฒเบเบเบญเบเบซเบฒเบซเบเปเบฒ meta เบเบตเปเบเบทเบเบเปเบญเบเปเบฅเบฐเบเปเบฒเบเบกเบฑเบเบเบญเบเบซเบฒเบเบฒเบเบเปเปเบกเบนเบเบเบตเปเบกเบตเบขเบนเป.
เปเบเบเบฑเบเบเบธเบเบฑเบ, เบกเบตเบเบงเบฒเบกเบเบดเบเบเปเบฝเบงเบเบฑเบเปเบเบเบชเปเบฒเบเบเบฒเบเบเปเบฒเบเปเบซเบเบเบปเบเปเบฅเบฐเบเบฒเบเบเปเบฒเบเบฎเปเบฒเบเบเบฒเบเบเบญเบเบญเบปเบเบเบฒเบเบเบฑเบเบเบฑเปเบเบเปเปเบกเบนเบ, เบเบงเบเปเบฎเบปเบฒเบชเบฒเบกเบฒเบเบเปเบฒเบงเปเบเบเปเบฒเบเบซเบเปเบฒเปเบเบทเปเบญเบเบดเบเบฒเบฅเบฐเบเบฒเปเบชเบปเบฒเบซเบผเบฑเบเบเบตเบชเบฒเบกเบเบญเบ LMDB. เบกเบฑเบเปเบกเปเบเบเบฒเบเบเปเบงเบเปเบซเบผเบทเบญเบเบญเบเบกเบฑเบเบงเปเบฒเบเบฒเบเบเบฑเบเปเบเบเบเบฒเบเปเบเบฑเบเบฎเบฑเบเบชเบฒเบเบฑเบเบซเบกเบปเบเปเบเบตเบเบเบทเปเบเปเบเบเบฒเบเปเบฎเบฑเบเบเบธเบฅเบฐเบเปเบฒเปเบฅเบฐเบเบฒเบเปเบเบเบเปเบฝเบงเบเบฒเบเบเบฑเบเปเบฅเบฐเบเบฑเบ, เปเบซเปเบเบฒเบเบเปเปเบกเบนเบเปเบเบฑเบเบเบฑเบเบชเบดเบเบเบฑเบเบซเบกเบปเบเบเบญเบ multiversion.
3.3. เบเบฒเบงเบฒเบ #3. เบชเบณเปเบเบปเบฒ-เบเบฝเบ
เบเบฒเบเบเบฒเบเบเปเบฒเปเบเบตเบเบเบฒเบ B-tree เบเปเบฝเบงเบเปเบญเบเบเบฑเบเบเบฒเบเบเปเบฝเบเปเบเบเบเบธเบเบเบญเบ nodes เบเบญเบเบกเบฑเบ. เบเบปเบงเบขเปเบฒเบเบซเบเบถเปเบเปเบกเปเบเบเบฒเบเปเบเบตเปเบกเบฅเบฐเบซเบฑเบเปเบซเบกเปเปเบซเปเบเบฑเบ node เบเบตเปเบเบฑเบเบฅเบธเบเบงเบฒเบกเบชเบฒเบกเบฒเบเบชเบนเบเบชเบธเบเบเบญเบเบกเบฑเบเปเบฅเปเบง. เปเบเบเปเบฅเบฐเบเบตเบเบตเป, เบกเบฑเบเปเบเบฑเบเบชเบดเปเบเบเปเบฒเปเบเบฑเบ, เบเปเบฒเบญเบดเบ, เปเบเบ node เปเบเบฑเบเบชเบญเบ, เปเบฅเบฐเบญเบฑเบเบเบตเบชเบญเบ, เปเบเบทเปเบญเปเบเบตเปเบกเบเบฒเบเปเบเบทเปเบญเบกเบเปเปเบเบฑเบ node budding เปเบเบฑเบเปเบซเบกเปเปเบเบเปเปเปเบกเปเบเบญเบเบเบปเบ. เบเบฑเปเบเบเบญเบเบเบตเปเบญเบฒเบเบเบฐเปเบเบฑเบเบญเบฑเบเบเบฐเบฅเบฒเบเบซเบผเบฒเบ. เบเปเบฒเบชเปเบฒเบฅเบฑเบเปเบซเบเบเบปเบเบเบฒเบเบขเปเบฒเบ (เบญเบธเบเบฐเบเบดเปเบซเบ, เปเบเปเบซเบกเป, เปเบฅเบฐเบญเบทเปเบเป) เบเบฝเบเปเบเปเบชเปเบงเบเบซเบเบถเปเบเบเบญเบเบเบฒเบเบเปเบฝเบเปเบเบเบเบฒเบเบเบธเบเบเบฑเปเบเบเปเบฒเบงเปเบเบตเบเบเบถเปเบ, เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบเบปเปเบเปเบกเปเบเบฐเบเบฑเบเบเบปเบเบขเบนเปเปเบเบชเบฐเบเบฒเบเบเบตเปเบเปเปเบชเบญเบเบเปเบญเบ.
เบเบฒเบเปเบเปเปเบเปเบเบเบเบฑเปเบเปเบเบตเบกเบญเบฑเบเปเบถเปเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเปเบฎเบฑเบเปเบซเปเบเบฒเบเบเปเปเบกเบนเบเบกเบตเบเบงเบฒเบกเบเบดเบ-เบเบปเบเบเบฒเบเบเปเปเปเบกเปเบเบเบฒเบเปเบเบตเปเบกเปเบเบเบชเปเบฒเบเบเปเปเบกเบนเบเปเบเปเบเปเบเปเบเบตเปเบกเปเบเบตเบกเบเปเปเบเบฑเบ B-tree - เบเบฑเบเบเบถเบเบเบฒเบเปเบฎเบฑเบเบเบธเบฅเบฐเบเปเบฒ, เปเบเบดเปเบเปเบญเบตเปเบเบเบฑเบเบงเปเบฒเบเบฑเบเบเบถเบเบเบฒเบเบเบฝเบเบฅเปเบงเบเปเปเบฒ (WAL). เบกเบฑเบเปเบเบฑเบเปเบเบฅเปเปเบเบเบญเบเบเปเบฒเบเบเบญเบเบเบฒเบเบเปเบฒเปเบเบตเบเบเบฒเบเบเบตเปเบกเบตเบเบธเบเบเบฐเบชเบปเบเปเบเปเบเบทเบเบเบฝเบเบขเปเบฒเบเปเบเบฑเปเบกเบเบงเบเบเปเบญเบเบเบตเปเบเบฐเบเบฑเบเปเบเบ B-tree เบเบปเบงเบเบญเบเบกเบฑเบเปเบญเบ. เบเบฑเปเบเบเบฑเปเบ, เบเปเบฒเบเปเปเบกเบนเบเบเบทเบเบเบงเบเบเบปเบเปเบเบฅเบฐเบซเบงเปเบฒเบเบเบฒเบเบงเบดเบเบดเบเปเบชเบเบปเบเปเบญเบ, เบเบฒเบเบเปเปเบกเบนเบเบเบฐเบเบถเบเบชเบฒเบซเบฒเบฅเบทเบเปเบฝเบงเบเบฑเบเบเบฑเบเบเบถเบเปเบเบทเปเบญเบเบฑเบเบงเบฒเบเบเบปเบงเปเบญเบ.
LMDB เปเบเปเปเบฅเบทเบญเบเบงเบดเบเบตเบเบฒเบเบเบตเปเปเบเบเบเปเบฒเบเบเบฑเบเปเบเบฑเบเบเบปเบเปเบเบเบฒเบเบเบปเบเบเบฒเบเบเปเปเบเบงเบฒเบกเบเบดเบ, เปเบญเบตเปเบเบงเปเบฒเบเบฒเบเบเบฑเบเบฅเบญเบเปเบเบดเบเบเบฝเบ. เปเบเบเปเบเบทเปเบญเปเบเปเปเบฅเปเบงเบเบญเบเบกเบฑเบเปเบกเปเบเบงเปเบฒเปเบเบเบเบตเปเบเบฐเบเบฑเบเบเบธเบเบเปเปเบกเบนเบเปเบเบซเบเปเบฒเบเบตเปเบกเบตเบขเบนเปเปเบฅเปเบง, เบกเบฑเบเบเปเบฒเบญเบดเบเบเบฑเบเบฅเบญเบเบกเบฑเบเบเบฑเบเบซเบกเบปเบเปเบฅเบฐเปเบฎเบฑเบเปเบซเปเบเบฒเบเบเบฑเบเปเบเปเบเบฑเบเบซเบกเบปเบเปเบเบชเปเบฒเปเบเบปเบฒ.
เบเปเปเปเบ, เปเบเบทเปเบญเปเบซเปเบเปเปเบกเบนเบเบเบตเปเบเบทเบเบเบฑเบเบเบธเบเปเบซเปเบชเบฒเบกเบฒเบเปเบเปเปเบเป, เบกเบฑเบเบเปเบฒเปเบเบฑเบเบเปเบญเบเบเปเบฝเบเบเบฒเบเปเบเบทเปเบญเบกเบเปเปเบเบฑเบเปเบซเบเบเบเบตเปเปเบเปเบเบฒเบเปเบเบฑเบเบเบฐเบเบธเบเบฑเบเปเบเปเบซเบเบเปเบกเปเบเบญเบเบกเบฑเบ. เปเบเบทเปเบญเบเบเบฒเบเบงเปเบฒเบกเบฑเบเบเบฑเบเบเปเบญเบเปเบเปเบฎเบฑเบเบเบฒเบเบเบฑเบเปเบเปเบชเปเบฒเบฅเบฑเบเบเบฒเบเบเบตเป, เบกเบฑเบเบเบฑเบเบเบทเบเบเบฑเบเบฅเบญเบเบเปเบญเบ. เบเบฐเบเบงเบเบเบฒเบเบชเบทเบเบเปเป recursively เบเบฑเบเบซเบกเบปเบเบงเบดเบเบตเบเบฒเบเบฎเบฒเบ. เบชเบดเปเบเบชเบธเบเบเปเบฒเบเบเบตเปเบเบฐเบเปเบฝเบเปเบเบเปเบกเปเบเบเปเปเบกเบนเบเปเบเบซเบเปเบฒ meta.
เบเปเบฒเบเบฐเบเบงเบเบเบฒเบเบเบฑเบเบเปเบญเบเบขเปเบฒเบเบเบฐเบเบฑเบเบซเบฑเบเปเบเบฅเบฐเบซเบงเปเบฒเบเบเบฑเปเบเบเบญเบเบเบฒเบเบเบฑเบเบเบธเบ, เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบซเบเปเบฒ meta เปเบซเบกเปเบเบฐเบเปเปเบเบทเบเบชเปเบฒเบ, เบซเบผเบทเบกเบฑเบเบเบฐเบเปเปเบเบทเบเบเบฝเบเบฅเบปเบเปเบเปเบเปเบเบเบฑเบเบซเบกเบปเบ, เปเบฅเบฐ checksum เบเบญเบเบกเบฑเบเบเบฐเบเปเปเบเบทเบเบเปเบญเบ. เปเบเบเบฑเบเบชเบญเบเบเปเบฅเบฐเบเบตเบเบตเป, เบซเบเปเบฒเปเบซเบกเปเบเบฐเบเปเปเบชเบฒเบกเบฒเบเปเบเบปเปเบฒเปเบเบดเบเปเบเป, เปเบเปเบซเบเปเบฒเปเบเบปเปเบฒเบเบฐเบเปเปเปเบเปเบฎเบฑเบเบเบปเบเบเบฐเบเบปเบ. เบเบตเปเบฅเบปเบเบฅเปเบฒเบเบเบงเบฒเบกเบเปเบญเบเบเบฒเบเบชเปเบฒเบฅเบฑเบ LMDB เปเบเบเบฒเบเบเบฝเบเบเบฑเบเบเบถเบเบฅเปเบงเบเบซเบเปเบฒเปเบเบทเปเบญเบฎเบฑเบเบชเบฒเบเบงเบฒเบกเบชเบญเบเบเปเบญเบเบเบญเบเบเปเปเบกเบนเบ. เปเบเบเบงเบฒเบกเปเบเบฑเบเบเบดเบ, เปเบเบเบชเปเบฒเบเบเบญเบเบเบฒเบเปเบเบฑเบเบฎเบฑเบเบชเบฒเบเปเปเบกเบนเบเปเบเปเบเปเบเบเบตเปเบญเบฐเบเบดเบเบฒเบเบเปเบฒเบเปเบเบดเบเบเบตเปเปเบเปเบงเบฅเบฒเบเบฝเบงเบเบฑเบเปเบเปเปเบงเบฅเบฒเปเบเบซเบเปเบฒเบเบตเปเบเบญเบเบกเบฑเบ. เบเบฒเบเบเบฒเบเบเบฑเบเบเบถเบเบเบฒเบเปเบฎเบฑเบเบเบธเบฅเบฐเบเปเบฒเบเบตเปเบเบฑเบเปเบเบเปเบกเปเบเบซเบเบถเปเบเปเบเบฅเบฑเบเบชเบฐเบเบฐเบเปเบฒเบเปเบเบญเบ LMDB เบเบตเปเบชเบฐเบซเบเบญเบเบเบงเบฒเบกเปเบงเปเบเบเบฒเบเบญเปเบฒเบเบเปเปเบกเบนเบเบชเบนเบ.
เบเบฒเบเบญเบญเบเปเบเบเบเบตเปเปเบเปเบฎเบฑเบเบเบปเบ, เปเบญเบตเปเบเบงเปเบฒ append-only B-tree, เบเบฒเบกเบเปเบฒเบกเบฐเบเบฒเบเบชเบฐเบซเบเบญเบเบเบฒเบเปเบเบเบเปเบฝเบงเบเบฒเบเปเบฎเบฑเบเบเบธเบฅเบฐเบเปเบฒเปเบฅเบฐเบซเบผเบฒเบเบฎเบธเปเบ. เปเบ LMDB, เปเบเปเบฅเบฐเบเบธเบฅเบฐเบเปเบฒเบเบตเปเปเบเบตเบเปเบกเปเบเบเปเบฝเบงเบเปเบญเบเบเบฑเบเบฎเบฒเบเบเบปเปเบเปเบกเปเบเบตเปเบเปเบฝเบงเบเปเบญเบเปเบเบเบฐเบเบธเบเบฑเบ. เบเบปเบเบเปเบงเบฒเบเบฒเบเปเบฎเบฑเบเบเบธเบฅเบฐเบเปเบฒเบชเปเบฒเปเบฅเบฑเบ, เบซเบเปเบฒเบเบญเบเบเบปเปเบเปเบกเปเบเบตเปเบเปเบฝเบงเบเปเบญเบเบเบฑเบเบกเบฑเบเบเบฐเบเปเปเบเบทเบเบเปเบฝเบเปเบเบเบซเบผเบทเปเบเปเปเบซเบกเปเบชเปเบฒเบฅเบฑเบเบเปเปเบกเบนเบเบฎเบธเปเบเปเบซเบกเป. เบเบฑเปเบเบเบฑเปเบ, เบเปเบฒเบเบชเบฒเบกเบฒเบเปเบฎเบฑเบเบงเบฝเบเปเบเปเบเบปเบเปเบเบปเปเบฒเบเบตเปเบเปเบฒเบเบเปเบญเบเบเบฒเบเบเบฑเบเบเบธเบเบเปเปเบกเบนเบเบเบตเปเบเปเบฝเบงเบเปเบญเบเปเบเปเบงเบฅเบฒเบเบฑเปเบ. เบเบฒเบเปเบฎเบฑเบเบเบธเบฅเบฐเบเปเบฒเปเบเปเบเบทเบเปเบเบตเบ, เปเบเบดเบเปเบกเปเบเบงเปเบฒเบเบฒเบเปเบเบฑเบเบฎเบฑเบเบชเบฒเบเบฐเบชเบทเบเบเปเปเบเบฑเบเบเบธเบเบขเปเบฒเบเบซเปเบฒเบงเบซเบฑเบเปเบเปเบงเบฅเบฒเบเบตเป. เบเบตเปเปเบกเปเบเบเบธเบเบชเปเบฒเบเบฑเบเบเบญเบ multiversion, เปเบฎเบฑเบเปเบซเป LMDB เปเบเบฑเบเปเบซเบผเปเบเบเปเปเบกเบนเบเบเบตเปเปเบซเบกเบฒเบฐเบชเบปเบกเบชเปเบฒเบฅเบฑเบเบเบปเบเบฎเบฑเบเบเบญเบเบเบงเบเปเบฎเบปเบฒ UICollectionView
. เบกเบตเบเบฒเบเปเบเบตเบเบเบฒเบเปเบฎเบฑเบเบเบธเบฅเบฐเบเปเบฒ, เบเปเปเบเปเบฒเปเบเบฑเบเบเปเบญเบเปเบเบตเปเบกเบเบงเบฒเบกเบเบปเบเบเปเบฒเบเบญเบเปเบญเบฑเบเบเบฅเบดเปเบเบเบฑเบเปเบเบเบเบฒเบเบชเบนเบเปเบญเบปเบฒเบเปเปเบกเบนเบเปเบเบเบฐเบเบธเบเบฑเบเปเบเบปเปเบฒเปเบเปเบเปเบเบเบชเปเบฒเบเปเบเบซเบเปเบงเบเบเบงเบฒเบกเบเปเบฒเบเบฒเบเบขเปเบฒเบ, เปเบเบฒเบฐเบงเปเบฒเบขเปเบฒเบเบงเปเบฒเบเปเปเบกเบตเบซเบเบฑเบเปเบฅเบตเบ. เบเบธเบเบเบฐเบชเบปเบกเบเบฑเบเบเบตเปเบเปเบฒเปเบเบ LMDB เบเบฒเบ SQLite เบเบฝเบงเบเบฑเบ, เปเบเบดเปเบเบเปเปเบชเบฒเบกเบฒเบเปเบงเบปเปเบฒเปเบญเปเบญเบงเบเบเบญเบเบเบฒเบเปเบเบเบเปเบฝเบงเบเบฑเบเบซเบกเบปเบเบเบฑเปเบเบเปเบฒเบง. เปเบเบเปเบเปเปเบเบตเบเบชเบญเบเบเบธเบฅเบฐเบเปเบฒเปเบเบเบฑเปเบเบชเบธเบเบเปเบฒเบเปเบฅเบฐเบฅเบถเบเบเบฑเบเบเบถเบเบเบตเปเปเบเปเบเบญเบเบเบฒเบเปเบเบซเบเบถเปเบเบเบญเบเบเบงเบเปเบเบปเบฒ, เบกเบฑเบเบเบฐเบเปเปเบชเบฒเบกเบฒเบเปเบเปเบฎเบฑเบเบเบฑเบเบเบถเบเบเบฝเบงเบเบฑเบเบเบฒเบเปเบเบญเบฑเบเบเบตเบชเบญเบเบเบตเปเบเบฑเบเปเบซเบผเบทเบญ.
เบเปเบฒเบ flip เบเบญเบเบซเบผเบฝเบเปเบกเปเบเบเบฒเบเบเปเบฅเบดเปเบเบเบเบงเบฒเบกเบเบปเบเบเปเบฒ virtual เบเบตเปเบชเบนเบเบเบถเปเบเบขเปเบฒเบเบซเบผเบงเบเบซเบผเบฒเบ. เบชเบฐเปเบฅเปเบชเบฐเปเบเบเปเบซเปเปเบซเบฑเบเปเบเบเบชเปเบฒเบเบเบฒเบเบเปเปเบกเบนเบเบเบฐเบกเบตเบฅเบฑเบเบชเบฐเบเบฐเปเบเบงเปเบเบเปเบฒเบกเบฑเบเบเบทเบเปเบเปเปเบเบเปเบญเบกเปเบเบฑเบเบเบฑเบ 3 เบเบฒเบเปเบฎเบฑเบเบเบธเบฅเบฐเบเปเบฒเบเบตเปเปเบเบตเบเบญเปเบฒเบเปเบเบดเปเบเบขเบนเปเปเบเบฎเบธเปเบเบเบตเปเปเบเบเบเปเบฒเบเบเบฑเบเบเบญเบเบเบฒเบเบเปเปเบกเบนเบ. เปเบเบทเปเบญเบเบเบฒเบ LMDB เบเปเปเบชเบฒเบกเบฒเบเปเบเปเบเบทเบเปเบซเบกเปเบเปเปเบเบตเปเบชเบฒเบกเบฒเบเบเบฑเบเบฅเบธเปเบเปเบเบฒเบเบฎเบฒเบเบเบตเปเบเปเบฝเบงเบเปเบญเบเบเบฑเบเบเบฒเบเปเบฎเบฑเบเบเบธเบฅเบฐเบเปเบฒเปเบเบเบฐเบเบธเบเบฑเบ, เบฎเปเบฒเบเบเปเปเบกเบตเบเบฒเบเปเบฅเบทเบญเบเบญเบทเปเบเบเบญเบเปเบซเบเบทเบญเบเบฒเบเบเบฒเบเบเบฑเบเบชเบฑเบเบฎเบฒเบเบเบตเปเบชเบตเปเปเบเบซเบเปเบงเบเบเบงเบฒเบกเบเปเบฒเปเบฅเบฐเบญเบตเบเปเบเบทเปเบญเบซเบเบถเปเบ clone เบซเบเปเบฒเบเบตเปเบเบฑเบเปเบเปเบเบฒเบเปเบเปเบกเบฑเบ.
เปเบเบเบตเปเบเบตเปเบกเบฑเบเบเบฐเปเบเบฑเบเบเบฐเปเบซเบเบเบเบตเปเบเบฐเบเบทเปเบเปเบฒเบเบฒเบเบชเปเบงเบเบเปเบฝเบงเบเบฑเบเปเบเบฅเปเบเบตเปเบกเบตเปเบเบเบเบตเปเบซเบเปเบงเบเบเบงเบฒเบกเบเปเบฒ. เบกเบฑเบเปเบเบดเปเบเบเบทเบงเปเบฒเบเบฒเบเบเปเบฅเบดเปเบเบเปเบเบตเปเบกเปเบเบตเบกเบเบญเบเบซเบเปเบงเบเบเบงเบฒเบกเบเปเบฒ virtual เบเปเปเบเบงเบเปเบฎเบฑเบเปเบซเปเบเบงเบเปเบฎเบปเบฒเบเบฑเบเบงเบปเบเบซเบผเบฒเบ, เปเบเบทเปเบญเบเบเบฒเบเบงเปเบฒเบกเบฑเบเบเปเปเปเบเปเบเบฐเบเบญเบเบชเปเบงเบเปเบเบปเปเบฒเปเบเบเบงเบฒเบกเบเบปเบเบเปเบฒเบเบญเบเบเปเบฒเบฎเปเบญเบเบชเบฐเบซเบกเบฑเบ. เบขเปเบฒเบเปเบเบเปเบเบฒเบก, เปเบเปเบงเบฅเบฒเบเบฝเบงเบเบฑเบ, เบกเบฑเบเปเบเปเบเบทเบเบชเบฑเบเปเบเบเปเบซเบฑเบเบงเปเบฒ iOS เบกเบตเบเบงเบฒเบกเปเบเบฑเปเบเบเบฑเบเบซเบผเบฒเบเปเบเบเบฒเบเบเบฑเบเบชเบฑเบเบกเบฑเบ, เปเบฅเบฐเบเบงเบเปเบฎเบปเบฒเบเปเปเบชเบฒเบกเบฒเบ, เปเบเบฑเปเบเปเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบเบซเบผเบท desktop, เบชเบฐเบซเบเบญเบเบเบฒเบเบเบทเปเบ LMDB เบเบญเบ 1 terabyte เปเบฅเบฐเบเปเปเบเบดเบเบเปเบฝเบงเบเบฑเบเบเบธเบเบเบฐเบชเบปเบกเบเบฑเบเบเบตเปเปเบฅเบตเบ. เบเปเบฒเปเบเบฑเบเปเบเปเบเป, เบเปเบฒเบเบเบงเบเบเบฐเบเบฒเบเบฒเบกเปเบฎเบฑเบเปเบซเปเบญเบฒเบเบธเบเบญเบเบเบฒเบเปเบฎเบฑเบเบเบธเบฅเบฐเบเปเบฒเบชเบฑเปเบเบเบตเปเบชเบธเบเปเบเบปเปเบฒเบเบตเปเปเบเบฑเบเปเบเปเบเป.
4. เบเบฒเบเบญเบญเบเปเบเบเปเบเบเบฎเปเบฒเบเบเปเปเบกเบนเบเบขเบนเปเปเบเบดเบเบชเบธเบเบเบญเบ key-value API
เปเบซเปเปเบฅเบตเปเบกเบเบปเปเบเบเบฒเบเบงเบดเปเบเบฒเบฐ API เบเบญเบเบเบงเบเปเบฎเบปเบฒเปเบเบเปเบเบดเปเบเบชเบดเปเบเบเบตเปเบเปเปเบกเบตเบเบปเบงเบเบปเบเบเบทเปเบเบเบฒเบเบเบตเปเบชเบฐเบซเบเบญเบเปเบซเปเปเบเบ LMDB: เบชเบฐเบเบฒเบเปเบงเบเบฅเปเบญเบกเปเบฅเบฐเบเบฒเบเบเปเปเบกเบนเบ, เบฅเบฐเบซเบฑเบเปเบฅเบฐเบกเบนเบเบเปเบฒ, เบเบฒเบเปเบฎเบฑเบเบเบธเบฅเบฐเบเปเบฒเปเบฅเบฐเบเบปเบงเบเบฐเบเบดเบ.
เบเบฑเบเบเบถเบเบเปเบฝเบงเบเบฑเบเบฅเบฒเบเบเบทเปเบฅเบฐเบซเบฑเบ
เบซเบเปเบฒเบเบตเปเบเบฑเบเบซเบกเบปเบเปเบ LMDB API เบชเบฒเบเบฒเบฅเบฐเบเบฐเบชเบปเปเบเบเบทเบเบเบปเบเบเบญเบเบเบฒเบเปเบฎเบฑเบเบงเบฝเบเบเบญเบเบเบงเบเปเบเบปเบฒเปเบเบฎเบนเบเปเบเบเบเบญเบเบฅเบฐเบซเบฑเบเบเบงเบฒเบกเบเบดเบเบเบฒเบ, เปเบเปเปเบเบเบธเบเบฅเบฒเบเบเบฒเบเบเปเปเปเบเบเบฒเบเบเบงเบเบชเบญเบเบเบญเบเบกเบฑเบเบเบทเบเบเบปเบเปเบงเบฑเปเบเบชเปเบฒเบฅเบฑเบเบเบงเบฒเบกเบซเบเปเปเบเปเป.
เปเบเบเบฒเบเบฐเปเบเบฑเบเบงเบดเบเบตเบเบตเปเปเบงเบเบตเปเบชเบธเบเปเบเบเบฒเบเปเบเบทเปเบญเบกเบเปเป LMDB เบเบฑเบเปเบเบเบเบฒเบเบชเปเบฒเบฅเบฑเบ iOS เบซเบผเบท macOS, เบเปเบฒเบเบฐเปเบเบปเปเบฒเปเบเบฐเบเปเบฒ CocoaPod เบเบญเบเบเปเบญเบ
4.1. เบเบปเบเบเบฑเบเบซเบเปเปเบเบทเปเบเบเบฒเบ
เบชเบฐเบเบฒเบเปเบงเบเบฅเปเบญเบก
เปเบเบเบเบฐเบเบญเบเบเบฒเบ MDB_env
เปเบกเปเบเบเปเบญเบเปเบเบฑเบเบกเปเบฝเบเบเบญเบเบฅเบฑเบเบเบฒเบเปเบเบเบญเบ LMDB. เบเบญเบเบเบปเบงเบเบฑเบเบเบฑเบเบเบณเปเปเบฒ mdb_env
เบญเบฐเบเบธเบเบฒเบเปเบซเปเบเปเบฒเบเบชเบฒเบกเบฒเบ configure เบเบฒเบเบเบธเบเบชเบปเบกเบเบฑเบเบเบญเบเบกเบฑเบ. เปเบเบเปเบฅเบฐเบเบตเบเปเบฒเบเบเบฒเบเบเบตเปเบชเบธเบ, เบเบฒเบเปเบฅเบตเปเบกเบเบปเปเบเบเบญเบเปเบเบทเปเบญเบเบเบฑเบเปเบเบดเปเบเบเบทเบงเปเบฒเบเบตเป.
mdb_env_create(env);โ
mdb_env_set_map_size(*env, 1024 * 1024 * 512)โ
mdb_env_open(*env, path.UTF8String, MDB_NOTLS, 0664);
เปเบเบเปเบฒเบฎเปเบญเบเบชเบฐเบซเบกเบฑเบ Mail.ru Cloud, เบเบงเบเปเบฎเบปเบฒเปเบเปเบเปเบฝเบเบเปเบฒเปเบฅเบตเปเบกเบเบปเปเบเบเบฝเบเปเบเปเบชเบญเบเบเบฒเบฅเบฒเบกเบดเปเบเบตเปเบเบปเปเบฒเบเบฑเปเบ.
เบญเบฑเบเบเปเบฒเบญเบดเบเปเบกเปเบเบเบฐเบซเบเบฒเบเบเบญเบเบเบทเปเบเบเบตเปเบเบตเปเบขเบนเป virtual เบเบตเปเปเบเบฅเปเปเบเบฑเบเบฎเบฑเบเบชเบฒเบเบทเบเปเบเบเบเบตเป. เปเบเปเบซเบเปเบฒเปเบชเบเบเบฒเบ, เปเบเบดเบเปเบกเปเบเบงเปเบฒเบขเบนเปเปเบเบญเบธเบเบฐเบเบญเบเบเบฝเบงเบเบฑเบ, เบกเบนเบเบเปเบฒเบชเบฐเปเบเบฒเบฐเบชเบฒเบกเบฒเบเปเบเบเบเปเบฒเบเบเบฑเบเบขเปเบฒเบเบซเบผเบงเบเบซเบผเบฒเบเบเบฒเบเบเบฒเบเปเบฅเปเบเปเบเบซเบฒเบเบฒเบเปเบฅเปเบ. เปเบเบทเปเบญเบเบดเบเบฒเบฅเบฐเบเบฒเบเบธเบเบชเบปเบกเบเบฑเบเบเบตเปเบเบญเบ iOS, เบเบฐเบฅเบดเบกเบฒเบเบเบฒเบเปเบเบฑเบเบฎเบฑเบเบชเบฒเบชเบนเบเบชเบธเบเปเบกเปเบเปเบฅเบทเบญเบเปเบเบเปเบเบเบฒเบกเบดเบ. เปเบฅเบตเปเบกเบเบปเปเบเบเบฒเบเบเปเบฒเบเบตเปเปเบเปเบเบญเบ, เบกเบฑเบเบเบทเบเบซเบผเบธเบเบฅเบปเบเบเบฒเบกเบฅเปเบฒเบเบฑเบเบเบปเบเบเปเบงเบฒเบเบฑเบเบเบฑเบ mdb_env_open
เบเบฐเบเปเปเบชเบปเปเบเบเบปเบเปเบเปเบฎเบฑเบเบเบตเปเปเบเบเบเปเบฒเบเบเบฒเบ ENOMEM
. เปเบเบเบฒเบเบเบดเบเบชเบฐเบเบต, เบเบฑเบเบกเบตเบงเบดเบเบตเบเบปเบเบเบฑเบเบเปเบฒเบก - เบเปเบฒเบญเบดเบเบเบฑเบเบชเบฑเบเบซเบเปเบงเบเบเบงเบฒเบกเบเปเบฒเบเปเบฒเปเบชเบธเบเบเบตเปเปเบเบทเปเบญเบเบเบฑเบ, เปเบฅเบฐเบซเบผเบฑเบเบเบฒเบเบเบฑเปเบ, เปเบกเบทเปเบญเปเบเปเบฎเบฑเบเบเปเปเบเบดเบเบเบฒเบ, MDB_MAP_FULL
, เปเบเบตเปเบกโเบเบถเปเบโ. เบขเปเบฒเบเปเบเบเปเบเบฒเบก, เบกเบฑเบเปเบเบฑเบ thorny เบซเบผเบฒเบ. เปเบซเบเบเบปเบเปเบกเปเบเบงเปเบฒเบเบฑเปเบเบเบญเบเบเบฒเบเบเบฑเบเบชเบฑเบเบซเบเปเบงเบเบเบงเบฒเบกเบเปเบฒเบเบทเบเปเบซเบกเป (remap) เปเบเบเปเบเปเบเบฑเบเบเบฑเบ mdb_env_set_map_size
invalidates entities เบเบฑเบเบซเบกเบปเบ (เบเบปเบงเบเบฐเบเบดเบ, เบเบธเบฅเบฐเบเปเบฒ, เบเบตเปเบฅเบฐเบเปเบฒ) เบเบตเปเปเบเปเบฎเบฑเบเปเบเปเบกเบทเปเบญเบเปเบญเบเบเบฒเบเปเบเบทเปเบญเบเบเบฑเบ. เบเบฒเบเปเบญเบปเบฒเปเบซเบเบเบฒเบเบเบตเปเปเบเบปเปเบฒเปเบเปเบเบเบฑเบเบเบตเบเบญเบเบฅเบฐเบซเบฑเบเบเบฐเบเปเบฒเปเบเบชเบนเปเบเบงเบฒเบกเบชเบฑเบเบชเบปเบเบเบตเปเบชเปเบฒเบเบฑเบเบเบญเบเบกเบฑเบ. เบขเปเบฒเบเปเบเบเปเบเบฒเบก, เบเปเบฒเบเบงเบฒเบกเบเบปเบเบเปเบฒ virtual เบกเบตเบเบงเบฒเบกเบชเปเบฒเบเบฑเบเบซเบผเบฒเบเบชเปเบฒเบฅเบฑเบเบเปเบฒเบ, เบเบตเปเบญเบฒเบเบเบฐเปเบเบฑเบเปเบซเบเบเบปเบเบเบตเปเบเบฐเบเบดเบเบฒเบฅเบฐเบเบฒเบขเปเบฒเบเปเบเปเบเบดเบเบเปเบฝเบงเบเบฑเบเบเบงเบฒเบกเบเบฒเบงเบเบญเบเบชเปเบญเบกเบเบตเปเปเบเปเบเบเปเบญเบเบซเบเปเบฒ.
เบเบปเบงเบเปเบฒเบเบปเบเบเบฒเบเบเบตเบชเบญเบ, เบกเบนเบเบเปเบฒเปเบฅเบตเปเบกเบเบปเปเบเบเบตเปเบเปเปเปเบซเบกเบฒเบฐเบชเบปเบกเบเบฑเบเบเบงเบเปเบฎเบปเบฒ, เบเบงเบเบเบธเบกเบเบปเบเปเบเบเบฒเบเบฎเบฑเบเบเบฐเบเบฑเบเบเบงเบฒเบกเบเบญเบเปเบเบเบญเบเบเบฐเบเบนเป. เบเปเบญเบฐเปเบ, เบขเปเบฒเบเปเปเบญเบ iOS 10 เบกเบตเบเบฑเบเบซเบฒเบเบฑเบเบเบฒเบเบฎเบญเบเบฎเบฑเบเบเบฒเบเบเบฑเบเปเบเบฑเบเบเปเปเบกเบนเบเบเปเบญเบเบเบดเปเบ. เบชเปเบฒเบฅเบฑเบเปเบซเบเบเบปเบเบเบตเป, เปเบเบเบปเบงเบขเปเบฒเบเบเปเบฒเบเปเบเบดเบ, repository เปเบเปเบเบทเบเปเบเบตเบเบเปเบงเบเบเบธเบ MDB_NOTLS
. เบเบญเบเปเบซเบเบทเบญเปเบเบเบฒเบเบเบตเป, เบกเบฑเบเบเบฑเบเบกเบตเบเบงเบฒเบกเบเปเบฒเปเบเบฑเบ
เบเบฒเบเบเปเปเบกเบนเบ
เบเบฒเบเบเปเปเบกเบนเบเปเบกเปเบเบเบปเบงเบขเปเบฒเบ B-tree เปเบเบเบเปเบฒเบเบซเบฒเบ, เปเบเบดเปเบเบเบงเบเปเบฎเบปเบฒเปเบเปเบชเบปเบเบเบฐเบเบฒเบเปเบฒเบเปเบเบดเบ. เบเบฒเบเปเบเบตเบเบเบญเบเบกเบฑเบเปเบเบตเบเบเบถเปเบเบเบฒเบเปเบเบเบธเบฅเบฐเบเปเบฒ, เปเบเบดเปเบเบญเบฒเบเบเบฐเปเบเบดเปเบเบเบทเบงเปเบฒเปเบเบเปเบฅเบฑเบเบเปเบญเบเปเบเบเบญเบเบเปเบฒเบญเบดเบ.
MDB_txn *txn;โ
MDB_dbi dbi;โ
mdb_txn_begin(env, NULL, MDB_RDONLY, &txn);โ
mdb_dbi_open(txn, NULL, MDB_CREATE, &dbi);โ
mdb_txn_abort(txn);
เปเบเปเบเบดเบเปเบฅเปเบง, เบเบฒเบเปเบฎเบฑเบเบเบธเบฅเบฐเบเปเบฒเปเบ LMDB เปเบกเปเบเบซเบเปเบงเบเบเบฒเบเปเบเบฑเบเบฎเบฑเบเบชเบฒ, เบเปเปเปเบกเปเบเบเบฒเบเบเปเปเบกเบนเบเบชเบฐเปเบเบฒเบฐ. เปเบเบงเบเบงเบฒเบกเบเบดเบเบเบตเปเบเปเบงเบเปเบซเปเบเปเบฒเบเบชเบฒเบกเบฒเบเบเบฐเบเบดเบเบฑเบเบเบฒเบเบเบฐเบฅเปเบฒเบกเบฐเบเบนเบขเบนเปเปเบเบซเบเปเบงเบเบเบฒเบเบเบตเปเบเบฑเปเบเบขเบนเปเปเบเบเบฒเบเบเปเปเบกเบนเบเบเบตเปเปเบเบเบเปเบฒเบเบเบฑเบ. เปเบเบเบฒเบเบเบดเบเบชเบฐเบเบต, เบเบตเปเปเบเบตเบเบเบงเบฒเบกเปเบเบฑเบเปเบเปเบเปเบเบญเบเบเบฒเบเบชเปเบฒเบเปเบเบเบเปเบฒเบฅเบญเบเบเบฒเบเบฐเบฅเบฒเบเปเบเบฎเบนเบเปเบเบเบเบญเบเบเบฒเบเบเปเปเบกเบนเบเบเบตเปเปเบเบเบเปเบฒเบเบเบฑเบ, เปเบเปเปเบเปเบงเบฅเบฒเบซเบเบถเปเบเบเปเบฒเบเบฐเปเบเบปเปเบฒเปเบเปเปเบญเบปเบฒเปเบชเบฑเปเบเบเบฒเบเบเบตเปเปเบเบเบเปเบฒเบเบเบฑเบ, เบญเบฐเบเบดเบเบฒเบเบฅเบฒเบเบฅเบฐเบญเบฝเบเบเปเบฒเบเบฅเบธเปเบกเบเบตเป.
เบเบต เปเบฅเบฐเบเปเบฒ
เปเบเบเบเบฐเบเบญเบเบเบฒเบ MDB_val
เปเบเบเบเปเบฒเบฅเบญเบเปเบเบงเบเบงเบฒเบกเบเบดเบเบเบญเบเบเบฑเบเบชเบญเบเบเบตเปเบชเปเบฒเบเบฑเบเปเบฅเบฐเบกเบนเบเบเปเบฒ. repository เบเปเปเบกเบตเบเบงเบฒเบกเบเบดเบเบเปเบฝเบงเบเบฑเบ semantics เบเบญเบเปเบเบปเบฒเปเบเบปเปเบฒ. เบชเปเบฒเบฅเบฑเบเบเบฒเบ, เบเบฒเบเบชเบดเปเบเบเบฒเบเบขเปเบฒเบเบญเบทเปเบเปเบกเปเบเบเบฝเบเปเบเป array เบเบญเบ bytes เบเบญเบเบเบฐเบซเบเบฒเบเบเบตเปเบเปเบฒเบเบปเบเปเบงเป. เบเบฐเปเบฒเบเบเบฐเปเบเบชเบนเบเบชเบธเบเปเบกเปเบ 512 bytes.
typedef struct MDB_val {โ
size_t mv_size;โ
void *mv_data;โ
} MDB_val;โโ
เบเบฒเบโเบเปเบฒโเปเบเปโเปเบเบทเปเบญเบโเบเบฝเบโเบเบฝเบโ, เบฎเปเบฒเบโเบเบฑเบโเบฅเบฝเบโเบฅเปเบฒโเบเบฑเบโเบเบฐโเปเบโเปเบโเบฅเปเบฒโเบเบฑเบโเบเบฑเปเบโเบเบถเปเบโ. เบเปเบฒโเบซเบฒเบโเบงเปเบฒโเบเปเบฒเบโเบเปเปโเปเบเปโเบเบปเบโเปเบเบโเบเปเบงเบโเบเบปเบงโเบเปเบฒเบโเปเบญเบโ, เบซเบผเบฑเบโเบเบฒเบโเบเบฑเปเบโเบเปเบฒโเปเบฅเบตเปเบกโเบเบปเปเบโเบเบตเปโเบเบฐโเบเบทเบโเบเปเบฒโเปเบเปโ, เปเบเบดเปเบโเบเบฑเบโเบฅเบฝเบโเบฅเปเบฒโเบเบฑเบ byte-by-byte เปเบโเบเปเบฒโเบชเบฑเปเบ lexicographicโ.โ
เบเบฒเบเปเบฎเบฑเบเบเบธเบฅเบฐ เบเบณ
เปเบเบโเบเบฐโเบเบญเบโเบเบฒเบโเบเบธโเบฅเบฐโเบเปเบฒโเปเบกเปเบโเบญเบฐโเบเบดโเบเบฒเบโเปเบโเบฅเบฐโเบญเบฝเบโเปเบ
- เบชเบฐเบซเบเบฑเบเบชเบฐเบซเบเบนเบเบเบธเบเบชเบปเบกเบเบฑเบเบเบทเปเบเบเบฒเบเบเบฑเบเบซเบกเบปเบ
เปเบญเบเบตเบเบต : เบเบฐเบฅเปเบฒเบกเบฐเบเบน, เบเบงเบฒเบกเบชเบญเบเบเปเบญเบ, เบเบฒเบเปเบเบเบเปเบฝเบงเปเบฅเบฐเบเบงเบฒเบกเบซเบเปเบฒเปเบเบทเปเบญเบเบท. เบเปเบญเบเบเปเปเบชเบฒเบกเบฒเบเบเปเบงเบเปเบเปเปเบเปเบชเบฑเบเปเบเบเบงเปเบฒเบกเบตเบเปเปเบเบปเบเบเปเบญเบเบเปเบฝเบงเบเบฑเบเบเบงเบฒเบกเบเบปเบเบเบฒเบเปเบ macOS เปเบฅเบฐ iOS เบเบตเปเบเบทเบเปเบเปเปเบเปเบ MDBX. เบเปเบฒเบเบชเบฒเบกเบฒเบเบญเปเบฒเบเปเบเบตเปเบกเปเบเบตเบกเปเบเบเบญเบเบเบงเบเปเบเบปเบฒREADME . - เบงเบดเบเบตเบเบฒเบเปเบเบทเปเบญ multithreading เปเบกเปเบเบญเบฐเบเบดเบเบฒเบเปเบเบเปเบเบเบเบฒเบ "เบเบฑเบเบเบฝเบเบเบฝเบง / เบเบนเปเบญเปเบฒเบเบซเบผเบฒเบ". เบเบฑเบเบเบฝเบเบเบฅเบฑเบญเบเบเบฑเบเปเบฅเบฐเบเบฑเบ, เปเบเปเบขเปเบฒเบเบฅเบฑเบญเบเบเบนเปเบญเปเบฒเบ. เบเบนเปเบญเปเบฒเบเบเปเปเปเบเปเบเบฑเบเบเบงเบฒเบเบเบฑเบเบเบฝเบเบซเบผเบทเบเบฑเบเปเบฅเบฐเบเบฑเบ.
- เบชเบฐเบซเบเบฑเบเบชเบฐเบซเบเบนเบเบเบฒเบเปเบฎเบฑเบเบเบธเบฅเบฐเบเปเบฒเบเบตเปเบเปเบญเบเบเบฑเบ.
- Multiversion เบชเบฐเบซเบเบฑเบเบชเบฐเบซเบเบนเบ.
Multiversion เปเบ LMDB เปเบกเปเบเบเบตเบซเบผเบฒเบเบเบตเปเบเปเบญเบเบเปเบญเบเบเบฒเบเบชเบฐเปเบเบเปเบซเปเปเบซเบฑเบเปเบเบเบฒเบเบเบฐเบเบดเบเบฑเบ. เบเบฒเบเบฅเบฐเบซเบฑเบเบเปเบฒเบเบฅเบธเปเบกเบเบตเปเบเปเบฒเบเบชเบฒเบกเบฒเบเปเบซเบฑเบเปเบเปเบงเปเบฒเปเบเปเบฅเบฐเบเบธเบฅเบฐเบเปเบฒเปเบฎเบฑเบเบงเบฝเบเบเบฑเบเปเบเบเบเบญเบเบเบฒเบเบเปเปเบกเบนเบเบเบตเปเปเบเปเบเบดเบเปเบเปเบงเบฅเบฒเบเบตเปเปเบเบตเบ, เบเบทเบเปเบเบเบญเบญเบเบเบฒเบเบเบฒเบเบเปเบฝเบเปเบเบเบเปเปเปเบเบเบฑเบเบซเบกเบปเบ. เบเบฒเบเปเบฅเบตเปเบกเบเบปเปเบเบเบฒเบเปเบเบฑเบเบฎเบฑเบเบชเบฒเปเบฅเบฐเบเบฒเบเปเบเบตเปเบกเบเบฑเบเบเบถเบเบเบฒเบเบเบปเบเบชเบญเบเบเบฑเบเบกเบฑเบเบเปเปเปเบเปเปเบเบฑเบเบเบปเบงเปเบเบเบเบญเบเบชเบดเปเบเบเบตเปเบซเบเปเบฒเบชเบปเบเปเบ, เบเบฑเปเบเบเบฑเปเบเบเบดเบเบตเบเปเบฒเปเบซเบผเบปเปเบฒเบเบตเปเบเบทเบเบเบฐเปเบงเปเบเบฒเบเปเบเปเบเบฒเบ spoiler.
เบเบณเบฅเบฑเบเปเบเบตเปเบกเบฅเบฒเบเบเบฒเบเบเบปเบเบชเบญเบ
MDB_env *env;
MDB_dbi dbi;
MDB_txn *txn;
mdb_env_create(&env);
mdb_env_open(env, "./testdb", MDB_NOTLS, 0664);
mdb_txn_begin(env, NULL, 0, &txn);
mdb_dbi_open(txn, NULL, 0, &dbi);
mdb_txn_abort(txn);
char k = 'k';
MDB_val key;
key.mv_size = sizeof(k);
key.mv_data = (void *)&k;
int v = 997;
MDB_val value;
value.mv_size = sizeof(v);
value.mv_data = (void *)&v;
mdb_txn_begin(env, NULL, 0, &txn);
mdb_put(txn, dbi, &key, &value, MDB_NOOVERWRITE);
mdb_txn_commit(txn);
MDB_txn *txn1, *txn2, *txn3;
MDB_val val;
// ะัะบััะฒะฐะตะผ 2 ััะฐะฝะทะฐะบัะธะธ, ะบะฐะถะดะฐั ะธะท ะบะพัะพััั
ัะผะพััะธั
// ะฝะฐ ะฒะตััะธั ะฑะฐะทั ะดะฐะฝะฝัั
ั ะพะดะฝะพะน ะทะฐะฟะธััั.
mdb_txn_begin(env, NULL, 0, &txn1); // read-write
mdb_txn_begin(env, NULL, MDB_RDONLY, &txn2); // read-only
// ะ ัะฐะผะบะฐั
ะฟะตัะฒะพะน ััะฐะฝะทะฐะบัะธะธ ัะดะฐะปัะตะผ ะธะท ะฑะฐะทั ะดะฐะฝะฝัั
ัััะตััะฒััััั ะฒ ะฝะตะน ะทะฐะฟะธัั.
mdb_del(txn1, dbi, &key, NULL);
// ะคะธะบัะธััะตะผ ัะดะฐะปะตะฝะธะต.
mdb_txn_commit(txn1);
// ะัะบััะฒะฐะตะผ ััะตััั ััะฐะฝะทะฐะบัะธั, ะบะพัะพัะฐั ัะผะพััะธั ะฝะฐ
// ะฐะบััะฐะปัะฝัั ะฒะตััะธั ะฑะฐะทั ะดะฐะฝะฝัั
, ะณะดะต ะทะฐะฟะธัะธ ัะถะต ะฝะตั.
mdb_txn_begin(env, NULL, MDB_RDONLY, &txn3);
// ะฃะฑะตะถะดะฐะตะผัั, ััะพ ะทะฐะฟะธัั ะฟะพ ะธัะบะพะผะพะผั ะบะปััั ัะถะต ะฝะต ัััะตััะฒัะตั.
assert(mdb_get(txn3, dbi, &key, &val) == MDB_NOTFOUND);
// ะะฐะฒะตััะฐะตะผ ััะฐะฝะทะฐะบัะธั.
mdb_txn_abort(txn3);
// ะฃะฑะตะถะดะฐะตะผัั, ััะพ ะฒ ัะฐะผะบะฐั
ะฒัะพัะพะน ััะฐะฝะทะฐะบัะธะธ, ะพัะบัััะพะน ะฝะฐ ะผะพะผะตะฝั
// ัััะตััะฒะพะฒะฐะฝะธั ะทะฐะฟะธัะธ ะฒ ะฑะฐะทะต ะดะฐะฝะฝัั
, ะตั ะฒัั ะตัั ะผะพะถะฝะพ ะฝะฐะนัะธ ะฟะพ ะบะปััั.
assert(mdb_get(txn2, dbi, &key, &val) == MDB_SUCCESS);
// ะัะพะฒะตััะตะผ, ััะพ ะฟะพ ะบะปััั ะฟะพะปััะตะฝ ะฝะต ะฐะฑั ะบะฐะบะพะน ะผััะพั, ะฐ ะฒะฐะปะธะดะฝัะต ะดะฐะฝะฝัะต.
assert(*(int *)val.mv_data == 997);
// ะะฐะฒะตััะฐะตะผ ััะฐะฝะทะฐะบัะธั, ัะฐะฑะพัะฐััะตะน ั
ะพัั ะธ ั ัััะฐัะตะฒัะตะน, ะฝะพ ะบะพะฝัะธััะตะฝัะฝะพะน ะฑะฐะทะพะน ะดะฐะฝะฝัั
.
mdb_txn_abort(txn2);
เบเปเบญเบเบเปเปเบเบฐเบเปเบฒเปเบซเปเบเปเบฒเบเบเบฐเบเบฒเบเบฒเบก trick เบเบฝเบงเบเบฑเบเบเบฑเบ SQLite เปเบฅเบฐเปเบเบดเปเบเบงเปเบฒเบกเบตเบซเบเบฑเบเปเบเบตเบเบเบทเปเบ.
Multiversion เปเบญเบปเบฒเบชเบดเบเบเบดเบเบฐเปเบซเบเบเบเบตเปเบกเบฒเบชเบนเปเบเบตเบงเบดเบเบเบญเบเบเบนเปเบเบฑเบเบเบฐเบเบฒ iOS. เบเบฒเบเบเปเบฒเปเบเปเบเบธเบเบชเบปเบกเบเบฑเบเบเบตเป, เบเปเบฒเบเบชเบฒเบกเบฒเบเบเบฑเบเบญเบฑเบเบเบฒเบเบฒเบเบเบฑเบเบเบธเบเบเบญเบเปเบซเบผเปเบเบเปเปเบกเบนเบเบชเปเบฒเบฅเบฑเบเบฎเบนเบเปเบเบเบซเบเปเบฒเบเปเปเบเปเบขเปเบฒเบเบเปเบฒเบเบเบฒเบเปเบฅเบฐเบเปเบฒเบกเบฐเบเบฒเบ, เปเบเบเบญเบตเบเปเบชเปเบเบฒเบเบเบดเบเบฒเบฅเบฐเบเบฒเบเบฐเบชเบปเบเบเบฒเบเบเบญเบเบเบนเปเปเบเป. เบเบปเบงเบขเปเบฒเบ, เปเบซเปเปเบฎเบปเบฒเปเบเปเบเบธเบเบชเบปเบกเบเบฑเบเบเบญเบเปเบญเบฑเบเบเบฅเบดเปเบเบเบฑเบ Mail.ru Cloud เปเบเบฑเปเบเบเบฒเบเปเบซเบผเบเปเบเบทเปเบญเบซเบฒเบญเบฑเบเบเบฐเปเบเบกเบฑเบเบเบฒเบเบเบฑเบเบชเบทเปเบเบญเบเบฅเบฐเบเบปเบ. เบเปเบงเบเบเบฒเบเปเบเบทเปเบญเบกเบเปเปเบเบตเปเบเบต, เบฅเบนเบเบเปเบฒเบชเบฒเบกเบฒเบเปเบเบตเปเบกเบฎเบนเบเบซเบผเบฒเบเบฎเบนเบเบเปเปเบงเบดเบเบฒเบเบตเปเบชเปเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบ. เบเปเบฒโเบซเบฒเบโเบงเปเบฒโเบเปเบฒเบโเบเบฑเบโเบเบธเบโเบซเบผเบฑเบโเบเบฒเบโเบเบฒเบโเบเบฒเบงโเปเบซเบผเบโเปเบเปโเบฅเบฐโเบเบปเบโ UICollectionView
เบเปเบงเบเปเบเบทเปเบญเบซเบฒเบชเบทเปเบขเบนเปเปเบเปเบกเบเบเบญเบเบเบนเปเปเบเป, เบเปเบฒเบเบชเบฒเบกเบฒเบเบฅเบทเบกเบเปเบฝเบงเบเบฑเบ 60 fps เปเบฅเบฐเบเบฒเบเปเบฅเบทเปเบญเบเบเบฒเบเปเบเบฅเบฐเบซเบงเปเบฒเบเบเบฐเบเบงเบเบเบฒเบเบเบตเป. เปเบเบทเปเบญเบเปเบญเบเบเบฑเบเบเบฒเบเบเบฑเบเบเบธเบเบซเบเปเบฒเบเปเปเบฅเบทเปเบญเบเป, เบเปเบฒเบ เบเบณ เปเบเบฑเบเบเปเบญเบ เบเบณ เบเบฑเบเบญเบฑเบเบเบฒเบเบฒเบเบเปเบฝเบเปเบเบเบเปเปเบกเบนเบเปเบเบเบทเปเบเบเบฒเบ UICollectionViewDataSource
.
เบเปเบฒเบเบฒเบเบเปเปเบกเบนเบเบเปเปเบชเบฐเบซเบเบฑเบเบชเบฐเบซเบเบนเบ multiversion เปเบฅเบฐเบญเบฐเบเบธเบเบฒเบเปเบซเปเบเปเบฒเบเปเบฎเบฑเบเบงเบฝเบเบเบฝเบเปเบเปเบเบฑเบเบชเบฐเบเบฒเบเบฐเบเบฐเบเบธเบเบฑเบ, เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบ, เปเบเบทเปเบญเบชเปเบฒเบ snapshot เบเบปเบเปเบงเบฅเบฒเบเบญเบเบเปเปเบกเบนเบ, เบเปเบฒเบเบเปเบฒเปเบเบฑเบเบเปเบญเบเบเบฑเบเบฅเบญเบเบกเบฑเบเบเปเปเบงเปเบฒเบเบฐเปเบเบฑเบเบเบฒเบเปเบเบเบชเปเบฒเบเบเปเปเบกเบนเบเปเบเบซเบเปเบงเบเบเบงเบฒเบกเบเปเบฒเบซเบผเบทเบเบฒเบเบฐเบฅเบฒเบเบเบปเปเบงเบเบฒเบง. เบเบธเบเปเบงเบดเบเบตเบเบฒเบเปเบซเบผเบปเปเบฒเบเบตเปเปเบกเปเบเบฅเบฒเบเบฒเปเบเบเบซเบผเบฒเบ. เปเบเบเปเบฅเบฐเบเบตเบเบญเบเบเบฒเบเปเบเบฑเบเบฎเบฑเบเบชเบฒเปเบเบซเบเปเบงเบเบเบงเบฒเบกเบเปเบฒ, เบเบงเบเปเบฎเบปเบฒเปเบเปเบฎเบฑเบเบเปเบฒเปเบเปเบเปเบฒเบเบเบฑเบเปเบเบซเบเปเบงเบเบเบงเบฒเบกเบเปเบฒ, เบเบตเปเปเบเบตเบเบเบฒเบเบเบฒเบเปเบเบฑเบเบฎเบฑเบเบชเบฒเบงเบฑเบเบเบธเบเปเปเบชเปเบฒเบ, เปเบฅเบฐเปเบเปเบงเบฅเบฒ, เบเบตเปเบเปเบฝเบงเบเปเบญเบเบเบฑเบเบเบฒเบเบซเบฑเบเบเปเบฝเบ ORM เบเปเปเบฒเบเปเบญเบ. เบชเปเบฒเบฅเบฑเบเบเบฒเบเบฐเบฅเบฒเบเบเบปเปเบงเบเบฒเบง, เบเบตเปเปเบกเปเบเบเบงเบฒเบกเบชเบธเบเบเบตเปเบกเบตเบฅเบฒเบเบฒเปเบเบเบเบงเปเบฒ, เปเบฎเบฑเบเปเบซเปเบเบงเบฒเบกเบฎเบนเปเบชเบถเบเบเบฝเบเปเบเปเปเบเบเปเบฅเบฐเบเบตเบเบตเปเบเปเปเบชเปเบฒเบเบฑเบ.
เบเบฒเบเปเบเปเปเบ multiversion เบเบญเบ LMDB เปเบเปเปเบเบเบฑเบเบซเบฒเบเบฒเบเบฎเบฑเบเบชเบฒเปเบซเบผเปเบเบเปเปเบกเบนเบเบเบตเปเบกเบตเบเบงเบฒเบกเบซเบกเบฑเปเบเบเบปเบเปเบเบฅเบฑเบเบชเบฐเบเบฐเบเบตเปเบชเบฐเบซเบเปเบฒเบเบฒเบก. เบกเบฑเบเบเบฝเบเบเปเบเบตเปเบเบฐเปเบเบตเบเบเบฒเบเปเบฎเบฑเบเบเบธเบฅเบฐเบเปเบฒเปเบฅเบฐ voila - เบเบปเบเบเปเบงเบฒเบเบงเบเปเบฎเบปเบฒเบชเปเบฒเปเบฅเบฑเบเบกเบฑเบ, เบเบธเบเบเปเปเบกเบนเบเปเบกเปเบเบฎเบฑเบเบเบฐเบเบฑเบเบงเปเบฒเบเบฐเบเบทเบเปเบเปเปเบ. เปเบซเบเบเบปเบเบชเปเบฒเบฅเบฑเบเบเบงเบฒเบกเปเบงเบเบฒเบเบเบฑเบเบเบธเบเบเบญเบเบกเบฑเบเปเบเบเบฑเบเบเบธเบเบฑเบเบเบฑเบเบซเบกเบปเบเปเบกเปเบเบขเบนเปเปเบเบกเบทเบเบญเบเบเบฑเปเบเบเปเบฒเบชเบฐเปเบซเบเบต, เปเบเบเบเปเปเบกเบตเบเบฑเบเบเบฐเบเบฒเบเบญเบเบเบตเปเบชเปเบฒเบเบฑเบ.
เบเบปเบงเบเบฐเบเบดเบ
เบเบปเบงเบเบฐเบเบดเบเบชเบฐเบซเบเบญเบเบเบปเบเปเบเบชเปเบฒเบฅเบฑเบเบเบฒเบ iterating เปเบเบฑเบเบฅเบฐเบเบฝเบเปเบเปเบฅเบเบฐเบเบนเปเบเบตเปเบชเปเบฒเบเบฑเบเปเบเบเบเปเบฒเบ B-Tree traversal. เบเปเบฒเบเปเปเบกเบตเบเบงเบเบกเบฑเบ, เบกเบฑเบเบเปเปเปเบเบฑเบเปเบเบเปเปเปเบเปเบเบตเปเบเบฐเบชเปเบฒเบเปเบเบเบเปเบฒเบฅเบญเบเบเบฒเบเบฐเบฅเบฒเบเปเบเบเบฒเบเบเปเปเบกเบนเบเบขเปเบฒเบเบกเบตเบเบฐเบชเบดเบเบเบดเบเบฒเบ, เปเบเบดเปเบเบเบงเบเปเบฎเบปเบฒเบซเบฑเบเปเบเบซเบฒ.
4.2. เบเบฒเบเบชเปเบฒเบเปเบเบเบเปเบฒเบฅเบญเบเบเบฒเบเบฐเบฅเบฒเบ
เบเบธเบเบชเบปเบกเบเบฑเบเบเบญเบเบเปเบฒเบชเบฑเปเบเบเบตเปเบชเปเบฒเบเบฑเบเบญเบฐเบเบธเบเบฒเบเปเบซเปเบเปเบฒเบเบชเปเบฒเบ abstraction เบฅเบฐเบเบฑเบเบชเบนเบเปเบเบฑเปเบเบเบฒเบเบฐเบฅเบฒเบเปเบเบดเบเบเบญเบ abstractions เบเบทเปเบเบเบฒเบ. เปเบซเปเบเบดเบเบฒเบฅเบฐเบเบฒเบเบฐเบเบงเบเบเบฒเบเบเบตเปเปเบเบเปเบเปเบเบปเบงเบขเปเบฒเบเบเบญเบเบเบฒเบเบฐเบฅเบฒเบเบเบปเปเบเบเปเบเบญเบเบฅเบนเบเบเปเบฒเบเบฑเบ, เปเบเบดเปเบเปเบเบฑเบเบเปเปเบกเบนเบเบเปเบฝเบงเบเบฑเบเปเบเบฅเปเปเบฅเบฐเปเบเบเปเบเบตเบเบฑเบเบซเบกเบปเบเบเบญเบเบเบนเปเปเบเป.
เบเบฒเบเบฐเบฅเบฒเบเบเบฒเบเบฐเบฅเบฒเบ
เบซเบเบถเปเบเปเบเบชเบฐเบเบฒเบเบฐเบเบฒเบเบเบปเปเบงเปเบเบเบตเปเปเบเบเบชเปเบฒเบเบเบฒเบเบฐเบฅเบฒเบเบเบตเปเบกเบตเบเบปเปเบเปเบกเปเปเบเปเบเบตเบเบงเบเบเบทเบเบเบฑเบเปเบเปเบเปเบกเปเบเบเบฒเบเปเบฅเบทเบญเบเบญเบปเบเบเบฐเบเบญเบเบเบฑเบเบซเบกเบปเบเบเบตเปเบขเบนเปเปเบเปเบเปเบฅเบเบฐเบเปเบฅเบตเบเบตเปเบเปเบฒเบเบปเบ. เบฎเบนเบเปเบเบเบญเบปเบเบเบฒเบเบเบฑเบเบเบฑเปเบเบเปเปเบกเบนเบเบเบตเปเบเบตเบชเปเบฒเบฅเบฑเบเบเบฒเบเบชเบญเบเบเบฒเบกเบเบตเปเบกเบตเบเบฐเบชเบดเบเบเบดเบเบฒเบเบเบญเบเบเบฐเปเบเบเบเบตเปเปเบกเปเบ.
เบฎเบนเบเบเบฒเบเบเปเบฒเบเบฅเบธเปเบกเบเบตเปเบชเบฐเปเบเบเปเบซเปเปเบซเบฑเบเบงเบดเบเบตเบเบฒเบ, เปเบเบเบญเบตเบเปเบชเปเบงเบฝเบเบเบฒเบเบเบตเปเบกเบตเบขเบนเปเปเบเบกเบท, เบเบฒเบเปเบเบฑเบเบเบปเบงเปเบเบเบเบญเบเบเบฐเปเบเปเบเบฎเบนเบเปเบเบเบเบญเบ byte array เบญเบฒเบเบเบฐเบเปเบฒเบเบเบท. bytes เบเบตเปเบกเบตเบเบปเบงเบฅเบฐเบเบธเบเบญเบเปเบเปเบฅเบเบฐเบเปเบฅเบตเปเบกเป (เบชเบตเปเบเบ) เปเบกเปเบเบเบทเบเบเบฑเบเปเบชเปเบเปเบญเบ, เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบเปเบงเบเบเบฐเปเบเบ (เบชเบตเบเบฝเบง) เปเบฅเบฐเปเบเบซเบฒเบเบเบตเปเบกเบตเบเบทเป (เบชเบตเบเปเบฒ). เบงเบดโเบเบตโเบเบฒเบโเบเบตเปโเบเปเบญเบโเบเบฒเบโ. เบเบต traversing เบเบฒเบกเบฅเปเบฒเบเบฑเบเบเบตเปเบกเบตเบเปเบฒเบเปเบฒเบซเบเปเบฒเบชเบตเปเบเบเบเบฝเบงเบเบฑเบเปเบซเปเบเบงเบเปเบฎเบปเบฒเบกเบนเบเบเปเบฒเบเบตเปเบเปเบฝเบงเบเปเบญเบเบเบญเบเบเบงเบเปเบเบปเบฒเปเบเบเปเบฒเบชเบฑเปเบเบเบตเปเบเบงเบเปเบเบปเบฒเบเบงเบเบเบฐเบเบทเบเบชเบฐเปเบเบเบขเบนเปเปเบเบชเปเบงเบเบเบดเบเบเปเปเบเบนเปเปเบเป (เบเบฒเบเบเปเบฒเบเบเบงเบฒ), เปเบเบเบเปเปเบกเบตเบเบฒเบเบฎเบฝเบเบฎเปเบญเบเปเบซเปเบกเบตเบเบฒเบเบเบฐเบกเบงเบเบเบปเบเปเบเบตเปเบกเปเบเบตเบก.
Serializing Keys เปเบฅเบฐเบเปเบฒ
เบงเบดเบเบตเบเบฒเบเบเปเบฒเบเบงเบเบซเบผเบฒเบเบชเปเบฒเบฅเบฑเบเบเบฒเบ serializing เบงเบฑเบเบเบธเปเบเปเบเบทเบ invented เปเบเปเบฅเบ. เปเบเบทเปเบญเบเบเบฒเบเบเบงเบเปเบฎเบปเบฒเบเปเปเบกเบตเบเบงเบฒเบกเบเปเบญเบเบเบฒเบเบญเบทเปเบเบเบญเบเบเบฒเบเบเบงเบฒเบกเปเบง, เบเบงเบเปเบฎเบปเบฒเปเบฅเบทเบญเบเปเบงเบเบตเปเบชเบธเบเบเบตเปเปเบเบฑเบเปเบเปเบเปเบชเปเบฒเบฅเบฑเบเบเบปเบงเปเบฎเบปเบฒเปเบญเบ - เบเบฒเบเบเบดเปเบกเบเบตเปเปเบซเบเบทเปเบญเบเบญเบเบซเบเปเบงเบเบเบงเบฒเบกเบเปเบฒเบเบตเปเบเบญเบเบเบญเบเปเบเบเบเบปเบงเบขเปเบฒเบเบเบญเบเปเบเบเบชเปเบฒเบเบเบฒเบชเบฒ C. เบเบฑเปเบเบเบฑเปเบ, เบเบธเบเปเบเบเบญเบเบญเบปเบเบเบฐเบเบญเบเปเบเปเบฅเบเบฐเบเปเบฅเบตเบชเบฒเบกเบฒเบเบเบทเบเบชเปเบฒเบเปเบเบเบเปเบฒเบฅเบญเบเบเปเบงเบเปเบเบเบชเปเบฒเบเบเปเปเปเบเบเบตเป. NodeKey
.
typedef struct NodeKey {โ
EntityId parentId;โ
uint8_t type;โ
uint8_t nameBuffer[256];โ
} NodeKey;
เบเบฑเบโเบเบถเบ NodeKey
เปเบเบเบฒเบเปเบเบฑเบเบฎเบฑเบเบชเบฒเบเบตเปเบเปเบฒเปเบเบฑเบเปเบเบงเบฑเบเบเบธ MDB_val
เบงเบฒเบเบเบปเบงเบเบตเปเบเปเปเบกเบนเบเปเบเบซเบฒเบเบตเปเบขเบนเปเบเบญเบเบเบฒเบเปเบฅเบตเปเบกเบเบปเปเบเบเบญเบเปเบเบเบชเปเบฒเบ, เปเบฅเบฐเบเบดเบเปเบฅเปเบเบฐเบซเบเบฒเบเบเบญเบเบเบงเบเปเบเบปเบฒเบเปเบงเบเบซเบเปเบฒเบเบตเป sizeof
.
MDB_val serialize(NodeKey * const key) {
return MDB_val {
.mv_size = sizeof(NodeKey),
.mv_data = (void *)key
};
}
เปเบเบเบปเบเบเปเบฒเบญเบดเบเบเปเบฝเบงเบเบฑเบเปเบเบทเปเบญเบเปเบเบเบฒเบเบเบฑเบเปเบฅเบทเบญเบเบเบฒเบเบเปเปเบกเบนเบ, เบเปเบฒเบเบฐเปเบเบปเปเบฒเปเบเปเบเปเบฒเบงเปเบเบดเบเบเบฒเบเบซเบผเบธเบเบเปเบญเบเบเบฒเบเบเบฑเบเบชเบฑเบเปเบเบเปเบเบทเปเบญเบเปเบซเบงเบเบฒเบเปเบเบเบฒเบเบเปเบฒเปเบเบตเบเบเบฒเบ CRUD เปเบเบฑเบเบเบฑเบเปเบเบเบฒเบเบเบฑเบเปเบฅเบทเบญเบเบเบตเปเบชเปเบฒเบเบฑเบ. เบฅเบฐเบซเบฑเบเบเบฑเบเบเบฑเบ serialize
เบชเบฐเปเบเบเปเบซเปเปเบซเบฑเบเบงเบดเบเบตเบเบฒเบเปเบเบเปเบฅเบฐเบเบตเบเบญเบ LMDB เบเบงเบเปเบเบปเบฒเบชเบฒเบกเบฒเบเบซเบผเบตเบเปเบงเบฑเปเบเปเบเปเบขเปเบฒเบเบชเบปเบกเบเบนเบเปเบกเบทเปเบญเปเบชเปเบเบฑเบเบเบถเบเปเบซเบกเปเปเบเบปเปเบฒเปเบเปเบเบเบฒเบเบเปเปเบกเบนเบ. array byte เบเบฒเปเบเบปเปเบฒเบเบฒเบเปเบเบตเบเปเบงเบตเบเบทเบเบเปเบฝเบเปเบเบฑเบเปเบเบเบชเปเบฒเบ stack เบเปเบฒเบญเบดเบ, เปเบฅเบฐเบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบเบงเบเบกเบฑเบเบเบฐเบเบทเบ dumped เปเบเบปเปเบฒเปเบเปเบเบเปเบญเบเปเบเบฑเบเบกเปเบฝเบ. เบเบดเบเบฒเบฅเบฐเบเบฒเบงเปเบฒเบเปเปเบกเบตเบเบฒเบเบเบฑเบเบชเบฑเบเปเบเบเปเบเบทเปเบญเบเปเบซเบงเบเบฒเบเปเบ LMDB, เบเปเบฒเบเบชเบฒเบกเบฒเบเปเบเปเบฎเบฑเบเบชเบฐเบเบฒเบเบฐเบเบฒเบเบเบตเปเบเบตเปเบฅเบตเบเปเบเบเบกเบฒเบเบเบฐเบเบฒเบ iOS - เปเบเปเบเบฝเบเปเบเป stack memory เปเบเบทเปเบญเปเบฎเบฑเบเบงเบฝเบเบเบฑเบเบเปเปเบกเบนเบเบเบฒเบกเปเบชเบฑเปเบเบเบฒเบเบเบฑเบเบซเบกเบปเบเบเบฒเบเปเบเบทเบญเบเปเบฒเบเปเบเบซเบฒเปเบเปเบ!
เบเบฒเบเบชเบฑเปเบเบเบฐเปเบเบเปเบงเบเบเบปเบงเบเบฝเบเบเบฝเบเบเบนเป
เบเบฒเบเบเบปเบงเบเบฑเบเบเปเบฒเบชเบฑเปเบเบเบตเปเบชเปเบฒเบเบฑเบเปเบกเปเบเบเบทเบเบเปเบฒเบเบปเบเปเบเบเบซเบเปเบฒเบเบตเปเบเบดเปเบชเบเบเบตเปเปเบญเบตเปเบเบงเปเบฒเบเบปเบงเบเบฝเบเบเบฝเบ. เปเบเบทเปเบญเบเบเบฒเบเปเบเบทเปเบญเบเบเบฑเบเบเปเปเบฎเบนเปเบซเบเบฑเบเบเปเบฝเบงเบเบฑเบเบเบงเบฒเบกเบซเบกเบฒเบเบเบญเบ bytes เบเบตเปเปเบเบปเบฒเปเบเบปเปเบฒเบเบฑเบเบเบธ, เบเบปเบงเบเบฝเบเบเบฝเบเปเบเบเบญเบเบเบปเปเบเบเปเปเบกเบตเบเบฒเบเปเบฅเบทเบญเบเบเบญเบ เปเปเบทเบญ เบเบฒเบเบเบฒเบเบเบฑเบเบฅเบฝเบเบเบฐเปเบเปเบ เบเบณ เบชเบฑเปเบ lexicographic, เบญเบตเบเปเบชเปเบเบฒเบเบเบฝเบเบเบฝเบ byte-by-byte. เบเบฒเบโเบเปเบฒโเปเบเปโเบกเบฑเบโเปเบโเบเบฒเบโเบเบฑเบโเบเบฑเปเบโเปเบเบโเบชเปเบฒเบโเปเบกเปเบโเบเปเบฒเบโเบเบทโเบเบฑเบโเบเบฒเบโเปเบเบโเบซเบเบงเบโเบเปเบงเบโเบเบงเบฒเบโเบเบฑเบโ. เบขเปเบฒเบเปเบเบเปเบเบฒเบก, เปเบเบเปเบฅเบฐเบเบตเบเปเบฒเบเบเบฒเบ, เบเปเบฒเบเบฐเปเบเบปเปเบฒเปเบซเบฑเบเบงเปเบฒเบงเบดเบเบตเบเบฒเบเบเบตเปเบเบญเบกเบฎเบฑเบ. เบเบฒเบเปเบฅเบทเบญเบเปเบกเปเบเปเบเปเบญเบฐเบเบดเบเบฒเบเบเปเบฒเบเบฅเบธเปเบกเบเบตเป, เปเบเปเปเบเบเบตเปเบเบตเปเบเปเบฒเบเบฐเปเบเบปเปเบฒเบเบฐเบชเบฑเบเปเบเบเปเบซเบฑเบเบชเบญเบเบชเบฒเบก rakes เบเบฐเปเบเบเบเบฐเบเบฒเบเปเบเบเบฒเบกเปเบชเบฑเปเบเบเบฒเบเบเบตเป.
เบชเบดเปเบเบเปเบฒเบญเบดเบเบเบตเปเบเปเบญเบเบเบทเปเปเบกเปเบเบเบฒเบเปเบเบฑเบเบเบปเบงเปเบเบเบเบญเบเบซเบเปเบงเบเบเบงเบฒเบกเบเปเบฒเบเบญเบเบเบฐเปเบเบเบเปเปเบกเบนเบเปเบเบทเปเบญเบเบเบปเปเบ. เบเบฑเปเบเบเบฑเปเบ, เปเบเบญเบธเบเบฐเบเบญเบ Apple เบเบฑเบเบซเบกเบปเบ, เบเบปเบงเปเบ integer เบเบทเบเปเบเบฑเบเปเบงเปเปเบเบฎเบนเบเปเบเบ
// value (hex dump)
000 (0000)
256 (0001)
001 (0100)
257 (0101)
...
254 (fe00)
510 (fe01)
255 (ff00)
511 (ff01)
เปเบเบทเปเบญเปเบเปเปเบเบเบฑเบเบซเบฒเบเบตเป, เบเปเบฒเบเบงเบเปเบเบฑเบกเบเปเบญเบเบเบทเบเปเบเบฑเบเปเบงเปเปเบเบเบตเปเบเบฎเบนเบเปเบเบเบเบตเปเปเบซเบกเบฒเบฐเบชเบปเบกเบเบฑเบเบเบปเบงเบเบฝเบเบเบฝเบ byte-byte. เบซเบเปเบฒเบเบตเปเบเบฒเบเบเบญเบเบเบปเบงเบเบฐเบเปเบงเบเปเบซเปเบเปเบฒเบเบเบฐเบเบดเบเบฑเบเบเบฒเบเบซเบฑเบเบเปเบฝเบเบเบตเปเบเปเบฒเปเบเบฑเบ hton*
(เปเบเบโเบชเบฐโเปเบเบฒเบฐ htons
เบชเปเบฒเบฅเบฑเบเบเบปเบงเปเบฅเบ double-byte เบเบฒเบเบเบปเบงเบขเปเบฒเบ).
เบฎเบนเบเปเบเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเปเบเบฑเบเบเบปเบงเปเบเบเบเบญเบ strings เปเบเบเบฒเบเบเบฝเบเปเบเบฅเปเบเบฅเบก, เบเบฒเบกเบเบตเปเบเปเบฒเบเบฎเบนเป, เบเบฑเบเบซเบกเบปเบ
เบชเบดเปเบเบเบตเบชเบญเบเบเบตเปเบเปเบญเบเบขเบนเปเปเบเปเบเปเบกเปเบ packed
.
เบเบฒเบเบชเบฑเปเบเบเบฐเปเบเบเปเบงเบเบเบปเบงเบเบฝเบเบเบฝเบเบเบฒเบเบเบญเบ
เปเบซเบเบเบปเบเบเบฒเบเบเบฝเบเบเบฝเบเบซเบผเบฑเบเบญเบฒเบเบเบฐเบชเบฑเบเบชเบปเบเปเบเบตเบเปเบเบชเบณเบฅเบฑเบเบเบปเบงเบเบฝเบเบเบฝเบเบเบนเป. เบซเบเบถเปเบเปเบเบซเบผเบฒเบเปเบซเบเบเบปเบเปเบกเปเบเบเบฒเบเบเบฐเบเบปเบเบเบปเบงเบเบญเบเบชเบฒเบเบฒเบเปเบฒเบเบงเบดเบเบฒเบเบฒเบเบเบฒเบเปเบเปเบเบเบชเปเบฒเบ. เบเปเบฒเบเบฐเปเบเบปเปเบฒเบเบฐเบชเบฐเปเบเบเปเบซเปเปเบซเบฑเบเปเบเบดเบเบเบฒเบเบเบฐเบเบปเบเบเบปเบงเบเบญเบเปเบเบปเบฒเปเบเบปเปเบฒเปเบเบเปเบเปเบเบปเบงเบขเปเบฒเบเบเบญเบเบเบตเบชเปเบฒเบฅเบฑเบเบญเบปเบเบเบฐเบเบญเบเบเบญเบเปเบเปเบฅเบเบฐเบเปเบฅเบตเบเบตเปเบเบธเปเบเปเบเบตเบเบเบฑเบเบเบงเบเปเบฎเบปเบฒ.
typedef struct NodeKey {โ
EntityId parentId;โ
uint8_t type;โ
uint8_t nameBuffer[256];โ
} NodeKey;
เปเบเบดเบเบงเปเบฒเบเบฐเบกเบตเบเบงเบฒเบกเบเปเบฒเบเบเบฒเบเบเบญเบเบกเบฑเบ, เปเบเบเปเบฅเบฐเบเบตเบซเบผเบฒเบเบเบตเปเบชเบธเบ, เบกเบฑเบเบเปเบฅเบดเปเบเบเบเบงเบฒเบกเบเบปเบเบเปเบฒเบซเบผเบฒเบเปเบเบตเบเปเบ. buffer เบชเปเบฒเบฅเบฑเบเบเบทเปเปเบเปเปเบงเบฅเบฒเปเบเบดเบ 256 bytes, เปเบเบดเบเปเบกเปเบเบงเปเบฒเปเบเบเบชเบฐเปเบฅเปเบเปเบเบฅเปเปเบฅเบฐเบเบทเปเปเบเบเปเบเบตเบเปเปเบเปเบญเบเบเบฐเปเบเบตเบ 20-30 เบเบปเบงเบญเบฑเบเบชเบญเบ.
เบซเบเบถเปเบเปเบเปเบเบฑเบเบเบดเบเบกเบฒเบเบเบฐเบเบฒเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเปเบเบตเปเบกเบเบฐเบชเบดเบเบเบดเบเบฒเบเบเบฐเบซเบเบฒเบเบเบญเบเบเบฑเบเบเบถเบเปเบกเปเบเปเบเบทเปเบญ "เบเบฑเบ" เบกเบฑเบเบเบฑเบเบเบฐเบซเบเบฒเบเบเบปเบงเบเบดเบ. เปเบเบเปเบเบทเปเบญเปเบเปเปเบฅเปเบงเบเบญเบเบกเบฑเบเปเบกเปเบเปเบเบทเปเบญเปเบเบเบญเบเบเปเบญเบเบเปเปเบกเบนเบเบเบงเบฒเบกเบเบฒเบงเบเบปเบงเปเบเบเบฑเบเบซเบกเบปเบเบเบทเบเปเบเบฑเบเปเบงเปเปเบ buffer เปเบเบเบญเบเบเปเบฒเบเบเบญเบเปเบเบเบชเปเบฒเบ, เปเบฅเบฐเบเบงเบฒเบกเบเบฒเบงเบเบญเบเบเบงเบเบกเบฑเบเบเบทเบเปเบเบฑเบเปเบงเปเปเบเบเบปเบงเปเบเปเบเบเบเปเบฒเบเบซเบฒเบ. NodeKey
เบเบทเบโเบซเบฑเบโเปเบเบฑเบโเบเบฑเปเบโเบเปเปโเปเบโเบเบตเปโ.
typedef struct NodeKey {โ
EntityId parentId;โ
uint8_t type;โ
uint8_t nameLength;โ
uint8_t nameBuffer[256];โ
} NodeKey;
เบเบญเบเบเบฒเบเบเบฑเปเบ, เปเบเปเบงเบฅเบฒเบเบตเป serializing, เบเบฐเบซเบเบฒเบเบเปเปเบกเบนเบเบเปเปเปเบเปเบฅเบฐเบเบธ sizeof
เปเบเบเบเบฐเบเบญเบเบเบฒเบเบเบฑเบเบซเบกเบปเบ, เปเบฅเบฐเบเบฐเบซเบเบฒเบเบเบญเบเบเบฒเบเบชเบฐเบซเบเบฒเบกเบเบฑเบเบซเบกเบปเบเปเบกเปเบเบเบงเบฒเบกเบเบฒเบงเบเบปเบเบเบตเปเบเบงเบเบเบฑเบเบเบฐเบซเบเบฒเบเบเบญเบเบเบฒเบเบชเปเบงเบเบเบตเปเปเบเปเบเบปเบงเบเบดเบเบเบญเบ buffer เปเบเป.
MDB_val serialize(NodeKey * const key) {
return MDB_val {
.mv_size = offsetof(NodeKey, nameBuffer) + key->nameLength,
.mv_data = (void *)key
};
}
เปเบเบฑเบเบเบปเบเบกเบฒเบเบฒเบเบเบฒเบ refactoring, เบเบงเบเปเบฎเบปเบฒเปเบเปเบฎเบฑเบเบเบฒเบเบเบฐเบซเบเบฑเบเบเบตเปเบชเปเบฒเบเบฑเบเปเบเบเบทเปเบเบเบตเป occupied เปเบเบเบเบฐเปเบ. เบขเปเบฒเบเปเบเบเปเบเบฒเบก, เปเบเบทเปเบญเบเบเบฒเบเบเบฒเบเบชเบฐเบซเบเบฒเบกเบเปเบฒเบเบงเบดเบเบฒเบเบฒเบ nameLength
, เบเบปเบงเบเบฝเบเบเบฝเบเบเบฒเบเบชเบญเบเบเปเปเปเปเบฒเบฐเบชเบปเบกเบเบฑเบเบเบฒเบเบเบฝเบเบเบฝเบเบซเบผเบฑเบเบญเบตเบเบเปเปเปเบ. เบเปเบฒเบเบงเบเปเบฎเบปเบฒเบเปเปเบเปเบฝเบเปเบเบเบกเบฑเบเบเปเบงเบเบเบปเบงเปเบฎเบปเบฒเปเบญเบ, เบเบงเบฒเบกเบเบฒเบงเบเบญเบเบเบทเปเบเบฐเปเบเบฑเบเบเบฑเบเปเบเบเบนเบฅเบดเบกเบฐเบชเบดเบเบเบตเปเบชเบนเบเบเบงเปเบฒเปเบเบเบฒเบเบเบฑเบเบฅเบฝเบเบเบญเบเบเบทเปเบเบญเบเบกเบฑเบเปเบญเบ.
LMDB เบญเบฐเบเบธเบเบฒเบเปเบซเปเปเบเปเบฅเบฐเบเบฒเบเบเปเปเบกเบนเบเบกเบตเบซเบเปเบฒเบเบตเปเบเบฝเบเบเบฝเบเบเบตเปเบชเปเบฒเบเบฑเบเบเบญเบเบเบปเบเปเบญเบ. เบเบตเปเปเบกเปเบเปเบฎเบฑเบเปเบเปเปเบเบเปเบเปเบเบฑเบเบเบฑเบ mdb_set_compare
เบขเปเบฒเบเปเบเบฑเปเบกเบเบงเบเบเปเบญเบเบเบตเปเบเบฐเปเบเบตเบ. เบชเปเบฒเบฅเบฑเบเปเบซเบเบเบปเบเบเบตเปเบเบฑเบเปเบเบ, เบกเบฑเบเบเปเปเบชเบฒเบกเบฒเบเบเปเบฝเบเปเบเบเปเบเปเบเบฐเบซเบผเบญเบเบเบตเบงเบดเบเบเบญเบเบเบฒเบเบเปเปเบกเบนเบ. เบเบปเบงเบเบฝเบเบเบฝเบเปเบเปเบฎเบฑเบเบชเบญเบเบเบฐเปเบเปเบเบฎเบนเบเปเบเบเบเบฒเบเบชเบญเบเปเบเบฑเบเบเบฒเบเบเปเบญเบเบเปเปเบกเบนเบ, เปเบฅเบฐเบขเบนเปเบเบตเปเบเบปเบเบเบฐเบฅเบดเบเบกเบฑเบเบเบฐเบชเบปเปเบเบเบปเบเบเบฒเบเบเบฝเบเบเบฝเบ: เปเปเบญเบเบเบงเปเบฒ (-1), เบซเบผเบฒเบเบเบงเปเบฒ (1) เบซเบผเบทเปเบเบปเปเบฒเบเบฑเบ (0). Pseudocode เบชเปเบฒเบฅเบฑเบ NodeKey
เปเบเบดเปเบเบเบทเบงเปเบฒ.
int compare(MDB_val * const a, MDB_val * const b) {โ
NodeKey * const aKey = (NodeKey * const)a->mv_data;โ
NodeKey * const bKey = (NodeKey * const)b->mv_data;โ
return // ...
}โ
เบเบฒเบเปเบเบเบตเปเบเบฐเปเบเบเบฑเบเปเบปเบเปเบเบเบฒเบเบเปเปเบกเบนเบเบกเบตเบเบฐเปเบเบเบเบฝเบงเบเบฑเบ, เปเบเบเบเปเปเบกเบตเปเบเบทเปเบญเบเปเบ, เบเบฒเบเบชเบปเปเบเบชเบฑเบเบเบฒเบเปเบเบเปเบเบญเบเบเบงเบเบกเบฑเบเปเบซเปเบเบฑเบเบเบฐเปเบเบเบเบญเบเปเบเบเบชเปเบฒเบเบซเบผเบฑเบเบเบญเบเปเบญเบฑเบเบเบฅเบดเปเบเบเบฑเบเปเบกเปเบเบเบทเบเบเปเบญเบเบเบฒเบกเบเบปเบเปเบฒเบ. เบกเบต nuance เบซเบเบถเปเบเบขเบนเปเบเบตเปเบเบตเป, เปเบเปเบกเบฑเบเบเบฐเบเบทเบเบเบถเบเบชเบฒเบซเบฒเบฅเบทเบเปเบฒเบเบฅเบธเปเบกเบเบตเปเบขเบนเปเปเบเบชเปเบงเบเบเปเบญเบ "Reading Records".
Serializing เบเปเบฒ
LMDB เปเบฎเบฑเบเบงเบฝเบเบขเปเบฒเบเปเบเบฑเปเบกเบเบงเบเบเบฑเบเบเบฐเปเบเบเบญเบเบเบฑเบเบเบถเบเบเบตเปเปเบเบฑเบเปเบงเป. เบเบฒเบเบเบฝเบเบเบฝเบเบเบญเบเบเบงเบเปเบเบปเบฒเบเบฑเบเบเบฑเบเปเบฅเบฐเบเบฑเบเปเบกเปเบเปเบเบตเบเบเบทเปเบเปเบเบเบญเบเบเบญเบเบเบฒเบเบเปเบฒเปเบเบตเบเบเบฒเบเบเบตเปเบเปเบฒเปเบเป, เปเบฅเบฐเบเบฒเบเบเบฐเบเบดเบเบฑเบเบเบญเบเบเบฒเบเปเบเปเปเบเบเบฑเบเบซเบกเบปเบเปเบกเปเบเบเบถเปเบเบเบฑเบเบเบงเบฒเบกเปเบงเบเบญเบเบเบนเปเบเบฝเบเบเบฝเบ. เปเบเปเบฅเบเบเบตเปเปเบซเบกเบฒเบฐเบชเบปเบก, เบเบปเบงเบเบฝเบเบเบฝเบเบเบนเปเปเบฅเบตเปเบกเบเบปเปเบเบเบงเบเบเบฐเบเบฝเบเบเปเบเบตเปเบเบฐเบเบฝเบเบเบฝเบเบเบฐเปเบ, เปเบเปเบเปเบฒเบเปเบฒเบเบเปเบญเบเปเบเปเบเบปเบงเบเบญเบเบเปเบฒเบเปเบญเบ, เบเบฑเปเบเบเบญเบเบชเปเบฒเบฅเบฑเบเบเบฒเบ deserializing เบเบฐเปเบเปเบเบกเบฑเบเบเบงเบเบเบฐเปเบงเปเบเบปเปเบฒเบเบตเปเบเบฐเปเบงเปเบเป.
เบเบฒเบเบเปเปเบกเบนเบเบเปเปเบกเบตเบเบงเบฒเบกเบชเบปเบเปเบเปเบเบเบชเบฐเปเบเบฒเบฐเปเบเบชเปเบงเบเบกเบนเบเบเปเบฒเบเบญเบเบเบฑเบเบเบถเบ (เบกเบนเบเบเปเบฒ). เบเบฒเบเบเปเบฝเบเบเบญเบเบกเบฑเบเบเบฒเบเบเบฒเบเปเบเบฑเบเบเบปเบงเปเบเบ byte เปเบเบฑเบเบงเบฑเบเบเบธเปเบเบตเบเบเบถเปเบเบเบฝเบเปเบเปเปเบเปเบงเบฅเบฒเบเบตเปเบกเบฑเบเบเปเบญเบเบเบฒเบเปเบฅเปเบงเปเบเบเบฅเบฐเบซเบฑเบเบเปเบฒเบฎเปเบญเบเบชเบฐเบซเบกเบฑเบ, เบเบปเบงเบขเปเบฒเบ, เปเบเบทเปเบญเบชเบฐเปเบเบเบกเบฑเบเปเบเบซเบเปเบฒเบเป. เปเบเบทเปเบญเบเบเบฒเบเบงเปเบฒเบกเบฑเบเปเบเบตเบเบเบถเปเบเบเปเบญเบเบเปเบฒเบเบเปเปเบเปเบญเบ, เบเบงเบฒเบกเบเปเบญเบเบเบฒเบเบเบงเบฒเบกเปเบงเบชเปเบฒเบฅเบฑเบเบเบฑเปเบเบเบญเบเบเบตเปเปเบกเปเบเบเปเปเบชเปเบฒเบเบฑเบ, เปเบฅเบฐเปเบเบเบฒเบเบเบฐเบเบดเบเบฑเบเบเบญเบเบกเบฑเบ, เบเบงเบเปเบฎเบปเบฒเบกเบตเบญเบดเบเบชเบฐเบซเบผเบฐเบซเบผเบฒเบเบเบตเปเบเบฐเบชเบธเบกเปเบชเปเบเบงเบฒเบกเบชเบฐเบเบงเบเบชเบฐเบเบฒเบ. เบชเปเบฒเบฅเบฑเบเบเบฒเบเบเบปเบเบเบปเบงเบขเปเบฒเบ, เปเบเบทเปเบญ serialize metadata เบเปเบฝเบงเบเบฑเบเปเบเบฅเปเบเบตเปเบเบฑเบเบเปเปเปเบเปเบเบฒเบงเปเบซเบผเบ, เบเบงเบเปเบฎเบปเบฒเปเบเป. NSKeyedArchiver
.
NSData *data = serialize(object);โ
MDB_val value = {โ
.mv_size = data.length,โ
.mv_data = (void *)data.bytesโ
};
เบขเปเบฒเบเปเบเบเปเบเบฒเบก, เบกเบตเบเบฒเบเบเบฑเปเบเบเบตเปเบเบฒเบเบเบฐเบเบดเบเบฑเบเบเบฑเบเบชเปเบฒเบเบฑเบ. เบเบปเบงเบขเปเบฒเบ, เปเบกเบทเปเบญเบเบฑเบเบเบถเบ metaformation เบเปเบฝเบงเบเบฑเบเปเบเบเบชเปเบฒเบเปเบเบฅเปเบเบญเบเปเบกเบเบเบนเปเปเบเป, เบเบงเบเปเบฎเบปเบฒเปเบเปเบเบฒเบเบเบดเปเบกเบซเบเปเบงเบเบเบงเบฒเบกเบเปเบฒเบเบฝเบงเบเบฑเบเบเบญเบเบงเบฑเบเบเบธ. เบเบธเบโเปเบเบฑเปเบโเบเบญเบโเบงเบฝเบโเบเบฒเบโเบเบญเบโเบเบฒเบโเบชเปเบฒเบโเบเบฒเบโเปเบเบฑเบโเบเบปเบงโเปเบเบ serialized เบเบญเบโเบเบงเบโเปเบเบปเบฒโเปเบกเปเบโเบเบงเบฒเบกโเบเบดเบโเบเบตเปโเบงเปเบฒโเบญเบปเบโเบเบฐโเบเบญเบโเบเบญเบโเบฅเบฐโเบเบปเบโเปเบเปโเบเบทเบโเบชเปเบฒเบโเปเบเบโเบเปเบฒโเบฅเบญเบโเปเบเบโเบฅเปเบฒโเบเบฑเบโเบเบฑเปเบโเบฎเบฝเบโ.
เปเบเบทเปเบญเบเบฐเบเบดเบเบฑเบเบกเบฑเบเปเบเบเบฒเบชเบฒ C, เบเบปเบเปเบเบเบชเบฐเปเบเบฒเบฐเบเบญเบ heirs เปเบกเปเบเบเบทเบเบเบฑเบเปเบชเปเปเบเปเบเบเบชเปเบฒเบเปเบเบเบเปเบฒเบเบซเบฒเบ, เปเบฅเบฐเบเบฒเบเปเบเบทเปเบญเบกเบเปเปเบเบญเบเปเบเบปเบฒเปเบเบปเปเบฒเบเบฑเบเบเบทเปเบเบเบฒเบเบซเบเบถเปเบเปเบกเปเบเบเบทเบเบเปเบฒเบเบปเบเปเบเบเบเปเบฒเบเบเบฒเบเบชเบฐเบซเบเบฒเบกเบเบญเบเบชเบฐเบซเบฐเบเบฑเบเบเบฐเปเบเบ. เปเบเบทเปเบญเปเบเบเบปเบงเบเบดเบเบเบญเบเบชเบฐเบซเบฐเบเบฑเบเปเบกเปเบเปเบเปเบฅเบฐเบเบธเปเบงเปเปเบเบเบเปเบฒเบเบเบฐเปเบเบเบเบธเบเบฅเบฑเบเบชเบฐเบเบฐเบเปเบฒเบเบงเบดเบเบฒเบเบฒเบ.
typedef struct NodeValue {โ
EntityId localId;โ
EntityType type;โ
union {โ
FileInfo file;โ
DirectoryInfo directory;โ
} info;โ
uint8_t nameLength;โ
uint8_t nameBuffer[256];โ
} NodeValue;โ
เปเบเบตเปเบกโเปเบฅเบฐโเบเบฑเบโเบเบธเบโเบเบฒเบโเบเบฑเบโเบเบถเบโ
เบฅเบฐเบซเบฑเบ serialized เปเบฅเบฐเบกเบนเบเบเปเบฒเบชเบฒเบกเบฒเบเบเบทเบเปเบเบตเปเบกเปเบชเปเบฎเปเบฒเบ. เปเบเบทเปเบญเปเบฎเบฑเบเบชเบดเปเบเบเบตเป, เปเบเปเบซเบเปเบฒเบเบตเป mdb_put
.
// key ะธ value ะธะผะตัั ัะธะฟ MDB_valโ
mdb_put(..., &key, &value, MDB_NOOVERWRITE);
เปเบเบเบฑเปเบเบเบญเบเบเบฒเบเบเบฑเปเบเบเปเบฒ, เบเบฒเบเปเบเบฑเบเบฎเบฑเบเบชเบฒเบชเบฒเบกเบฒเบเบเบทเบเบญเบฐเบเบธเบเบฒเบเบซเบผเบทเบซเปเบฒเบกเบเปเปเปเบซเปเปเบเบฑเบเบฎเบฑเบเบชเบฒเบเบฑเบเบเบถเบเบซเบผเบฒเบเบญเบฑเบเบเปเบงเบเบฅเบฐเบซเบฑเบเบเบฝเบงเบเบฑเบ. เบเปเบฒเบเบฒเบเบเปเปเบฒเบเปเบญเบเบเบญเบเบเบฐเปเบเบเบทเบเบซเปเบฒเบก, เปเบกเบทเปเบญเปเบชเปเบเบฑเบเบเบถเบ, เบเปเบฒเบเบชเบฒเบกเบฒเบเบเปเบฒเบเบปเบเบงเปเบฒเบเบฒเบเบญเบฑเบเปเบเบเบเบฑเบเบเบถเบเบเบตเปเบกเบตเบขเบนเปเปเบฅเปเบงเปเบกเปเบเบญเบฐเบเบธเบเบฒเบเบซเบผเบทเบเปเป. เบเปเบฒเบซเบฒเบเบงเปเบฒ fraying เบชเบฒเบกเบฒเบเปเบเบตเบเบเบถเปเบเบเบฝเบเปเบเปเปเบเบฑเบเบเบปเบเบกเบฒเบเบฒเบเบเบงเบฒเบกเบเบดเบเบเบฒเบเบเบญเบเบฅเบฐเบซเบฑเบ, เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบเปเบฒเบเบชเบฒเบกเบฒเบเบเปเบญเบเบเบฑเบเบเบปเบงเบเปเบฒเบเปเบญเบเบเบฒเบเบกเบฑเบเปเบเบเบเบฒเบเบฅเบฐเบเบธเบเบธเบ. NOOVERWRITE
เบเบตเปเบขเบนเป
เบเบฒเบเบญเปเบฒเบเบฅเบฒเบเบเบฒเบ
เปเบเบทเปเบญเบญเปเบฒเบเบเบฑเบเบเบถเบเปเบ LMDB, เปเบเปเบเบฑเบเบเบฑเบ mdb_get
. เบเปเบฒเบเบนเปเบเบต-เบเปเบฒเบเบทเบเบชเบฐเปเบเบเปเบเบเปเบเบเบชเปเบฒเบเบเบตเปเบเบทเบเบเบดเปเบกเปเบงเปเบเปเบญเบเบซเบเปเบฒเบเบตเป, เบเบฑเปเบเบเบญเบเบเบตเปเปเบเบดเปเบเบเบทเบงเปเบฒเบเบตเป.
NodeValue * const readNode(..., NodeKey * const key) {โ
MDB_val rawKey = serialize(key);โ
MDB_val rawValue;โ
mdb_get(..., &rawKey, &rawValue);โ
return (NodeValue * const)rawValue.mv_data;โ
}
เบเบฑเบเบเบตเบฅเบฒเบเบเบทเปเบเบตเปเบเปเบฒเบชเบฐเปเบซเบเบตเบชเบฐเปเบเบเปเบซเปเปเบซเบฑเบเบงเบดเบเบตเบเบฒเบ serialization เปเบเบเบเปเบฒเบเบเบฒเบ dump เปเบเบเบชเปเบฒเบเบเปเบงเบเปเบซเปเบเปเบฒเบเบชเบฒเบกเบฒเบเบเปเบฒเบเบฑเบเบเบฒเบเบเบฑเบเบชเบฑเบเปเบเบเปเบเบทเปเบญเบเปเบซเบงเบเปเปเบเบฝเบเปเบเปเปเบเปเบงเบฅเบฒเบเบฝเบ, เปเบเปเปเบเปเบงเบฅเบฒเบญเปเบฒเบเบเปเปเบกเบนเบ. เบกเบฒเบเบฒเบเบเบฑเบเบเบฑเบ mdb_get
เบเบปเบงเบเบตเปเปเบเบดเปเบเปเบเปเบเบญเบเบเบตเปเบขเบนเปเบซเบเปเบงเบเบเบงเบฒเบกเบเปเบฒ virtual เบเปเบญเบเบเบตเปเบเบฒเบเบเปเปเบกเบนเบเปเบเบฑเบเบฎเบฑเบเบชเบฒเบเบฒเบเบชเบฐเปเบเบ byte เบเบญเบเบงเบฑเบเบเบธ. เปเบเบเบงเบฒเบกเปเบเบฑเบเบเบดเบ, เบเบงเบเปเบฎเบปเบฒเปเบเปเบฎเบฑเบเบเบฐเปเบเบเบเบญเบ ORM เบเบตเปเบชเบฐเบซเบเบญเบเบเบงเบฒเบกเปเบงเปเบเบเบฒเบเบญเปเบฒเบเบเปเปเบกเบนเบเบชเบนเบเบซเบผเบฒเบเปเบเบทเบญเบเบเปเปเปเบชเบเบเปเบฒ. เปเบเบดเบเบงเปเบฒเบเบฐเบกเบตเบเบงเบฒเบกเบเบฒเบกเบเบฑเบเบซเบกเบปเบเบเบญเบเบงเบดเบเบตเบเบฒเบ, เบกเบฑเบเบเปเบฒเปเบเบฑเบเบเปเบญเบเบเบทเปเบเปเบฒเบฅเบฑเบเบชเบฐเบเบฐเบเปเบฒเบเปเบเบตเปเบเปเบฝเบงเบเปเบญเบเบเบฑเบเบกเบฑเบ.
- เบชเปเบฒเบฅเบฑเบเบเบฒเบเปเบฎเบฑเบเบเบธเบฅเบฐเบเปเบฒเบเบตเปเบญเปเบฒเบเปเบเบปเปเบฒเบเบฑเปเบ, เบเบปเบงเบเบตเปเปเบเบซเบฒเปเบเบเบชเปเบฒเบเบกเบนเบเบเปเบฒเปเบกเปเบเบฎเบฑเบเบเบฐเบเบฑเบเบงเปเบฒเบเบฑเบเบเบปเบเบเบทเบเบเปเบญเบเบเบปเบเบเปเบงเบฒเบเบฒเบเปเบฎเบฑเบเบเบธเบฅเบฐเบเปเบฒเบเบทเบเบเบดเบ. เบเบฑเปเบเบเบตเปเปเบเปเบฅเบฐเบเบธเปเบงเปเบเปเบญเบเบซเบเปเบฒเบเบตเป, เบซเบเปเบฒ B-tree เบเบตเปเบงเบฑเบเบเบธเบเบฑเปเบเบขเบนเป, เบเบญเบเปเบเบเบฑเบเบซเบผเบฑเบเบเบฒเบ copy-on-write, เบเบฑเบเบเบปเบเบเปเปเบเปเบฝเบเปเบเบเบเบฒเบเปเบเบเบตเปเบเบงเบเบกเบฑเบเบเบทเบเบญเปเบฒเบเบญเบตเบเปเบเบเบขเปเบฒเบเบซเบเปเบญเบเบซเบเบถเปเบเบเบธเบฅเบฐเบเปเบฒ. เปเบเปเบงเบฅเบฒเบเบฝเบงเบเบฑเบ, เบเบฑเบเบเบตเบเบตเปเบเบฒเบเปเบฎเบฑเบเบเบธเบฅเบฐเบเปเบฒเบชเบธเบเบเปเบฒเบเบเบตเปเบเปเบฝเบงเบเปเบญเบเบเบฑเบเบเบงเบเบกเบฑเบเบชเปเบฒเปเบฅเบฑเบ, เบซเบเปเบฒเบเปเบฒเบเปเบชเบฒเบกเบฒเบเบเบทเบเบเปเบฒเปเบเปเบเบทเบเปเบซเบกเปเบชเปเบฒเบฅเบฑเบเบเปเปเบกเบนเบเปเบซเบกเป. เบเปเบฒเบกเบฑเบเปเบเบฑเบเบชเบดเปเบเบเปเบฒเปเบเบฑเบเบชเปเบฒเบฅเบฑเบเบงเบฑเบเบเบธเปเบเบทเปเบญเบเบงเบฒเบกเบขเบนเปเบฅเบญเบเบเบญเบเบเบธเบฅเบฐเบเปเบฒเบเบตเปเบชเปเบฒเบเปเบซเปเปเบเบปเบฒเปเบเบปเปเบฒ, เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบเบงเบเปเบเบปเบฒเบเบฑเบเบเปเบญเบเปเบเปเบฎเบฑเบเบเบฒเบเบเบฑเบเบฅเบญเบ.
- โโเบชเปเบฒโเบฅเบฑเบโเบเบฒเบโเบญเปเบฒเบโเบฅเบฒเบโเบเบฒเบโ, เบเบปเบงโเบเบตเปโเปเบโเปเบเบดเบโเปเบเบโเบชเปเบฒเบโเบกเบนเบโเบเปเบฒโเบเบตเปโเปเบเปโเบฎเบฑเบโเบเบฐโเบเบทเบโเบเปเบญเบโเบเบฝเบโเปเบเปโเบเบปเบโเบโเปโเบงเบฒโเบเบฑเปเบโเบเบญเบโเบเบฒเบโเบเบฑเบโเปเบเปโเบเบฑเปเบโเบเปเบฒโเบญเบดเบ (เบเบฝเบโเบซเบผเบทโเบฅเบถเบโเบเปเปโเบกเบนเบโ)โ.
- เปเบเบดเบเปเบกเปเบเบงเปเบฒเปเบเบเบชเปเบฒเบ
NodeValue
เบเปเปเปเบเบฑเบกเบฎเบนเบเปเบเบ, เปเบเปเบเบทเบเบเบฑเบเบญเบญเบ (เปเบเบดเปเบเบเบฒเบเบชเปเบงเบเบเปเบญเบ โเบเบฒเบเบชเบฑเปเบเบเบฐเปเบเปเบเบเปเบเปเบเบปเบงเบเบฝเบเบเบฝเบเบเบฒเบเบเบญเบโ), เบเปเบฒเบเบชเบฒเบกเบฒเบเปเบเบปเปเบฒเปเบเบดเบเบเบปเปเบเบเบฒเบเบญเบเบกเบฑเบเปเบเปเบขเปเบฒเบเบเบญเบเปเบเบเปเบฒเบเบเบปเบงเบเบตเป. เบชเบดเปเบเบเบตเป เบชเบณ เบเบฑเบเบเปเปเปเบกเปเบเบเบฒเบเบเบฐเบเบดเปเบชเบเบกเบฑเบ! - เบเบฒเบเปเบเปเบชเบฐเบเบฒเบเบเบฒเบเปเบเปเบเปเปเบเบงเบเบเบฑเบเปเบเบเปเบเบเบชเปเบฒเบเปเบเบเบเปเบฒเบเบเบปเบงเบเบตเปเบเบตเปเปเบเปเบฎเบฑเบ. เบเบฒเบเบเปเบฝเบเปเบเบเบเบฑเบเบซเบกเบปเบเบเปเบญเบเปเบฎเบฑเบเปเบเบเบเปเบฒเบเบงเบดเบเบตเบเบฒเบเปเบเบปเปเบฒเบเบฑเปเบ
mdb_put
. เบขเปเบฒเบเปเบเบเปเบเบฒเบก, เบเปเปเบงเปเบฒเบเปเบฒเบเบเปเบญเบเบเบฒเบเปเบฎเบฑเบเบญเบฑเบเบเบตเปเบเบฒเบเบเบฒเบเปเบ, เบกเบฑเบเปเบเบฑเบเปเบเบเปเปเปเบเป, เปเบเบฒเบฐเบงเปเบฒเบเบทเปเบเบเบตเปเบซเบเปเบงเบเบเบงเบฒเบกเบเปเบฒเบเบตเปเปเบเบเบชเปเบฒเบเบเบตเปเบเบฑเปเบเบขเบนเปเปเบกเปเบเปเบเบเบเบตเปเบขเบนเปเปเบเปเบซเบกเบเบญเปเบฒเบเปเบเบปเปเบฒเบเบฑเปเบ. - Remap เปเบเบฅเปเปเบเบซเบฒเบเบทเปเบเบเบตเปเบเบตเปเบขเบนเปเบเบญเบเบเบฐเบเบงเบเบเบฒเบเบชเปเบฒเบฅเบฑเบเบเบธเบเบเบฐเบชเบปเบเบเบญเบเบเบปเบงเบขเปเบฒเบเปเบเบฑเปเบเบเบฒเบเปเบเบตเปเบกเบเบฐเบซเบเบฒเบเบเบฒเบเปเบเบฑเบเบฎเบฑเบเบชเบฒเบชเบนเบเบชเบธเบเปเบเบเปเบเปเบเบฑเบเบเบฑเบ
mdb_env_set_map_size
invalidates เบเบธเบฅเบฐเบเปเบฒเบเบฑเบเบซเบกเบปเบเปเบฅเบฐเบซเบเปเบงเบเบเบฒเบเบเบตเปเบเปเบฝเบงเบเปเบญเบเปเบเบเบเบปเปเบงเปเบเปเบฅเบฐเบเบตเปเปเบเบซเบฒเบงเบฑเบเบเบธเบชเบฐเปเบเบฒเบฐเปเบเบซเบเบถเปเบเปเบเบเบชเบฐเปเบเบฒเบฐ.
เบชเบธเบเบเปเบฒเบ, เบฅเบฑเบเบชเบฐเบเบฐเบญเบทเปเบเปเบกเปเบ insidious เบชเบฐเบเบฑเปเบเบเบฒเบเปเบเบตเบเปเบเบตเบเปเบเบทเปเบญเปเบเบเบญเบเบกเบฑเบเบเปเปเปเบซเบกเบฒเบฐเบชเบปเบกเบเบฑเบเบเบฝเบเปเบเปเบงเบฑเบเบญเบทเปเบ. เปเบเบเบปเบเบเปเบฝเบงเบเบฑเบเบเบปเปเบเปเบกเป B, เบเปเบฒเบเบฐเปเบเบปเปเบฒเปเบเปเปเบซเปเปเบเบเบงเบฒเบเบงเบดเบเบตเบเบฒเบเบเบฑเบเบฅเบฝเบเบซเบเปเบฒเบเบญเบเบกเบฑเบเบขเบนเปเปเบเบเบงเบฒเบกเบเบปเบเบเปเบฒ. เบกเบฑเบเบเบฐเบเบดเบเบฑเบเบเบฒเบกเบเบตเปเบงเปเบฒเบเบตเปเบขเบนเปเบเบญเบเบเบฒเบเปเบฅเบตเปเบกเบเบปเปเบเบเบญเบ buffer เบเบตเปเบกเบตเบเปเปเบกเบนเบ serialized เบชเบฒเบกเบฒเบ arbitrary เบขเปเบฒเบเปเบเปเบเบดเบ. เปเบเบทเปเบญเบเบเบฒเบเบงเปเบฒเบเบตเป, เบเบปเบงเบเบตเปเปเบซเปเบเบงเบเปเบเบปเบฒเปเบเปเบฎเบฑเบเปเบเปเบเบเบชเปเบฒเบ MDB_val
เปเบฅเบฐเบซเบผเบธเบเบฅเบปเบเปเบเบฑเบเบเบปเบงเบเบตเปเปเบเบซเบฒเปเบเบเบชเปเบฒเบ, เบกเบฑเบเบเบฐเบเบฒเบเปเบเบฑเบ unaligned เปเบเบเปเบฅเบฐเบเบตเบเบปเปเบงเปเบ. เปเบเบเบฐเบเบฐเบเบฝเบงเบเบฑเบ, เบชเบฐเบเบฒเบเบฑเบเบเบฐเบเบฐเบเปเบฒเบเบญเบเบเบฒเบเบเบดเบ (เปเบเบเปเบฅเบฐเบเบตเบเบญเบ iOS เบเบตเปเปเบกเปเบ armv7) เบฎเบฝเบเบฎเปเบญเบเปเบซเปเบเบตเปเบขเบนเปเบเบญเบเบเปเปเบกเบนเบเปเบเบซเบเบถเปเบเปเบเบฑเบเบเบงเบฒเบกเบซเบผเบฒเบเบซเบผเบฒเบเบเบญเบเบเบฐเบซเบเบฒเบเบเบญเบเบเปเบฒเบชเบฑเบเปเบเบทเปเบญเบเบเบฑเบเบซเบผเบท, เปเบเบเปเบฒเบชเบฑเบเบเปเบฒเบเปเบญเบทเปเบเป, เบเบฐเบซเบเบฒเบเบเบดเบเบเบญเบเบฅเบฐเบเบปเบ (. เบชเปเบฒเบฅเบฑเบ armv7 เบกเบฑเบเปเบกเปเบ 32 bits). เปเบเบเปเบฒเบชเบฑเบเบเปเบฒเบเปเบญเบทเปเบเป, เบเบฒเบเบเปเบฒเปเบเบตเบเบเบฒเบเปเบเบฑเปเบ: *(int *foo)0x800002
เบเปเบฝเบงโเบเบฑเบโเบเบงเบโเปเบเบปเบฒโเปเบกเปเบโเปเบเบปเปเบฒโเบเบฑเบโเบเบฒเบโเบซเบเบตโเปเบฅเบฐโเบเปเบฒโเปเบโเบชเบนเปโเบเบฒเบโเบเบฐโเบเบดโเบเบฑเบโเบเบตเปโเบกเบตโเบเปเบฒโเบเบฑเบโเบชเบดเบโ EXC_ARM_DA_ALIGN
. เบกเบตเบชเบญเบเบงเบดเบเบตเบเบตเปเบเบฐเบซเบผเบตเบเบฅเปเบฝเบเบเบฐเบเบฒเบเปเบฒเบเบตเปเปเบชเบเปเบชเบปเปเบฒเบเบฑเปเบเบเปเบฒเบง.
เบเปเบฒเบญเบดเบเบเบปเปเบกเบฅเบปเบเปเบเบซเบฒเบเบฒเบเบเบฑเบเบฅเบญเบเบเปเปเบกเบนเบเปเบเบทเปเบญเบเบเบปเปเบเปเบเบปเปเบฒเปเบเปเบเปเบเบเบชเปเบฒเบเบเบตเปเบชเบญเบเบเปเบญเบเบเบฑเบเบขเปเบฒเบเบเบฐเปเบเปเบ. เบเบปเบงเบขเปเบฒเบ, เปเบเบเบปเบงเบเบฝเบเบเบฝเบเบเบตเปเบเปเบฒเบซเบเบปเบเปเบญเบเบเบตเปเบเบฐเบเบทเบเบชเบฐเบเปเบญเบเปเบซเปเปเบซเบฑเบเบเบฑเปเบเบเปเปเปเบเบเบตเป.
int compare(MDB_val * const a, MDB_val * const b) {
NodeKey aKey, bKey;
memcpy(&aKey, a->mv_data, a->mv_size);
memcpy(&bKey, b->mv_data, b->mv_size);
return // ...
}
เบญเบตเบเบงเบดเบเบตเปเบถเปเบเบเบทเบเบฒเบเปเบเปเบเปเบซเปเบเบนเปเบชเบฑเบเบฅเบงเบกเบเปเปเบกเบนเบเบฅเปเบงเบเปเปเบฒเบงเปเบฒเปเบเบเบชเปเบฒเบเบเบญเบเบเปเบฒเบซเบผเบฑเบเบญเบฒเบเบเปเปเบชเบญเบเบเปเบญเบเบเบฒเบกเบเบธเบเบฅเบฑเบเบชเบฐเบเบฐ. aligned(1)
. เปเบ ARM เบเปเบฒเบเบชเบฒเบกเบฒเบเบกเบตเบเบปเบเบเบฐเบเบปเบเบเบฝเบงเบเบฑเบ
typedef struct __attribute__((packed)) NodeKey {
uint8_t parentId;
uint8_t type;
uint8_t nameLength;
uint8_t nameBuffer[256];
} NodeKey;
เปเบฅเบเบฐเบเบฒเบเบชเบญเบเบเบฒเบก
เปเบเบทเปเบญเปเบฎเบฑเบเบเปเบณเปเบเบเบธเปเบกเบเบฑเบเบเบถเบ, LMDB เบชเบฐเปเบญเบเบเบปเบงเบเบตเปเบเบปเบงเบเบฐเบเบดเบ. เปเบซเปเปเบเบดเปเบเบงเบดเบเบตเบเบฒเบเปเบฎเบฑเบเบงเบฝเบเบเบฑเบเบกเบฑเบเปเบเบเปเบเปเบเบปเบงเบขเปเบฒเบเบเบญเบเบเบฒเบเบฐเบฅเบฒเบเบเบตเปเบกเบต metadata cloud เบเบนเปเปเบเปเบเบตเปเบเบธเปเบเปเบเบตเบเบเบฑเบเบเบงเบเปเบฎเบปเบฒ.
เปเบเบฑเบเบชเปเบงเบเบซเบเบถเปเบเบเบญเบเบเบฒเบเบชเบฐเปเบเบเบฅเบฒเบเบเบฒเบเปเบเบฅเปเปเบเปเบเปเบฅเบเบฐเบเปเบฅเบต, เบกเบฑเบเบเปเบฒเปเบเบฑเบเบเปเบญเบเบเบญเบเบซเบฒเบเบตเบเบฑเบเบซเบกเบปเบเบเบตเปเปเบเบฅเปเปเบฅเบฐเปเบเบเปเบเบตเปเบฅเบนเบเบเบญเบเบกเบฑเบเบกเบตเบเบงเบฒเบกเบเปเบฝเบงเบเปเบญเบ. เปเบเบเบฒเบเบเปเบญเบเบเบตเปเบเปเบฒเบเบกเบฒเบเบงเบเปเบฎเบปเบฒเปเบเปเบเบฑเบเบฎเบฝเบเบเบต NodeKey
เบเบฑเปเบ เบเบฑเปเบ เบเบงเบ เปเบเบปเบฒ เปเบเบปเปเบฒ เปเบเป เบเบทเบ เบฅเปเบฒ เบเบฑเบ เบเบปเปเบ เบเป เปเบเบ ID เบเบญเบ เบฅเบฐ เบเบปเบ เบเปเป เปเบกเป. เบเบฑเปเบเบเบฑเปเบ, เบเบฒเบเบเปเบฒเบเปเบเบฑเบเบเบดเบ, เบงเบฝเบเบเบฒเบเบเบญเบเบเบฒเบเบเบถเบเปเบญเบปเบฒเปเบเบทเปเบญเปเบเบเบญเบเปเบเบเปเบเบตเบกเบฒเบฅเบปเบเปเบเบทเปเบญเบงเบฒเบเบเบปเบงเบเบฐเบเบดเบเบขเบนเปเปเบเปเบเบเปเบเบเปเบเบดเบเบเบญเบเบเบธเปเบกเบเบญเบเบเบตเบเบตเปเบกเบตเบเปเบฒเบเปเบฒเบซเบเปเบฒเบเบตเปเปเบซเปเปเบฅเบฐเบซเบผเบฑเบเบเบฒเบเบเบฑเปเบ iterating เบเบฑเบเปเบเบเปเบเบเบเปเปเบฒ.
เบเบญเบเปเบเบเปเบเบดเบเบชเบฒเบกเบฒเบเบเบปเบเปเบเปเปเบเบเบเบปเบเปเบเบเบเบฒเบเบเบปเปเบเบซเบฒเบเบฒเบกเบฅเปเบฒเบเบฑเบ. เปเบเบทเปเบญเปเบฎเบฑเบเบชเบดเปเบเบเบตเป, เบเบปเบงเบเบฐเบเบดเบเบเบทเบเบงเบฒเบเปเบงเปเปเบเบเบญเบเบเบปเปเบเบเบญเบเบเบฑเบเบเบตเบฅเบฒเบเบเบทเปเบเบฑเบเบซเบกเบปเบเบเบญเบเบเบฐเปเบเปเบเบเบฒเบเบเปเปเบกเบนเบเปเบฅเบฐเปเบเบตเปเบกเบเบถเปเบเบเบทเปเบกเบญเบตเบเบเบปเบเบเปเบงเบฒเบเบฐเปเบเบเบตเปเบกเบตเบเบปเบงเบฅเบฐเบเบธเบเบญเบเปเบเปเบฅเบเบฐเบเปเบฅเบตเบเปเปเปเบกเปเบเบฒเบเบปเบเบขเบนเปเบเปเบฒเบเบฅเบธเปเบก. เบงเบดเบเบตเบเบฒเบเบเบตเปเบกเบต 2 เบเปเปเปเบชเบเบเบตเปเบเบฐเปเบเปเบ:
- เบเบงเบฒเบกเบชเบฑเบเบชเบปเบเปเบเบเบฒเบเบเบปเปเบเบซเบฒเปเบชเบฑเปเบ, เปเบเบดเบเปเบกเปเบเบงเปเบฒ, เบเบฒเบกเบเบตเปเบฎเบนเป, เปเบเบเบปเปเบเปเบกเปเปเบเบเบเบปเปเบงเปเบเปเบฅเบฐเปเบเบเบปเปเบเปเบกเป B, เปเบเบเบชเบฐเปเบเบฒเบฐเบกเบฑเบเบชเบฒเบกเบฒเบเบเบฐเบเบดเบเบฑเบเปเบเปเปเบเปเบงเบฅเบฒ logarithmic.
- เปเบฎเปเบเบฐเปเบซเบเบ, เบเบธเบเบซเบเปเบฒเบเปเบญเบเบซเบเปเบฒเบซเบเบถเปเบเบเบตเปเบเปเบฒเบฅเบฑเบเบเบญเบเบซเบฒเปเบกเปเบเบเบทเบเบเบปเบเบเบฒเบเปเบเบฅเปเปเบเบซเบฒเบซเบเปเบงเบเบเบงเบฒเบกเบเปเบฒเบเบปเปเบเบเป, เปเบเบดเปเบเบกเบตเบฅเบฒเบเบฒเปเบเบเบเบตเปเบชเบธเบ.
เปเบเบเบเบต, LMDB API เบชเบฐเบซเบเบญเบเบงเบดเบเบตเบเบฒเบเบเบตเปเบกเบตเบเบฐเบชเบดเบเบเบดเบเบฒเบเปเบเบเบฒเบเบงเบฒเบเบเบปเบงเบเบฐเบเบดเบเปเบเปเบเบทเปเบญเบเบเบปเปเบ. เบเบปเบงเบขเปเบฒเบ, เบเปเบฝเบงเบเปเบญเบเบเบฑเบเบเบฑเบเบเบตเบฅเบฒเบเบเบทเปเปเบเบฎเบนเบเบเปเบฒเบเปเบเบดเบ, เบเบงเบเปเบฎเบปเบฒเบชเบฒเบกเบฒเบเปเบฎเบฑเบเปเบซเปเบชเปเบฒเบเบฑเบเปเบเบเบฒเบเบชเบฐเบซเบเบฒเบก parentId
เบเบฐเปเบเบปเปเบฒเบเบฑเบ 2, เปเบฅเบฐเบชเปเบงเบเบเบตเปเปเบซเบผเบทเบญเบเบฑเบเปเบปเบเปเบกเปเบเปเบเบฑเบกเปเบเบเปเบงเบเบชเบนเบ. เบเบฐเปเบเบเบตเปเปเบเบฑเบกเปเบเบเบฒเบเบชเปเบงเบเปเบกเปเบเบชเบฐเปเบญเบเปเบซเปเบเบฑเบเบเบฒเบเบเปเบญเบเบเปเปเบกเบนเบเบเบฑเบเบเบฑเบ mdb_cursor_get
เบเบตเปโเบเบญเบโเบเบฒเบโเบเปเบฒโเปเบเบตเบโเบเบฒเบโ MDB_SET_RANGE
เบเบตเปเบขเบนเป
NodeKey upperBoundSearchKey = {โ
.parentId = 2,โ
.type = 0,โ
.nameLength = 0โ
};โ
MDB_val value, key = serialize(upperBoundSearchKey);โ
MDB_cursor *cursor;โ
mdb_cursor_open(..., &cursor);โ
mdb_cursor_get(cursor, &key, &value, MDB_SET_RANGE);
เบเปเบฒเปเบเบเปเบเบเปเบเบดเบเบเบญเบเบเบธเปเบกเบเบญเบเบเบฐเปเบเบเบทเบเบเบปเบเปเบซเบฑเบ, เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบเบงเบเปเบฎเบปเบฒเปเบฎเบฑเบเบเปเปเบฒเบกเบฑเบเบเบปเบเบเบงเปเบฒเบเบงเบเปเบฎเบปเบฒเบเบฐเบเบปเบเบเบฑเบเบซเบผเบทเบเบฐเปเบเบเบปเบเบเบฑเบ. parentId
เบซเบผเบทเบเบฐเปเบเบเบฐเบเปเปเปเบปเบ.
do {โ
rc = mdb_cursor_get(cursor, &key, &value, MDB_NEXT);โ
// processing...โ
} while (MDB_NOTFOUND != rc && // check end of tableโ
IsTargetKey(key)); // check end of keys groupโโ
เบชเบดเปเบเบเบตเปเบเบตเปเบกเปเบเบงเปเบฒเปเบเบฑเบเบชเปเบงเบเบซเบเบถเปเบเบเบญเบเบเบฒเบเปเบฎเบฑเบเบเปเปเบฒเปเบเบเปเบเป mdb_cursor_get, เบเบงเบเปเบฎเบปเบฒเบเปเปเบเบฝเบเปเบเปเปเบเปเบฎเบฑเบเบฅเบฐเบซเบฑเบ, เปเบเปเบเบฑเบเบกเบตเบกเบนเบเบเปเบฒ. เบเปเบฒ, เปเบเบทเปเบญเบเบฐเบเบดเบเบฑเบเปเบเบทเปเบญเบเปเบเบเบฒเบเปเบเบฑเบเบเบปเบงเบขเปเบฒเบ, เบเปเบฒเบเบเปเบฒเปเบเบฑเบเบเปเบญเบเบเบงเบเปเบเบดเปเบ, เปเบเบเบฑเบเบเบฒเบชเบดเปเบเบญเบทเปเบเป, เบเบปเปเบเบเบฒเบเบฒเบเบชเปเบงเบเบกเบนเบเบเปเบฒเบเบญเบเบเบฑเบเบเบถเบ, เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบเบงเบเบกเบฑเบเบชเบฒเบกเบฒเบเปเบเบปเปเบฒเปเบเบดเบเปเบเปเปเบเบเบเปเปเบกเบตเบเปเบฒเบเบฒเบเปเบเบตเปเบกเปเบเบตเบก.
4.3. เบเบฒเบเบชเปเบฒเบเปเบเบเบเปเบฒเบฅเบญเบเบเบงเบฒเบกเบชเปเบฒเบเบฑเบเบฅเบฐเบซเบงเปเบฒเบเบเบฒเบเบฐเบฅเบฒเบ
เปเบเบเปเบเบเบฑเบเบเบธเบเบฑเบ, เบเบงเบเปเบฎเบปเบฒเปเบเปเบเบฑเบเบเบฒเบเบเบดเบเบฒเบฅเบฐเบเบฒเบเบธเบเบเปเบฒเบเบเบญเบเบเบฒเบเบญเบญเบเปเบเบเปเบฅเบฐเปเบฎเบฑเบเบงเบฝเบเบเบฑเบเบเบฒเบเบเปเปเบกเบนเบเบเบฒเบเบฐเบฅเบฒเบเบเบฝเบง. เบเบงเบเปเบฎเบปเบฒเบชเบฒเบกเบฒเบเปเบงเบปเปเบฒเปเบเปเบงเปเบฒเบเบฒเบเบฐเบฅเบฒเบเปเบกเปเบเบเบธเบเบเบญเบเบเบฑเบเบเบถเบเบเบฒเบเบเบฑเบเบฎเบฝเบเบเบตเปเบเบฐเบเบญเบเบเปเบงเบเบเบฐเปเบเบเบเบฝเบงเบเบฑเบเบเบญเบเบเบนเปเบเบตเบกเบนเบเบเปเบฒ. เบเปเบฒเบเปเบฒเบเบชเบฐเปเบเบเบเบตเปเบเบฑเบเบฎเบนเบเบชเบตเปเบซเบฅเปเบฝเบกเปเบฅเบฐเบเปเบฒเบเบตเปเบเปเบฝเบงเบเปเบญเบเปเบเบฑเบ parallelepiped, เบเปเบฒเบเบเบฐเปเบเปเบฎเบฑเบเปเบเบเบงเบฒเบเบเบฒเบเบเบญเบเบเบฒเบเบเปเปเบกเบนเบ.
'' '"
เปเบเบงเปเบเบเปเปเบเบฒเบก, เปเบเบเบตเบงเบดเบเบเบดเบเบกเบฑเบเบเปเปเบเปเบญเบเปเบเบฑเบเปเบเปเบเปเบเบตเปเบเบฐเปเบเปเบฎเบฑเบเบเบฒเบเปเบเบเบเบฒเบเบเบญเบเปเบฅเบทเบญเบเปเบฅเบฑเบเบเปเบญเบ. เปเบฅเบทเปเบญเบเปเปเบเบเบฒเบเบเปเปเบกเบนเบเบกเบฑเบเบเปเบฒเปเบเบฑเบเบเปเบญเบเบกเบต, เบเปเบญเบเบญเบทเปเบ เปเบปเบ, เบเปเบญเบเบกเบตเบเบฒเบเบฐเบฅเบฒเบเบซเบผเบฒเบ, เปเบฅเบฐเบญเบฑเบเบเบตเบชเบญเบ, เปเบเบทเปเบญเปเบฎเบฑเบเปเบซเปเบเบฒเบเปเบฅเบทเบญเบเปเบเบเบงเบเบกเบฑเบเบเบฒเบกเบฅเปเบฒเบเบฑเบเบเบตเปเปเบเบเบเปเบฒเบเบเบฒเบเบฅเบฐเบซเบฑเบเบซเบผเบฑเบ. เบเบฒเบเบชเบธเบเบเปเบฒเบเบเบตเปเปเบกเปเบเบญเบธเบเบดเบเปเบซเปเบเบฑเบเบเบฑเบเบซเบฒเบเบญเบเบเบฒเบเบชเปเบฒเบเปเบฅเบฐเบเบฒเบเปเบเบทเปเบญเบกเบเปเปเบเบฑเบเบเบญเบเปเบเบปเบฒเปเบเบปเปเบฒ.
เบเบฒเบเบฐเบฅเบฒเบเบเบฑเบเบชเบฐเบเบต
เปเบญเบฑเบเบเบฅเบดเปเบเบเบฑเบเบเบฅเบฒเบงเบกเบตเบชเปเบงเบ "Gallery". เบกเบฑเบเบชเบฐเปเบเบเปเบเบทเปเบญเบซเบฒเบชเบทเปเบเบฒเบเบเบฑเบเบเบฑเบเปเบปเบ, เบเบฑเบเบฎเบฝเบเบเบฒเบกเบงเบฑเบเบเบต. เปเบเบทเปเบญเบเบฐเบเบดเบเบฑเบเบเบฒเบเปเบฅเบทเบญเบเบเบฑเปเบเบเปเบฒเบงเปเบซเปเบเบตเบเบตเปเบชเบธเบ, เบเปเปเปเบเบเบฑเบเบเบฒเบเบฐเบฅเบฒเบเบเบปเปเบเบเป, เบเปเบฒเบเบเปเบฒเปเบเบฑเบเบเปเบญเบเบชเปเบฒเบเบฅเบฐเบซเบฑเบเปเบซเบกเปเบเบตเปเบกเบตเบเบฐเปเบเบเปเบซเบกเป. เบเบงเบเบกเบฑเบเบเบฐเบกเบตเบเปเบญเบเบเปเปเบกเบนเบเบเบตเปเบกเบตเบงเบฑเบเบเบตเบเบตเปเปเบเบฅเปเบเบทเบเบชเปเบฒเบเบเบถเปเบ, เปเบเบดเปเบเบเบฐเปเบฎเบฑเบเบซเบเปเบฒเบเบตเปเปเบเบฑเบเปเบเบทเปเบญเบเปเบเบเบฒเบเบเบฑเบเบฅเบฝเบเบเบปเปเบเบเป. เปเบเบทเปเบญเบเบเบฒเบเบงเปเบฒเบเบฐเปเบเปเบซเบกเปเบญเปเบฒเบเบญเบตเบเบเปเปเบกเบนเบเบเบฝเบงเบเบฑเบเบเบฑเบเบเบฐเปเบเปเบเบเบฒเบเบฐเบฅเบฒเบเบเบปเปเบเบเป, เบเบงเบเบกเบฑเบเบเบทเบเปเบญเบตเปเบเบงเปเบฒเบเบฐเปเบเบเบฑเบเบชเบฐเบเบต. เปเบเบฎเบนเบเบเปเบฒเบเบฅเบธเปเบกเบเบตเปเบเบงเบเปเบเบปเบฒเบเบทเบเปเบเบฑเปเบเปเบชเปเปเบเบชเบตเบชเบปเปเบก.
เปเบเบทเปเบญเปเบเบเบเบฐเปเบเบเบญเบเบเบฒเบเบฐเบฅเบฒเบเบเบตเปเปเบเบเบเปเบฒเบเบเบฑเบเบญเบญเบเบเบฒเบเบเบฑเบเบเบฒเบเปเบเบเบฒเบเบเปเปเบกเบนเบเบเบฝเบงเบเบฑเบ, tableId เบเปเบฒเบเปเบเบฑเบเบเบดเบเปเบเบตเปเบกเปเบเบตเบกเปเบเปเบเบทเบเปเบเบตเปเบกเปเบชเปเบเบงเบเบกเบฑเบเบเบฑเบเบซเบกเบปเบ. เปเบเบเบเบฒเบเปเบฎเบฑเบเปเบซเปเบกเบฑเบเปเบเบฑเบเบเบนเบฅเบดเบกเบฐเบชเบดเบเบชเบนเบเบชเบธเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเบเบฑเบเบฎเบฝเบ, เบเบงเบเปเบฎเบปเบฒเบเบฐเบเบฑเบเบฅเบธเบเบฒเบเบเบฑเบเบเบธเปเบกเบเบญเบเบเบตเบเปเบฒเบญเบดเบเปเบเบเบเบฒเบเบฐเบฅเบฒเบ, เปเบฅเบฐเบเบฒเบเปเบเบเบฒเบเบฐเบฅเบฒเบ - เบเบฒเบกเบเบปเบเบฅเบฐเบเบฝเบเบเบญเบเบเบงเบเปเบฎเบปเบฒ.
เบเบฐเปเบเบเบฑเบเบชเบฐเบเบตเบญเปเบฒเบเบญเบตเบเบเปเปเบกเบนเบเบเบฝเบงเบเบฑเบเบเบฑเบเบเบฐเปเบเบซเบผเบฑเบ. เบเบฒเบเบเบฐเบเบดเบเบฑเบเบขเปเบฒเบเบเบปเบเปเบเบเบปเบเบกเบฒเบเบญเบเบเบฑเบเบชเบดเบเบเบตเปเปเบเบเบเปเบฒเบเบเบฒเบเปเบเบทเปเบญเบกเปเบเบเบเบฑเบเบกเบฑเบเบเบฑเบเบชเปเบฒเปเบเบปเบฒเบเบญเบเบชเปเบงเบเบกเบนเบเบเปเบฒเบเบญเบเบเบธเบเปเบเบเบปเปเบเบเปเปเบกเปเบเบเปเปเปเบซเบกเบฒเบฐเบชเบปเบกเบเบฒเบเบซเบผเบฒเบเบเบธเบ:
- เปเบเปเบเปเบเบญเบเบเบฒเบเปเบญเบปเบฒเบเบทเปเบเบเบตเป, metadata เบชเบฒเบกเบฒเบเบเปเบญเบเบเปเบฒเบเบญเบธเบเบปเบกเบชเบปเบกเบเบนเบ.
- เบเบฒเบเบเบฑเบเบชเบฐเบเบฐเบเบฒเบเบเบฐเบเบดเบเบฑเบ, เบเบฑเบเบเบฑเปเบเปเบเปเปเบกเบทเปเบญเบเบฑเบเบเบธเบ metadata เบเบญเบ node, เบเปเบฒเบเบเบฐเบเปเบญเบเบเบฝเบเบเบทเบเปเบซเบกเปเปเบเบเปเบเปเบชเบญเบเบเบธเปเบก.
- เบเบฒเบเบเบฑเบเบชเบฐเบเบฐเบเบญเบเบเบฒเบเบชเบฐเบซเบเบฑเบเบชเบฐเบซเบเบนเบเบฅเบฐเบซเบฑเบ, เบเปเบฒเบเบงเบเปเบฎเบปเบฒเบฅเบทเบกเบเบฑเบเบเบธเบเบเปเปเบกเบนเบเบชเปเบฒเบฅเบฑเบเบซเบเบถเปเบเปเบเบฅเบฐเบซเบฑเบ, เบเบงเบเปเบฎเบปเบฒเบเบฐเปเบเปเบฎเบฑเบเบเปเปเบเบปเบเบเปเบญเบเบเบญเบเบเปเปเบกเบนเบเบเบตเปเบเปเปเบชเบญเบเบเปเบญเบเบเบฑเบเปเบเบเบฒเบเปเบเบฑเบเบฎเบฑเบเบชเบฒ.
เบเปเปเปเบ, เบเบงเบเปเบฎเบปเบฒเบเบฐเบเบดเบเบฒเบฅเบฐเบเบฒเบงเบดเบเบตเบเบฒเบเบฅเบปเบเบฅเปเบฒเบเบเปเปเบเบปเบเบเปเบญเบเปเบซเบผเบปเปเบฒเบเบตเป.
เบเบฒเบเบเบฑเบเบเบฑเปเบเบเบฒเบเบเบปเบงเบเบฑเบเบฅเบฐเบซเบงเปเบฒเบเบเบฒเบเบฐเบฅเบฒเบ
เบฎเบนเบเปเบเบเปเบกเปเบเปเบซเบกเบฒเบฐเบชเบปเบกเบเบตเบชเปเบฒเบฅเบฑเบเบเบฒเบเปเบเบทเปเบญเบกเปเบเบเบเบฒเบเบฐเบฅเบฒเบเบเบฑเบเบชเบฐเบเบตเบเบฑเบเบเบฒเบเบฐเบฅเบฒเบเบเบปเปเบเบเป "เบเบฐเปเบเปเบเบฑเบเบกเบนเบเบเปเบฒ". เบเบฑเปเบเบเบตเปเบเบทเปเบเบญเบเบกเบฑเบเบเบตเปเปเบซเปเปเบซเบฑเบ, เบชเปเบงเบเบกเบนเบเบเปเบฒเบเบญเบเบเบฑเบเบเบถเบเบเบฑเบเบชเบฐเบเบตเปเบกเปเบเบชเปเบฒเปเบเบปเบฒเบเบญเบเบกเบนเบเบเปเบฒเบซเบผเบฑเบเบเบปเปเบเบเป. เบงเบดเบเบตเบเบฒเบเบเบตเปเบเปเบฒเบเบฑเบเบเบธเบเบเปเปเปเบชเบเบเบตเปเปเบเปเบเปเบฒเบงเบกเบฒเบเปเบฒเบเปเบเบดเบเบเบตเปเบเปเบฝเบงเบเปเบญเบเบเบฑเบเบเบฒเบเปเบเบฑเบเบฎเบฑเบเบชเบฒเบชเปเบฒเปเบเบปเบฒเบเบญเบเบชเปเบงเบเบกเบนเบเบเปเบฒเบเบญเบเบเบฑเบเบเบถเบเบเบปเปเบเบเป. เบเปเบฒเปเบเปเบเปเบฒเบเบเบฝเบเปเบเปเบงเปเบฒเปเบเบทเปเบญเปเบซเปเปเบเปเบกเบนเบเบเปเบฒเปเบเบเบฅเบฐเบซเบฑเบเบเบฑเบเบชเบฐเบเบต, เบเปเบฒเบเบเปเบฒเปเบเบฑเบเบเปเบญเบเปเบฎเบฑเบ 2 เบเปเบฒเบเบฒเบกเปเบเบซเบฒเบเบฒเบเบเปเปเบกเบนเบเปเบเบเบเบตเปเบเบฐเปเบเบฑเบเบซเบเบถเปเบ. schematically, schema เบเบฒเบเบเปเปเบกเบนเบเบเบปเบเปเบเปเบฎเบฑเบเปเบเบดเปเบเบเบทเบงเปเบฒเบเบตเป.
เบฎเบนเบเปเบเบเบญเบทเปเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเบเบฑเบเบเบฒเบเบเบปเบงเบเบฑเบเบฅเบฐเบซเบงเปเบฒเบเบเบฒเบเบฐเบฅเบฒเบเปเบกเปเบ "เบเบฐเปเบเบเปเบณเบเปเบญเบ". เปเบเบเปเบเบทเปเบญเปเบเปเปเบฅเปเบงเบเบญเบเบกเบฑเบเปเบกเปเบเบเบฒเบเปเบเบตเปเบกเบเบธเบเบฅเบฑเบเบชเบฐเบเบฐเปเบเบตเปเบกเปเบเบตเบกเปเบซเปเบเบฑเบเบเบฐเปเบ, เปเบเบดเปเบเบเปเปเบเปเบฒเปเบเบฑเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเบเบฑเบเบฎเบฝเบ, เปเบเปเบชเปเบฒเบฅเบฑเบเบเบฒเบเบชเปเบฒเบเบฅเบฐเบซเบฑเบเบเบตเปเบเปเบฝเบงเบเปเบญเบเบเบทเบเปเบซเบกเป. เบชเบฐโเบเบฒเบโเบเบฒเบโเบเบญเบโเปเบเบโเบเบฒเบ iOS เบชเบฐโเปเบเบฒเบฐโ, เบเปเบฒโเบเบฐโเปเบเบปเปเบฒโเบเบฐโเปเบซเปโเปเบเบฑเบ fictitiousโ, เปเบเปโเบงเปเบฒโเบเบปเบงโเบขเปเบฒเบโเบเบตเปโเบเบฐโเปเบเปเบโเบเบงเปเบฒโ.
เบฅเบนเบเบเปเบฒเบกเบทเบเบทเบเบฅเบฒเบงเบกเบตเบซเบเปเบฒเบเบตเปเบชเบฐเปเบเบเปเบเบฅเปเปเบฅเบฐเปเบเบเปเบเบตเบเบฑเบเบซเบกเบปเบเบเบตเปเบเบนเปเปเบเปเปเบเปเปเบเปเบเบเบฑเบเบเบฑเบเบเบปเบเบญเบทเปเบ. เปเบเบทเปเบญเบเบเบฒเบเบงเปเบฒเบกเบตเปเบเบฅเปเบเบฑเปเบเบเปเบฒเบงเบเปเบญเบเบเปเบฒเบเบซเบเปเบญเบ, เปเบฅเบฐเบกเบตเบซเบผเบฒเบเบเบฐเปเบเบเบเบตเปเปเบเบเบเปเบฒเบเบเบฑเบเบเบญเบเบเปเปเบกเบนเบเบชเบฐเปเบเบฒเบฐเบเปเบฝเบงเบเบฑเบเบเบฒเบเปเบเบตเบเปเบเปเบเบตเปเบเปเบฝเบงเบเปเบญเบเบเบฑเบเบเบงเบเปเบเบปเบฒ (เบเบนเปเบเบตเปเปเบเปเบฎเบฑเบเบญเบฐเบเบธเบเบฒเบ, เบกเบตเบชเบดเบเบเบดเบซเบเบฑเบ, เปเบฅเบฐเบญเบทเปเบเป), เบกเบฑเบเบเบฐเบเปเปเบชเบปเบกเปเบซเบเบชเบปเบกเบเบปเบเบเบตเปเบเบฐเบเบฒเบฅเบฐเบชเปเบงเบเบกเบนเบเบเปเบฒเบเบญเบ. เบเบฑเบเบเบถเบเปเบเบเบฒเบเบฐเบฅเบฒเบเบเบปเปเบเบเปเบเบฑเบเบกเบฑเบ. เบขเปเบฒเบเปเบเบเปเบเบฒเบก, เบเปเบฒเบเปเบฒเบเบเปเบญเบเบเบฒเบเบชเบฐเปเบเบเปเบเบฅเปเบเบฑเปเบเบเปเบฒเบงเปเบเบเบญเบญเบเปเบฅเบเป, เบเปเบฒเบเบเบฑเบเบเปเบฒเปเบเบฑเบเบเปเบญเบเปเบเบฑเบเบฎเบฑเบเบชเบฒเบกเบฑเบเบขเบนเปเบเปเบญเบเปเบเบเปเบญเบเบซเบเบถเปเบ. เบเบฒเบเปเบเปเปเบเบเปเบฒเบกเบฐเบเบฒเบเปเบกเปเบเบเบฒเบเบชเปเบฒเบเบเบฒเบเบฐเบฅเบฒเบเปเบเบเบเปเบฒเบเบซเบฒเบเบชเปเบฒเบฅเบฑเบเบกเบฑเบ. เปเบเปเบเบเบงเบฒเบเบเปเบฒเบเบฅเบธเปเบกเบเบตเป, เบเบตเบเบญเบเบกเบฑเบเบเบทเบเบเปเบฒเบซเบเปเบฒเบเปเบงเบ "P", เปเบฅเบฐเบเบปเบงเบเบถเบ "propname" เบชเบฒเบกเบฒเบเบเบทเบเปเบเบเบเบตเปเบเปเบงเบเบกเบนเบเบเปเบฒเบชเบฐเปเบเบฒเบฐ "เบเปเปเบกเบนเบเบชเบฒเบเบฒเบฅเบฐเบเบฐ".
metadata เบเบตเปเปเบเบฑเบเปเบญเบเบฐเบฅเบฑเบเบเบฑเบเบซเบกเบปเบ, เบชเปเบฒเบฅเบฑเบ sake เบเบญเบเบเบฒเบเปเบเบฑเบเบฎเบฑเบเบชเบฒเบเบตเปเบเบฒเบเบฐเบฅเบฒเบเปเบซเบกเปเปเบเปเบเบทเบเบชเปเบฒเบเบเบทเปเบ, เปเบกเปเบเบเบทเบเบเบฑเบเปเบชเปเปเบเบชเปเบงเบเบกเบนเบเบเปเบฒเบเบญเบเบเบฑเบเบเบถเบ. เปเบเปเบงเบฅเบฒเบเบฝเบงเบเบฑเบ, เบเปเบฒเบเบเปเปเบเปเบญเบเบเบฒเบเบเบตเปเบเบฐเบเปเปเบฒเบเบฑเบเบเปเปเบกเบนเบเบเปเบฝเบงเบเบฑเบเปเบเบฅเปเปเบฅเบฐเปเบเบเปเบเบตเบเบตเปเปเบเบฑเบเปเบงเปเปเบเบเบฒเบเบฐเบฅเบฒเบเบเบปเปเบเบเป. เปเบเบเบเบตเปเบเบฐ, เบเปเปเบกเบนเบเบเบตเปเบเปเปเบฒเบเบฑเบเบเบฐเบเบทเบเปเบเบตเปเบกเปเบชเปเบเบธเปเบก "P" เปเบเบฎเบนเบเปเบเบเบเบญเบเบเปเบญเบเบเปเปเบกเบนเบ "node ID" เปเบฅเบฐ "timestamp". เบเปเบเบญเบเปเบเบเบฑเบเบเบงเบเปเบเบปเบฒ, เบเปเบฒเบเบชเบฒเบกเบฒเบเบชเปเบฒเบเบฅเบฐเบซเบฑเบเบเบฑเบเบชเบฐเบเบต, เบเบฒเบเบเบตเปเบเปเบฒเบเบชเบฒเบกเบฒเบเปเบเปเบฎเบฑเบเบฅเบฐเบซเบฑเบเบเบปเปเบเบเป, เบเบฒเบเบเบฑเปเบ, เบชเบธเบเบเปเบฒเบ, เบเปเบฒเบเบชเบฒเบกเบฒเบเปเบเปเบฎเบฑเบ node metadata.
เบชเบฐโเบซเบผเบธเบ
เบเบงเบเปเบฎเบปเบฒเบเบฐเปเบกเบตเบเบเบปเบเปเบเปเบฎเบฑเบเบเบญเบเบเบฒเบเบเบฐเบเบดเบเบฑเบ LMDB เปเบเบเบฒเบเบเบงเบ. เบซเบผเบฑเบเบเบฒเบเบเบตเปเบกเบฑเบ, เบเปเบฒเบเบงเบเบเบญเบเบเปเบฒเบฎเปเบญเบเบชเบฐเบซเบกเบฑเบ freezes เบซเบผเบธเบเบฅเบปเบเปเบเบ 30%.
เบเบปเบเปเบเปเบฎเบฑเบเบเบญเบเบเบฒเบเปเบฎเบฑเบเบงเบฝเบเปเบฎเบฑเบเปเบเป resonated เปเบเบตเบเบเบงเปเบฒเบเบตเบกเบเบฒเบ iOS. เปเบเบเบฑเบเบเบธเบเบฑเบ, เบซเบเบถเปเบเปเบเบเบฒเบเบชเปเบงเบ "Files" เบเบปเปเบเบเปเปเบเปเบญเบฑเบเบเบฅเบดเปเบเบเบฑเบ Android เบเบฑเบเปเบเปเบเปเบฝเบเปเบเปเบเป LMDB, เปเบฅเบฐเบเบฒเบเบชเปเบงเบเบญเบทเปเบเปเปเบกเปเบเบขเบนเปเปเบเบเบฒเบ. เบเบฒเบชเบฒ C, เบเบตเปเปเบเบฑเบเบฎเบฑเบเบชเบฒ key-value เปเบเปเบเบทเบเบเบฐเบเบดเบเบฑเบ, เปเบเบฑเบเบเบฒเบเบเปเบงเบเปเบซเบผเบทเบญเบเบตเปเบเบตเปเบเบเบฒเบเบชเปเบฒเบเปเบเบเบฎเปเบฒเบเบเบฒเบเบเปเบฒเบฎเปเบญเบเบชเบฐเบซเบกเบฑเบเบเบฐเบกเบฒเบเบกเบฑเบเบเปเบฒเบกเปเบงเบเบตเปเบ C ++. เปเบเบทเปเบญเบเบชเปเบฒเบเบฅเบฐเบซเบฑเบเบเบทเบเบเปเบฒเปเบเปเปเบเบทเปเบญเปเบเบทเปเบญเบกเบเปเปเบซเปเบญเบเบชเบฐเบซเบกเบธเบ C ++ เบเบตเปเปเบเบฑเบเบเบปเบเบกเบฒเบเบฒเบเบฅเบฐเบซเบฑเบเปเบงเบเบตเปเบ Objective-C เปเบฅเบฐ Kotlin.
เปเบซเบผเปเบเบเปเปเบกเบนเบ: www.habr.com