2019 แฌแแแก แจแแแแแแแแแแ Mail.ru Cloud iOS แแฃแแแจแ แแแแ แฎแแแก แแแแแขแ แ แฆแแแแกแซแแแแ แแแแแแ แแ. แแแแแแแชแแแก แแแแแแแ แแแแแก แแฃแแแแแ แจแแแแฎแแแก แซแแ แแแแแ แแแแแชแแแแ แแแแ แกแแแแแแ แแแแแขแแแฃแ แ แแแฎแแ แแแแแแฃแ แ แกแแแงแแ แแกแแแแก
แแแคแแ แแแชแแแก
แแแแฎแแ แชแแแแแแแก แแแขแแแแชแแ LMDB แแแแแชแแแแแ แแแ แกแแแ แแแจแแแ LMDB
3.1.แแแจแแแ #1. แแแฎแกแแแ แแแแ แจแแแแแแแแ แคแแแแแแ
3.2.แแแจแแแ #2. B+-แฎแ
3.3.แแแจแแแ #3. แแแแแ แแแ แฉแแฌแแ แแแ แแแแแชแแแแ แกแฅแแแแก แจแแแฃแจแแแแแ แแแกแแฆแแแ-แแแแจแแแแแแแแก API-แก แแแแแ
4.1.แซแแ แแแแแ แแแกแขแ แแฅแชแแแแ
4.2.แแแแแแแก แแแแแแแ แแแ
4.3.แชแฎแ แแแแแก แจแแ แแก แฃแ แแแแ แแแแแแแก แแแแแแแ แแแ
1. แแแแฎแแ แชแแแแแแแก แแแขแแแแชแแ
แฌแแแแฌแแแจแ แแ แแฎแแ, 2015 แฌแแแก, แแแแ แฃแแแ แแแแแ, แแฃ แ แแแแแแแ แฎแจแแ แแ แฉแแแแ แฉแแแ แฉแแแแ แแแแแแแชแแแก แแแขแแ แคแแแกแ. แฉแแแ แแฎแแแแ แแก แแ แแแแแแแแแ. แฉแแแ แฃแคแ แ แแ แฃแคแ แ แแแขแ แแ แแขแแแแแ แแแแฅแแก แแแแก แแแแ, แ แแ แแแแฏแแ แแแแแแแชแแ แฌแงแแแขแก แแแกแฃแฎแก แแแแฎแแแ แแแแแก แฅแแแแแแแแแ: แฆแแแแแแแ แแ แแ แแก แแแญแแ แแแ, แกแแแแ แแ แแแแแฎแแแแ แแ แ.แจ. แแแแแแแแแแก แแแฅแแแแแแก แจแแกแแฎแแ
แแแแแแแแก แจแแแแแแแ แฉแแแแแแแก แชแแแ แจแฎแแแ แแแฎแแ. แแฆแแแฉแแแ, แ แแ แงแแแแแแแ แแแแแฌแแแฃแแ แแ แแแแแแแแ แกแฎแแแแ แแแแ แแ แแแขแแ. แแฃ แแ แคแแฅแขแแก แแแชแแแแแแ แแแแแแ แฎแแ แแกแฎแแก แแแแแแ แ แขแแฅแแแแฃแ แ แแแฉแแแแแแแแ แแงแ แแแแ แแแก แแแ แแจแ, แแแจแแ แคแแแฃแกแแก แจแแแแแ
แแจแแแแแฃแแ
แกแแกแขแแแแก แแ แแแแแแแชแแแก แแฅแขแแ แแก แแแแแแ แแแ แแฃแแแแก, แ แแ แแ แแแแแซแแแแแแแแ แฎแแแแ แแแกแ แแแแ แ แแ แกแ. แแแแแแแก แแแแแฅแขแแแก แแแกแจแ แแแกแฌแแแ แซแแคแแก แกแแแฆแแ แแแแก แแแแแแแแแ. แแ แแกแแแ แแแแก แแแแแแแแ แแ แ แฎแแแแแฎแแ แแ แแแแแ, แแ แแแแ แแแแฅแแแก แแฃแแแแแแ แแ แงแแแแแแ.
แแแแแชแแแแ แแแแ แฌแแ แแแแแแแแ แแแแแ แแแแจแ แแ แ-แแ แแ แฅแแแแฃแแฎแแแ แแแแแแแแแขแแ. แแแกแ แแแแแแ แ แแแแชแแแแ แแแแ แ แจแแแแแแแก แแแแฎแแ แชแแแแแแ
แแแแ แ แแแแจแแแแแแแแแ แคแแฅแขแแ แ, แ แแแแแแแช แแแแแแแ แแแแฎแแแแ แแแแแชแแแแ แแแแแก แแ แฉแแแแแแ, แแงแ แฉแแแแ แฆแ แฃแแแแแแแ API. แแก แจแแแแแแแแฃแแ แแงแ แกแแแฅแ แแแแแแชแแแก git แแแแแแแแ. แแแก แแกแแแแกแแ แฉแแแ แแแแแแ แแแแแกแแฎแแ
แแกแ แ แแ, แแฃ แฌแแ แแแแแแแแแแแ git, แ แแแแแแช pull แแ แซแแแแแแก แจแแกแ แฃแแแแแกแแก, แแแแแแฃแ แกแแแแจแแขแแ แแแฉแแแแก แแแแแงแแแแแแก แแแชแแแแ, แแแแ แแแก แแแก แกแ แฃแ แแแแแแแ แแแแแก แกแ แฃแ แกแแ แแแ แแแ, แแแจแแ แแแฅแแแแแ แกแแแแแแ แแฃแกแขแ แฌแแ แแแแแแแ แกแแแฅแ แแแแแแชแแแก แจแแกแแฎแแ. แฎแแแแ แฆแ แฃแแแ แแแแแแขแแแจแ. แแแแแแ แแแกแแฎแแแแ แแ, แ แแ แแแกแ แแแแฎแแ แชแแแแแแแกแแแแก แแฃแชแแแแแแแแ แแแฎแกแแแ แแแแจแ แแ แ DOM แฎแแก แแแแแงแแคแ แแแขแ-แแแคแแ แแแชแแแ แงแแแแ แกแแ แแแ แแกแ แแ แแแแแแฃแ แ แคแแแแแก แจแแกแแฎแแ. แแแแแแแก, แ แแ แแฃ แแแแฎแแแ แแแแแ แฆแ แฃแแแแจแ แแแแฎแแแก 500 แแแแก แคแแแแก, แจแแแแแ แแแกแ แกแแแฅแ แแแแแแชแแแกแแแแก แแฃแชแแแแแแแแ แแ แ แฎแแก แฎแแแแฎแแ แจแแฅแแแ แแ แแแแแแแฃแ แแแ 1 แแแแแแแ แแแแแซแแ. แแแแ แแ แแแแแแฃแแ แแแแแซแ แแ แแก แแแ แแแแขแ, แ แแแแแแช แจแแแชแแแก แฅแแแแแแแฅแขแแแแก แแ แแคแแแก. แแ แแแแแกแแแ แแกแแ, แแแกแแแแแแแแ แแงแ แแ แแคแแแแก แจแแแแแแแ. แแฆแแแฉแแแ, แ แแ แจแแ แฌแงแแแก แแแแแ แแแแแก แแแแแแแแกแฌแแแแแแก แแแ แแจแแช แแ, แแแแ แ แแแแแแแแแ แแชแแ แ แแแแแฅแขแแแแก แจแแฅแแแแก แแ แจแแแแแ แแแแแแแฃแ แแแแก แแ แแชแแแฃแ แ แกแแแแแแ แซแแแ แ แฆแแ แก.แกแแขแฃแแชแแแก แแแซแแแแแก แแก แคแแฅแขแ, แ แแ แซแแ แแแแแ แกแแแฅแ แแแแแแชแแแก แแแแ แแชแแ แจแแแแก แแแ แ แแแแแแแแแจแ. แแแแฎแแแ แแแแแก แกแแ แแแขแแแ. แจแแแแแแ, แฉแแแ แแแคแแฅแกแแ แแแ แแแแ แ แแแแจแแแแแแแแ แแ แแขแแ แแฃแแก แแแแแชแแแแ แแแแแก แแ แฉแแแแกแแก - CRUD แแแแ แแชแแแแแก แแแแฎแแ แชแแแแแแแก แจแแกแแซแแแแแแแ แแแแแฅแขแแแแก แแแแแแแฃแ แ แแแแแฌแแแแแแก แแแ แแจแ.
แกแฎแแ แแแแฎแแแแแแ แฃแคแ แ แขแ แแแแชแแฃแแแ แแ แแแแ แกแ แฃแแ แกแแ แจแแแแแแแ.
- แซแแคแแก แฃแกแแคแ แแฎแแแแ.
- แแ แแแแแแ แแชแแกแแ แแแ. แแแแแ แแแฎแแแแ แแแแแชแแแแ แแแแแก แแแแแ แแแแแแแแแก แแแแแงแแแแแแก แกแฃแ แแแแแ, แ แแแ แแแฎแแแก แแแแแแแ แแแแแก แกแแแฅแ แแแแแแชแแ แแ แ แแฎแแแแ แซแแคแแแก แจแแ แแก, แแ แแแแ แแแแแแ แแแแแแแชแแแกแ แแ iOS แแแคแแ แแแแแแแก แจแแ แแก.
- แจแแแแฎแฃแแ แแ แแแฃแแแแแก แแ แแชแแแแแแแแ แแแแแฅแขแแแแก แกแแฎแแ แฌแแ แแแแแแแแก แจแแกแแซแแแแแแแ
- แแแแแแแฃแ แ แแแแแฌแแแแแแก แแแแแแแแแ CRUD แแแแ แแชแแแแจแ.
- แขแ แแแแแฅแชแแแก แแฎแแ แแแญแแ แ แซแแ แแแแแ แแแแกแแแแแแกแแแแก
ACID แกแแแแแแซแ แกแแขแงแแแแ: แแขแแแฃแ แแแ, แแแแแแแแแแ แฃแแแแ, แแแแแแชแแ แแ แกแแแแแแแแแ. - แกแแฉแฅแแ แ แงแแแแแแ แแแแฃแแแ แฃแ แจแแแแฎแแแแแแแ.
แแแแฎแแแแแแแก แแ แแแแ แแแแ, 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-แก แจแแ แแก แแ แฉแแแแกแแก. แแแแแ แแแชแแแฃแแ แแแแแ แแแ แแแแแแ แแฉแแแแแแก, แแฃ แ แแแแ แแแแฆแฌแแแ แแแแ แแแแ แกแแฉแฅแแ แ. แแแ แแแแ, แฉแแแ แแ แแแฎแแแ แแแกแขแ แแฅแชแแแก แแแแแขแแแแ แคแแแแแก แแแกแแแก แจแแแแฎแแแก แแแแแ. แ แ แแฅแแ แฃแแแ, แแแ แ แแ แฅแแขแแฅแขแฃแ แแจแ, แแแ แแแ แแจแ แแแแแช แแ แจแแแแซแแแแ แแ แแกแแแ แแฃแชแแแแแแแ แแแแแฉแแแแแ แแแแแชแฎแแแแก แแแแจแ, แแแแ แแ แแกแแแ แแแแ แแ แฃแคแ แ แแฎแแแ แแฅแแแแ. แแแ แแ แแฅแแแแแ แคแฃแแฅแชแแแแ, แ แแแแแแแช แแ แแ แแก แกแแญแแ แ แแแแแ แแขแฃแแ แแแแแแแชแแแกแแแแก, แแแแแแแแแ, SQL แแแแแ แแแแฎแแแแแแแก แแฎแแ แแแญแแ แ. แแแแ แแช, แจแแกแแซแแแแแแ แฎแแแแ แแแแแแแชแแแก แแแแ แแชแแแแแก แแแขแแแแแฃแ แแ แแแแแ แแแ แแแกแแแก แจแแแแฎแแแก แแแแฎแแแแแแแ. แแฃ SQLite
3. แกแแแ แแแจแแแ LMDB
แแแก แจแแแแแ, แ แแช LMDB-แก แฉแแขแแก แแแแแแ แจแแฎแแแแ, แแ แแ แฃแคแ แ แฆแ แแแ แจแแฎแแแแแ. แจแแแแแแ แกแแแ แแแแงแแคแแแแแ แแแแแแแแ แซแแ แแแแแ แแแจแแแแแแก แแแแแแแก, แ แแแแแแแแช แแแคแฃแซแแแแฃแแแ แจแแแแฎแแแก แแ แฅแแขแแฅแขแฃแ แ:
- แแแฎแกแแแ แแแแ แจแแแแแแแแ แคแแแแแแ, แ แแแแ แช แแแกแแแแ แแฃแจแแแแแก แแแฅแแแแแแ แแ แแแแแชแแแแ แจแแแ แกแขแ แฃแฅแขแฃแ แแแแก แกแแแฅแ แแแแแแชแแ.
- B+-แฎแ, แ แแแแ แช แจแแแแฎแฃแแ แแแแแชแแแแ แกแขแ แฃแฅแขแฃแ แแก แแ แแแแแแแชแแ.
- Copy-on-Write แ แแแแ แช แแแแแแแ ACID แขแ แแแแแฅแชแแแก แแแแกแแแแแแกแ แแ แแ แแแแแแแ แกแแแก แฃแแ แฃแแแแแกแแงแแคแแ.
3.1. แแแจแแแ #1. แแแฎแกแแแ แแแแ แจแแแแแแแแ แคแแแแแแ
แแแฎแกแแแ แแแแ แจแแแแแแแแ แคแแแแแแ แแกแแแ แแแแจแแแแแแแแแ แแ แฅแแขแแฅแขแฃแ แฃแแ แแแแแแแขแแ, แ แแ แแกแแแ แกแแชแแแจแแช แแ แฉแแแแแ. แฅแแจแแ แแแแกแ แแ แจแแแแฎแฃแแ แแแคแแ แแแชแแแก แฌแแแแแแก แกแแแฅแ แแแแแแชแแแก แกแแแแแฎแแแ แแแแแแแแ แแแแ แแชแแฃแแ แกแแกแขแแแแก แฌแงแแแแแแ. LMDB แแ แจแแแชแแแก แ แแแแ แฅแแจแก แแแแแก แแแแจแ. แแก แแแขแแ แแก แจแแแแแแฃแแ แแแแแฌแงแแแขแแแแแแ, แ แแแแแ แแแแแชแแแแแแก แฌแแแแแฎแแ แแแ แแแแแ แ แฃแแแ แแแฃแแ แคแแแแแแแแแ แกแแจแฃแแแแแแก แแแซแแแแ แแแญแ แแ แแ แแแแแ แแฃแแฎแ แซแ แแแแก แแแแฎแแ แชแแแแแแแจแ. แฅแแแแแ แแแชแแแฃแแแ แแแแแแ แแ แแแแแแแแก แกแ แฃแแ แกแแ.
- แกแแชแแแจแ แแแแแชแแแแ แแแแแแแแแแ แฃแแแแแก แจแแแแ แฉแฃแแแแ แ แแแแแแแแ แแ แแชแแกแแแแ แแแกแแแ แแฃแจแแแแแกแแก แฎแแแแ แแแแ แแชแแฃแแ แกแแกแขแแแแก แแแกแฃแฎแแกแแแแแแแแ. แจแแแแแ แแแแงแแคแแแแแแจแ แแก แแแฅแแแแแ แแแขแแแฃแ แแ แแ แกแฃแ แแแแแแ แแ แแก แแแแฎแแแฃแแ.
- แฅแแจแแแแก แแ แแ แกแแแแแ แแแแแแแแ แแแแแแกแฃแคแแแแก LMDB-แก แแแแแแแแแแกแแแ, แ แแแแแแช แแแแแแจแแ แแแฃแแแ แแแแแแแฃแ แแแแแฌแแแแแแกแแแ. แแ แแฅแขแแแแจแ แแแแแชแแแแแแก แฌแแแแแฎแแ แแแจแแแแก แแแฉแแแแแแแแก แกแฌแแ แแแกแแแแ แแแ แแแงแแแแแแก แแแ แขแฃแแแฃแ แแแฎแกแแแ แแแแจแ แแ แแแขแ แแ แแคแแ แ. แแฆแแ แก แ แแแแ แช แคแแแขแแแแ, แแแแ แแ แกแแชแแแแก แฌแงแแ แแจแ แงแแแแ calloc แแแ แ แแแแชแแแขแ แแ แแแฃแแแ แกแแชแแแแก แแแแคแแแฃแ แแชแแแก แคแฃแแฅแชแแแจแ.
- แฅแแจแแแแก แแ แแ แกแแแแแ แแกแแแ แแแจแแแแก แกแแแแขแแแแก แแ แแ แกแแแแแแก, แ แแแแแแแช แแแแแแจแแ แแแฃแแแ แกแแแฅแ แแแแแแชแแแกแแแ แแแแแ แฌแแแแแแกแแแแก. แแแแแฎแแแแแแ, แ แแแแแแ แแแแแแแแฃแ แ แ แแชแฎแแ แแ แแแ แแฃแแแ แจแแแซแแแแ แแ แกแแแแแแแก, แแแแแชแแแแแแกแแแ แแแแแแแ แแแแแ แแ แช แแ แ แแฃแขแแฅแกแก แแ แแฌแงแแแแแแ. แแแแก แแแแ แฌแแแแแฎแแแก แกแแฉแฅแแ แแก แแฅแแก แแแแแแฃแ แ แฎแแแแแแแ แแแกแจแขแแแแ แแแ CPU-แแแแก แ แแแแแแแแแก แแแฎแแแแแ. LMDB-แจแ แกแแแฅแ แแแแแแแฃแแแ แแฎแแแแ แแแแแคแแชแแ แแแฃแแ แแแแ แแชแแแแ. แจแแแซแแแแ แแงแแก แแฎแแแแ แแ แแ แแฌแแ แแแ แแ แแแ แแฃแแแ.
- แฅแแจแแ แแแแกแ แแ แกแแแฅแ แแแแแแชแแแก แแแแแแแแฃแ แ แแแแแแ แแแแฎแแแก แแแแก แฃแแแแฃแ แแกแแ แ แแฃแแ แขแแแแก แจแแชแแแแแแแกแแแ, แ แแแแแแแช แแแแแแจแแ แแแฃแแแ แแ แแแแ แฎแ แแฎแแแแ แแแ แแแแจแ แแฃแจแแแแแกแแแ. Usenix OSDI 2014 แแแแคแแ แแแชแแแแ แแ แ แกแแแแขแแ แแกแ แแแแแชแแแแ แแแแ แแงแ:
"แงแแแแ แคแแแแฃแ แ แกแแกแขแแแ แแ แแ แแก แจแแฅแแแแแ แแแแแแแ แ: Craft-แแก แแแแแแแแแแ แฃแแ แแแแแแแชแแแแแก แจแแฅแแแแก แกแแ แแฃแแแแ" ะธแแแ แแแแแกแ แแ แแแแแแแก แแแแแแ แแแแแชแแแแ แแแแแแแก แฌแแแแแ . แแแแแแ แจแแแแซแแแแ แแแแฆแแ แแแคแแ แแแชแแ แ แแแแ แช LMDB-แแก แฃแแ แแชแแแแแขแ แกแแแแแแแแแแก แจแแกแแฎแแ, แแกแแแ แขแ แแแแแฅแชแแแแแก ACID แแแแกแแแแแแก แแแแฅแแแก แฃแแแแแ แแแแฎแแ แชแแแแแแแก แจแแกแแฎแแ, แ แแช แแแก แแญแแ แแแแก แแแแแ SQLite-แจแ. - LMDB-แแก แแแแแแแแแแแ แกแแจแฃแแแแแแก แแซแแแแก แแแกแ แแแแแก แแแแฅแแแฃแ แฌแแ แแแแแแแแก แแแแแแแแ แแแแแแแกแแแก แแ แแชแแกแแ แแก L1 แฅแแจแจแ แแแฆแแแฃแแ แกแแฉแฅแแ แแก แแแฎแแกแแแแแแแแแแ.
แกแแแฌแฃแฎแแ แแ, iOS-แจแ แแแฎแกแแแ แแแแก แ แฃแแแแ แแแขแแแแแ แคแแแแแแ แแ แแ แแก แแกแแแ แแแ แแแกแคแแ แ, แ แแแแ แช แฉแแแ แแแกแฃแ แก. แแแแแแ แแแแแแจแแ แแแฃแ แแแแฃแกแแแแ แฃแคแ แ แจแแแแแแฃแแแ แ แแ แแแกแแฃแแ แแ, แแฃแชแแแแแแแแ แแแแแฎแกแแแแ แแแแ แแชแแฃแ แกแแกแขแแแแแจแ แแ แแแฅแแแแแแแก แแแแแ แแแแก แแแแแแ แแ แแแชแแแแแ.
แแแแแแ แแแคแแ แแแชแแ แแแฎแกแแแ แแแแ แจแแแแแแแแ แคแแแแแแแก แจแแกแแฎแแ
แแแแแแฃแ แจแแกแ แฃแแแแแ แแแแแแแชแแแกแแแ แแแแ แแชแแฃแแ แกแแกแขแแแ แแแ แแแแแแแก แแ แแแฃแแก, แ แแแแแกแแช แแฌแแแแแ แแ แแชแแกแ. แแแแแแฃแ แแ แแชแแกแก แแแแญแแแ แแแกแแแแ แแแแแก แแแแแฏแแแแ แแแแแแแแแ, แ แแแแแจแแช แแก แแแแแกแแแก แงแแแแแคแแ แก, แ แแช แกแแญแแ แแ แกแแแฃแจแแแ. แงแแแแแแ แแแแแแ แแแกแแแแ แแแแ แจแแแชแแแก แกแแฅแชแแแแก แแแแแ แแ แแงแแ แ แแแแแ แแแฃแแ แแแแแชแแแแแแ แแ แ แแกแฃแ แกแแแแ. แจแแแแแแ แแแแแก แแแแแแแฃแ แ แแแกแแแแ แแแแแก แกแแแ แชแแก แแแแ แแ แแแแแ, แ แแแแแแช แฉแแแแแแแก แแแ แแแ แแ แแก แชแแแแแแ แ แแแแ แช แแ แแแ. แแก แจแแแชแแแก แแ แแแฃแแแแแก แแแกแแแแ แแแแก, แ แแแแแแแช แแแแแฉแแแแแ แแ แแแ แแแแก แแฃแจแแแแแก แแ แแก. แแแแ แแ แแก แแแฎแกแแแ แแแแก แคแแ แแแแ, แ แแแแแกแแช แแงแแแแแก แแแแแแแชแแแก แกแขแแแ. แแก แแ แแแ แแแแ, แแ แแชแแ แแแแ, แกแฎแแ แกแแขแงแแแแแ แ แแ แแแฅแแแ, แแแก แแแแแกแแช แแฅแแก แแแแแแแฃแ แ แแฃแแแแ. แแแแกแแแแแก, แ แแ แแแกแขแ แแ แแ แแแ แแ แแแซแฃแแแก แแ แแ แฉแแแ แแแก แแ แแแแแแแก, แแกแแแ แแแแชแแแแแแแแฃแแแ แแแกแแแแ แแแแแก แกแแแ แชแแก แกแฎแแแแแกแฎแแ แแแแแแแจแ, แแ แแแแแแแฃแ แแแแแแแแแก แจแแ แแก แแ แแก แฎแแ แแแ แแแแ แแ แฅแแแแ แแแฌแแแจแ. แแ แจแฃแ แแแแงแแคแแแแแแก แแแกแแแแ แแแแ แแแแแแงแแแแแ แแแแ แแชแแฃแแ แกแแกแขแแแแก แแแแ แกแฎแแแแแกแฎแแ แแ แแแฃแแแแแก แแ แแชแแกแแแ แแแกแแแแแจแแ แแแแแ. แแแ แซแแ, แแแก แจแแฃแซแแแ แแแกแแแ แแ แกแแแฃแ แคแแแแแ แแแกแแแแ แแแแแก แแแ แแแแฃแแ แฃแฌแงแแแขแ แแแแ แแแ. แแกแแ แคแแแแก แแฌแแแแแ แแแฎแกแแแ แแแแ แจแแแแแแแแ แคแแแแ
แแ แแชแแกแแกแแแแก แแแแแงแแคแแแ แแแกแแแแ แแแแแก แกแแแ แชแ แฃแแแ แแแแแ แแ. แแแแ แแฃแแแ, แแแกแแแแ แแแแแก แ แแแแแแแแ แจแแแแแคแแ แแแแแ แแฎแแแแ แแแฉแแแแแแแแก แแแแแ, แ แแแแแแช แแแแแกแแแฆแแ แแแ แกแแกแขแแแแก แแแขแแฃแ แแแแ. แแฃ แแแก แคแแแแแฃแ แแแฎแกแแแ แแแแก แแแแแแญแแแ 1-แจแ-1, แแแจแแ แแแ แแแแ แแ แแชแแกแ แแแแ RAM-แก แฌแแแแแแแก แแ แแ แแแแแแ แ แแ แแแแแแแแชแแแแก แจแแกแ แฃแแแแแแ แแ แแฅแแแแ แกแแฃแแแ แ.
แแฃแแชแ, แแแแแชแแแแแแแแแ แแแชแแ, แ แแ แแแแแแแแ แแแ แแแแ แแชแแฃแ แกแแกแขแแแแแก แจแแฃแซแแแแ แแแแแแ แแ แแชแแกแแก แแแจแแแแ, แ แแแแแแแช แแกแฃแ แ แแ แแแ แแฃแแแ. แแก แจแแกแแซแแแแแแแ แแแแก แแแแ, แ แแ แแกแแแ แฃแแแ แแ แแแฎแกแแแ แแแแก แฃแแแแแแ แแ แแชแแกแแแก แแฎแแแแ แฅแแฆแแแแแ, แแแแ แแ แกแแแแแแแแแแจแ แแกแแแ แแขแแแ แแแแแ แซแแ แแแแ แคแแแแแฃแ แแแฎแกแแแ แแแแจแ แแฎแแแแ แแ แแแฌแแแก, แ แแแแแแช แแแแฎแแแแแแแ แแฅ แแ แแฎแแ. แแแแขแแ แแ แแชแแกแแแ แแแแแแจแแ แแแฃแ แแแฎแกแแแ แแแแก แแแ แขแฃแแแฃแ แ แแฌแแแแแ.
แแแแ แแชแแฃแแ แกแแกแขแแแ แแฌแงแแแก แแแ แขแฃแแแฃแ แแ แคแแแแแฃแ แแแฎแกแแแ แแแแก แแแ แแแแฃแแ แแแแแก แแแแ แแแแแ. แ แแแแ แช แแ แแแ แขแฃแแแฃแ แ แแแฎแกแแแ แแแแก แแแ แแแแฃแแ แแแแ แแ แแแแฎแแแแแแแ, แแแแ แแชแแฃแแ แกแแกแขแแแ แแขแแแ แแแแ แแแก แคแแแแแฃแ แแแฎแกแแแ แแแแจแ แแ แแแแแกแแแก แแแ แจแแ แแก แจแแกแแแแแแกแแแแก แกแแแชแแแแฃแ แชแฎแ แแแจแ. แแฃ แแ แแ แแก แฃแคแแกแ แกแแแขแแแ, แแแจแแ แแ แ-แแ แแ แแแ แ แแแขแแแ แแฃแแ แแแแ แแ แแแแแ แแแแ แแแกแแแ แแ แแแแฎแแแแแแ แแแแแแแก แแแก แแแแแแก. แแ แแ แแชแแแฃแ แแก, แ แแแแแกแแช แแแแ แแแแฃแแ แฃแแแแแแ, แแแชแแแ แฐแฅแแแ. แฅแแแแแ แแแงแแแแแแ แคแแแฃแ แ แแกแแฎแแแก แแฆแฌแแ แแ แแ แแชแแกแก. แแแกแแ แฉแแแขแแแ แแ แแแแ แแ A แแแกแแแแ แแ 0 แแ แแแแแแแกแแ แแแฎแกแแแ แแแแก แแแแแแ แแแแ แแแ 4 แแแกแแแแ แแแ. แแก แคแแฅแขแ แแแกแแฎแ แแแ แแกแแแแแแแชแแแก แชแฎแ แแแจแ แฃแฏแ แแก แแแแแ แ 0-แจแ.โ
แแแฎแกแแแ แแแแ แจแแแแแแแแ แคแแแแแแแ, แแแแแแ แแฃแกแขแแ แแแแแแ. แแแแแแฃแ แแ, แแกแแแ, แกแแแแ แแฃแแแ, แแฃแแแแแแ แแ แแแแแแแแ แแแแแแกแแแฃแแแ แแแ แขแฃแแแฃแ แแแกแแแแ แแแ แกแแแ แชแแจแ. แแฃแแชแ, แแกแแแ แจแแแแแ แคแแแแแฃแ แแแฎแกแแแ แแแแจแ แแแแ แแ-แแแแ แ แแ แแฎแแแแ แแแแฎแแแแแ. แแกแแแ แแแแ แแแแแก แแแแแคแแแแชแแ แกแแแฅแ แแแแแแแฃแแแ แแแกแแแ แแ แกแแแฃแ แคแแแแแแ. แแแ แแแแ, แแฅแแแ แจแแแแซแแแแ แจแแแกแ แฃแแแ แคแแแแ I/O, แฃแแ แแแแ แแแฃแจแแแ แแแฎแกแแแ แแแแจแ แแแแขแแแแแ - แงแแแแ แชแแแแแแแ แแแขแแแแขแฃแ แแ แแแแแแชแแแ แแแแ แแชแแฃแแ แกแแกแขแแแแก แแแ แแแแก แแแแ แแแแแแแแ แแแ แคแแแแจแ.
โ
แฅแแแแแ แแแงแแแแแแ แกแฃแ แแแ แแแแฉแแแแแแก, แแฃ แ แแแแ แแฎแแแแก LMDB แกแแแฅแ แแแแแแชแแแก แแแกแ แแแแแแแ แแแแ แแแแแชแแแแ แแแแแกแแแ แแฃแจแแแแแกแแก แกแฎแแแแแกแฎแแ แแ แแชแแกแแแแแแ. แกแฎแแแแแกแฎแแ แแ แแชแแกแแแแก แแแ แขแฃแแแฃแ แ แแแฎแกแแแ แแแแก แแ แแกแ แแ แแแแแ แคแแแแแ แแแแแขแแแแ, แฉแแแ แแ แคแแฅแขแ แแแแแแแแแฃแแแแ แแแแ แแชแแฃแ แกแแกแขแแแแก แขแ แแแแแชแแฃแแแ แแแแฎแแแแแก แแแแ แแแกแแแแ แแแก แกแแแ แชแแก แแแ แแแแฃแแ แแแแแแแแก แกแแแฅแ แแแแแแชแแ แแ แแแแแแแแแ, แกแแแแช LMDB แแแแแแงแฃแ แแแ.
โ
แแแแจแแแแแแแแแ แแแฃแแแกแแ แแก, แ แแ LMDB แชแแแแก แแแแแชแแแแ แคแแแแก แแแแฃแแแกแฎแแแแแ แฉแแฌแแ แแก แกแแกแขแแแฃแ แ แแแ แแก แแแฅแแแแแแแก แแแจแแแแแแ แแ แแแแแ แคแแแแ แแแแแฉแแแแแ แแฎแแแแ แฌแแแแแฎแแแก แ แแแแแจแ. แแ แแแแแแแแก แแฅแแก แแ แ แแแแจแแแแแแแแแ แแแแจแแแแแแแ.
แแแ แแแแ แจแแแแแ แกแแแ แแแ แงแแแแ แแแแ แแชแแฃแแ แกแแกแขแแแแกแแแแก. แแแกแ แแ แกแ แแ แแก แแแแแชแแแแ แแแแแก แฃแแแแแแ แแแแแแแแแแกแแแ แแแชแแแก แแแแแขแแแ แแ แแกแฌแแ แ แแแแแ. แ แแแแ แช แแแแแฎแกแแแแแแ, แแ แแชแแกแแก แจแแกแ แฃแแแแแแ แแแกแขแ แฃแฅแชแแแแ แแแแแกแฃแคแแแ แแ แแก แฎแแแแแกแแฌแแแแแ แแแกแแแแ แแแแแก แกแแแ แชแแก แแแแแกแแแแ แ แแแแแแแแแ. แแแแแแ แแฃแแแ, แ แแแแ แช แแฎแแ แแแแฎแกแแแก, แคแแแแแก แฌแแแแแฎแแ-แฉแแฌแแ แแก แ แแแแแจแ แฉแแแแแแ แแแจแแแแก, แ แแ แแแแแกแแแแ แแแกแขแ แฃแฅแชแแแก แแกแแแ แจแแฃแซแแแ แแแกแ แจแแชแแแ. แแฃ แแก แแแแก แจแแชแแแแแ แแแแแแแก แแ แชแแแแแแก, แแแแแแแแแ, แ แแแแฃแ แแ แแแแแฌแแ แแก แแแกแแแแก แแแแแแแขแ แแ แแ แกแแแฃแ แแแแแฅแกแแ, แแแจแแ แแ แแแแ แแแก แจแแฃแซแแแ แจแแแแฎแแแแแ แจแแชแแแแแก แคแแแแ แแ แแแกแแแแ แแแ, แ แแช แแแแแแฌแแแแก แแแแแชแแแแ แแแแแก แแแคแฃแญแแแแก. แแฃ แคแแแแ แแแฉแแแแแแแ แแฎแแแแ แฌแแแแแฎแแแก แ แแแแแจแ, แแแจแแ แแแก แจแแกแแแแแแกแ แแแกแแแแ แแแก แกแแแ แชแแก แจแแชแแแแก แแชแแแแแแ แแแแแแฌแแแแก แแ แแแ แแแแก แแแแ แแแก แกแแแแแแแแ. SIGSEGV
แแ แคแแแแ แฎแแแฃแฎแแแแแแ แแแ แฉแแแ.
แแแแ แ แจแแแแแ แฃแแแ แกแแแชแแคแแแฃแ แแ iOS-แแกแแแแก. แแ แช แแแขแแ แ แแ แแ แช แกแฎแแ แฌแงแแ แแแแ แชแแแกแแฎแแ แแ แแฎแกแแแแแแ แแแก, แแแแ แแ แแแก แแแ แแจแ LMDB แจแแฃแกแแแแแ แแฅแแแแแแ แแ แแแแแแฃแ แแแแ แแชแแฃแ แกแแกแขแแแแแ แแฃแจแแแแแกแแแแก. แจแแแแแแ แแแฌแแแ แแซแฆแแแแแ แแแก แแแแฎแแแแแก.
แแแฎแกแแแ แแแแ แจแแแแแแแแ แคแแแแแแแก แกแแแชแแคแแแ iOS-แจแ
2018 แฌแแแก แแงแ แจแแกแแแแจแแแแ แแแแแ แแจแ WWDC-แแ
แกแฃแคแแ แแแฎแกแแแ แแแ แแ แแก แแแแ แแแแแก แแแแแฅแชแแ, แ แแแแแแ แฃแกแแคแ แแฎแแ แจแแชแแแ แจแแกแแซแแแแแแแ แคแแแแแฃแ แ แแแฎแกแแแ แแแแแแ. แแแแจแ แจแแแแแแแ แแแแแชแแแแแ แจแแแซแแแแ แฎแแแแฎแแ แฉแแแขแแแ แแแก แแแแ แแ แแแแแแแฃแ แ แฌแงแแ แแแแแแแ แกแแญแแ แแแแแกแแแแแ . แแ แแแขแแแแ แแแก แแแแแฃแแแแแแ แแฎแแแแ แฌแแแแแฎแแแแ แแแฎแกแแแ แแแแก แ แฃแแ. iOS-แก แแ แแจแแแแ แคแแแแแ แแแขแแแแแ แแแแ แแแแแก แแแฎแกแแแ แแแแแแ แแแแแกแแแแ แแ แแก แแแแขแแแ แแแ, แ แแแแแ แแแ แแแขแแ แแแฃแแ แแฅแแแแ แแแแ แกแแแฅแ แแแแแแชแแ แแแกแแแ แแ แกแแแฃแ แคแแแแแแ.
โ
แงแแแแ แจแแชแแแแแ แแแแ แแ แแแฎแแแแแ แแแแซแฃแ แแแฎแกแแแ แแแแจแ, แแ แแฅแแก แแแแจแแแแแแแ แกแแ แแแแแแ แแแแก แแกแแแ แแแแแแแแ แแแแแ. แแแ แซแแ, แแ แแแแ แแฅแแแแ แแแแกแแคแแชแแ แแแฃแแ แแแฎแกแแแ แแแแก แ แฃแแแแ แแแขแแแแแ แคแแแแแแ, แ แแแแแแแช แจแแชแแแแแแ แแแแแแ แแแแแแจแแ แแแฃแ แแแ แขแฃแแแฃแ แแแฎแกแแแ แแแแจแ แฉแแฌแแ แแ. LMDB-แแก แแแฎแกแแ แแ แแจแแ MDB_WRITEMAP
แแแกแจแ แชแแแแแแแแแแก แจแแขแแแแก แจแแแแแ แแฅแแแ แแแแแ แแแ แฌแแฃแแแแแแ.
แ แแแแ แช แแ แแแแแแแชแแ แแฌแงแแแก แแแแแแขแแ แแแแ แคแแแแแฃแ แ แแแฎแกแแแ แแแแก แแแแแแแแแก, iOS แจแแแฃแแจแแแก แแแก แแแแซแฃแ แแแแ แแแแก. แแแแซแฃแ แ แแ แจแแแฃแแจแฃแแ แแแแ แแแแแ แแแแแแแแฃแแ แแแฎแกแแแ แแแแก แแแแแฅแชแแ แแแแแแแชแแแก แแแฎแกแแแ แแแแก แ.แฌ. แ แแแแกแแช แแก แแแแฆแฌแแแก แแแ แแแแฃแ แแฆแแ แฃแ แแแแจแแแแแแแแก, OOM แแแแแแแ แกแแกแขแแแแก แแแแแแ แแแแแก แแ แแชแแกแแก แจแแแแแ แแ แแซแฃแแแแแ แฌแงแแแขแก แแแก. แแก แแ แแก iOS-แแก แแแแแกแแแฃแ แแแ แแแกแแขแแแแก แแแแ แแชแแฃแ แกแแกแขแแแแแแแ แจแแแแ แแแแ. แแแแก แกแแแแ แแกแแแ แแ, แแแฎแกแแแ แแแแก แแแแแแญแแแก แจแแแชแแ แแแ แคแแแแแฃแ แ แแแฎแกแแแ แแแแแแ แแแกแแแ แแแแ แแแแแก แแแแแชแแแแ แแ แแ แแก แแแแแแแแกแฌแแแแแฃแแ iOS-แจแ, แแแแแแแแแก แแแแแชแแแแ แแฎแแแแ แจแแแซแแแแ. แจแแกแแซแแแ, แแแแ แแแแแก แแแขแแแกแแฃแ แแ แแแแแแแแแแแแแก แแ แแชแแแฃแ แ แแแกแแแ แแ แฃแแแ แซแแแแแ แจแ แแแแขแแแแแแ แแแแแแฃแ แ แแแฌแงแแแแแแแแแแกแแแแก, แแ iOS แแแแแแแแก SSD แแแกแแแแแ แฃแฏแ แแแแแแก แแแแแฌแแ แแก แ แแกแฃแ แกแก, แแ แจแแกแแซแแแ แแแแแแแแ แแแ แแ แแงแแแแ แแแแงแแคแแแ แกแแกแขแแแแก แกแแแ แแ แคแฃแแฅแชแแแแแ แแแแ, แกแแแแช แงแแแแแคแแ แแ. แแฃแแแแแแ แแชแแแแแแแ. แ แแแแ แช แแ แฃแแแ แแงแแก, แคแแฅแขแ แคแแฅแขแแ แ แฉแแแ.
แแแ แแ แแแแแแ, แ แแแแแแช แฃแแแ แแฆแแแแจแแแ, แแ แแก แแก, แ แแ LMDB แแ แแงแแแแแก mmap แแแฅแแแแแแก แคแแแแแแแก แแแแฃแแแกแฎแแแแแ แแแแแฎแแแแแกแแแแก. แแฅแแแแ แแแแแแแแแแ แแแแก, แ แแ แแแชแแแฃแแ แแแแแชแแแแแ แแแแกแแคแแชแแ แแแแ แ แแแแ แช แกแฃแคแแ แแแฎแกแแแ แแแ iOS-แแก แแแแ แแ แแ แฃแฌแงแแแก แฎแแแก แแแฎแกแแแ แแแแก แแแแแก. แแแแก แแแแแแแฌแแแแ แจแแกแแซแแแแแแแ Xcode แแแกแขแ แฃแแแแขแแก แแแแแงแแแแแแ, แกแแฎแแแฌแแแแแแ VM Tracker. แฅแแแแแ แแแงแแแแแแ แกแแ แแแจแแขแ แแฉแแแแแแก iOS Cloud แแแแแแแชแแแก แแแ แขแฃแแแฃแ แ แแแฎแกแแแ แแแแก แแแแแแแ แแแแแก แแฃแจแแแแแก แแ แแก. แแแกแแฌแงแแกแจแ แแแกแจแ แแแแชแแแแแแแชแแ แแแฎแแ 2 LMDB แแแกแขแแแชแแ. แแแ แแแแก แแแแชแ แกแแจแฃแแแแแ แแแแฌแแ แ แแแแแกแ แคแแแแ 1GiB แแแ แขแฃแแแฃแ แแแฎแกแแแ แแแแแ, แแแแ แแก - 512MiB. แแแฃแฎแแแแแแ แแแแกแ, แ แแ แแ แแแ แกแแชแแแ แแแแแแแก แ แแแแแแแขแฃแแ แแแฎแกแแแ แแแแก แแแ แแแแฃแ แ แแแแแแแแแก, แแ แชแแ แแ แแแแแแแ แแ แฃแฌแงแแแก แฎแแแก แแแแซแฃแ แแแแแก.
แแฎแแ แชแฃแแ แแแแแแแก แแ แแ. 64-แแแขแแแ แแแกแแขแแแแก แแแแ แแชแแฃแ แกแแกแขแแแแแจแ แกแแแแแก แแแฅแแแแแแแก แฌแงแแแแแแ, แแแแแแฃแ แแ แแชแแกแก แจแแฃแซแแแ แแแแแแแแก แแแแแแ แแแ แขแฃแแแฃแ แ แแแกแแแแ แแแก แแแแแแ, แ แแแแแแแแแช แแแแแกแฃแคแแแ แแแแแแ แแงแแ แแแกแแแ แแซแแแแ แแแก แแแขแแแชแแฃแ แแแชแแแแก. IOS-แจแ แกแแแแแก แจแแแฃแแจแแแ แจแแชแแแ แแแแแแ แแ แแแชแแ แแแก แแแแ แแฃแ แแแฅแกแแแฃแแก. แแฎแแ แงแแแแ แชแแชแฎแแแ แแ แแชแแกแ แฃแแแ แจแแแกแแแแแแแแแแก แแแแแแ (แฌแแแแแแฎแแ RAM) แแแฎแกแแแ แแแแก แแ แงแแแแ แแก, แ แแช แแ แฏแแแแ, แแฅแแแแแแแแ แแแ แแซแฃแแแแแ แจแแฌแงแแแขแแก. แแฆแแแจแแฃแแแ แ แแแแ แช แแแแแ
Cloud-แจแ แแฅแกแแแ แแแแแขแแแแก แจแแแแแแ แแแแแฆแแ LMDB-แแก แแแแ แแแแแงแแคแแแ แแแฎแกแแแ แแแแก แจแแแแแแ แแแแแ แแแแกแฃแแ แแแแจแแแแแแแแแ: 384 แแแแแแแแขแ 32-แแแขแแแแ แแแฌแงแแแแแแแแแแกแแแแก แแ 768 64-แแแขแแแแ แแแฌแงแแแแแแแแแแกแแแแก. แแ แแแชแฃแแแแแก แแแแฌแฃแ แแแก แจแแแแแ, แแแแแกแแแแ แ แแแแแคแแชแแ แแแฃแแ แแแแ แแชแแ แแฌแงแแแ แแแแแ MDB_MAP_FULL
. แฉแแแ แแแแแแ แแแแแ แแกแแ แจแแชแแแแแแก แฉแแแแก แแแแแขแแ แแแแจแ, แแแแ แแ แแกแแแ แกแแแแแ แแกแแ แแชแแ แแ, แ แแ แแ แแขแแแแ แฃแแฃแแแแแแงแแคแแแ แแงแแก.
แแแฎแกแแแ แแแแก แแแแแญแแ แแแแฃแแ แแแฎแแแ แแแแก แแ แแชแฎแแแ แแแแแแ แจแแแซแแแแ แแงแแก แฎแแแแ แซแแแแ แขแ แแแแแฅแชแแแแ. แแแแก แแแกแแแแแแ, แแฃ แ แแแแ แแ แแก แแแแแแจแแ แแแฃแแ แแก แแ แ แคแแแแแแแ, แแแแแแฎแแแ แแแ แแแแแแฎแแแแ แแแ แฉแแแแแ แแ แ LMDB แแแจแแแ.
3.2. แแแจแแแ #2. B+-แฎแ
แแแกแแฆแแแแก แแแแจแแแแแแแแก แแแฆแแแแแก แแแแแ แชแฎแ แแแแแแก แแแฃแแแชแแแกแแแแก, แจแแแแแแ แแแแ แแชแแแแ แฃแแแ แแงแแก แฌแแ แแแแแแแแแ แแแก API-แจแ:
- แแฎแแแ แแแแแแแขแแก แฉแแกแแ.
- แแแซแแแแแ แแแแแแแขแ แแแชแแแฃแแ แแแกแแฆแแแแ.
- แแแแแแแขแแก แฌแแจแแ.
- แแแแแแแ แแ แซแแ แแแแแ แแแขแแ แแแแแแแ แแแแ แแแแแแแแแก แแแแแแแแแแ แแแแ.
แแแแแชแแแแ แฃแแแ แขแแแแกแ แกแขแ แฃแฅแขแฃแ แ, แ แแแแแกแแช แแแแแแแ แจแแฃแซแแแ แแแฎแแแ แแแแ แแชแแแก แแแแฎแแ แชแแแแแแ, แแ แแก แแแแแ แฃแแ แกแแซแแแแ แฎแ. แแแกแ แแแแแแฃแแ แแแแแซแ แแ แแก แแแกแแฆแแแ, แ แแแแแแช แงแแคแก แแแแจแแแก แแแกแแฆแแแแแแก แแแแ แฅแแแฏแแฃแคแก แแ แฅแแแฎแแแ. แแแ แชแฎแแแ แแ แแก แแก, แ แแช แฃแคแ แ แแชแแ แแ, แแแแ แ แแจแแแแแ, แฎแแแ แแแ แฏแแแแ - แแก, แ แแช แฃแคแ แ แแแแแ. แแแกแแฆแแแแแแก แจแแแแแแแแ แแแแ แแแแก แแแฆแแแ แแแแฆแฌแแแ แแ แ-แแ แแ แแแแกแแแฃแ แ แฎแแก แแแแแแแแแแ.
แแ แแแแ แฎแแแแก แแฅแแ แแ แ แคแฃแแแแแแแขแฃแ แ แแแแแ, แ แแช แฎแแแก แฃแจแแแก แแแ แแคแแฅแขแฃแ แแแแก, แ แแแแ แช แแแกแแแก แแแแแชแแแแ แกแขแ แฃแฅแขแฃแ แแก. แแแ แแแแ, แแแแ แแแแแแกแแก แฎแแ แแกแฎแ แแ แแแ แแแแแแแ แแแแแแ. แแ แกแแแแแก แฎแแแแแก แแแแแแแแแก แแแแจแแแแแแแแแ แ แแกแแ, แ แแแแแแจแแช แกแฎแแแแแกแฎแแ แขแแขแแแแก แกแแแแฆแแ แจแแแซแแแแ แแแแจแแแแแแแแแ แแแแกแฎแแแแแแแแแแก, แ แแช แแแแจแแแแแแแแแ แแฃแแ แแกแแแก แซแแแแแก แแแแแ แแแแฃแ แกแแ แแฃแแแก แแแกแแแแแแแแแแ แจแแแแ แแแแ. แแแแ แแช, แแแแแซแแแก แจแแ แแก แฏแแแ แแแแแ แแแแจแแ แแแแก แกแแแ แแแแ แแ แแแแแก แแแแแ แฃแ แฎแแแแก แแแฎแกแแแ แแแแจแ แแแแแแแแแชแแแก.แแแฎแฃแ แฃแแ แแแแแซแแแ (แแแ แจแแ แแก แแแฃแแแแแก แแแแแกแแแ แแกแแ) แจแแแซแแแแ แแแแแแแกแแแก แแแ แขแฃแแแฃแ แ แแแฎแกแแแ แแแแก แกแ แฃแแแแ แแแแกแฎแแแแแแฃแ แแแแ แแแแแ. แจแแแแแแ, แฎแแแ แ แแแแแแแแ แแแแแแแแ แแแแแซแแก แฃแแ แแแ แแแแแแแแแแช แแ แจแแแซแแแแ แแแแแฎแแแแก แแแแ แแแแแก แจแแกแแแแ แแแแแ แ แแแแแแแแแก แแแแแฎแฃแแแแ. แแก แแ แแแแแแแ แแแจแแแแช แแ, แ แแแแกแแช แแกแแฃแแ แแแ แแ แแแแแ แฎแแแแแก, แ แแแแ แช แแแฎแกแแแ แแแแก แแแแแชแแแแ แกแขแ แฃแฅแขแฃแ แแก แแคแแฅแขแฃแ แแแแแ, แ แแแแแ แแ แแชแแกแแ แแก แฅแแจแ แแแแ แแแแแก แแฃแแแแแแ แแ แฃแแแ แแ แแ แแก แแแคแ. แ แแแแกแแช แกแแฅแแ แแฎแแแ แแแกแแแแแ แแแแแซแแแแแ แแแแแแจแแ แแแฃแแ แแแแ แแแแแก แฎแจแแ แแ แแแแฆแแแแแก, แงแแแแแคแแ แ แซแแแแแ แชแฃแแแ แฎแแแแ.
B-แฎแแแแ, แ แแแแ แช แแแแแ แฃแแ แฎแแแแแก แแแแแฃแชแแ, แฌแงแแแขแก แฌแแแ แแแแแชแจแ แแแแแแแแแแ แแ แแแแแแแแก. แแแ แแแ แ แแแจแ, แแกแแแ แแแแแแแแกแแแฃแแแ แแ แแแ. แแแแ แแช, แแแแ แแแแแแฃแแ แแแแแซแ แงแแคแก แจแแแแแแแ แแแกแแฆแแแแแแก แแแแแแแฅแขแก แแ แ 2, แแ แแแแ M แแแฌแแกแ แแแแแฃแ แฅแแแฏแแฃแคแแแแ แแ แ แแชแฎแแ M แจแแแซแแแแ แแงแแก แกแแแแแแ แแแแ, แ แแแแแแแแ แแกแแฃแแ แแ แแฃแแแแช แแแแกแแแแ แ แแแแ.
แแแแ:
- แแแแแแฃแ แแแแแซแก แแฅแแก แฃแแแ แจแแแแแแแแ แแแกแแฆแแแแแแก แแแแ แ แแแแแแแแ แแ แฎแแแแ แซแแแแแ แแแแแแแ.
- แฎแ แแซแแแก แแแแแแฃแ แแแแก แแแแกแแแแก แแแฎแกแแแ แแแแจแ, แ แแแแแ แแแแจแแแแแแแแ แแฎแแแก แแ แกแแแฃแแ แแแกแแฆแแแแแ แแฃแแแแ แแแแ แแแแแแแแแฃแแแ แแ แแแแแแแแก แแแแ แแแ แแ แ แแ แแแแแแแ แแแแแซแแ.
- แแแชแแ แแแก แกแแขแ แแแแแขแ แแแแแซแแแแก แ แแแแแแแแแก แกแแซแแแแ แแแแ แแชแแแก แแ แแก แฎแแแ แแแจแแแแแกแแก.
- แแแชแแ แแแก แแแแแแแ แแแ แแแแแซแแแแก แ แแแแแแแแแก, แ แแแแแแแช แฌแแแแแฎแฃแแแ แแ แแแ แแแแแแแแแแก แจแแแแแฎแแแแแกแแแแก, แ แแแแแ แแแแแแฃแแ แแแแแแแ แฃแแแ แจแแแชแแแก แแแแ แ แแแแแแแแแ แจแแแแแแแ แแแกแแฆแแแก.
LMDB แแงแแแแแก B-แฎแแก แแแ แแแแขแก, แ แแแแแกแแช แแฌแแแแแ B+ แฎแ แแแแแชแแแแแแก แจแแกแแแแฎแแ. แแแแแ แแแชแแแฃแ แแแแแ แแแแแ แแแฉแแแแแแแ แกแแแ แขแแแแก แแแแแซแ, แ แแแแแกแแช แแก แจแแแชแแแก:
- แแแแแ แแ แแก แคแแกแแ. แแก แแแขแแ แแแแแแแแแ แกแฎแแ แแ แแคแแ แ, แแฃ แแ แ แแแแแชแแแแ แแแแแก แแแแชแแคแชแแ แกแแชแแแจแ. แแ แแ LMDB แแแกแขแแแชแแแก แคแแ แแแแแจแ, แแฅแแแ แจแแแแซแแแแ แจแแฅแแแแ แแ แแแแแ แแแแแชแแแแ แแแแ, แ แแแแแแแช แแแแแ แแแแ แจแแแแแแแ แแแ แขแฃแแแฃแ แแแกแแแแ แแแ แกแแแ แชแแก. แแแแแแฃแแ แแแแแแแ แแฌแงแแแ แกแแแฃแแแ แ แคแแกแแแแแ.
- แงแแแแแแ แแแแแ แแแแแแ แแ แแก แคแแแแแแ (แคแแแแแ). แกแฌแแ แแ แแกแแแ แแ แแฎแแแแ แแกแแแ แจแแแชแแแก แแแแแชแแแแ แแแแแจแ แจแแแแฎแฃแ แแแกแแฆแแแ-แแแแจแแแแแแแแก แฌแงแแแแแแก. แกแฎแแแแ แจแแ แแก, แแก แแ แแก B+-แฎแแแแแก แแแแแกแแแฃแ แแแ. แแฃ แแแ แแแแฃแ แ B-แฎแ แแแแฎแแแก แแแแจแแแแแแแแก แแแฌแแแแแก แงแแแแ แแแแแก แแแแแซแแแจแ, แแแจแแ B+-แแแ แแแชแแ แแฎแแแแ แงแแแแแแ แแแแแแแแ. แแ แคแแฅแขแแก แแแคแแฅแกแแ แแแแก แจแแแแแ, แฉแแแ แแแแแ แฅแแแแ LMDB-แจแ แแแแแงแแแแแฃแแ แฎแแก แฅแแแขแแแก แฃแแ แแแแ B-แฎแแก.
- แคแแกแแกแ แแ แคแแแแแแก แจแแ แแก แแ แแก 0 แแ แแแขแ แขแแฅแแแแฃแ แ แแแแ แกแแแแแแแแชแแ (แขแแขแ) แแแแแซแแแแ. แแแแ แแแแชแแแแ แแแฎแแ แแกแฎแแแฃแแ แแแกแแฆแแแแแแก แแแแ แแแ แคแแแแแแก แจแแ แแก แแแงแแ.
แคแแแแแฃแ แแ, แแแแแซแแแ แแ แแก แฌแแแแกแฌแแ แแแแกแแแฆแแ แฃแแ แกแแแ แซแแก แแแฎแกแแแ แแแแก แแแแแแแ. แแแแ แแแแ แแ แแก แแแแ แแชแแฃแแ แกแแกแขแแแแก แแแฎแกแแแ แแแแก แแแแ แแแแแก แแแแแก แฏแแ แแแ, แ แแแแช แแแแแ แแแกแแฃแแ แแ. แแแแแซแแก แกแขแ แฃแฅแขแฃแ แ แแแฉแแแแแแแ แฅแแแแแ. แกแแแแฃแ แ แจแแแชแแแก แแแขแ-แแแคแแ แแแชแแแก, แ แแแแแแแแแ แงแแแแแแ แแจแแแ แแ, แแแแแแแแแ, แกแแแแแขแ แแแ แฏแแแ. แจแแแแแ แแแแแก แแแคแแ แแแชแแ แแคแกแแขแแแแก แจแแกแแฎแแ, แ แแแแแแแแแแช แแแแแแแกแแแฃแแแ แแแแแชแแแแ แฃแฏแ แแแแแ. แแแแแชแแแแ แ แแแ แจแแแซแแแแ แแงแแก แแแแแแจแแแ, แแฃ แแกแแฃแแ แแแ แแแแแแแชแแแก แแแแแซแแแแ, แแ แแแแแ แแแกแแฆแแแ-แแแแจแแแแแแแแก แฌแงแแแแแแ แคแแแแแแแก แจแแแแฎแแแแแจแ. แจแแแแซแแแแ แแแขแ แฌแแแแแแฎแแ แแแฌแแ แแแแแจแ แแแแ แแแแแก แกแขแ แฃแฅแขแฃแ แแก แจแแกแแฎแแ.
แแแแ แแแก แแแแแซแแแแก แจแแแ แจแแแแแ แกแแแ แแแแแแจแแ แแแแ, แฉแแแ แจแแแแแแ แฌแแ แแแแแแแแแ LMDB B- แฎแแก แแแแแ แขแแแแแฃแแ แกแแฎแแ แจแแแแแแ แคแแ แแแ.
แแแแแซแแแแก แแฅแแแ แแแแ แแแแ แแแแแแแแแแ แฃแแแ แแ แแก แแแฌแงแแแแแ แแแกแแแ. แฃแคแ แ แแแขแ แแแแ แแก แแฅแแแ แแแแ แแแแ แแแแแแแกแแแฃแแแ แคแแแแแก แแแแแก. แแแ แแ แฌแแแแแฃแแ แแแขแ แแแแ แแ (แแแขแ แแแแ แแ) แจแแแชแแแก แแแคแแ แแแชแแแก แแคแกแแขแแแแก แจแแกแแฎแแ, แ แแแแแแแช แจแแแแซแแแแ แแแแแแ แงแแแแ แฎแแก แคแแกแแแแ. แ แแแแกแแช แคแแแแ แแฎแกแแแแ, LMDB แกแแแแแ แแแก แคแแแแก แแแแ แแแแแแ แ แแแแแแแ แแแกแแฌแงแแกแแแแ แกแฌแแ แ แแแขแ แแแแ แแแก แแแกแแซแแแแแ แแ แแแก แแแจแแแแแแ แแแฃแแแแก แแ แกแแแฃแ แแแแแชแแแแ แแแแแแก.
แแฎแแ, แ แแแแกแแช แแแแฅแแก แฌแแ แแแแแแแ แแแแแชแแแแ แแ แแแแแแแชแแแก แแแแแแฃแ แแ แคแแแแแฃแ แกแขแ แฃแฅแขแฃแ แแแ, แจแแแแแซแแแ แแแแแแฎแแแแ LMDB-แแก แแแกแแแ แแแจแแแ. แแแกแ แแแฎแแแ แแแแ แฎแแแแ แแแฎแกแแแ แแแแก แงแแแแ แแแแแคแแแแชแแ แขแ แแแแแฅแชแแแจแ แแ แแ แแแแแแแแกแแแ แแแแแแ แแแฃแแแ, แ แแช แแแแแชแแแแ แแแแแแแแแแจแ แแซแแแแก แแกแแแ แแ แแแแแแแ แกแแฃแ แแแแกแแแแก.
3.3. แแแจแแแ #3. แแแแแ แแแ แฉแแฌแแ แแแ
B-แฎแแก แแแแแแ แแ แแแแ แแชแแ แแแแชแแแก แแแก แแแแแซแแแจแ แชแแแแแแแแแแก แแแแ แกแแ แแแก. แแ แแ แแแแแแแแแ แแฎแแแ แแแกแแฆแแแแก แแแแแขแแแ แแแแแซแแ, แ แแแแแแแช แฃแแแ แแแแฆแฌแแ แแแฅแกแแแแแฃแ แกแแแซแแแแ แแก. แแ แจแแแแฎแแแแแจแ แแฃแชแแแแแแแแ, แแแ แแแ แ แแแจแ, แแแแแซแแก แแ แแ แแแงแแคแ แแ แแแแ แแช, แแแก แแจแแแแแจแ แแฎแแ แแแจแแแแ แแแแจแแแก แแแแแซแแก แแแฃแแแก แแแแแขแแแ. แแก แแ แแชแแแฃแ แ แแแขแแแชแแฃแ แแ แซแแแแแ แกแแจแแจแแ. แแฃ แ แแแแ แแแแแแแ (แแแแ แแ, แแแแฅแขแ แแแแแ แแแแก แแแแแจแแ แแ แ.แจ.) แแแฎแแ แกแแ แแแแแ แชแแแแแแแแแแก แแฎแแแแ แแแฌแแแ, แแแจแแ แฎแ แแแ แฉแแแ แแ แแแแแแแแแแแ แฃแ แแแแแแแ แแแแแจแ.
แแแแแชแแแแ แแแแแก แจแแชแแแแแก แจแแแฌแงแแแ แแแแแแแก แแ แ-แแ แแ แขแ แแแแชแแฃแแ แแแแแกแแแแแ แแ แแก แแแแแขแแแแแ แแแกแแแ แแแคแฃแซแแแแฃแแ แแแแแชแแแแ แกแขแ แฃแฅแขแฃแ แแก, แขแ แแแแแฅแชแแแก แแฃแ แแแแแก แแแแแขแแแ, แ แแแแแแช แแกแแแ แชแแแแแแแ แ แแแแ แช แฉแแฌแแ แแก แฌแแแ แแฃแ แแแแ (WAL), B-แฎแแก แแแแ แแแ. แแก แแ แแก แคแแแแ, แ แแแแแก แแแแแก, แแแแชแ แแ แแแแแ B-แฎแแก แแแแแคแแแแชแแแแแ, แแฌแแ แแแ แแแแแ แแฎแฃแแ แแแแ แแชแแ. แแแ แแแแ, แแฃ แแแแแชแแแแ แแแ แฃแคแชแแ แแแแแแแแแแ แแแแแแแแแแแกแขแแแแก แแ แแก, แแแแแชแแแแ แแแแ แแแแกแฃแแขแแชแแแก แฃแฌแแแก แแฃแ แแแแก แกแแแฃแแแ แ แแแแแก แแแกแแกแฃแคแแแแแแแแ.
LMDB-แ แจแแชแแแแแก แขแแแแ แแแขแแแแก แแแฅแแแแแแแ แกแฎแแ แแแแแแ แแแ แฉแแ, แ แแแแแกแแช แแแแแ แแแ-แฉแแฌแแ แแก แฃแฌแแแแแแ. แแแกแ แแ แกแ แแแแจแ แแแแแแแ แแแแก, แ แแ แแ แกแแแฃแแ แแแแ แแแก แแแแแชแแแแแแก แแแแแฎแแแแแก แแแชแแแแ, แแก แฏแแ แแแแแแแแ แแแแแแ แแแก แแแ แแ แแฎแแ แชแแแแแแก แงแแแแ แชแแแแแแแแก แฃแแแ แแกแแจแ.โ
แแแ แแ แแแแกแ, แแแแแฎแแแแฃแแ แแแแแชแแแแแแก แฎแแแแแกแแฌแแแแแแแแก แแแแแแ, แแฃแชแแแแแแแแ แจแแชแแแแแ แแแฃแแ แแ แแแแแซแแแ, แ แแแแแแช แแแแแฎแแแ แแจแแแแ แแแแแซแจแ แแแกแแแ แแแแแ แแแแแจแ. แแแแก แแแแ, แ แแ แแก แแกแแแ แฃแแแ แจแแแชแแแแแก แแแแกแแแแแก, แแก แแกแแแ แฌแแแแกแฌแแ แแ แแก แแแแแแแ แแแฃแแ. แแ แแชแแกแ แ แแแฃแ แกแแฃแแแ แแ แซแแแแแแ แซแแ แแแแ. แแแขแ แแแแ แแแ แแแแแชแแแแแ แแแแแ, แ แแแแแแช แแชแแแแแ.
แแฃ แแแแแฎแแแแแก แแ แแชแแแฃแ แแก แแ แแก แแ แแชแแกแ แแแฃแแแแแแแแ แแจแแแแ, แแแจแแ แแ แแ แจแแแฅแแแแแ แแฎแแแ แแแขแ แแแแ แแ, แแ แแก แแแแแแแ แแ แฉแแแฌแแ แแแ แแแกแแแ แแ แแแกแ แจแแแแฌแแแแ แแ แแกแฌแแ แ แแฅแแแแ. แแ แแ แแแแ แ แแแแแแแ แจแแแแฎแแแแแจแ, แแฎแแแ แแแแ แแแแ แแแฃแฌแแแแแแแ แแฅแแแแ แแ แซแแแแแแแ แแ แแแแฅแแแแแแก. แแก แแแแแ แแชแฎแแแก LMDB-แก แฌแแแแกแฌแแ แฉแแฌแแ แแก แกแแญแแ แแแแแก แแแแแชแแแแ แแแแแแแแแแ แฃแแแแแก แจแแกแแแแ แฉแฃแแแแแแ. แแ แคแแฅแขแ, แแแแแ แแฆแฌแแ แแแ แแแกแแแ แแแแแชแแแแ แจแแแแฎแแแก แกแขแ แฃแฅแขแฃแ แ แแ แแแ แแฃแแแ แแฆแแแก แแแแแก แคแฃแแฅแชแแแก. แแจแแแ แ แขแ แแแแแฅแชแแแก แแฃแ แแแแแก แแ แแ แกแแแแแ LMDB-แแก แแ แ-แแ แแ แแแฎแแกแแแแแแแแแ, แ แแแแแแช แฃแแ แฃแแแแแงแแคแก แแแแแชแแแแ แฌแแแแแฎแแแก แแแฆแแ แกแแฉแฅแแ แแก.
แจแแแแแแ แแแฆแแแฃแแ แแแแกแขแ แฃแฅแชแแ, แ แแแแแกแแช แแฌแแแแแ แแฎแแแแ แแแแแขแแแฃแแ B-แฎแ, แแฃแแแแ แแแแ แฃแแ แฃแแแแแงแแคแก แขแ แแแแแฅแชแแแก แแแแแแชแแแก แแ แแ แแแแแแแ แกแแแก. LMDB-แจแ แแแแแแฃแ แฆแแ แขแ แแแแแฅแชแแแก แแฅแแก แแแกแแแ แแแแแแจแแ แแแฃแแ แแแแแฎแแแแฃแแ แฎแแก แคแแกแแ. แกแแแแ แขแ แแแแแฅแชแแ แแ แแ แแก แแแกแ แฃแแแแฃแแ, แแแกแแแ แแแแแแจแแ แแแฃแแ แฎแแก แแแแ แแแแ แแ แแกแแแแก แจแแแชแแแแแ แแ แฎแแแแฎแแ แแแแแงแแแแแฃแแ แแฅแแแแ แแแแแชแแแแ แแฎแแแ แแแ แกแแแแแกแแแแก. แแแ แแแแ, แแฅแแแ แจแแแแซแแแแ แแแฃแจแแแ แแแแแ แฎแแแก, แ แแแแแแแช แแกแฃแ แ แแฃแกแขแแ แแ แแแแแชแแแแ แแแแ แแแแ, แ แแแแแแช แแฅแขแฃแแแฃแ แ แแงแ แขแ แแแแแฅแชแแแก แแแฎแกแแแก แแ แแก, แแแจแแแแช แแ, แแฃ แแแฎแกแแแ แแแ แแแแแ แแฅแขแแฃแ แแ แแแแแฎแแแแแ แแ แแ แแก. แแก แแ แแก แแฃแแขแแแแ แกแแแก แแ แกแ, แ แแช LMDB-แก แแแแแแฃแ แแแแแชแแแแ แฌแงแแ แแ แแฅแชแแแก แฉแแแแ แกแแงแแแ แแแ แแแแแแแแแกแแแแก UICollectionView
. แขแ แแแแแฅแชแแแก แแแฎแกแแแก แจแแแแแ, แแฅแแแ แแ แแญแแ แแแแแ แแแแแแแชแแแก แแแฎแกแแแ แแแแก แแแแแแญแแแก แแแแ แแ, แแแแแแแแ แ แแแแแชแแแแแแก แแแฉแฅแแ แแแแ แแแแแขแฃแแแแ แแแฎแกแแแ แแแแก แแแแแแ แ แกแขแ แฃแฅแขแฃแ แแจแ, แแแจแแแแแ, แ แแ แแ แแคแ แแก แแแ แฉแแแ. แแก แคแฃแแฅแชแแ แแแแแกแฎแแแแแแก LMDB-แก แแแแแ SQLite-แกแแแ, แ แแแแแแช แแแ แแแแแแแฎแแแก แแกแแแ แกแ แฃแแ แแแแแแชแแแ. แแ แฃแแแแแกแแแแแจแ แแ แ แขแ แแแแแฅแชแแแก แแแฎแกแแแก แแ แแ แ-แแ แแจแ แแแ แแแแฃแแ แฉแแแแฌแแ แแก แฌแแจแแแก แจแแแแแ, แแแแแ แฉแแแแฌแแ แ แแแฆแแ แแแแฆแแแ แแแแ แ แแแแแ แฉแแแจแ.
แแแแแขแแก แแแแ แ แแฎแแ แ แแ แแก แแแ แขแฃแแแฃแ แ แแแฎแกแแแ แแแแก แแแขแแแชแแฃแ แแ แแแแจแแแแแแแแแ แแแฆแแแ แแแฎแแแ แแแ. แกแแแแแ แแแแฉแแแแแแก, แแฃ แ แแแแ แ แแฅแแแแ แแแแแชแแแแ แแแแแก แกแขแ แฃแฅแขแฃแ แ, แแฃ แแแ แแ แแแ แแฃแแแ แจแแแชแแแแแ 3 แฆแแ แฌแแแแแฎแฃแแ แขแ แแแแแฅแชแแแก แกแแจแฃแแแแแแ, แ แแแแแแแช แแแแแแแแ แแแแ แแแแแชแแแแ แแแแแก แกแฎแแแแแกแฎแแ แแแ แกแแแแก. แแแแแแแแ LMDB-แก แแ แจแแฃแซแแแ แฎแแแแฎแแ แแแแแแงแแแแก แแแแแซแแแ, แ แแแแแแแช แฎแแแแแกแแฌแแแแแแ แคแแกแแแแแแแ, แ แแแแแแแช แแแแแแจแแ แแแฃแแแ แ แแแแฃแ แขแ แแแแแฅแชแแแแแแ, แแแฎแกแแแ แแแแก แกแฎแแ แแ แฉแแแแแ แแ แแฅแแก แแแ แแ แแแแกแ, แ แแ แแแแแงแแก แแแแแ แแ แแ แแแแแฎแ แคแแกแแ แแแฎแกแแแ แแแแจแ แแ แแแแแ แแ แแฎแแ แแแแฎแแแแแก แแแก แฅแแแจ แแ แกแแแฃแแ แจแแชแแแแแ แแแแ แแแแแก แแแแแแ แแแ.
แแฅ แแแแแแขแ แแ แแฅแแแแ แแแฎแกแแแ แแแแ แจแแแแแแแแ แคแแแแแแแก แแแแงแแคแแแแแแก แแแฎแกแแแแแ. แ แแแแ แช แฉแแแก, แแแ แขแฃแแแฃแ แ แแแฎแกแแแ แแแแก แแแแแขแแแแ แแแฎแแแ แแแแ แแแแแ แแ แฃแแแ แจแแแแแฌแฃแฎแแก, แแแแแแแแ แแก แแ แฃแฌแงแแแก แฎแแแก แแแแแแแชแแแก แแแฎแกแแแ แแแแก แแแแแก. แแฃแแชแ, แแแแแแ แแฃแแแ, แแฆแแแแจแแ, แ แแ iOS แซแแแแแ แซแฃแแฌแแ แแแก แแแแแงแแคแแจแ แแ แแ แจแแแซแแแแ แกแแ แแแ แแ แแ แแแกแแขแแแแ แแแแแกแขแ แแก แแฎแ แแแแ แแแแแฌแแแแ 1 แขแแ แแแแแขแ LMDB แ แแแแแแ แแ แกแแแ แแแ แแ แแแคแแฅแ แแ แแ แคแฃแแฅแชแแแแ. แ แแแแกแแช แแก แจแแกแแซแแแแแแแ, แฃแแแ แแชแแแแ, แ แแ แขแ แแแแแฅแชแแแแแก แแแแ แ แแช แจแแแซแแแแ แแแแแ แแงแแก.
4. แแแแแชแแแแ แกแฅแแแแก แจแแแฃแจแแแแแ แแแกแแฆแแแ-แแแแจแแแแแแแแก API-แก แแแแแ
แแแแแฌแงแแ API-แแก แแแแแแแ LMDB-แแก แแแแ แแแฌแแแแแฃแแ แซแแ แแแแแ แแแกแขแ แแฅแชแแแแแก แแแฎแแแ: แแแ แแแ แแ แแแแแชแแแแ แแแแแแ, แแแกแแฆแแแแแ แแ แแแแจแแแแแแแแแ, แขแ แแแแแฅแชแแแแ แแ แแฃแ แกแแ แแแ.
แจแแแแจแแแ แแแแแแแก แฉแแแแแแแแแแแก แจแแกแแฎแแ
LMDB แกแแฏแแ แ API-แจแ แงแแแแ แคแฃแแฅแชแแ แแแ แฃแแแแก แกแแแฃแจแแแก แจแแแแแก แจแแชแแแแแก แแแแแก แกแแฎแแ, แแแแ แแ แงแแแแ แจแแแแแแ แฉแแแแแแแแแแจแ แแแกแ แจแแแแฌแแแแ แแแแแขแแแแแฃแแแ แแแแแแฃแ แแแแกแแแแก. แแ แแฅแขแแแแจแ แฉแแแ แแแงแแแแแแแ แกแแแฃแแแ แแแแก แกแแชแแแแแ แฃแ แแแแ แแแแแกแแแแก.
แ แแแแ แช แงแแแแแแ แกแฌแ แแคแ แแแ LMDB iOS แแ macOS แแ แแแฅแขแแแ แแแกแแแแแจแแ แแแแแ, แแ แแแแแแแแแ แฉแแแก CocoaPod-แก
4.1. แซแแ แแแแแ แแแกแขแ แแฅแชแแแแ
แแแ แแแ
แกแขแ แฃแฅแขแฃแ แ MDB_env
แแ แแก LMDB-แแก แจแแแ แแแแแแแ แแแแแก แกแแชแแแ. แแ แแคแแฅแกแแก แคแฃแแฅแชแแแแแก แแฏแแฎแ mdb_env
แกแแจแฃแแแแแแก แแแซแแแแ แแแแแแแคแแแฃแ แแ แแ แแแกแ แแแแแแ แแ แแแแกแแแ. แฃแแแ แขแแแแก แจแแแแฎแแแแแจแ, แซแ แแแแก แแแแชแแแแแแแชแแ แแกแ แแแแแแงแฃแ แแแ.
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 แแแแแแแชแแแจแ แฉแแแ แจแแแชแแแแแ แแแแฃแแแกแฎแแแแ แแแแจแแแแแแแแแ แแฎแแแแ แแ แ แแแ แแแแขแ แแกแแแแก.
แแแ แแแแ แแ แแก แแแ แขแฃแแแฃแ แ แแแกแแแแ แแแก แกแแแ แชแแก แแแแ, แ แแแแแแแแแช แจแแแแแแแแแ แจแแแแฎแแแก แคแแแแ. แกแแแฌแฃแฎแแ แแ, แแแแแ แแแฌแงแแแแแแแแแแช แแ, แแแแแ แแขแฃแแ แแแแจแแแแแแแ แจแแแซแแแแ แแแแจแแแแแแแแแ แแแแกแฎแแแแแแแแแแก แแแจแแแแแแแ. iOS-แแก แแ แคแฃแแฅแชแแแก แแแกแแแแแแแกแฌแแแแแแแ, แฉแแแ แแแ แฉแแแ แจแแแแฎแแแก แแแฅแกแแแแแฃแ แ แแแแแแแแแก แแแแแแแฃแ แแ. แแแ แแแแฃแแ แแแแจแแแแแแแแแแ แแแฌแงแแแฃแแ, แแก แแแแแแแแแแ แฃแแแ แแแแแฎแแแ แแแแ แคแฃแแฅแชแแแแแ mdb_env_open
แแ แแแแแ แฃแแแแก แกแฎแแ แจแแแแแก แแแ แแ ENOMEM
. แแแแ แแฃแแแ, แแ แกแแแแแก แกแแแแ แแกแแแ แ แแแ - แฏแแ แแแฃแแแแ แซแ แแแแก แแแแแแแแฃแ แ แแแฎแกแแแ แแแ, แจแแแแแ แแ แจแแชแแแแแแแก แแแฆแแแแกแแก. MDB_MAP_FULL
, แแแแแ แแแ. แแฃแแชแ แแแแ แแ แฃแคแ แ แแแแแแแแ. แแแแแแ แแก แแ แแก, แ แแ แคแฃแแฅแชแแแก แแแแแงแแแแแแ แแแฎแกแแแ แแแแก แแแแแแแแแแแก แแ แแชแแแฃแ แ mdb_env_set_map_size
แแแแฃแฅแแแแก แซแ แแแแแแ แแแ แ แแแฆแแแฃแ แงแแแแ แแ แแแฃแแก (แแฃแ แกแแ แแแก, แขแ แแแแแฅแชแแแก, แแแกแแฆแแแก แแ แแแแจแแแแแแแแแก). แแแแจแ แแแแแแแแแแก แแกแแแ แจแแแแแ แฃแแแแแก แแฆแ แแชแฎแแ แแแก แแแแจแแแแแแแแ แแแ แแฃแแแแแก แแแแแแฌแแแแก. แแฃ, แแแฃแฎแแแแแแ แแแแกแ, แแแ แขแฃแแแฃแ แ แแแฎแกแแแ แแแ แแฅแแแแแแแก แซแแแแแ แซแแแ แคแแกแแ, แแแจแแ แแก แจแแแซแแแแ แแงแแก แแแแแแ, แ แแ แแแแแฎแแแแ แแ แฉแแแแแแก, แ แแแแแแช แฌแแ แฌแแแแแ.
แแแแ แ แแแ แแแแขแ แ, แ แแแแแก แแแแฃแแแกแฎแแแแ แแแแจแแแแแแแ แแ แจแแแแแคแแ แแแ, แแ แแแฃแแแ แแแก แซแแคแแก แฃแกแแคแ แแฎแแแแแก แฃแแ แฃแแแแแงแแคแแก แแแฅแแแแแแก. แกแแแฌแฃแฎแแ แแ, iOS 10-แจแ แแแแแช แแ แแก แแ แแแแแแแแ แซแแคแแแแก แแแแแแฃแ แ แจแแแแฎแแแก แแฎแแ แแแญแแ แแกแแแ แแแแแแจแแ แแแแ. แแ แแแแแแแ, แแแแแ แแแชแแแฃแ แแแแแแแแจแ, แกแแชแแแ แแฎแกแแแแ แแ แแจแแ MDB_NOTLS
. แแแ แแ แแแแกแ, แแกแแแ แแแแแฎแแแแ
แแแแแชแแแแ แแแแแแ
แแแแแชแแแแ แแแแ แแ แแก B-แฎแแก แชแแแแแฃแแ แแแแแแแแ, แ แแแแแแแช แแแแแ แแแกแแฃแแ แแ. แแแกแ แแแฎแกแแ แฎแแแแ แขแ แแแแแฅแชแแแก แจแแแแแ, แ แแช แแแแแแแ แจแแแซแแแแ แชแแขแ แฃแชแแแฃแ แแ แแแแแฉแแแแแ.
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
แแงแแแแแแแก แ แแแแ แช แแแกแแฆแแแแก, แแกแแแ แแแแจแแแแแแแแก แแแแชแแคแชแแแก. แกแแชแแแก แฌแแ แแแแแแแ แแ แแฅแแก แแแแ แกแแแแแขแแแแก แจแแกแแฎแแ. แแแกแแแแก, แ แแฆแแช แแแแกแฎแแแแแแฃแแ แแ แแก แแฎแแแแ แแแชแแแฃแแ แแแแแก แแแแขแแแแก แแแกแแแ. แแแกแแฆแแแแก แแแฅแกแแแแแฃแ แ แแแแแ 512 แแแแขแ.
typedef struct MDB_val {โ
size_t mv_size;โ
void *mv_data;โ
} MDB_val;โโ
แแแฆแแแแ แแงแแแแแก แจแแกแแแแ แแแแแก แแแกแแฆแแแแแแก แแ แแแก แแแฎแแแแแ แแแกแแแแแแแแแ. แแฃ แแ แฉแแแแแชแแแแแ แแแก แแฅแแแแแ, แแแจแแ แแแแแงแแแแแฃแแ แแฅแแแแ แแแแฃแแแกแฎแแแแ, แ แแแแแแช แแฎแแ แแกแฎแแแก แแแ แแแแข-แแแแข แแแฅแกแแแแแ แแคแแฃแแ แแแแแแแแแแ แแแแ.
แแแ แแแแแแแ
แขแ แแแแแฅแชแแแก แแแฌแงแแแแแแแ แแแขแแแฃแ แแ แแ แแก แแฆแฌแแ แแแ
- แแฎแแ แแแญแแ แ แงแแแแ แซแแ แแแแแ แแแแกแแแแกแแแแก
ACID แกแแแแแแซแ แกแแขแงแแแแ: แแขแแแฃแ แแแ, แแแแแแแแแแ แฃแแแแ, แแแแแแชแแ แแ แกแแแแแแแแแ. แแ แจแแแแซแแแ แแ แแฆแแแแจแแ, แ แแ macOS-แกแ แแ iOS-แแ แแแแซแแแแแแก แแฎแ แแ MDBX-แจแ แแแแแกแฌแแ แแแฃแแแ แจแแชแแแแ. แแแขแ แจแแแแซแแแแ แฌแแแแแแฎแแ แแแแจแREADME . - แแแแแแแ แแ แแแแแซแแแแแแแแแกแแแแ แแฆแฌแแ แแแแ แกแฅแแแแ โแแ แแ แแฌแแ แแแ/แแ แแแแแฏแแ แแแ แแแแแฎแแแแโ. แแฌแแ แแแแ แแ แแแแแแแก แแแแแแแแ, แแแแ แแ แแแแแฎแแแแแแก แแ แแแแแแแแ. แแแแแฎแแแแ แแ แแแแแแแก แแฌแแ แแแแก แแ แแ แแแแแแแก.
- แฉแแแแแฃแแ แขแ แแแแแฅแชแแแแแก แแฎแแ แแแญแแ แ.
- แแ แแแแแแแ แกแแแก แแฎแแ แแแญแแ แ.
LMDB-แจแ แแฃแแขแแแแ แกแแ แแแแแแแ แแแ แแแ, แ แแ แแกแฃแ แก แแแกแ แแแแแแกแขแ แแ แแแ แแแฅแแแแแแแจแ. แฅแแแแแ แแแงแแแแแแ แแแแ แแแแฉแแแแแแก, แ แแ แแแแแแฃแแ แขแ แแแแแฅแชแแ แแฃแจแแแแก แแแแแชแแแแ แแแแแก แแฃแกแขแแ แแ แแแ แกแแแกแแแ, แ แแแแแแช แแฅแขแฃแแแฃแ แ แแงแ แแแกแ แแแฎแกแแแก แแ แแก แแ แกแ แฃแแแแ แแแแแแ แแแฃแแแ แงแแแแ แจแแแแแแแ แชแแแแแแแแกแแแ. แกแแชแแแแก แแแแชแแ แแแ แแ แแแกแจแ แกแแขแแกแขแ แฉแแแแฌแแ แแก แแแแแขแแแ แแ แแ แแก แกแแแแขแแ แแกแ, แแแแขแแ แแก แ แแขแฃแแแแแ แ แฉแแแ แกแแแแแแ แแก แฅแแแจ.
แขแแกแขแแก แฉแแแแฌแแ แแก แแแแแขแแแ
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);
แกแฃแ แแแแแกแแแแแ , แแแ แฉแแแ แกแชแแแแ แแแแแ แฎแ แแแ SQLite-แแ แแ แแแฎแแ แ แ แแแฎแแแแ.
Multiversioning แแแแฅแแก แซแแแแแ แแแ แแ แกแแ แแแแแแ iOS แแแแแแแแแ แแแแก แชแฎแแแ แแแแจแ. แแ แแแแกแแแแก แแแแแงแแแแแแ, แแฅแแแ แจแแแแซแแแแ แแแ แขแแแแ แแ แแฃแแแแ แแแแ แแแแ แแแฃแแแ แแ แแแแแชแแแแ แฌแงแแ แแก แแแแแฎแแแแแก แกแแฉแฅแแ แ แแแ แแแแก แคแแ แแแแแกแแแแก, แแแแฎแแแ แแแแแก แแแแแชแแแแแแแก แแแแแแแแกแฌแแแแแแ. แแแแแแแแแ, แแแแฆแแ Mail.ru Cloud แแแแแแแชแแแก แแกแแแ แคแฃแแฅแชแแ, แ แแแแ แแชแแ แจแแแแแ แกแแก แแแขแแแแขแฃแ แ แฉแแขแแแ แแแ แกแแกแขแแแแก แแแแแ แแแแแ แแแแแ. แแแ แแ แแแแจแแ แแ แแแแแแขแก แจแแฃแซแแแ แกแแ แแแ แแ แฌแแแจแ แ แแแแแแแแ แคแแขแแก แแแแแขแแแ. แแฃ แแแแแแฎแแแแ แงแแแแแ แฉแแแแขแแแ แแแแก แจแแแแแ UICollectionView
แแแแฎแแแ แแแแแก แฆแ แฃแแแแจแ แแแแแ แแแแขแแแขแแ, แจแแแแซแแแแ แแแแแแฌแงแแ แแแแฎแแแแแแ 60 fps แแ แแแฃแแ แแแแแฎแแแแ แแ แแ แแชแแกแแก แแแแแแแแแแแจแ. แแแ แแแแก แฎแจแแ แ แแแแแฎแแแแแก แแแแแแแ แแกแแชแแแแแแแ, แแฅแแแ แฃแแแ แจแแแฆแฃแแแ แแแแแชแแแแ แแแแแก แชแแแแแแแแก แกแแฉแฅแแ แ UICollectionViewDataSource
.
แแฃ แแแแแชแแแแ แแแแ แแ แฃแญแแ แก แแฎแแ แก แแ แแแแแแแ แกแแแก แแ แกแแจแฃแแแแแแก แแแซแแแแ แแแฃแจแแแ แแฎแแแแ แแแแแแแแ แ แแแแแแแ แแแแแ, แแแจแแ แแ แแแก แกแขแแแแแฃแ แ แแแแแชแแแแแแก แกแฃแ แแแแก แจแแกแแฅแแแแแแ, แแฅแแแ แฃแแแ แแแแแแแแ แแ แแแ แแแฎแกแแแ แแแแก แแแแแชแแแแ แแแแแแ แ แกแขแ แฃแฅแขแฃแ แแจแ แแ แแ แแแแแ แชแฎแ แแแจแ. แ แแแแแแแ แแก แแแแแแแ แซแแแแแ แซแแแ แแ. แแแฎแกแแแ แแแแจแ แจแแแแฎแแแก แจแแแแฎแแแแแจแ, แฉแแแ แแแฆแแแ แ แแแแ แช แแแฎแกแแแ แแแแก แฎแแ แฏแแแก, แ แแแแแแแช แแแแแฌแแแฃแแแ แแจแแแแแฃแแ แแแแแฅแขแแแแก แจแแแแฎแแแ, แแกแแแ แแ แแแก แฎแแ แฏแแแก, แ แแแแแแแช แแแแแแจแแ แแแฃแแแ แแแแแแขแ ORM แขแ แแแกแคแแ แแแชแแแแแ. แ แแช แจแแแฎแแแ แแ แแแแแ แกแฃแคแ แแก, แแก แแแแแ แฃแคแ แ แซแแแ แ แกแแแแแแแแแแ, แ แแกแแช แแแ แ แแฅแแก แแฎแแแแ แแ แ แขแ แแแแแแฃแ แจแแแแฎแแแแแแจแ.
แแ แแแแแแแ แกแแ LMDB แฌแงแแแขแก แแแแแชแแแแ แกแขแแแแแฃแ แ แฌแงแแ แแก แจแแแแ แฉแฃแแแแแก แแ แแแแแแแก แซแแแแแ แแแแแแแขแฃแ แแ. แกแแแแแ แแกแแ แแฎแแแแ แขแ แแแแแฅแชแแแก แแแฎแกแแ แแ voila - แกแแแแ แแ แแแแแกแ แฃแแแแ, แแแแแชแแแแ แแแแ แแแ แแแ แแแขแแ แแแฃแแแ แแแคแแฅแกแแ แแแฃแแ. แแแกแ แแแแแฎแแแแแก แกแแฉแฅแแ แแก แแแแแแ แแฎแแ แแแแแแแแ แแ แแแแแขแแชแแแก แคแแแแก แฎแแแจแแ, แแแแจแแแแแแแแแ แ แแกแฃแ แกแแแแก แแแ แแจแ.
แแฃแ แกแแ แแแ
แแฃแ แกแแ แแแ แฃแแ แฃแแแแแงแแคแแ แแแฅแแแแแแก แแแฌแแกแ แแแแแฃแแ แแแแแแ แแแแกแแแแก แแแกแแฆแแแ-แแแแจแแแแแแแแก แฌแงแแแแแแแ B-แฎแแก แแแแแแก แแแแ. แแแ แแแ แแจแ แจแแฃแซแแแแแแ แแฅแแแแแแ แแแแแชแแแแ แแแแแจแ แแ แกแแแฃแแ แชแฎแ แแแแแแก แแคแแฅแขแฃแ แ แแแแแแแ แแแ, แ แแแแแกแแช แแฎแแ แแแแแแ แแแแ.
4.2. แแแแแแแก แแแแแแแ แแแ
แแแกแแฆแแแแก แจแแแแแแแก แแแแกแแแ แกแแจแฃแแแแแแก แแแซแแแแ แจแแฅแแแแ แฃแแแฆแแแกแ แแแแแก แแแกแขแ แแฅแชแแ, แ แแแแ แแชแแ แชแฎแ แแแ แซแแ แแแแแ แแแกแขแ แแฅแชแแแแแก แแแแแ. แแแแแ แแแแแแฎแแแแ แแก แแ แแชแแกแ แฆแ แฃแแแแแแแ แแแแแแขแแก แแแแแแ แ แชแฎแ แแแแก แแแแแแแแแ, แ แแแแแจแแช แแแแฎแแแ แแแคแแ แแแชแแ แแแแฎแแแ แแแแแก แงแแแแ แคแแแแแกแ แแ แกแแฅแแฆแแแแแก แจแแกแแฎแแ.
แชแฎแ แแแแก แกแฅแแแ
แแ แ-แแ แแ แแแแ แชแแแแแฃแแ แกแชแแแแ แ, แ แแแแแกแแแแกแแช แชแฎแ แแแแก แกแขแ แฃแฅแขแฃแ แ แฃแแแ แแงแแก แแแแแแชแ แแแฃแแ, แแ แแก แแแชแแแฃแ แแแ แแฅแขแแ แแแจแ แแแแแแ แ แงแแแแ แแแแแแแขแแก แจแแ แฉแแแ. แแแแแชแแแแ แแ แแแแแแแชแแแก แแแ แแ แแแแแแ แแ แขแแแแก แแคแแฅแขแฃแ แ แแแแฎแแแแแแแกแแแแก แแ แแก
แฅแแแแแ แแแงแแแแแแ แกแฃแ แแแ แแแแฉแแแแแแก, แแฃ แ แแแแ แจแแแซแแแแ แแแแแแงแฃแ แแแแแแก แแแแแแแแแก แแแฎแแแแแ แแแกแแฆแแแแแแก แฌแแ แแแแแแแ แแแแขแแแแก แแแกแแแแก แกแแฎแแ. แฏแแ แแแแแแกแแแฃแแแ แแแแขแแแ แแจแแแแแ แแแ แแฅแขแแ แแแก แแแแแขแแคแแแแขแแ แแ (แฌแแแแแ), แจแแแแแ แขแแแแ (แแฌแแแแ) แแ แฃแแแ แแฃแแจแ แกแแฎแแแฌแแแแแแ (แแฃแ แฏแ) แแแแแแแแฃแแแ แแแแฃแแแกแฎแแแแ LMDB แจแแแแ แแแแก แแแฎแแแแแ แแแฅแกแแแแแ แแคแแฃแแ แแแแแแแแแแ แแแแ, แแกแแแ แแแแแแแแฃแแแ แกแแญแแ แ แแแ. แแแแแ แฌแแแแแ แแ แแคแแฅแกแแ แแแกแแฆแแแแแแก แแแแแแแแแแ แฃแแ แแแแแ แแแแซแแแแก แแแแแแ แแแแแแจแแ แแแฃแ แแแแจแแแแแแแแแก แแ แแแแแแแแแแ แแแแ, แ แแแแแแแช แแกแแแ แฃแแแ แแงแแก แแแฉแแแแแแ แแแแฎแแแ แแแแแก แแแขแแ แคแแแกแจแ (แแแ แฏแแแแ), แงแแแแแแแแ แ แจแแแแแแแ แจแแแแแแแ แแแแฃแจแแแแแแก แกแแญแแ แแแแแก แแแ แแจแ.
แแแแแแจแแแแกแ แแ แแแแจแแแแแแแแแแก แกแแ แแแแแแแชแแ
แแกแแคแแแแจแ แแแแแฅแขแแแแก แกแแ แแแแแแแชแแแก แแ แแแแแ แแแแแแ แแ แกแแแแแก. แแแแแแแแ แกแแฉแฅแแ แแก แแแ แแ แกแฎแแ แแแแฎแแแแ แแ แแแฅแแแแ, แฉแแแแแแแก แแแแ แฉแแแ แงแแแแแแ แกแฌแ แแคแ - แแแฎแกแแแ แแแแก แแแแแแฌแแ แ, แ แแแแแแช แแแแแแแแฃแแแ 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-แแก แจแแแแฎแแแแแจแ, แแแแ แกแ แฃแแแ แแชแแแแแ แจแแกแแซแแแแแแแ, แ แแแแกแแช แแแแแชแแแแ แแแแแจแ แฉแแกแแฃแแแ แแฎแแแ แฉแแแแฌแแ แแแ. แกแแ แแแ แแแแ แจแแแแแแแแแ แแแแขแแแแก แแแกแแแ แฏแแ แแแแแแฅแชแแแ แกแขแแแแก แกแขแ แฃแฅแขแฃแ แแแแ, แจแแแแแ แแ แแกแแแ แขแ แแแแแแฃแ แแ แแงแ แแแ แกแแชแแแจแ. แแแแก แแแแแแแแกแฌแแแแแแ, แ แแ LMDB-แจแ แแกแแแ แแ แแ แแก แแแแแแแฃแ แ แแแแแฌแแแแแ, แจแแแแซแแแแ แแแแฆแแ แคแแแขแแกแขแแแฃแ แ แกแแขแฃแแชแแ iOS แกแขแแแแแ แขแแแแ - แแแแแแงแแแแ แแฎแแแแ แแแกแขแ แแแฎแกแแแ แแแ แแแแแชแแแแ แกแแแฃแจแแแ แแแแแ แฅแกแแแแแแ แแแกแแแแแ!
แแแกแแฆแแแแแแก แจแแแแแแ แแแแแ แฃแแ แจแแแแ แแแแ
แแแกแแฆแแแแก แ แแแแก แแแแแ แแแแ แแแชแแแฃแแแ แกแแแชแแแแฃแ แ แคแฃแแฅแชแแแ, แ แแแแแกแแช แแฌแแแแแ แจแแแแ แแแแแ. แแแแแแแแ แซแ แแแแ แแ แแคแแ แ แแชแแก แแแแจแ แจแแแแแแแ แแแแขแแแแก แกแแแแแขแแแแก แจแแกแแฎแแ, แแแแฃแแแกแฎแแแ แจแแแแ แแแแแก แกแฎแแ แแ แฉแแแแแ แแ แแฅแแก แแแ แแ แแแแแแจแแแแก แแแฅแกแแแแแ แแคแแฃแแ แแแแแแแแแแ แแแแ แแแแแแแแแกแ แแ แแแ แแแแข-แแแแข แจแแแแ แแแแแ. แแแกแ แแแแแงแแแแแ แกแขแ แฃแฅแขแฃแ แแแแก แแแกแแฌแงแแแแ แฐแแแแก แแแแแแก แแแฏแแฎแแ แแแแแ แกแแแก. แแฃแแชแ แฃแแ แแแ แจแแแแฎแแแแแแจแ แแก แแแแแแ แแแกแแฆแแแ แแแแแฉแแแ. แแแขแแ แแแขแแแ แแฆแฌแแ แแแแ แฅแแแแแ, แแแแ แแ แแฅ แแ แแฆแแแแจแแแ แแแแแ แแแแแคแแแขแฃแ แ แแแแแแแแ แ แแแก.
แแแ แแแแ, แ แแช แฃแแแ แแแแฎแกแแแแแก, แแ แแก แแแแแชแแแแ แแ แแแแขแแฃแแ แขแแแแแแก แแแฎแกแแแ แแแแก แฌแแ แแแแแแแ. แแกแ แ แแ, Apple-แแก แงแแแแ แแแฌแงแแแแแแแแแ แแแแแ แ แแชแฎแแ แชแแแแแแแ แแแแฎแแแ แคแแ แแแขแจแ
// value (hex dump)
000 (0000)
256 (0001)
001 (0100)
257 (0101)
...
254 (fe00)
510 (fe01)
255 (ff00)
511 (ff01)
แแ แแ แแแแแแแก แแแแแกแแญแ แแแแ, แแแแแ แ แแชแฎแแแแ แฃแแแ แแงแแก แจแแแแฎแฃแแ แแแกแแฆแแแจแ แแแแขแแก แจแแแแ แแแแกแแแแก แจแแกแแคแแ แแก แคแแ แแแขแจแ. แแฏแแฎแแก แคแฃแแฅแชแแแแ แฎแแแก แจแแฃแฌแงแแแก แแฃแชแแแแแแแ แขแ แแแกแคแแ แแแชแแแก แแแแฎแแ แชแแแแแแแก. hton*
(แแแ แซแแ htons
แแแแแแแแแแแ แแ แแแแ แแแแขแแแแ แ แแชแฎแแแแแกแแแแก).
แแ แแแ แแแแ แแแแจแ แกแขแ แแฅแแแแแแก แฌแแ แแแแแแแแก แคแแ แแแขแ, แ แแแแ แช แแแแแฎแกแแแแแแ, แแ แแก แแแแแแแแแ
แแแแ แ แ แแช แฃแแแ แแแแฎแกแแแแแก แแ แแก packed
.
แแแกแแฆแแแแก แจแแแแแแ แแแ แ แจแแแแ แแแแก แแแแ
แซแแ แแแแแ แจแแแแ แแแแก แแแแแแ แจแแแซแแแแ แแฆแแแฉแแแแก แแแแแแขแแ แ แแฃแแ แแ แแแแแ แจแแแแ แแแแกแแแแก. แแ แแแแแ แแแแแแแแแ แแ แ-แแ แแ แแ แแก แกแขแ แฃแฅแขแฃแ แแแแก แจแแแแแ แขแแฅแแแแฃแ แ แแแแแแแก แแ แกแแแแแ. แแ แแแฃแกแขแ แแ แแแแก แแแแแฎแแแ แแแ แฌแแ แแแฉแแแแก แแแ แแฅแขแแ แแแจแ แแแแแแแขแแกแแแแก แฉแแแแแแแก แฃแแแ แแแชแแแแ แแแกแแฆแแแแก แแแแแแแแแ.
typedef struct NodeKey {โ
EntityId parentId;โ
uint8_t type;โ
uint8_t nameBuffer[256];โ
} NodeKey;
แแแแแ แแแกแ แกแแแแ แขแแแแก แแแฃแฎแแแแแแ, แฃแแแขแแก แจแแแแฎแแแแแจแ แแก แซแแแแแ แแแแ แแแฎแกแแแ แแแแก แแแแฎแแแ แก. แกแแแแฃแ แแก แแฃแคแแ แ แแ แแก 256 แแแแขแ, แแฃแแชแ แกแแจแฃแแแแ แคแแแแแก แแ แกแแฅแแฆแแแแแก แกแแฎแแแแแ แแจแแแแแแ แแฆแแแแขแแแ 20-30 แกแแแแแแแก.
แฉแแแแฌแแ แแก แแแแแก แแแขแแแแแแชแแแก แแ แ-แแ แแ แกแขแแแแแ แขแฃแแ แขแแฅแแแแแ แแแกแ โแแแญแ แโ แ แแแแฃแ แแแแแแ แจแแกแแคแแ แแกแแ. แแแกแ แแ แกแ แแแแจแ แแแแแแแ แแแแก, แ แแ แงแแแแ แชแแแแแ แกแแแ แซแแก แแแแแก แจแแแแแแกแ แแแแฎแแแ แแฃแคแแ แจแ แกแขแ แฃแฅแขแฃแ แแก แแแแแก, แฎแแแ แแแแ แกแแแ แซแ แชแแแแ แชแแแแแแแจแ.แแ แแแแแแแแก แจแแกแแแแแแกแแ, แแแกแแฆแแแ NodeKey
แแแ แแแแฅแแแแแ แจแแแแแแแแแ แแ.
typedef struct NodeKey {โ
EntityId parentId;โ
uint8_t type;โ
uint8_t nameLength;โ
uint8_t nameBuffer[256];โ
} NodeKey;
แแแ แแ แแแแกแ, แกแแ แแแแแแแชแแแก แแ แแก, แแ แแ แแก แแแแแแแแฃแแ, แ แแแแ แช แแแแแชแแแแ แแแแ sizeof
แแแแแ แกแขแ แฃแฅแขแฃแ แ แแ แงแแแแ แแแแแก แแแแ แแ แแก แคแแฅแกแแ แแแฃแแ แกแแแ แซแ แแแฃแก แแฃแคแแ แแก แ แแแแฃแ แแ แแแแแงแแแแแฃแแ แแแฌแแแแก แแแแ.
MDB_val serialize(NodeKey * const key) {
return MDB_val {
.mv_size = offsetof(NodeKey, nameBuffer) + key->nameLength,
.mv_data = (void *)key
};
}
แ แแคแแฅแขแแ แแ แแแแก แจแแแแแแ แแแแแฆแแ แแแแจแแแแแแแแแ แแแแแแแแ แแแกแแฆแแแแแแก แแแแ แแแแแแแแฃแ แกแแแ แชแแจแ. แแฃแแชแ แขแแฅแแแแฃแ แ แกแคแแ แแแแ แแแแแแแแแแ แ nameLength
, แแแแฃแแแกแฎแแแแ แแ แแแแแ แจแแแแ แแแ แแฆแแ แแ แแก แจแแกแแคแแ แแกแ แแแกแแฆแแแแก แจแแแแ แแแแกแแแแก. แแฃ แฉแแแ แแ แจแแแชแแแแ แแแก แฉแแแแแ, แแแจแแ แกแแฎแแแแก แกแแแ แซแ แแฅแแแแ แฃแคแ แ แแ แแแ แแขแแขแฃแแ แคแแฅแขแแ แ แแแฎแแ แแกแฎแแแแจแ, แแแแ แ แแแแแ แกแแฎแแแ.
LMDB แกแแจแฃแแแแแแก แแซแแแแก แแแแแแฃแ แแแแแชแแแแ แแแแแก แฐแฅแแแแแก แกแแแฃแแแ แ แซแแ แแแแแ แจแแแแ แแแแก แคแฃแแฅแชแแ. แแก แแแแแแแ แคแฃแแฅแชแแแก แแแแแงแแแแแแ mdb_set_compare
แแแแชแ แแ แแแฎแกแแแแแ. แแจแแแ แ แแแแแแแแแก แแแแ, แแแแแชแแแแ แแแแ แแ แจแแแซแแแแ แจแแแชแแแแแก แแแแแ แแแกแ แกแแชแแชแฎแแแก แแแแแแแแแแแจแ. แจแแงแแแแแกแแก, แจแแแแ แแแ แแฆแแแก แแ แแแแแแจแก แแแแแ แฃแ แคแแ แแแขแจแ, แฎแแแ แแแแแกแแแแแแ แแแ แฃแแแแก แจแแแแ แแแแก แจแแแแแก: (-1-แแ แแแแแแแ), (1)-แแ แแแขแ แแ แขแแแ (0). แคแกแแแแแแแแ แแแแกแแแแก 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 // ...
}โ
แกแแแแ แแแแแชแแแแ แแแแแจแ แงแแแแ แแแกแแฆแแแ แแ แแ แแ แแแแแ แขแแแแกแแ, แแแแแแแแ แแ แแแแ แแแแขแแก แฌแแ แแแแแแแแก แฃแแแ แแแแ แแแแแชแแแ แแแกแแฆแแแแก แแแแแแแชแแแก แกแขแ แฃแฅแขแฃแ แแก แขแแแแ. แแฅ แแ แแก แแ แแ แแแฃแแแกแ, แแแแ แแ แแก แแฅแแแแ แแแแฎแแแฃแแ แชแแขแ แฅแแแแแ แฅแแแแแแงแแคแแแแแแจแ "แฌแแแแแฎแแแก แฉแแแแฌแแ แแแ".
แฆแแ แแแฃแแแแแก แกแแ แแแแแแแชแแ
แจแแแแฎแฃแแ แฉแแแแฌแแ แแแแก แแแกแแฆแแแแแแ, LMDB แแฃแจแแแแก แฃแแแแฃแ แแกแแ แแแขแแแกแแฃแ แแ. แแกแแแ แแ แแแแแแแก แแแแ แแแแ แแแแแกแแแแ แ แแแแแแแชแแแก แแแแ แแชแแแก แคแแ แแแแแจแ แแ แแแแแ แแแแแฌแงแแแขแแก แจแแกแ แฃแแแแ แแแแแแแแแแฃแแแ แจแแแแ แแแแก แกแแฉแฅแแ แแแ. แแแแแแฃแ แกแแแงแแ แแจแ แแแแฃแแแกแฎแแแแ แแ แแแแแ แจแแแแ แแแ แกแแแแแ แแกแ แฃแแแ แแงแแก แแแกแแฆแแแแแแก แจแแกแแแแ แแแแแ, แแแแ แแ แแฃ แแแแแแแแแ แแแแแฌแแแ แกแแแฃแแแ แแก แแแแแงแแแแแ, แแแจแแ แแแกแจแ แแแกแแฆแแแแแแก แแแกแแ แแแแแแแชแแแก แแ แแชแแแฃแ แ แฃแแแ แแงแแก แ แแช แจแแแซแแแแ แกแฌแ แแคแ.
แแแแแชแแแแ แแแแแก แแแแกแแแฃแแ แแแแ แแ แแแแขแแ แแกแแแก แฉแแแแฌแแ แแก Value-แแแฌแแแ (แแแแจแแแแแแแ). แแแกแ แแแแแฅแชแแแ แแแแขแแแแ แแแแแฅแขแแ แฎแแแแ แแฎแแแแ แแแจแแ, แ แแแแกแแช แแแก แฃแแแ แกแญแแ แแแแ แแแแแแแชแแแก แแแแ, แแแแแแแแแ, แแแกแ แแแ แแแแ แฉแแแแแแ. แแแแแแแแ แแก แฎแแแแ แจแแแแ แแแแ แแจแแแแแแ, แแ แแ แแชแแแฃแ แแก แกแแฉแฅแแ แแก แแแแฎแแแแแแ แแ แช แแฃ แแกแ แแ แแขแแแฃแแแ แแ แแแกแ แแแแฎแแ แชแแแแแแแกแแก แฉแแแ แแแแ แแ แแแแแกแฃแคแแแ แจแแแแแซแแแ แคแแแฃแกแแ แแแ แแแฎแแ แฎแแแฃแแแแแแ. แแแแแแแแแ, แฏแแ แแ แแแแแแฌแแ แแแ แคแแแแแแแก แแแขแแแแแแชแแแแแแก แกแแ แแฃแแแแแชแแแกแแแแก, แฉแแแ แแแงแแแแแ NSKeyedArchiver
.
NSData *data = serialize(object);โ
MDB_val value = {โ
.mv_size = data.length,โ
.mv_data = (void *)data.bytesโ
};
แแฃแแชแ, แแ แแก แแ แ, แ แแแแกแแช แจแแกแ แฃแแแแแก แแฅแแก แแแแจแแแแแแแ. แแแแแแแแแ, แแแแฎแแแ แแแแแก แฆแ แฃแแแแก แคแแแแแก แกแขแ แฃแฅแขแฃแ แแก แจแแกแแฎแแ แแแขแ-แแแคแแ แแแชแแแก แจแแแแฎแแแกแแก, แฉแแแ แแแงแแแแแ แแแแแ แแแแแฅแขแแก แแแฎแกแแแ แแแแก แแแแแแกแแงแ แแแก. แแแแ แกแแ แแฃแแ แฌแแ แแแแแแแแแแแแแก แแแแแ แแ แแแแก แแแแชแแแแก แแแแแแ แ แฌแแ แขแแแ แแ แแก แแก แคแแฅแขแ, แ แแ แแแ แแฅแขแแ แแแก แแแแแแแขแแแ แแแแแแแ แแแฃแแแ แแแแกแแก แแแ แแ แฅแแแ.
C แแแแแ แแแกแ แแแแกแแฎแแ แชแแแแแแแแ แแแแแแแแ แแแ แแแแแ แแขแฃแแ แแแแแแ แชแแแแ แกแขแ แฃแฅแขแฃแ แแแแ แแ แแก แแแขแแแแแ แแ แแแแ แแแแจแแ แ แกแแแแแแกแแกแแแ แแกแแชแแแชแแแก แขแแแแก แแแแแก แแแจแแแแแแ แแฃแกแขแแแแ. แแแแจแแ แแก แ แแแแฃแ แ แจแแแแแ แกแ แแแแแแแแฃแแแ แขแแแแก แขแแฅแแแแฃแ แ แแขแ แแแฃแขแแก แแแจแแแแแแ.
typedef struct NodeValue {โ
EntityId localId;โ
EntityType type;โ
union {โ
FileInfo file;โ
DirectoryInfo directory;โ
} info;โ
uint8_t nameLength;โ
uint8_t nameBuffer[256];โ
} NodeValue;โ
แฉแแแแฌแแ แแแแก แแแแแขแแแ แแ แแแแแฎแแแแ
แกแแ แแฃแแ แแแกแแฆแแแ แแ แฆแแ แแแฃแแแแ แจแแแซแแแแ แแแแแแขแแก แแแฆแแแแแก. แแแแกแแแแแก แแแแแแงแแแแแ แคแฃแแฅแชแแ mdb_put
.
// key ะธ value ะธะผะตัั ัะธะฟ MDB_valโ
mdb_put(..., &key, &value, MDB_NOOVERWRITE);
แแแแคแแแฃแ แแชแแแก แแขแแแแ, แกแแชแแแก แจแแแซแแแแ แแแแชแแก แแ แแแแ แซแแแแก แแ แแแแแ แฉแแแแฌแแ แแก แจแแแแฎแแ แแ แแ แแ แแแแแ แแแกแแฆแแแแ.โ แแฃ แแแแแแจแแแแก แแฃแแแแ แแแ แแแ แซแแแฃแแแ, แแแจแแ แฉแแแแฌแแ แแก แฉแแกแแแกแแก แจแแแแซแแแแ แแแแกแแแฆแแ แแ, แแแกแแจแแแแแ แแฃ แแ แ แฃแแแ แแ แกแแแฃแแ แฉแแแแฌแแ แแก แแแแแฎแแแแ. แแฃ แแแคแฃแญแแแ แจแแแซแแแแ แแแฎแแแก แแฎแแแแ แแแแแก แจแแชแแแแแก แจแแแแแแ, แแแจแแ แจแแแแซแแแแ แแแแแฆแแแแ แแแกแแแ แแ แแจแแก แแแแแแแแแ 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;โ
}
แฌแแ แแแแแแแแแ แฉแแแแแแแแแแ แแแแฉแแแแแแก, แแฃ แ แแแแ แแแซแแแแ แกแแ แแฃแแแแแชแแแก แกแขแ แฃแฅแขแฃแ แแแแก แแแแแแกแแงแ แแแแก แกแแจแฃแแแแแแ, แแแแแแแ แแแชแแแแ แแแแแแแฃแ แ แแแแแงแแคแ แแ แ แแฎแแแแ แฌแแ แแกแแก, แแ แแแแ แแแแแชแแแแแแก แฌแแแแแฎแแแกแแก. แคแฃแแฅแชแแแแแ แแแแแแแแแแ แ mdb_get
แแแฉแแแแแแแแ แแฃแกแขแแ แฃแงแฃแ แแแก แแแ แขแฃแแแฃแ แ แแแฎแกแแแ แแแแก แแแกแแแแ แแก, แกแแแแช แแแแแชแแแแ แแแแ แแแแฎแแแก แแแแแฅแขแแก แแแแขแแก แฌแแ แแแแแแแแก. แกแแแแแแแแแแจแ, แฉแแแ แแแฆแแแ แแ แแแแแ ORM-แก, แแแแฅแแแก แฃแคแแกแแ, แ แแแแแแช แฃแแ แฃแแแแแงแแคแก แแแแแชแแแแ แฌแแแแแฎแแแก แซแแแแแ แแแฆแแ แกแแฉแฅแแ แแก. แแแแแแแแก แแแแแ แกแแแแแแแแ, แแฃแชแแแแแแแแ แแแฎแกแแแแแ แแแกแแแ แแแแแแจแแ แแแฃแแ แ แแแแแแแแ แแแฎแแกแแแแแแแแ.
- แแฎแแแแ แฌแแแแแฎแฃแแ แขแ แแแแแฅแชแแแกแแแแก, แฆแแ แแแฃแแแแแก แกแขแ แฃแฅแขแฃแ แแก แแแฉแแแแแแแแ แแแ แแแขแแ แแแฃแแแ, แ แแ แแแฅแแแแแแก แแฎแแแแ แขแ แแแแแฅแชแแแก แแแฎแฃแ แแแแแ. แ แแแแ แช แฃแแแ แแฆแแแแจแแแ, B-แฎแแก แแแแ แแแแ, แ แแแแแแแแช แแแแแฅแขแ แแแแแแ แแแแก, แแแแแ แแแ-แฉแแฌแแ แแก แแ แแแชแแแแก แฌแงแแแแแแ, แฃแชแแแแแ แ แฉแแแ แแแแแ, แกแแแแ แแแแแแฃแ แแ แแ แแแ แแแแแ แแฎแแแ แแแ. แแแแแแ แแฃแแแ, แ แแแแ แช แแ แแแแแแ แแแแแแจแแ แแแฃแแ แแแแ แขแ แแแแแฅแชแแ แแแกแ แฃแแแแแ, แแแแ แแแแแก แฎแแแแฎแแ แแแแแงแแแแแ แจแแกแแซแแแแแแแ แแฎแแแ แแแแแชแแแแแแกแแแแก. แแฃ แแฃแชแแแแแแแแ แแแแแฅแขแแแแก แแแแแ แฉแแแ แขแ แแแแแฅแชแแแก แจแแแแแแ, แ แแแแแแแช แจแแฅแแแ แแกแแแ, แแแจแแ แแกแแแ แแแแแช แฃแแแ แแแแแแแ แแแก.
- แฌแแแแแฎแแแก แขแ แแแแแฅแชแแแกแแแแก, แแแฆแแแฃแแ แกแขแ แฃแฅแขแฃแ แ-แแแแจแแแแแแแแก แแแแแแแแ แแแฅแแแแ แแฅแแแแ แแฎแแแแ แแแ แแแ แแแแแคแแแแชแแแก แแ แแชแแแฃแ แแแแ (แแแแแชแแแแแแก แฉแแฌแแ แ แแ แฌแแจแแ).
- แแแฃแฎแแแแแแ แแแแกแ, แ แแ แกแขแ แฃแฅแขแฃแ แ
NodeValue
แแ แ แกแ แฃแแคแแกแแแแแ, แแแแ แแ แแแญแ แแแ (แแฎ. แฅแแแแแแงแแคแแแแแ "แแแกแแฆแแแแก แจแแแแแแ แแแ แ แจแแแแ แแแแก แกแแจแฃแแแแแแ"), แแฃแ แกแแ แแก แกแแจแฃแแแแแแ แจแแแแซแแแแ แแแ แขแแแแ แจแแฎแแแแแ แแแก แแแแแแแ. แแแแแแ แแ, แแ แแแแแแขแแแแ แแแ! - แแ แแแแแแ แจแแแแฎแแแแแจแ แแ แจแแแแซแแแแ แกแขแ แฃแฅแขแฃแ แแก แจแแชแแแ แแแฆแแแฃแแ แแแฉแแแแแแแแก แกแแจแฃแแแแแแ. แงแแแแ แชแแแแแแแ แฃแแแ แแแแฎแแ แชแแแแแแก แแฎแแแแ แแแแแแแ
mdb_put
. แแฃแแชแ, แแแแก แแแแแแแแแก แแแแแ แกแฃแ แแแแแ, แแก แแ แแแฃแจแแแแแก, แ แแแแแ แแแฎแกแแแ แแแแก แแ แแแแ, แกแแแแช แแก แกแขแ แฃแฅแขแฃแ แ แแแแแแ แแแแก, แแ แแก แแฎแแแแ แฌแแแแแฎแแแก แ แแแแแจแ. - แแแแแแขแแแแ แคแแแแ แแ แแชแแกแแก แแแกแแแแ แแแแแก แกแแแ แชแแจแ, แ แแแ, แแแแแแแแแ, แแแแแ แแแ แจแแแแฎแแแก แแแฅแกแแแแแฃแ แ แแแแ แคแฃแแฅแชแแแก แแแแแงแแแแแแ
mdb_env_set_map_size
แแแแแแแแ แแแแฃแฅแแแแก แงแแแแ แขแ แแแแแฅแชแแแก แแ แแแแแแจแแ แแแฃแ แแ แแแฃแแก แแแแแแแ แแ แแแแแแแแแแก แแแแแ แแขแฃแแแ แแแแแฅแขแแแแก แฌแแกแแแแแฎแแ.
แแแแแแแก, แแแแแ แแ แแ แแแแกแแแ แแแแแแแ แแแแแแ แฃแแแ, แ แแ แแแกแ แแ แกแแก แแแแแฆแแแแแแ แแฎแแแแ แแ แ แแฃแแฅแขแจแ แแ แฏแแแแ. B-แฎแแก แจแแกแแฎแแ แแแแจแ แแ แแแแแชแ แแแฎแกแแแ แแแแจแ แแแกแ แแแแ แแแแแก แแ แแแแแแแแแก แแแแแ แแแ. แแฅแแแแ แแแแแแแแแแ แแแแก, แ แแ แกแแ แแฃแแ แแแแแชแแแแแแ แแฃแคแแ แแก แแแกแแฌแงแแกแแก แแแกแแแแ แแ แจแแแซแแแแ แแงแแก แแแกแแแฃแขแฃแ แแ แแแแแแแแฃแ แ. แแแแก แแแแ, แแแแแ แแแแแแแแ, แแแฆแแแฃแแ แกแขแ แฃแฅแขแฃแ แแจแ MDB_val
แแ แแแชแแแฃแแ แกแขแ แฃแฅแขแฃแ แแก แแแฉแแแแแแแแแ แแแแแแแ แแแฃแแแ แแแแแ. แแแแแแ แแฃแแแ, แแแแแแ แแ แฉแแแแก แแ แฅแแขแแฅแขแฃแ แ (IOS-แแก แจแแแแฎแแแแแจแ, แแก แแ แแก armv7) แแแแแฎแแแก, แ แแ แแแแแกแแแแ แ แแแแแชแแแแแแก แแแกแแแแ แแ แแงแแก แแแแฅแแแฃแ แ แกแแขแงแแแก แแแแแก แแ แแแแแฏแแ แแแ, แแ, แกแฎแแ แกแแขแงแแแแแ แ แแ แแแฅแแแ, แกแแกแขแแแแก แแแขแ. (armv7-แแกแแแแก แแก แแ แแก 32 แแแขแ). แกแฎแแ แกแแขแงแแแแแ แ แแ แแแฅแแแ, แแแแ แแชแแ, แ แแแแ แแชแแ *(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 แฃแแ แฃแแแแแงแแคแก แแฃแ แกแแ แแก แแแกแขแ แแฅแชแแแก. แแแแแ แจแแแฎแแแแ, แแฃ แ แแแแ แแแแฃแจแแแ แแแกแแแ แชแฎแ แแแแก แแแแแแแแแก แแแแแงแแแแแแ แแแแฎแแแ แแแแแก แฆแ แฃแแแแแแแ แแแขแแแแแแชแแแแแแ แฉแแแแแแแก แฃแแแ แแแชแแแแ.
แ แแแแ แช แแแ แแฅแขแแ แแแจแ แคแแแแแแแก แกแแแก แฉแแแแแแแก แแแฌแแแ, แแฅแแแ แฃแแแ แแแแแแ แงแแแแ แแแกแแฆแแแ, แ แแแแแแแแแแช แแแแแแจแแ แแแฃแแแ แแแกแ แจแแแแแแแแ แคแแแแแแ แแ แกแแฅแแฆแแแแแแแ. แฌแแแ แฅแแแแแแแแจแ แฉแแแ แแแแแฎแแ แแกแฎแแ แแแกแแฆแแแแแ NodeKey
แแกแ, แ แแ แแกแแแ แแแ แแแแแ แแแแแแแแฃแแแ แแแแ แแจแแแแแ แแแ แแฅแขแแ แแ ID-แแ. แแแ แแแแ, แขแแฅแแแแฃแ แแ, แกแแฅแแฆแแแแแก แจแแแแแ แกแแก แแแแแแแแแก แแแแชแแแ แแชแแ แแแแ แแฃแ แกแแ แแก แแแแแแแกแแแแแแ แแแแแแจแแแแก แฏแแฃแคแแก แแแแ แกแแแฆแแแ แแ แแแชแแแฃแแ แแ แแคแแฅแกแแ, แ แแกแแช แแแฐแงแแแแ แแแแแแ แแแ แฅแแแแ แกแแแฆแแ แแแแ.
แแฅแแแ แจแแแแซแแแแ แแแแแแ แแแแ แแฆแแแ แ "แจแฃแแแแ" แแแแแแแแแแ แฃแแ แซแแแแแ. แแแแกแแแแแก แแฃแ แกแแ แ แแแแแแกแแแฃแแแ แแแแแชแแแแ แแแแแก แแแแแแจแแแแก แแแแแ แกแแแก แแแกแแฌแงแแกแจแ แแ แจแแแแแ แแแขแฃแแแแก แแแแแ, แกแแแแ แแแก แฅแแแแแ แแแแแฉแแแแแ แซแแ แแแแแ แแแ แแฅแขแแ แแแก แแแแแขแแคแแแแขแแ แแก แแแกแแฆแแแ. แแ แแแแแแแแก แแฅแแก 2 แแจแแแ แ แแแแแ:
- แซแแแแแก แฌแ แคแแแ แกแแ แแฃแแ, แแฃแแชแ, แ แแแแ แช แแแแแฎแกแแแแแแ, แแแแแแแ แฎแแแแจแ แแ แแแแแ แแขแฃแแแ B-แฎแแจแ, แแก แจแแแซแแแแ แแแแแแแแก แแแแแ แแแแฃแ แแ แแจแ.
- แฃแจแแแแแแ, แงแแแแ แแแแ แแ, แ แแแแแแช แฌแแ แฃแกแฌแ แแแก แกแแกแฃแ แแแแก, แคแแแแแแแ แแแแแแ แแแฎแกแแแ แแแแจแ แแแแฆแแแแฃแแแ, แ แแช แซแแแแแ แซแแแ แแ.
แกแแแแแแแแ แแ, 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. แชแฎแ แแแแแก แจแแ แแก แฃแ แแแแ แแแแแแแก แแแแแแแ แแแ
แแฆแแแกแแแแแก แฉแแแ แแแแแฎแแ แฎแแ แแ แแ แชแฎแ แแแแก แแแแแชแแแแ แแแแแก แแแแแแแแกแ แแ แแฃแจแแแแแก แงแแแแ แแกแแแฅแขแแก แแแแแแแแกแฌแแแแแ. แจแแแแแซแแแ แแแฅแแแ, แ แแ แชแฎแ แแแ แแ แแก แแแฎแแ แแกแฎแแแฃแแ แฉแแแแฌแแ แแแแก แแแแ แแแ, แ แแแแแแช แจแแแแแแ แแแแแ แขแแแแก แแแกแแฆแแแ-แแแแจแแแแแแแแก แฌแงแแแแแแแกแแแ. แแฃ แแฅแแแ แแฉแแแแแแ แแแกแแฆแแแก แแแ แแแฃแแฎแแแแก แกแแฎแแ แแ แแแกแแแ แแแแแแจแแ แแแฃแ แแแแจแแแแแแแแก, แ แแแแ แช แงแฃแแก, แแฅแแแ แแแแฆแแแ แแแแแชแแแแ แแแแแก แแแแฃแแแฃแ แแแแแ แแแแก.
โ
แแฃแแชแ, แ แแแแฃแ แชแฎแแแ แแแแจแ แแจแแแแแแ แแ แแก แจแแกแแซแแแแแแ แแแแแแ แกแแกแฎแแแ แแแแแ แฉแแแ. แฎแจแแ แแ แแแแแชแแแแ แแแแแจแ แกแแญแแ แแ, แแแ แแแ แ แแแจแ, แ แแแแแแแแ แชแฎแ แแแ แแ แแแแ แแช, แแแแจแ แจแแ แฉแแแแก แฉแแขแแ แแแ แซแแ แแแแแ แแแกแแฆแแแแกแแแ แแแแกแฎแแแแแแฃแแ แแแแแแแแแแ แแแแ. แแก แแแแ แแแฌแแแ แแซแฆแแแแแ แแแแ แจแแฅแแแแกแ แแ แฃแ แแแแ แแแแแแแจแแ แแแแก แกแแแแแฎแแแก.
แแแแแฅแกแแก แชแฎแ แแแแแ
แฆแ แฃแแแแแแ แแแแแแแชแแแก แแฅแแก แแแแงแแคแแแแแ "แแแแแ แแ". แแก แแฉแแแแแแก แแแแแ แจแแแแแ แกแก แแแแแ แฆแ แฃแแแแแแ, แแแแแแแแฃแแแ แแแ แแฆแแก แแแฎแแแแแ. แแกแแแ แจแแ แฉแแแแก แแแขแแแแแฃแ แ แแแแฎแแ แชแแแแแแแกแแแแก, แแแแแแ แ แชแฎแ แแแแก แแแแ แแแ, แแฅแแแ แฃแแแ แจแแฅแแแแ แแแแแ แแ แแ แแฎแแแ แขแแแแก แแแกแแฆแแแแแแ. แแกแแแ แจแแแชแแแก แแแแก แคแแแแแก แจแแฅแแแแก แแแ แแฆแแ, แ แแแแแแช แแแแฅแแแแแแก แ แแแแ แช แแแ แแแแแแ แแแฎแแ แแกแฎแแแแก แแ แแขแแ แแฃแแ. แแแแก แแแแ, แ แแ แแฎแแแ แแแกแแฆแแแแแ แแฎแแแ แแแแแ แแแแแชแแแแแก, แ แแแแ แช แซแแ แแแแแ แชแฎแ แแแแก แแแแแแจแแแก, แแแ แฃแฌแแแแแแ แแแแแฅแกแแก แแแแแแจแแแก. แแกแแแ แแแแแจแแฃแแแ แคแแ แแแฎแแแกแคแ แแ แฅแแแแแ แแแชแแแฃแ แกแฃแ แแแแ.
แแแแแ แแแแแชแแแแ แแแแแก แคแแ แแแแแจแ แกแฎแแแแแกแฎแแ แชแฎแ แแแแก แแแแแแจแแแแก แแ แแแแแแแแกแแแ แแแแชแแแแแแแแแก แแแแแแ, แงแแแแ แแแแแแแก แแแแแแขแ แแแแแขแแแแแ แขแแฅแแแแฃแ แ แแแแ tableId. แแแฎแแ แแกแฎแแแแก แฃแแแฆแแแก แแ แแแ แแขแแขแแ แแแฅแชแแแแ, แฉแแแ แแแแแฏแแฃแคแแแ แแแแแแจแแแก แฏแแ แชแฎแ แแแแแแก แแแฎแแแแแ แแ แฃแแแ แชแฎแ แแแแแแก แจแแแแแ - แฉแแแแ แฌแแกแแแแก แแแฎแแแแแ.
แแแแแฅแกแแก แแแกแแฆแแแ แแฎแแแ แแแแแ แแแแแชแแแแแก, แ แแแแ แช แแแ แแแแแแ แแแกแแฆแแแ. แแ แแแแกแแแแก แแแ แแแแแ แ แแแแฎแแ แชแแแแแแ แแแ แแแแแแ แแแกแแฆแแแแก แแแแจแแแแแแแแก แแแฌแแแแก แแกแแแก แแแแแแจแแ แแแแ, แแ แแแแขแแแแแฃแ แแ แแ แแแ แแฃแแแ แ แแแแแแแแ แแแแแกแแแ แแกแแ:โ
- แแแแแแแแฃแแ แกแแแ แชแแก แแแแแกแแแ แแกแแ, แแแขแแแแแแชแแแแแ แจแแแซแแแแ แกแแแแแแ แแแแแแ แ แแงแแก.
- แจแแกแ แฃแแแแแก แแแแแกแแแ แแกแแ, แแแแแแแแ แแแแแซแแก แแแขแแแแแแชแแแแแแก แแแแแฎแแแแแกแแก แแแแแฌแแแ แแ แ แแแแแแจแแก แแแแแฌแแ แ.
- แแแแแก แแฎแแ แแแญแแ แแก แแแแแกแแแ แแกแแ, แแแแแก แแ แแแแแก, แแฃ แฉแแแ แแแแแแแฌแงแแแ แแ แ-แแ แแ แแแแแแจแแก แแแแแชแแแแแแก แแแแแฎแแแแแก, แจแแแแฎแแแจแ แแแแแฆแแแ แแแแแชแแแแ แจแแฃแกแแแแแแแแก แแแฎแแแฌแแ แจแแชแแแแแก.
แจแแแแแแ, แฉแแแ แแแแแแฎแแแแแ, แแฃ แ แแแแ แฃแแแ แแฆแแแแคแฎแแ แแก แแก แฎแแ แแแแแแ.
แชแฎแ แแแแแก แจแแ แแก แฃแ แแแแ แแแแแแแก แแ แแแแแแแแ
แแแแฃแจแ แแแ แแแ แแ แแก แจแแกแแคแแ แแกแ แแแแแฅแกแแก แชแฎแ แแแแก แแแแแแ แแแ แแแกแแแแแจแแ แแแแแ "แแแกแแฆแแแ แ แแแแ แช แฆแแ แแแฃแแแแ". แ แแแแ แช แแแกแ แกแแฎแแแ แแฃแแแกแฎแแแแก, แแแแแฅแกแแก แฉแแแแฌแแ แแก แแแแจแแแแแแแแก แแแฌแแแ แแ แแก แซแแ แแแแแ แแแกแแฆแแแแก แแแแจแแแแแแแแก แแกแแ. แแก แแแแแแแ แแแแแ แแชแฎแแแก แแแแแ แฉแแแแแแแแ แงแแแแ แแแแฃแกแก, แ แแแแแแช แแแแแแจแแ แแแฃแแแ แแแ แแแแแแ แฉแแแแฌแแ แแก แแแแจแแแแแแแแก แแแฌแแแแก แแกแแแก แจแแแแฎแแแกแแแ. แแ แแแแแ แแ แกแแคแแกแฃแ แ แแก แแ แแก, แ แแ แแแแแฅแกแแก แแแกแแฆแแแแ แแแแจแแแแแแแแก แแแกแแฆแแแแ, แแ แแแก แแแชแแแแ, 2 แแแแฎแแแแ แฃแแแ แแแแแแแแ แแแแแชแแแแ แแแแแจแ. แกแฅแแแแขแฃแ แแ, แจแแแแแแ แแแฆแแแฃแแ แแแแแชแแแแ แแแแแก แกแฅแแแ แจแแแแแแแ.
แชแฎแ แแแแแก แจแแ แแก แฃแ แแแแ แแแแแแแก แแ แแแแแแแแแก แแแแแ แแ แแ แแแแฃแจแแ "แแแแแแขแ แแแกแแฆแแแ". แแแกแ แแ แกแ แแแแแแแ แแแแก แแแแจแ, แ แแ แแแแแแจแก แแแแแแขแแก แแแแแขแแแแแ แแขแ แแแฃแขแแแ, แ แแแแแแแช แกแแญแแ แแ แแ แ แแแฎแแ แแกแฎแแแแกแแแแก, แแ แแแแ แแกแแชแแ แแแฃแแ แแแกแแฆแแแแก แฎแแแแฎแแ แจแแกแแฅแแแแแแ. Mail.ru Cloud แแแแแแแชแแแจแ แแ แแก แแแกแ แแแแแงแแแแแแก แ แแแแฃแ แ แแแแแแแแแแ, แแฃแแชแ, แฆแ แแ แฉแแซแแ แแแก แแแแแแแ แแกแแชแแแแแแแ. แแแแแ แแขแฃแแ iOS แฉแแ แฉแแแแแก แแแแขแแฅแกแขแจแ, แแ แแแแชแแแ แคแแฅแขแแฃแ , แแแแ แแ แฃแคแ แ แแแกแแแแ แแแแแแแแก.
Cloud แแแแแแฃแ แ แแแแแแขแแแก แแฅแแ แแแแ แแ, แกแแแแช แแแฉแแแแแแแ แงแแแแ แคแแแแ แแ แกแแฅแแฆแแแแ, แ แแแแแแช แแแแฎแแแ แแแแแแ แแแฃแแแแ แ แกแฎแแ แแแแแแแแแแก. แแแแแแแแ แแกแแแ แคแแแแแแ แจแแแแ แแแแ แชแแขแแ แแ แแแแแแ แแแแแแจแแ แแแฃแแแ แแแแ แ แแแแแ แแขแฃแแ แแแคแแ แแแชแแ แกแแฏแแ แแแแแก แจแแกแแฎแแ (แแแก แแฅแแก แฌแแแแแ, แ แ แฃแคแแแแแแแ แแ แ.แจ.), แแ แแฅแแแแ แ แแชแแแแแแฃแ แ แแแกแ แแแขแแแ แแแ แฆแแ แแแฃแแแแแก แแแฌแแแแ. แฉแแแแฌแแ แ แแแแแแ แชแฎแ แแแจแ. แแฃแแชแ, แแฃ แแกแฃแ แ แแกแแแ แคแแแแแแแก แแคแแแแ แฉแแแแแแ, แแแจแแ แแแแแช แฃแแแ แจแแแแแฎแแ แกแแแแ. แแฃแแแแ แแแ แแแแแกแแแแแแ แแแกแแแแก แชแแแแ แแแแแแแก แจแแฅแแแ. แฅแแแแแ แแแชแแแฃแ แแแแแ แแแแจแ แแแก แแแแแแจแก แแฅแแก แแ แแคแแฅแกแ "P", แฎแแแ "propname" แฉแแแแชแแแแแแก แแแแแแ แจแแแซแแแแ แจแแแชแแแแแก แฃแคแ แ แแแแแ แแขแฃแแ แแแแจแแแแแแแแ "public info".โ
แงแแแแ แฃแแแแแแฃแ แ แแแขแแแแแแชแแแแแ, แ แแกแแแแกแแช แจแแแฅแแแ แแฎแแแ แชแฎแ แแแ, แแแแแขแแแแแแ แฉแแแแฌแแ แแก แแแแจแแแแแแแแ แแแฌแแแจแ. แแแแแแ แแฃแแแ, แแ แแกแฃแ แก แแแแแชแแแแ แแแแแแ แแแ แคแแแแแแแกแ แแ แกแแฅแแฆแแแแแแแแก แจแแกแแฎแแ, แ แแแแแแแช แฃแแแ แแแแฎแแแ แแแแแแ แชแฎแ แแแจแ. แแแแก แแแชแแแแ, แแแแแแขแ แแแแแชแแแแแ แแแแขแแแ "P" แแแแแแจแก "แแแแแซแแก ID" แแ "แแ แแแก แแแแแแญแแแก" แแแแแแแก แกแแฎแแ. แแแแ แฌแงแแแแแแ, แแฅแแแ แจแแแแซแแแแ แแแฌแงแแ แแแแแฅแกแแก แแแกแแฆแแแ, แ แแแแแแแช แจแแแแซแแแแ แแแแฆแแ แแแ แแแแแแ แแแกแแฆแแแ, แ แแแแแแแช, แกแแแแแแแ, แจแแแแซแแแแ แแแแฆแแ แแแแแซแแก แแแขแแแแแแชแแแแแ.
แแแกแแแแ
แฉแแแ แแแแแแแแแ แแแคแแกแแแ LMDB แแแแฎแแ แชแแแแแแแก แจแแแแแแแก. แแแแก แจแแแแแ แแแแแแแชแแแแแก แแแงแแแแแก แ แแแแแแแแ 30%-แแ แจแแแชแแ แแ.
แจแแกแ แฃแแแแฃแแ แกแแแฃแจแแแก แจแแแแแแแแ แแแแแ แแแแแฎแแแฃแ แแแ iOS แแฃแแแแก แแแ แแ. แแ แแ แแแกแแแแก แแแแ แแแแแก แแแแแแแชแแแก แแ แ-แแ แแ แแแแแแ แ โแคแแแแแกโ แแแแงแแคแแแแแแช LMDB-แแแ แแแแแ แแฃแแ แแ แกแฎแแ แแแฌแแแแแแช แแแแจแแ. C แแแ, แ แแแแแจแแช แแแแแ แแแแแ แกแแแแแแซแ แแแแจแแแแแแแแแแก แจแแแแฎแแ, แแแ แแ แแแฎแแแ แแแ แแงแ, แ แแแ แแแแแแแแ แแแแแ แแแก แแ แแแแแ แแแแแงแแแแแฃแแ แแแแแซแแ แฏแแแ แแแแแ แแแแขแคแแ แแ แงแแคแแแแงแ C ++ แแแแแ. C ++ แแแแแแแแแแแก แฃแฌแงแแแขแ แแแแจแแ แแกแแแแก Objective-C-แกแ แแ Kotlin-แแก แแแแขแคแแ แแแก แแแแแแ, แแแแแงแแแแแฃแแ แแฅแแ แแแแแก แแแแแ แแขแแ แ.
แฌแงแแ แ: www.habr.com