iOS เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเซเชธเชฎเชพเช‚ เช•เซ€-เชตเซ‡เชฒเซเชฏเซ เชกเซ‡เชŸเชพเชฌเซ‡เช LMDB เชจเซ€ เชคเซ‡เชœเชธเซเชตเซ€เชคเชพ เช…เชจเซ‡ เช—เชฐเซ€เชฌเซ€

iOS เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเซเชธเชฎเชพเช‚ เช•เซ€-เชตเซ‡เชฒเซเชฏเซ เชกเซ‡เชŸเชพเชฌเซ‡เช LMDB เชจเซ€ เชคเซ‡เชœเชธเซเชตเซ€เชคเชพ เช…เชจเซ‡ เช—เชฐเซ€เชฌเซ€

2019 เชจเชพ เชชเชพเชจเช–เชฐเชฎเชพเช‚, Mail.ru เช•เซเชฒเชพเช‰เชก iOS เชŸเซ€เชฎเชฎเชพเช‚ เชฒเชพเช‚เชฌเชพ เชธเชฎเชฏเชฅเซ€ เชฐเชพเชน เชœเซ‹เชตเชพเชคเซ€ เช˜เชŸเชจเชพ เชฌเชจเซ€. เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชธเซเชŸเซ‡เชŸเชจเชพ เชธเชคเชค เชธเซเชŸเซ‹เชฐเซ‡เชœ เชฎเชพเชŸเซ‡เชจเซ‹ เชฎเซเช–เซเชฏ เชกเซ‡เชŸเชพเชฌเซ‡เช เชฎเซ‹เชฌเชพเช‡เชฒ เชตเชฟเชถเซเชต เชฎเชพเชŸเซ‡ เช–เซ‚เชฌ เชœ เชตเชฟเชšเชฟเชคเซเชฐ เชฌเชจเซ€ เช—เชฏเซ‹ เช›เซ‡ เชฒเชพเชˆเชŸเชจเชฟเช‚เช— เชฎเซ‡เชฎเชฐเซ€-เชฎเซ‡เชชเซเชก เชกเซ‡เชŸเชพเชฌเซ‡เช (LMDB). เช•เชŸเชจเซ€ เชจเซ€เชšเซ‡ เช…เชฎเซ‡ เชคเชฎเชจเซ‡ เชšเชพเชฐ เชญเชพเช—เซ‹เชฎเชพเช‚ เชคเซ‡เชจเซ€ เชตเชฟเช—เชคเชตเชพเชฐ เชธเชฎเซ€เช•เซเชทเชพ เช“เชซเชฐ เช•เชฐเซ€เช เช›เซ€เช. เชชเซเชฐเชฅเชฎ, เชšเชพเชฒเซ‹ เช†เชตเซ€ เชฌเชฟเชจ-เชคเซเชšเซเช› เช…เชจเซ‡ เชฎเซเชถเซเช•เซ‡เชฒ เชชเชธเช‚เชฆเช—เซ€เชจเชพ เช•เชพเชฐเชฃเซ‹ เชตเชฟเชถเซ‡ เชตเชพเชค เช•เชฐเซ€เช. เชชเช›เซ€ เช…เชฎเซ‡ LMDB เช†เชฐเซเช•เชฟเชŸเซ‡เช•เซเชšเชฐเชจเชพ เชนเชพเชฐเซเชฆเชฎเชพเช‚ เชคเซเชฐเชฃ เชธเซเชคเช‚เชญเซ‹เชจเซ‡ เชงเซเชฏเชพเชจเชฎเชพเช‚ เชฒเซ‡เชตเชพ เช†เช—เชณ เชตเชงเซ€เชถเซเช‚: เชฎเซ‡เชฎเชฐเซ€-เชฎเซ‡เชช เช•เชฐเซ‡เชฒเซ€ เชซเชพเช‡เชฒเซ‹, B+-เชŸเซเชฐเซ€, เชตเซเชฏเชตเชนเชพเชฐ เช…เชจเซ‡ เชฎเชฒเซเชŸเชฟเชตเชฐเซเชเชจ เช…เชฎเชฒเซ€เช•เชฐเชฃ เชฎเชพเชŸเซ‡ เช•เซ‰เชชเชฟ-เช‘เชจ-เชฐเชพเช‡เชŸ เช…เชญเชฟเช—เชฎ. เช…เช‚เชคเซ‡, เชกเซ‡เชเชฐเซเชŸ เชฎเชพเชŸเซ‡ - เชตเซเชฏเชตเชนเชพเชฐเซ เชญเชพเช—. เชคเซ‡เชฎเชพเช‚ เช†เชชเชฃเซ‡ เชจเซ€เชšเชพ-เชธเซเชคเชฐเชจเชพ เช•เซ€-เชตเซ‡เชฒเซเชฏเซ APIเชจเซ€ เชŸเซ‹เชš เชชเชฐ, เช‡เชจเซเชกเซ‡เช•เซเชธ เชเช• เชธเชนเชฟเชค เช…เชจเซ‡เช• เช•เซ‹เชทเซเชŸเช•เซ‹ เชธเชพเชฅเซ‡ เชกเซ‡เชŸเชพเชฌเซ‡เช เชธเซเช•เซ€เชฎเชพ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชกเชฟเชเชพเช‡เชจ เช…เชจเซ‡ เช…เชฎเชฒเชฎเชพเช‚ เชฎเซ‚เช•เชตเซ€ เชคเซ‡ เชœเซ‹เชˆเชถเซเช‚.

เช…เชจเซเช•เซเชฐเชฎเชฃเชฟเช•เชพ

  1. เช…เชฎเชฒเซ€เช•เชฐเชฃ เชฎเชพเชŸเซ‡ เชชเซเชฐเซ‡เชฐเชฃเชพ
  2. LMDB เชชเซ‹เชเชฟเชถเชจเชฟเช‚เช—
  3. LMDB เชจเชพ เชคเซเชฐเชฃ เชธเซเชคเช‚เชญเซ‹
    3.1. เชตเซเชนเซ‡เชฒ #1. เชฎเซ‡เชฎเชฐเซ€-เชฎเซ‡เชช เช•เชฐเซ‡เชฒเซ€ เชซเชพเช‡เชฒเซ‹
    3.2. เชตเซเชนเซ‡เชฒ #2. B+-เชตเซƒเช•เซเชท
    3.3. เชตเซเชนเซ‡เชฒ #3. เช•เซ‹เชชเซ€-เช“เชจ-เชฐเชพเชˆเชŸ
  4. เช•เซ€-เชตเซ‡เชฒเซเชฏเซ API เชจเซ€ เชŸเซ‹เชš เชชเชฐ เชกเซ‡เชŸเชพ เชธเซเช•เซ€เชฎเชพ เชกเชฟเชเชพเช‡เชจ เช•เชฐเชตเซ€
    4.1. เชฎเซ‚เชณเชญเซ‚เชค เชเชฌเซเชธเซเชŸเซเชฐเซ‡เช•เซเชถเชจเซเชธ
    4.2. เชŸเซ‡เชฌเชฒ เชฎเซ‹เชกเซ‡เชฒเชฟเช‚เช—
    4.3. เช•เซ‹เชทเซเชŸเช•เซ‹ เชตเชšเซเชšเซ‡ เชฎเซ‹เชกเซ‡เชฒเชฟเช‚เช— เชธเช‚เชฌเช‚เชงเซ‹

1. เช…เชฎเชฒเซ€เช•เชฐเชฃ เชฎเชพเชŸเซ‡ เชชเซเชฐเซ‡เชฐเชฃเชพ

2015 เชฎเชพเช‚ เชเช• เชตเชฐเซเชท, เช…เชฎเซ‡ เช…เชฎเชพเชฐเซ€ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเชจเซเช‚ เช‡เชจเซเชŸเชฐเชซเซ‡เชธ เช•เซ‡เชŸเชฒเซ€ เชตเชพเชฐ เชฒเซ‡เช— เชฅเชพเชฏ เช›เซ‡ เชคเซ‡ เชฎเชพเชชเชตเชพ เชฎเชพเชŸเซ‡ เชฎเซเชถเซเช•เซ‡เชฒเซ€ เชฒเซ€เชงเซ€. เช…เชฎเซ‡ เชเช• เช•เชพเชฐเชฃเชธเชฐ เช† เช•เชฐเซเชฏเซเช‚. เช…เชฎเชจเซ‡ เชตเชงเซ เชตเชพเชฐเช‚เชตเชพเชฐ เชซเชฐเชฟเชฏเชพเชฆเซ‹ เชฎเชณเซ€ เช›เซ‡ เช•เซ‡ เช•เซ‡เชŸเชฒเซ€เช•เชตเชพเชฐ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพเชจเซ€ เช•เซเชฐเชฟเชฏเชพเช“เชจเซ‡ เชชเซเชฐเชคเชฟเชธเชพเชฆ เช†เชชเชตเชพเชจเซเช‚ เชฌเช‚เชง เช•เชฐเซ‡ เช›เซ‡: เชฌเชŸเชจเซ‹ เชฆเชฌเชพเชตเซ€ เชถเช•เชพเชคเชพ เชจเชฅเซ€, เชธเซ‚เชšเชฟเช“ เชธเซเช•เซเชฐเซ‹เชฒ เชฅเชคเซ€ เชจเชฅเซ€, เชตเช—เซ‡เชฐเซ‡. เชฎเชพเชชเชจเชพ เชฎเชฟเช•เซ‡เชจเชฟเช•เซเชธ เชตเชฟเชถเซ‡ เช•เชนเซเชฏเซเช‚ เชเชตเชฟเชŸเซ‹เชŸเซ‡เช• เชชเชฐ, เชคเซ‡เชฅเซ€ เช…เชนเซ€เช‚ เชนเซเช‚ เชซเช•เซเชค เชธเช‚เช–เซเชฏเชพเช“เชจเซ‹ เช•เซเชฐเชฎ เช†เชชเซเช‚ เช›เซเช‚.

iOS เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเซเชธเชฎเชพเช‚ เช•เซ€-เชตเซ‡เชฒเซเชฏเซ เชกเซ‡เชŸเชพเชฌเซ‡เช LMDB เชจเซ€ เชคเซ‡เชœเชธเซเชตเซ€เชคเชพ เช…เชจเซ‡ เช—เชฐเซ€เชฌเซ€

เชฎเชพเชชเชจเชจเชพ เชชเชฐเชฟเชฃเชพเชฎเซ‹ เช…เชฎเชพเชฐเชพ เชฎเชพเชŸเซ‡ เช เช‚เชกเชพ เชซเซเชตเชพเชฐเซ‹ เชฌเชจเซเชฏเชพ. เชคเซ‡ เชฌเชนเชพเชฐ เช†เชตเซเชฏเซเช‚ เช›เซ‡ เช•เซ‡ เช…เชจเซเชฏ เช•เซ‹เชˆเชชเชฃ เช•เชฐเชคเชพเช‚ เชซเซเชฐเซ€เชเชจเซ‡ เช•เชพเชฐเชฃเซ‡ เช˜เชฃเซ€ เชตเชงเซ เชธเชฎเชธเซเชฏเชพเช“ เช›เซ‡. เชœเซ‹ เช† เชนเช•เซ€เช•เชคเชจเซ‡ เชธเชฎเชœเชคเชพ เชชเชนเซ‡เชฒเชพ เช—เซเชฃเชตเชคเซเชคเชพเชจเซเช‚ เชฎเซเช–เซเชฏ เชคเช•เชจเซ€เช•เซ€ เชธเซ‚เชšเช• เช•เซเชฐเซ‡เชถ เชซเซเชฐเซ€ เชนเชคเซเช‚, เชคเซ‹ เชชเช›เซ€ เชงเซเชฏเชพเชจ เช•เซ‡เชจเซเชฆเซเชฐเชฟเชค เช•เชฐเซเชฏเชพ เชชเช›เซ€ เชธเซเชฅเชณเชพเช‚เชคเชฐ เช•เชฐเซเชฏเซเช‚ เชซเซเชฐเซ€เช เชซเซเชฐเซ€ เชชเชฐ.

เชฌเชพเช‚เชงเซเชฏเชพ เชซเซเชฐเซ€เช เชธเชพเชฅเซ‡ เชกเซ‡เชถเชฌเซ‹เชฐเซเชก เช…เชจเซ‡ เช–เชฐเซเชš เช•เชฐเซเชฏเชพ เชชเช›เซ€ เชฎเชพเชคเซเชฐเชพเชคเซเชฎเช• ะธ เช—เซเชฃเชตเชคเซเชคเชพ เชคเซ‡เชฎเชจเชพ เช•เชพเชฐเชฃเซ‹เชจเซเช‚ เชตเชฟเชถเซเชฒเซ‡เชทเชฃ, เชฎเซเช–เซเชฏ เชฆเซเชถเซเชฎเชจ เชธเซเชชเชทเซเชŸ เชฅเชˆ เช—เชฏเซ‹ - เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเชจเชพ เชฎเซเช–เซเชฏ เชฅเซเชฐเซ‡เชกเชฎเชพเช‚ เชญเชพเชฐเซ‡ เชฌเชฟเชเชจเซ‡เชธ เชฒเซ‹เชœเชฟเช• เชšเชฒเชพเชตเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซเช‚. เช† เชฌเชฆเชจเชพเชฎเซ€เชจเซ€ เช•เซเชฆเชฐเชคเซ€ เชชเซเชฐเชคเชฟเช•เซเชฐเชฟเชฏเชพ เชคเซ‡เชจเซ‡ เช•เชพเชฎเชจเชพ เชชเซเชฐเชตเชพเชนเชฎเชพเช‚ เชงเช•เซ‡เชฒเซ€ เชฆเซ‡เชตเชพเชจเซ€ เชธเชณเช—เชคเซ€ เช‡เชšเซเช›เชพ เชนเชคเซ€. เช† เชธเชฎเชธเซเชฏเชพเชจเซ‡ เชตเซเชฏเชตเชธเซเชฅเชฟเชค เชฐเซ€เชคเซ‡ เช‰เช•เซ‡เชฒเชตเชพ เชฎเชพเชŸเซ‡, เช…เชฎเซ‡ เชฒเชพเช‡เชŸเชตเซ‡เช‡เชŸ เชเช•เซเชŸเชฐเซเชธ เชชเชฐ เช†เชงเชพเชฐเชฟเชค เชฎเชฒเซเชŸเชฟ-เชฅเซเชฐเซ‡เชกเซ‡เชก เช†เชฐเซเช•เชฟเชŸเซ‡เช•เซเชšเชฐเชจเซ‹ เช†เชถเชฐเซ‹ เชฒเซ€เชงเซ‹. เชฎเซ‡เช‚ เชคเซ‡เชจเซ‡ iOS เชตเชฟเชถเซเชต เชฎเชพเชŸเซ‡ เชคเซ‡เชจเชพ เช…เชจเซเช•เซ‚เชฒเชจ เชฎเชพเชŸเซ‡ เชธเชฎเชฐเซเชชเชฟเชค เช•เชฐเซเชฏเซเช‚ เชฌเซ‡ เชฅเซเชฐเซ‡เชกเซ‹ เชธเชพเชฎเซ‚เชนเชฟเช• เชŸเซเชตเชฟเชŸเชฐ เชชเชฐ เช…เชจเซ‡ เชนเซ‡เชฌเซเชฐเซ‡ เชชเชฐเชจเซ‹ เชฒเซ‡เช–. เชตเชฐเซเชคเชฎเชพเชจ เชตเชฐเซเชฃเชจเชจเชพ เชญเชพเช—เชฐเซ‚เชชเซ‡, เชนเซเช‚ เชจเชฟเชฐเซเชฃเชฏเชจเชพ เชคเซ‡ เชชเชพเชธเชพเช“ เชชเชฐ เชญเชพเชฐ เชฎเซ‚เช•เชตเชพ เชฎเชพเช‚เช—เซ เช›เซเช‚ เชœเซ‡เชฃเซ‡ เชกเซ‡เชŸเชพเชฌเซ‡เชเชจเซ€ เชชเชธเช‚เชฆเช—เซ€เชจเซ‡ เชชเซเชฐเชญเชพเชตเชฟเชค เช•เชฐเซ€ เชนเชคเซ€.

เชธเชฟเชธเซเชŸเชฎ เชธเช‚เชธเซเชฅเชพเชจเชพ เช…เชญเชฟเชจเซ‡เชคเชพ เชฎเซ‹เชกเซ‡เชฒ เชงเชพเชฐเซ‡ เช›เซ‡ เช•เซ‡ เชฎเชฒเซเชŸเชฟเชฅเซเชฐเซ‡เชกเซ€เช‚เช— เชคเซ‡เชจเซ‹ เชฌเซ€เชœเซ‹ เชธเชพเชฐ เชฌเชจเซ€ เชœเชพเชฏ เช›เซ‡. เชคเซ‡เชฎเชพเช‚เชจเชพ เชฎเซ‹เชกเชฒ เช‘เชฌเซเชœเซ‡เช•เซเชŸเซเชธ เชชเซเชฐเชตเชพเชนเชจเซ€ เชธเซ€เชฎเชพเช“ เชชเชพเชฐ เช•เชฐเชตเชพเชจเซเช‚ เชชเชธเช‚เชฆ เช•เชฐเซ‡ เช›เซ‡. เช…เชจเซ‡ เชคเซ‡เช“ เช† เช•เซเชฏเชพเชฐเซ‡เช• เช…เชจเซ‡ เช…เชนเซ€เช‚ เช…เชจเซ‡ เชคเซเชฏเชพเช‚ เชจเชนเซ€เช‚, เชชเชฐเช‚เชคเซ เชฒเช—เชญเช— เชธเชคเชค เช…เชจเซ‡ เชฆเชฐเซ‡เช• เชœเช—เซเชฏเชพเช เช•เชฐเซ‡ เช›เซ‡

iOS เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเซเชธเชฎเชพเช‚ เช•เซ€-เชตเซ‡เชฒเซเชฏเซ เชกเซ‡เชŸเชพเชฌเซ‡เช LMDB เชจเซ€ เชคเซ‡เชœเชธเซเชตเซ€เชคเชพ เช…เชจเซ‡ เช—เชฐเซ€เชฌเซ€

เชชเซเชฐเชธเซเชคเซเชค เชฐเซ‡เช–เชพเช•เซƒเชคเชฟเชฎเชพเช‚ เชกเซ‡เชŸเชพเชฌเซ‡เช เช เชชเชพเชฏเชพเชจเชพ เช˜เชŸเช•เซ‹เชฎเชพเช‚เชฅเซ€ เชเช• เช›เซ‡. เชคเซ‡เชจเซเช‚ เชฎเซเช–เซเชฏ เช•เชพเชฐเซเชฏ เชฎเซ‡เช•เซเชฐเซ‹เชชเซ‡เชŸเชฐเซเชจเชจเซ‹ เช…เชฎเชฒ เช•เชฐเชตเชพเชจเซเช‚ เช›เซ‡ เชตเชนเซ‡เช‚เชšเชพเชฏเซ‡เชฒ เชกเซ‡เชŸเชพเชฌเซ‡เช. เชœเซ‹ เชเชจเซเชŸเชฐเชชเซเชฐเชพเช‡เช เชตเชฟเชถเซเชตเชฎเชพเช‚ เชคเซ‡เชจเซ‹ เช‰เชชเชฏเซ‹เช— เชธเซ‡เชตเชพเช“ เชตเชšเซเชšเซ‡ เชกเซ‡เชŸเชพ เชธเชฟเช‚เช•เซเชฐเชจเชพเช‡เชเซ‡เชถเชจเชจเซ‡ เช—เซ‹เช เชตเชตเชพ เชฎเชพเชŸเซ‡ เชฅเชพเชฏ เช›เซ‡, เชคเซ‹ เชชเช›เซ€ เช…เชญเชฟเชจเซ‡เชคเชพ เช†เชฐเซเช•เชฟเชŸเซ‡เช•เซเชšเชฐเชจเชพ เช•เชฟเชธเซเชธเชพเชฎเชพเช‚ - เชฅเซเชฐเซ‡เชกเซ‹ เชตเชšเซเชšเซ‡เชจเซ‹ เชกเซ‡เชŸเชพ. เช†เชฎ, เช…เชฎเชจเซ‡ เชเชตเชพ เชกเซ‡เชŸเชพเชฌเซ‡เชเชจเซ€ เชœเชฐเซ‚เชฐ เชนเชคเซ€ เช•เซ‡ เชœเซ‡ เชฌเชนเซ-เชฅเซเชฐเซ‡เชกเซ‡เชก เชตเชพเชคเชพเชตเชฐเชฃเชฎเชพเช‚ เชคเซ‡เชจเซ€ เชธเชพเชฅเซ‡ เช•เชพเชฎ เช•เชฐเชคเซ€ เชตเช–เชคเซ‡ เช“เช›เชพเชฎเชพเช‚ เช“เช›เซ€ เชฎเซเชถเซเช•เซ‡เชฒเซ€เช“ เชจ เชธเชฐเซเชœเซ‡. เช–เชพเชธ เช•เชฐเซ€เชจเซ‡, เช†เชจเซ‹ เช…เชฐเซเชฅ เช เช›เซ‡ เช•เซ‡ เชคเซ‡เชฎเชพเช‚เชฅเซ€ เชฎเซ‡เชณเชตเซ‡เชฒเซ€ เชตเชธเซเชคเซเช“ เช“เช›เชพเชฎเชพเช‚ เช“เช›เซ€ เชฅเซเชฐเซ‡เชก-เชธเชฒเชพเชฎเชค เชนเซ‹เชตเซ€ เชœเซ‹เชˆเช, เช…เชจเซ‡ เช†เชฆเชฐเซเชถ เชฐเซ€เชคเซ‡ เชธเช‚เชชเซ‚เชฐเซเชฃเชชเชฃเซ‡ เชฌเชฟเชจ-เชชเชฐเชฟเชตเชฐเซเชคเชจเชถเซ€เชฒ เชนเซ‹เชตเซ€ เชœเซ‹เชˆเช. เชœเซ‡เชฎ เชคเชฎเซ‡ เชœเชพเชฃเซ‹ เช›เซ‹, เชฌเชพเชฆเชฎเชพเช‚ เช•เซ‹เชˆเชชเชฃ เชฒเซ‹เช•เซ€เช‚เช—เชจเซ‹ เช†เชถเชฐเซ‹ เชฒเซ€เชงเชพ เชตเชฟเชจเชพ เชเช• เชธเชพเชฅเซ‡ เช…เชจเซ‡เช• เชฅเซเชฐเซ‡เชกเซ‹เชฎเชพเช‚เชฅเซ€ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€ เชถเช•เชพเชฏ เช›เซ‡, เชœเซ‡ เช•เชพเชฎเช—เซ€เชฐเซ€ เชชเชฐ เชซเชพเชฏเชฆเชพเช•เชพเชฐเช• เช…เชธเชฐ เช•เชฐเซ‡ เช›เซ‡.

iOS เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเซเชธเชฎเชพเช‚ เช•เซ€-เชตเซ‡เชฒเซเชฏเซ เชกเซ‡เชŸเชพเชฌเซ‡เช LMDB เชจเซ€ เชคเซ‡เชœเชธเซเชตเซ€เชคเชพ เช…เชจเซ‡ เช—เชฐเซ€เชฌเซ€เชกเซ‡เชŸเชพเชฌเซ‡เชเชจเซ€ เชชเชธเช‚เชฆเช—เซ€เชจเซ‡ เชชเซเชฐเชญเชพเชตเชฟเชค เช•เชฐเชจเชพเชฐ เชฌเซ€เชœเซเช‚ เชฎเชนเชคเซเชคเซเชตเชจเซเช‚ เชชเชฐเชฟเชฌเชณ เช…เชฎเชพเชฐเซเช‚ เช•เซเชฒเชพเช‰เชก API เชนเชคเซเช‚. เชคเซ‡ git เชฆเซเชตเชพเชฐเชพ เช…เชชเชจเชพเชตเชตเชพเชฎเชพเช‚ เช†เชตเซ‡เชฒ เชธเชฟเช‚เช•เซเชฐเชจเชพเช‡เชเซ‡เชถเชจ เช…เชญเชฟเช—เชฎเชฅเซ€ เชชเซเชฐเซ‡เชฐเชฟเชค เชนเชคเซเช‚. เชคเซ‡เชจเซ€ เชœเซ‡เชฎ, เช…เชฎเซ‡ เชฒเช•เซเชทเซเชฏ เชฐเชพเช–เซเชฏเซเช‚ เช‘เชซเชฒเชพเช‡เชจ-เชชเซเชฐเชฅเชฎ API, เชœเซ‡ เช•เซเชฒเชพเช‰เชก เช•เซเชฒเชพเชฏเช‚เชŸ เชฎเชพเชŸเซ‡ เชฏเซ‹เช—เซเชฏ เช•เชฐเชคเชพเช‚ เชตเชงเซ เชฒเชพเช—เซ‡ เช›เซ‡. เชเชตเซเช‚ เชฎเชพเชจเชตเชพเชฎเชพเช‚ เช†เชตเชคเซเช‚ เชนเชคเซเช‚ เช•เซ‡ เชคเซ‡เช“ เชฎเชพเชคเซเชฐ เชเช• เชœ เชตเชพเชฐ เช•เซเชฒเชพเช‰เชกเชจเซ€ เชธเช‚เชชเซ‚เชฐเซเชฃ เชธเซเชฅเชฟเชคเชฟเชจเซ‡ เชฌเชนเชพเชฐ เช•เชพเชขเชถเซ‡, เช…เชจเซ‡ เชชเช›เซ€ เชฎเซ‹เชŸเชพ เชญเชพเช—เชจเชพ เช•เชฟเชธเซเชธเชพเช“เชฎเชพเช‚ เชธเชฟเช‚เช•เซเชฐเชจเชพเช‡เชเซ‡เชถเชจ เชฐเซ‹เชฒ เช†เช‰เชŸ เชซเซ‡เชฐเชซเชพเชฐเซ‹ เชฆเซเชตเชพเชฐเชพ เชฅเชถเซ‡. เช…เชฐเซ‡, เช† เชคเช• เชนเชœเซ เชชเชฃ เชฎเชพเชคเซเชฐ เชธเซˆเชฆเซเชงเชพเช‚เชคเชฟเช• เชเซ‹เชจเชฎเชพเช‚ เช›เซ‡, เช…เชจเซ‡ เช—เซเชฐเชพเชนเช•เซ‹เช เชตเซเชฏเชตเชนเชพเชฐเชฎเชพเช‚ เชชเซ‡เชšเซ‹ เชธเชพเชฅเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช•เชพเชฎ เช•เชฐเชตเซเช‚ เชคเซ‡ เชถเซ€เช–เซเชฏเชพ เชจเชฅเซ€. เช†เชจเชพ เชฎเชพเชŸเซ‡ เช˜เชฃเชพ เช‰เชฆเซเชฆเซ‡เชถเซเชฏ เช•เชพเชฐเชฃเซ‹ เช›เซ‡, เชœเซ‡ เชชเชฐเชฟเชšเชฏเชฎเชพเช‚ เชตเชฟเชฒเช‚เชฌ เชจ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เช…เชฎเซ‡ เช•เซŒเช‚เชธ เชชเชพเช›เชณ เช›เซ‹เชกเซ€เชถเซเช‚. เชนเชตเซ‡, เชœเซเชฏเชพเชฐเซ‡ API "A" เช•เชนเซ‡ เช›เซ‡ เช…เชจเซ‡ เชคเซ‡เชจเชพ เช‰เชชเชญเซ‹เช•เซเชคเชพ "B" เชจ เช•เชนเซ‡ เช›เซ‡ เชคเซเชฏเชพเชฐเซ‡ เชถเซเช‚ เชฅเชพเชฏ เช›เซ‡ เชคเซ‡ เชตเชฟเชถเซ‡เชจเชพ เชชเชพเช เชจเชพ เช‰เชชเชฆเซ‡เชถเช• เชคเชพเชฐเชฃเซ‹ เชตเชงเซ เชฐเชธเชชเซเชฐเชฆ เช›เซ‡.

เชคเซ‡เชฅเซ€, เชœเซ‹ เชคเชฎเซ‡ เช—เชฟเชŸเชจเซ€ เช•เชฒเซเชชเชจเชพ เช•เชฐเซ‹ เช›เซ‹, เชœเซ‡ เชชเซเชฒ เช•เชฎเชพเชจเซเชกเชจเซ‹ เช…เชฎเชฒ เช•เชฐเชคเซ€ เชตเช–เชคเซ‡, เชธเซเชฅเชพเชจเชฟเช• เชธเซเชจเซ‡เชชเชถเซ‹เชŸ เชชเชฐ เชชเซ‡เชšเซ‹ เชฒเชพเช—เซ เช•เชฐเชตเชพเชจเซ‡ เชฌเชฆเชฒเซ‡, เชคเซ‡เชจเซ€ เชธเช‚เชชเซ‚เชฐเซเชฃ เชธเซเชฅเชฟเชคเชฟเชจเซ€ เชธเช‚เชชเซ‚เชฐเซเชฃ เชธเชฐเซเชตเชฐ เชธเซเชฅเชฟเชคเชฟ เชธเชพเชฅเซ‡ เชคเซเชฒเชจเชพ เช•เชฐเซ‡ เช›เซ‡, เชคเซ‹ เชชเช›เซ€ เชคเชฎเชจเซ‡ เช•เซเชฒเชพเช‰เชกเชฎเชพเช‚ เชธเชฟเช‚เช•เซเชฐเชจเชพเช‡เชเซ‡เชถเชจ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชฅเชพเชฏ เช›เซ‡ เชคเซ‡เชจเซ‹ เชเช•เชฆเชฎ เชธเชšเซ‹เชŸ เช–เซเชฏเชพเชฒ เชนเชถเซ‡. เช—เซเชฐเชพเชนเช•เซ‹ เช…เชจเซเชฎเชพเชจ เชฒเช—เชพเชตเชตเซเช‚ เชธเชฐเชณ เช›เซ‡ เช•เซ‡ เชคเซ‡เชจเซ‡ เช…เชฎเชฒเชฎเชพเช‚ เชฎเซ‚เช•เชตเชพ เชฎเชพเชŸเซ‡, เชคเชฎเชพเชฐเซ‡ เชคเชฎเชพเชฎ เชธเชฐเซเชตเชฐ เช…เชจเซ‡ เชธเซเชฅเชพเชจเชฟเช• เชซเชพเช‡เชฒเซ‹ เชตเชฟเชถเซ‡ เชฎเซ‡เชŸเชพ-เชฎเชพเชนเชฟเชคเซ€ เชธเชพเชฅเซ‡ เชฎเซ‡เชฎเชฐเซ€เชฎเชพเช‚ เชฌเซ‡ DOM เชตเซƒเช•เซเชทเซ‹ เชซเชพเชณเชตเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡. เชคเซ‡ เชคเชพเชฐเชฃ เช†เชชเซ‡ เช›เซ‡ เช•เซ‡ เชœเซ‹ เช•เซ‹เชˆ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพ เช•เซเชฒเชพเช‰เชกเชฎเชพเช‚ 500 เชนเชœเชพเชฐ เชซเชพเช‡เชฒเซ‹ เชธเช‚เช—เซเชฐเชนเชฟเชค เช•เชฐเซ‡ เช›เซ‡, เชคเซ‹ เชคเซ‡เชจเซ‡ เชธเชฟเช‚เช•เซเชฐเชจเชพเช‡เช เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ 1 เชฎเชฟเชฒเชฟเชฏเชจ เชจเซ‹เชกเซเชธ เชธเชพเชฅเซ‡ เชฌเซ‡ เชตเซƒเช•เซเชทเซ‹เชจเซ‡ เชซเชฐเซ€เชฅเซ€ เชฌเชจเชพเชตเชตเชพ เช…เชจเซ‡ เชจเชพเชถ เช•เชฐเชตเชพ เชœเชฐเซ‚เชฐเซ€ เช›เซ‡. เชชเชฐเช‚เชคเซ เชฆเชฐเซ‡เช• เชจเซ‹เชก เช เชเช•เช‚เชฆเชฐ เช›เซ‡ เชœเซ‡เชฎเชพเช‚ เชธเชฌเชฌเซ‡เช•เซเชŸเซเชธเชจเซ‹ เช—เซเชฐเชพเชซ เชนเซ‹เชฏ เช›เซ‡. เช† เชชเซเชฐเช•เชพเชถเชฎเชพเช‚, เชชเซเชฐเซ‹เชซเชพเช‡เชฒเชฟเช‚เช— เชชเชฐเชฟเชฃเชพเชฎเซ‹ เช…เชชเซ‡เช•เซเชทเชฟเชค เชนเชคเชพ. เชคเซ‡ เชฌเชนเชพเชฐ เช†เชตเซเชฏเซเช‚ เช›เซ‡ เช•เซ‡ เชฎเชฐเซเชœเชฟเช‚เช— เชเชฒเซเช—เซ‹เชฐเชฟเชงเชฎเชจเซ‡ เชงเซเชฏเชพเชจเชฎเชพเช‚ เชฒเซ€เชงเชพ เชตเชฟเชจเชพ เชชเชฃ, เชฎเซ‹เชŸเซ€ เชธเช‚เช–เซเชฏเชพเชฎเชพเช‚ เชจเชพเชจเซ€ เชตเชธเซเชคเซเช“ เชฌเชจเชพเชตเชตเชพเชจเซ€ เช…เชจเซ‡ เชชเช›เซ€เชฅเซ€ เชคเซ‡เชจเซ‹ เชจเชพเชถ เช•เชฐเชตเชพเชจเซ€ เช–เซ‚เชฌ เชœ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเชฎเชพเช‚ เชเช• เชธเซเช‚เชฆเชฐ เชชเซˆเชธเซ‹ เช–เชฐเซเชš เชฅเชพเชฏ เช›เซ‡. เชชเชฐเชฟเชธเซเชฅเชฟเชคเชฟ เช เชนเช•เซ€เช•เชค เชฆเซเชตเชพเชฐเชพ เชตเชฃเชธเซ€ เช›เซ‡ เช•เซ‡ เชฎเซ‚เชณเชญเซ‚เชค เชธเชฟเช‚เช•เซเชฐเชจเชพเช‡เชเซ‡เชถเชจ เช•เชพเชฎเช—เซ€เชฐเซ€ เชฎเซ‹เชŸเซ€ เชธเช‚เช–เซเชฏเชพเชฎเชพเช‚ เชถเชพเชฎเซ‡เชฒ เช›เซ‡. เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพ เชธเซเช•เซเชฐเชฟเชชเซเชŸเซ‹. เชชเชฐเชฟเชฃเชพเชฎเซ‡, เช…เชฎเซ‡ เชกเซ‡เชŸเชพเชฌเซ‡เช เชชเชธเช‚เชฆ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชฌเซ€เชœเชพ เชฎเชนเชคเซเชตเชชเซ‚เชฐเซเชฃ เชฎเชพเชชเชฆเช‚เชกเชจเซ‡ เช เซ€เช• เช•เชฐเซ€เช เช›เซ€เช - เช‘เชฌเซเชœเซ‡เช•เซเชŸเซเชธเชจเซ€ เช—เชคเชฟเชถเซ€เชฒ เชซเชพเชณเชตเชฃเซ€ เชตเชฟเชจเชพ CRUD เช‘เชชเชฐเซ‡เชถเชจเซเชธ เช…เชฎเชฒเชฎเชพเช‚ เชฎเซ‚เช•เชตเชพเชจเซ€ เช•เซเชทเชฎเชคเชพ.

เช…เชจเซเชฏ เชœเชฐเซ‚เชฐเชฟเชฏเชพเชคเซ‹ เชตเชงเซ เชชเชฐเช‚เชชเชฐเชพเช—เชค เช›เซ‡ เช…เชจเซ‡ เชคเซ‡เชฎเชจเซ€ เชธเช‚เชชเซ‚เชฐเซเชฃ เชธเซ‚เชšเชฟ เชจเซ€เชšเซ‡ เชฎเซเชœเชฌ เช›เซ‡.

  1. เชฅเซเชฐเซ‡เชก เชธเชฒเชพเชฎเชคเซ€.
  2. เชฎเชฒเซเชŸเชฟเชชเซเชฐเซ‹เชธเซ‡เชธเชฟเช‚เช—. เชฎเชพเชคเซเชฐ เชฅเซเชฐเซ‡เชกเซ‹ เชตเชšเซเชšเซ‡ เชœ เชจเชนเซ€เช‚, เชชเชฃ เชฎเซเช–เซเชฏ เชเชชเซเชฒเซ€เช•เซ‡เชถเชจ เช…เชจเซ‡ iOS เชเช•เซเชธเซเชŸเซ‡เชจเซเชถเชจเซเชธ เชตเชšเซเชšเซ‡เชจเซ€ เชธเซเชฅเชฟเชคเชฟเชจเซ‡ เชธเชฟเช‚เช•เซเชฐเชจเชพเช‡เช เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชธเชฎเชพเชจ เชกเซ‡เชŸเชพเชฌเซ‡เช เชฆเชพเช–เชฒเชพเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชจเซ€ เช‡เชšเซเช›เชพ เชฆเซเชตเชพเชฐเชพ เชจเชฟเชฐเซเชงเชพเชฐเชฟเชค.
  3. เชธเช‚เช—เซเชฐเชนเชฟเชค เชธเช‚เชธเซเชฅเชพเช“เชจเซ‡ เชฌเชฟเชจ-เชชเชฐเชฟเชตเชฐเซเชคเชจเชถเซ€เชฒ เชชเชฆเชพเชฐเซเชฅเซ‹ เชคเชฐเซ€เช•เซ‡ เชฐเชœเซ‚ เช•เชฐเชตเชพเชจเซ€ เช•เซเชทเชฎเชคเชพ
  4. CRUD เช•เชพเชฎเช—เซ€เชฐเซ€เชฎเชพเช‚ เช•เซ‹เชˆ เช—เชคเชฟเชถเซ€เชฒ เชซเชพเชณเชตเชฃเซ€ เชจเชฅเซ€.
  5. เชฎเซ‚เชณเชญเซ‚เชค เชฎเชฟเชฒเช•เชคเซ‹ เชฎเชพเชŸเซ‡ เชŸเซเชฐเชพเชจเซเชเซ‡เช•เซเชถเชจ เชธเชชเซ‹เชฐเซเชŸ ACID: เชชเชฐเชฎเชพเชฃเซ, เชธเซเชธเช‚เช—เชคเชคเชพ, เช…เชฒเช—เชคเชพ เช…เชจเซ‡ เชตเชฟเชถเซเชตเชธเชจเซ€เชฏเชคเชพ.
  6. เชธเซŒเชฅเซ€ เชตเชงเซ เชฒเซ‹เช•เชชเซเชฐเชฟเชฏ เช•เซ‡เชธเซ‹ เชชเชฐ เชเชกเชช.

เช†เชตเชถเซเชฏเช•เชคเชพเช“เชจเชพ เช† เชธเชฎเซ‚เชน เชธเชพเชฅเซ‡, SQLite เชธเชพเชฐเซ€ เชชเชธเช‚เชฆเช—เซ€ เชนเชคเซ€ เช…เชจเซ‡ เชฐเชนเซ‡ เช›เซ‡. เชœเซ‹ เช•เซ‡, เชตเชฟเช•เชฒเซเชชเซ‹เชจเชพ เช…เชญเซเชฏเชพเชธเชจเชพ เชญเชพเช—เชฐเซ‚เชชเซ‡, เชฎเชจเซ‡ เชเช• เชชเซเชธเซเชคเช• เชฎเชณเซเชฏเซเช‚ "เชฒเซ‡เชตเชฒเชกเซ€เชฌเซ€ เชธเชพเชฅเซ‡ เชชเซเชฐเชพเชฐเช‚เชญ เช•เชฐเชตเซเช‚". เชคเซ‡เชฃเซ€เชจเชพ เชจเซ‡เชคเซƒเชคเซเชต เชนเซ‡เช เชณ, เชตเชพเชธเซเชคเชตเชฟเช• เช•เซเชฒเชพเช‰เชก เชฆเซƒเชถเซเชฏเซ‹เชฎเชพเช‚ เชตเชฟเชตเชฟเชง เชกเซ‡เชŸเชพเชฌเซ‡เช เชธเชพเชฅเซ‡ เช•เชพเชฎเชจเซ€ เชเชกเชชเชจเซ€ เชคเซเชฒเชจเชพ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชเช• เชฎเชพเชชเชฆเช‚เชก เชฒเช–เชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซ‹ เชนเชคเซ‹. เชชเชฐเชฟเชฃเชพเชฎ เช…เชฎเชพเชฐเซ€ เชœเช‚เช—เชฒเซ€ เช…เชชเซ‡เช•เซเชทเชพเช“ เช•เชฐเชคเชพเช‚ เชตเชงเซ€ เช—เชฏเซเช‚. เชธเซŒเชฅเซ€ เชตเชงเซ เชฒเซ‹เช•เชชเซเชฐเชฟเชฏ เช•เซ‡เชธเซ‹เชฎเชพเช‚ - เชฌเชงเซ€ เชซเชพเช‡เชฒเซ‹เชจเซ€ เชธเซ‰เชฐเซเชŸ เช•เชฐเซ‡เชฒเซ€ เชธเซ‚เชšเชฟ เชชเชฐ เช•เชฐเซเชธเชฐ เชฎเซ‡เชณเชตเชตเซเช‚ เช…เชจเซ‡ เช†เชชเซ‡เชฒ เชกเชฟเชฐเซ‡เช•เซเชŸเชฐเซ€ เชฎเชพเชŸเซ‡ เชฌเชงเซ€ เชซเชพเช‡เชฒเซ‹เชจเซ€ เชธเซ‰เชฐเซเชŸ เช•เชฐเซ‡เชฒเซ€ เชธเซ‚เชšเชฟ - LMDB SQLite เช•เชฐเชคเชพเช‚ 10 เช—เชฃเซ€ เชเชกเชชเซ€ เชนเซ‹เชตเชพเชจเซเช‚ เชฌเชนเชพเชฐ เช†เชตเซเชฏเซเช‚. เชชเชธเช‚เชฆเช—เซ€ เชธเซเชชเชทเซเชŸ เชฅเชˆ เช—เชˆ.

iOS เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเซเชธเชฎเชพเช‚ เช•เซ€-เชตเซ‡เชฒเซเชฏเซ เชกเซ‡เชŸเชพเชฌเซ‡เช LMDB เชจเซ€ เชคเซ‡เชœเชธเซเชตเซ€เชคเชพ เช…เชจเซ‡ เช—เชฐเซ€เชฌเซ€

2. LMDB เชชเซ‹เชเชฟเชถเชจเชฟเช‚เช—

LMDB เช เช–เซ‚เชฌ เชœ เชจเชพเชจเซ€ เชฒเชพเช‡เชฌเซเชฐเซ‡เชฐเซ€ เช›เซ‡ (เชฎเชพเชคเซเชฐ 10K เชชเช‚เช•เซเชคเชฟเช“) เชœเซ‡ เชกเซ‡เชŸเชพเชฌเซ‡เชเชจเชพ เชธเซŒเชฅเซ€ เชจเซ€เชšเชพ เชฎเซ‚เชณเชญเซ‚เชค เชธเซเชคเชฐ - เชธเซเชŸเซ‹เชฐเซ‡เชœเชจเซ‡ เชฒเชพเช—เซ เช•เชฐเซ‡ เช›เซ‡.

iOS เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเซเชธเชฎเชพเช‚ เช•เซ€-เชตเซ‡เชฒเซเชฏเซ เชกเซ‡เชŸเชพเชฌเซ‡เช LMDB เชจเซ€ เชคเซ‡เชœเชธเซเชตเซ€เชคเชพ เช…เชจเซ‡ เช—เชฐเซ€เชฌเซ€

เช‰เชชเชฐเซ‹เช•เซเชค เชฐเซ‡เช–เชพเช•เซƒเชคเชฟ เชฆเชฐเซเชถเชพเชตเซ‡ เช›เซ‡ เช•เซ‡ SQLite เชธเชพเชฅเซ‡ LMDB เชจเซ€ เชธเชฐเช–เชพเชฎเชฃเซ€ เช•เชฐเชตเซ€, เชœเซ‡ เช‰เชšเซเชš เชธเซเชคเชฐเชจเซ‹ เชชเชฃ เช…เชฎเชฒ เช•เชฐเซ‡ เช›เซ‡, เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡ เช•เซ‹เชฐ เชกเซ‡เชŸเชพ เชธเชพเชฅเซ‡ SQLite เช•เชฐเชคเชพเช‚ เชตเชงเซ เชฏเซ‹เช—เซเชฏ เชจเชฅเซ€. เชธเชฎเชพเชจ เชธเซเชชเชฐเซเชงเช•เซ‹ - เชฌเชฐเซเช•เชฒเซ‡เชกเซ€เชฌเซ€, เชฒเซ‡เชตเชฒเชกเซ€เชฌเซ€, เชธเซ‹เชซเชฟเชฏเชพ, เชฐเซ‹เช•เซเชธเชกเซ€เชฌเซ€, เชตเช—เซ‡เชฐเซ‡ เชคเชฐเซ€เช•เซ‡ เชธเชฎเชพเชจ เชธเซเชŸเซ‹เชฐเซ‡เชœ เชเชจเซเชœเชฟเชจเชจเซ‡ เชŸเชพเช‚เช•เชตเซเช‚ เชตเชงเซ เชตเชพเชœเชฌเซ€ เชฐเชนเซ‡เชถเซ‡. เชคเซเชฏเชพเช‚ เชชเชฃ เชตเชฟเช•เชพเชธ เช›เซ‡ เชœเซเชฏเชพเช‚ LMDB SQLite เชฎเชพเชŸเซ‡ เชธเซเชŸเซ‹เชฐเซ‡เชœ เชเชจเซเชœเชฟเชจ เช˜เชŸเช• เชคเชฐเซ€เช•เซ‡ เช•เชพเชฐเซเชฏ เช•เชฐเซ‡ เช›เซ‡. เช†เชตเซ‹ เชชเชนเซ‡เชฒเซ‹ เชชเซเชฐเชฏเซ‹เช— 2012เชฎเชพเช‚ เชฅเชฏเซ‹ เชนเชคเซ‹ เช–เชฐเซเชš เช•เชฐเซเชฏเซ‹ LMDB เชฆเซเชตเชพเชฐเชพ เชนเซ‹เชตเชฐเซเชก เชšเซ. เชฐเชฟเชเชฒเซเชŸ เชคเซ‡ เชเชŸเชฒเซเช‚ เชฐเชธเชชเซเชฐเชฆ เชฌเชจเซเชฏเซเช‚ เช•เซ‡ เชคเซ‡เชจเซ€ เชชเชนเซ‡เชฒเชจเซ‡ OSS เช‰เชคเซเชธเชพเชนเซ€เช“ เชฆเซเชตเชพเชฐเชพ เชชเชธเช‚เชฆ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ€, เช…เชจเซ‡ เชตเซเชฏเช•เซเชคเชฟเชฎเชพเช‚ เชคเซ‡เชจเซเช‚ เชธเชพเชคเชคเซเชฏ เชœเซ‹เชตเชพ เชฎเชณเซเชฏเซเช‚. LumoSQL. เชœเชพเชจเซเชฏเซเช†เชฐเซ€ 2020 เชฎเชพเช‚, เช† เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸเชจเชพ เชฒเซ‡เช–เช• เชกเซ‡เชจ เชถเซ€เชฏเชฐเชฐ เชนเชคเชพ เชชเซเชฐเชธเซเชคเซเชค เชคเซ‡ LinuxConfAu เชชเชฐ.

LMDB เชจเซ‹ เช‰เชชเชฏเซ‹เช— เชฎเซเช–เซเชฏเชคเซเชตเซ‡ เชเชชเซเชฒเซ€เช•เซ‡เชถเชจ เชกเซ‡เชŸเชพเชฌเซ‡เชธเซ‡เชธ เชฎเชพเชŸเซ‡ เชเชจเซเชœเซ€เชจ เชคเชฐเซ€เช•เซ‡ เชฅเชพเชฏ เช›เซ‡. เชชเซเชธเซเชคเช•เชพเชฒเชฏ เชคเซ‡เชจเชพ เชฆเซ‡เช–เชพเชตเชจเซ‡ เชตเชฟเช•เชพเชธเช•เชฐเซเชคเชพเช“เชจเซ‡ เช†เชญเชพเชฐเซ€ เช›เซ‡ OpenLDAP, เชœเซ‡เช“ เชคเซ‡เชฎเชจเชพ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸเชจเชพ เช†เชงเชพเชฐ เชคเชฐเซ€เช•เซ‡ เชฌเชฐเซเช•เชฒเซ‡เชกเซ€เชฌเซ€เชฅเซ€ เช–เซ‚เชฌ เชœ เช…เชธเช‚เชคเซเชทเซเชŸ เชนเชคเชพ. เชธเชพเชงเชพเชฐเชฃ เชชเซเชธเซเชคเช•เชพเชฒเชฏเชฅเซ€ เชถเชฐเซ‚ เช•เชฐเซ€เชจเซ‡ เชฌเซ€เชŸเซเชฐเซ€, เชนเซ‹เชตเชฐเซเชก เชšเซ เช…เชฎเชพเชฐเชพ เชธเชฎเชฏเชจเชพ เชธเซŒเชฅเซ€ เชฒเซ‹เช•เชชเซเชฐเชฟเชฏ เชตเชฟเช•เชฒเซเชชเซ‹เชฎเชพเช‚เชฅเซ€ เชเช• เชฌเชจเชพเชตเชตเชพ เชฎเชพเชŸเซ‡ เชธเช•เซเชทเชฎ เชนเชคเชพ. เชคเซ‡เชฎเชฃเซ‡ เชคเซ‡เชฎเชจเซ‹ เช–เซ‚เชฌ เชœ เชธเชฐเชธ เช…เชนเซ‡เชตเชพเชฒ เช† เชตเชพเชฐเซเชคเชพ เชคเซ‡เชฎเชœ LMDB เชจเซ€ เช†เช‚เชคเชฐเชฟเช• เชฐเชšเชจเชพเชจเซ‡ เชธเชฎเชฐเซเชชเชฟเชค เช•เชฐเซเชฏเซ‹. "เชงเซ€ เชฒเชพเชˆเชŸเชจเชฟเช‚เช— เชฎเซ‡เชฎเชฐเซ€-เชฎเซ‡เชชเซเชก เชกเซ‡เชŸเชพเชฌเซ‡เช". เชธเช‚เช—เซเชฐเชน เชธเซเชตเชฟเชงเชพ เชชเชฐ เชตเชฟเชœเชฏ เชฎเซ‡เชณเชตเชตเชพเชจเซเช‚ เชเช• เชธเชพเชฐเซเช‚ เช‰เชฆเชพเชนเชฐเชฃ เชฒเชฟเชฏเซ‹เชจเซ€เชฆ เชฏเซเชฐเซ€เชฏเซ‡เชต (เช‰เชฐเซเชซ yleo) เชนเชพเชˆเชฒเซ‹เชก 2015 เช–เชพเชคเซ‡เชจเชพ เชคเซ‡เชฎเชจเชพ เช…เชนเซ‡เชตเชพเชฒเชฎเชพเช‚ เชนเช•เชพเชฐเชพเชคเซเชฎเช• เชŸเซ‡เช•เซเชจเซ‹เชฒเซ‹เชœเซ€เชธเชฎเชพเช‚เชฅเซ€ "LMDB เชเชจเซเชœเชฟเชจ เชเช• เช–เชพเชธ เชšเซ‡เชฎเซเชชเชฟเชฏเชจ เช›เซ‡". เชคเซ‡เชฎเชพเช‚, เชคเซ‡ ReOpenLDAP เชจเชพ เช…เชฎเชฒเซ€เช•เชฐเชฃเชจเชพ เชธเชฎเชพเชจ เช•เชพเชฐเซเชฏเชจเชพ เชธเช‚เชฆเชฐเซเชญเชฎเชพเช‚ LMDB เชตเชฟเชถเซ‡ เชตเชพเชค เช•เชฐเซ‡ เช›เซ‡, เช…เชจเซ‡ LevelDB เชชเชนเซ‡เชฒเซ‡เชฅเซ€ เชœ เชคเซเชฒเชจเชพเชคเซเชฎเช• เชŸเซ€เช•เชพเชจเซ‡ เชชเชพเชคเซเชฐ เช›เซ‡. เช…เชฎเชฒเซ€เช•เชฐเชฃเชจเชพ เชชเชฐเชฟเชฃเชพเชฎเซ‡, เชธเช•เชพเชฐเชพเชคเซเชฎเช• เชŸเซ‡เช•เซเชจเซ‹เชฒเซ‹เชœเซ€เช“ เชชเชพเชธเซ‡ เชธเช•เซเชฐเชฟเชฏเชชเชฃเซ‡ เชตเชฟเช•เชพเชธเชถเซ€เชฒ เช•เชพเช‚เชŸเซ‹ เชชเชฃ เชนเชคเซ‹ MDBX เช–เซ‚เชฌ เชœ เชธเซเชตเชพเชฆเชฟเชทเซเชŸ เชธเซเชตเชฟเชงเชพเช“, เช‘เชชเซเชŸเชฟเชฎเชพเช‡เชเซ‡เชถเชจ เช…เชจเซ‡ เชธเชพเชฅเซ‡ เชญเซ‚เชฒ เชธเซเชงเชพเชฐเชพเช“.

LMDB เชจเซ‹ เช‰เชชเชฏเซ‹เช— เชฎเซ‹เชŸเชพเชญเชพเช—เซ‡ เชธเซเชŸเซ‹เชฐเซ‡เชœ เชคเชฐเซ€เช•เซ‡ เชฅเชพเชฏ เช›เซ‡. เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชฎเซ‹เชเชฟเชฒเชพ เชซเชพเชฏเชฐเชซเซ‹เช•เซเชธ เชฌเซเชฐเชพเช‰เชเชฐ เชชเชธเช‚เชฆ เช•เชฐเซเชฏเซเช‚ เชคเซ‡ เชธเช‚เช–เซเชฏเชพเชฌเช‚เชง เชœเชฐเซ‚เชฐเชฟเชฏเชพเชคเซ‹ เชฎเชพเชŸเซ‡, เช…เชจเซ‡ เช†เชตเซƒเชคเซเชคเชฟ 9 เชฅเซ€ เชถเชฐเซ‚ เช•เชฐเซ€เชจเซ‡, Xcode เชชเชธเช‚เชฆ เช…เชจเซเช•เซเชฐเชฎเชฃเชฟเช•เชพเช“ เชธเช‚เช—เซเชฐเชนเชฟเชค เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชคเซ‡เชจเซเช‚ SQLite.

เชฎเซ‹เชฌเชพเชˆเชฒ เชกเซ‡เชตเชฒเชชเชฎเซ‡เชจเซเชŸเชจเซ€ เชฆเซเชจเชฟเชฏเชพเชฎเชพเช‚ เชชเชฃ เชเชจเซเชœเชฟเชจเซ‡ เชชเซ‹เชคเชพเชจเซ€ เช“เชณเช– เชฌเชจเชพเชตเซ€ เช›เซ‡. เชคเซ‡เชจเชพ เช‰เชชเชฏเซ‹เช—เชจเชพ เชจเชฟเชถเชพเชจ เชนเซ‹เชˆ เชถเช•เซ‡ เช›เซ‡ เชถเซ‹เชงเชตเชพ เชฎเชพเชŸเซ‡ เชŸเซ‡เชฒเชฟเช—เซเชฐเชพเชฎ เชฎเชพเชŸเซ‡ iOS เช•เซเชฒเชพเชฏเช‚เชŸเชฎเชพเช‚. LinkedIn เชคเซ‡เชจเชพเชฅเซ€ เชชเชฃ เช†เช—เชณ เชตเชงเซเชฏเซเช‚ เช…เชจเซ‡ เชคเซ‡เชจเชพ เชนเซ‹เชฎเช—เซเชฐเซ‹เชจ เชกเซ‡เชŸเชพ เช•เซ‡เชถเซ€เช‚เช— เชซเซเชฐเซ‡เชฎเชตเชฐเซเช• เชฐเซ‹เช•เซ‡เชŸ เชกเซ‡เชŸเชพ เชฎเชพเชŸเซ‡ เชกเชฟเชซเซ‹เชฒเซเชŸ เชธเซเชŸเซ‹เชฐเซ‡เชœ เชคเชฐเซ€เช•เซ‡ LMDB เชชเชธเช‚เชฆ เช•เชฐเซเชฏเซเช‚, เชœเซ‡ เชตเชฟเชถเซ‡ เช•เชนเซเชฏเซเช‚ 2016 เชฎเชพเช‚ เชคเซ‡เชฎเชจเชพ เชฒเซ‡เช–เชฎเชพเช‚.

เชเชฒเชเชฎเชกเซ€เชฌเซ€ เช“เชฐเซ‡เช•เชฒเชจเชพ เชจเชฟเชฏเช‚เชคเซเชฐเชฃ เชนเซ‡เช เชณ เช†เชตเซเชฏเชพ เชชเช›เซ€ เชฌเชฐเซเช•เชฒเซ‡เชกเซ€เชฌเซ€ เชฆเซเชตเชพเชฐเชพ เช›เซ‹เชกเชตเชพเชฎเชพเช‚ เช†เชตเซ‡เชฒเชพ เชตเชฟเชถเชฟเชทเซเชŸ เชธเซเชฅเชพเชจเชฎเชพเช‚ เชธเซ‚เชฐเซเชฏเชฎเชพเช‚ เชธเซเชฅเชพเชจ เชฎเชพเชŸเซ‡ เชธเชซเชณเชคเชพเชชเซ‚เชฐเซเชตเช• เชฒเชกเชค เช†เชชเซ€ เชฐเชนเซเชฏเซเช‚ เช›เซ‡. เชชเซเชธเซเชคเช•เชพเชฒเชฏ เชคเซ‡เชจเซ€ เช—เชคเชฟ เช…เชจเซ‡ เชตเชฟเชถเซเชตเชธเชจเซ€เชฏเชคเชพ เชฎเชพเชŸเซ‡ เชชเซเชฐเชฟเชฏ เช›เซ‡, เชคเซ‡เชจเชพ เชธเชพเชฅเซ€เช“เชจเซ€ เชคเซเชฒเชจเชพเชฎเชพเช‚ เชชเชฃ. เชœเซ‡เชฎ เชคเชฎเซ‡ เชœเชพเชฃเซ‹ เช›เซ‹, เชคเซเชฏเชพเช‚ เช•เซ‹เชˆ เชฎเชซเชค เชฒเช‚เชš เชจเชฅเซ€, เช…เชจเซ‡ เชนเซเช‚ LMDB เช…เชจเซ‡ SQLite เชตเชšเซเชšเซ‡ เชชเชธเช‚เชฆเช—เซ€ เช•เชฐเชคเซ€ เชตเช–เชคเซ‡ เชคเชฎเชพเชฐเซ‡ เชœเซ‡ เชŸเซเชฐเซ‡เชก-เช“เชซเชจเซ‹ เชธเชพเชฎเชจเซ‹ เช•เชฐเชตเซ‹ เชชเชกเชถเซ‡ เชคเซ‡เชจเชพ เชชเชฐ เชญเชพเชฐ เชฎเซ‚เช•เชตเชพ เชฎเชพเช‚เช—เซ เช›เซเช‚. เช‰เชชเชฐเซ‹เช•เซเชค เชฐเซ‡เช–เชพเช•เซƒเชคเชฟ เชธเซเชชเชทเซเชŸเชชเชฃเซ‡ เชฆเชฐเซเชถเชพเชตเซ‡ เช›เซ‡ เช•เซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชตเชงเซ‡เชฒเซ€ เชเชกเชช เชชเซเชฐเชพเชชเซเชค เชฅเชพเชฏ เช›เซ‡. เชชเซเชฐเชฅเชฎ, เช…เชฎเซ‡ เชกเชฟเชธเซเช• เชธเซเชŸเซ‹เชฐเซ‡เชœเชจเซ€ เชŸเซ‹เชš เชชเชฐ เชเชฌเซเชธเซเชŸเซเชฐเซ‡เช•เซเชถเชจเชจเชพ เชตเชงเชพเชฐเชพเชจเชพ เชธเซเชคเชฐเซ‹ เชฎเชพเชŸเซ‡ เชšเซ‚เช•เชตเชฃเซ€ เช•เชฐเชคเชพ เชจเชฅเซ€. เชคเซ‡ เชธเซเชชเชทเซเชŸ เช›เซ‡ เช•เซ‡ เชเช• เชธเชพเชฐเซเช‚ เช†เชฐเซเช•เชฟเชŸเซ‡เช•เซเชšเชฐ เชนเชœเซ€ เชชเชฃ เชคเซ‡เชฎเชจเชพ เชตเชฟเชจเชพ เช•เชฐเซ€ เชถเช•เชคเซเช‚ เชจเชฅเซ€, เช…เชจเซ‡ เชคเซ‡ เช…เชจเชฟเชตเชพเชฐเซเชฏเชชเชฃเซ‡ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เช•เซ‹เชกเชฎเชพเช‚ เชฆเซ‡เช–เชพเชถเซ‡, เชชเชฐเช‚เชคเซ เชคเซ‡ เชตเชงเซ เชธเซ‚เช•เซเชทเซเชฎ เชนเชถเซ‡. เชคเซ‡เชฎเชพเช‚ เชเชตเซ€ เชตเชฟเชถเซ‡เชทเชคเชพเช“ เชนเชถเซ‡ เชจเชนเซ€เช‚ เช•เซ‡ เชœเซ‡ เชšเซ‹เช•เซเช•เชธ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชฎเชพเชŸเซ‡ เชœเชฐเซ‚เชฐเซ€ เชจเชฅเซ€, เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, SQL เชญเชพเชทเชพเชฎเชพเช‚ เชชเซเชฐเชถเซเชจเซ‹ เชฎเชพเชŸเซ‡ เชธเชฎเชฐเซเชฅเชจ. เชฌเซ€เชœเซเช‚, เชกเชฟเชธเซเช• เชธเซเชŸเซ‹เชฐเซ‡เชœเชจเซ€ เชตเชฟเชจเช‚เชคเซ€เช“ เชชเชฐ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เช“เชชเชฐเซ‡เชถเชจเซเชธเชจเชพ เชฎเซ‡เชชเชฟเช‚เช—เชจเซ‡ เชถเซเชฐเซ‡เชทเซเช  เชฐเซ€เชคเซ‡ เช…เชฎเชฒเชฎเชพเช‚ เชฎเซ‚เช•เชตเซเช‚ เชถเช•เซเชฏ เชฌเชจเซ‡ เช›เซ‡. เชœเซ‹ SQLite เชฎเชพเชฐเชพ เช•เชพเชฎเชฎเชพเช‚ เชธเชฐเซ‡เชฐเชพเชถ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเชจเซ€ เชธเชฐเซ‡เชฐเชพเชถ เช†เช‚เช•เชกเชพเช•เซ€เชฏ เชœเชฐเซ‚เชฐเชฟเชฏเชพเชคเซ‹ เชชเชฐ เช†เชงเชพเชฐเชฟเชค เช›เซ‡, เชคเซ‹ เชชเช›เซ€ เชคเชฎเซ‡, เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชกเซ‡เชตเชฒเชชเชฐ เชคเชฐเซ€เช•เซ‡, เชฎเซเช–เซเชฏ เชตเชฐเซเช•เชฒเซ‹เชก เชฆเซƒเชถเซเชฏเซ‹เชฅเซ€ เชธเชพเชฐเซ€ เชฐเซ€เชคเซ‡ เชตเชพเช•เซ‡เชซ เช›เซ‹. เชตเชงเซ เช‰เชคเซเชชเชพเชฆเช• เชธเซ‹เชฒเซเชฏเซเชถเชจ เชฎเชพเชŸเซ‡, เชคเชฎเชพเชฐเซ‡ เชชเซเชฐเชพเชฐเช‚เชญเชฟเช• เชธเซ‹เชฒเซเชฏเซเชถเชจเชจเชพ เชตเชฟเช•เชพเชธ เชฎเชพเชŸเซ‡ เช…เชจเซ‡ เชคเซ‡เชจเชพ เช…เชจเซเช—เชพเชฎเซ€ เชธเชชเซ‹เชฐเซเชŸ เชฌเช‚เชจเซ‡ เชฎเชพเชŸเซ‡ เชตเชงเซ‡เชฒเซ€ เช•เชฟเช‚เชฎเชค เชšเซ‚เช•เชตเชตเซ€ เชชเชกเชถเซ‡.

3. LMDB เชจเชพ เชคเซเชฐเชฃ เชฅเชพเช‚เชญเชฒเชพ

เชเชฒเชเชฎเชกเซ€เชฌเซ€เชจเซ‡ เชชเช•เซเชทเซ€เชจเซ€ เช†เช‚เช–เชฅเซ€ เชœเซ‹เชฏเชพ เชชเช›เซ€, เชตเชงเซ เชŠเช‚เชกเชพ เชœเชตเชพเชจเซ‹ เชธเชฎเชฏ เชนเชคเซ‹. เช†เช—เชฒเชพ เชคเซเชฐเชฃ เชตเชฟเชญเชพเช—เซ‹ เชฎเซเช–เซเชฏ เชธเซเชคเช‚เชญเซ‹เชจเชพ เชตเชฟเชถเซเชฒเซ‡เชทเชฃ เชฎเชพเชŸเซ‡ เชธเชฎเชฐเซเชชเชฟเชค เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡ เชœเซ‡เชจเชพ เชชเชฐ เชธเซเชŸเซ‹เชฐเซ‡เชœ เช†เชฐเซเช•เชฟเชŸเซ‡เช•เซเชšเชฐ เช›เซ‡:

  1. เชกเชฟเชธเซเช• เชธเชพเชฅเซ‡ เช•เชพเชฎ เช•เชฐเชตเชพ เช…เชจเซ‡ เช†เช‚เชคเชฐเชฟเช• เชกเซ‡เชŸเชพ เชธเซเชŸเซเชฐเช•เซเชšเชฐเชจเซ‡ เชธเชฟเช‚เช•เซเชฐเชจเชพเช‡เช เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡เชจเซ€ เชชเชฆเซเชงเชคเชฟ เชคเชฐเซ€เช•เซ‡ เชฎเซ‡เชฎเชฐเซ€-เชฎเซ‡เชช เช•เชฐเซ‡เชฒเซ€ เชซเชพเช‡เชฒเซ‹.
  2. เชธเช‚เช—เซเชฐเชนเชฟเชค เชกเซ‡เชŸเชพเชจเชพ เชฎเชพเชณเช–เชพเชจเชพ เชธเช‚เช—เช เชจ เชคเชฐเซ€เช•เซ‡ B+-เชŸเซเชฐเซ€.
  3. ACID เชŸเซเชฐเชพเชจเซเชเซ‡เช•เซเชถเชจ เชชเซเชฐเซ‹เชชเชฐเซเชŸเซ€เช เช…เชจเซ‡ เชฎเชฒเซเชŸเซ€เชตเชฐเซเชเชจ เชชเซเชฐเชฆเชพเชจ เช•เชฐเชตเชพเชจเชพ เช…เชญเชฟเช—เชฎ เชคเชฐเซ€เช•เซ‡ เช•เซ‰เชชเชฟ-เช‘เชจ-เชฐเชพเช‡เชŸ.

3.1. เชตเซเชนเซ‡เชฒ #1. เชฎเซ‡เชฎเชฐเซ€-เชฎเซ‡เชช เช•เชฐเซ‡เชฒเซ€ เชซเชพเช‡เชฒเซ‹

เชฎเซ‡เชฎเชฐเซ€-เชฎเซ‡เชช เช•เชฐเซ‡เชฒเซ€ เชซเชพเช‡เชฒเซ‹ เช เชเช• เชฎเชนเชคเซเชตเชชเซ‚เชฐเซเชฃ เช†เชฐเซเช•เชฟเชŸเซ‡เช•เซเชšเชฐเชฒ เชคเชคเซเชต เช›เซ‡ เช•เซ‡ เชคเซ‡ เชฐเซ€เชชเซ‹เชเซ€เชŸเชฐเซ€เชจเชพ เชจเชพเชฎ เชชเชฐ เชชเชฃ เชฆเซ‡เช–เชพเชฏ เช›เซ‡. เชธเช‚เช—เซเชฐเชนเชฟเชค เชฎเชพเชนเชฟเชคเซ€เชจเซ€ เชเช•เซเชธเซ‡เชธเชจเชพ เช•เซ‡เชถเซ€เช‚เช— เช…เชจเซ‡ เชธเชฟเช‚เช•เซเชฐเชจเชพเช‡เชเซ‡เชถเชจเชจเชพ เชฎเซเชฆเซเชฆเชพเช“ เชธเช‚เชชเซ‚เชฐเซเชฃเชชเชฃเซ‡ เช“เชชเชฐเซ‡เชŸเชฟเช‚เช— เชธเชฟเชธเซเชŸเชฎ เชชเชฐ เช›เซ‹เชกเซ€ เชฆเซ‡เชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡. LMDB เชชเซ‹เชคเชพเชจเซ€ เช…เช‚เชฆเชฐ เช•เซ‹เชˆ เช•เซ‡เชถ เชงเชฐเชพเชตเชคเซเช‚ เชจเชฅเซ€. เช† เชฒเซ‡เช–เช• เชฆเซเชตเชพเชฐเชพ เชธเชญเชพเชจ เชจเชฟเชฐเซเชฃเชฏ เช›เซ‡, เช•เชพเชฐเชฃ เช•เซ‡ เชฎเซ‡เชช เช•เชฐเซ‡เชฒเซ€ เชซเชพเช‡เชฒเซ‹เชฎเชพเช‚เชฅเซ€ เชธเซ€เชงเซ‹ เชกเซ‡เชŸเชพ เชตเชพเช‚เชšเชตเชพเชฅเซ€ เชคเชฎเซ‡ เชเชจเซเชœเชฟเชจ เช…เชฎเชฒเซ€เช•เชฐเชฃเชฎเชพเช‚ เช˜เชฃเชพ เชฌเชงเชพ เช–เซ‚เชฃเชพเช“ เช•เชพเชชเซ€ เชถเช•เซ‹ เช›เซ‹. เชจเซ€เชšเซ‡ เชคเซ‡เชฎเชพเช‚เชฅเซ€ เช•เซ‡เชŸเชฒเชพเช•เชจเซ€ เชธเช‚เชชเซ‚เชฐเซเชฃ เชธเซ‚เชšเชฟเชฅเซ€ เชฆเซ‚เชฐ เช›เซ‡.

  1. เชธเซเชŸเซ‹เชฐเซ‡เชœเชฎเชพเช‚ เชกเซ‡เชŸเชพเชจเซ€ เชธเซเชธเช‚เช—เชคเชคเชพ เชœเชพเชณเชตเชตเซ€ เชœเซเชฏเชพเชฐเซ‡ เช˜เชฃเซ€ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเช“เชฎเชพเช‚เชฅเซ€ เชคเซ‡เชจเซ€ เชธเชพเชฅเซ‡ เช•เชพเชฎ เช•เชฐเชคเซ€ เชตเช–เชคเซ‡ เช“เชชเชฐเซ‡เชŸเชฟเช‚เช— เชธเชฟเชธเซเชŸเชฎเชจเซ€ เชœเชตเชพเชฌเชฆเชพเชฐเซ€ เชฌเชจเซ‡ เช›เซ‡. เช†เช—เชณเชจเชพ เชตเชฟเชญเชพเช—เชฎเชพเช‚, เช† เชฎเชฟเช•เซ‡เชจเชฟเช•เซเชธ เชตเชฟเชถเซ‡ เชตเชฟเช—เชคเชตเชพเชฐ เช…เชจเซ‡ เชšเชฟเชคเซเชฐเซ‹ เชธเชพเชฅเซ‡ เชšเชฐเซเชšเชพ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ€ เช›เซ‡.
  2. เช•เซ‡เชถเชจเซ€ เช—เซ‡เชฐเชนเชพเชœเชฐเซ€ เช—เชคเชฟเชถเซ€เชฒ เชซเชพเชณเชตเชฃเซ€ เชธเชพเชฅเซ‡ เชธเช‚เช•เชณเชพเชฏเซ‡เชฒ เช“เชตเชฐเชนเซ‡เชกเชฎเชพเช‚เชฅเซ€ LMDBเชจเซ‡ เชธเช‚เชชเซ‚เชฐเซเชฃเชชเชฃเซ‡ เชฆเซ‚เชฐ เช•เชฐเซ‡ เช›เซ‡. เชตเซเชฏเชตเชนเชพเชฐเชฎเชพเช‚ เชกเซ‡เชŸเชพ เชตเชพเช‚เชšเชตเชพเชจเซ‹ เช…เชฐเซเชฅ เช เช›เซ‡ เช•เซ‡ เชตเชฐเซเชšเซเชฏเซเช…เชฒ เชฎเซ‡เชฎเชฐเซ€เชฎเชพเช‚ เชธเชพเชšเชพ เชธเชฐเชจเชพเชฎเชพ เชชเชฐ เชชเซ‹เช‡เชจเซเชŸเชฐ เชธเซ‡เชŸ เช•เชฐเชตเซเช‚ เช…เชจเซ‡ เชตเชงเซ เช•เช‚เชˆ เชจเชนเซ€เช‚. เชคเซ‡ เชธเชพเชฏเชจเซเชธ เชซเชฟเช•เซเชถเชจ เชœเซ‡เชตเซเช‚ เชฒเชพเช—เซ‡ เช›เซ‡, เชชเชฐเช‚เชคเซ เชธเซเชŸเซ‹เชฐเซ‡เชœ เชธเซ‹เชฐเซเชธ เช•เซ‹เชกเชฎเชพเช‚ เช•เซ‰เชฒเซ‹เช• เชฎเชพเชŸเซ‡เชจเชพ เชคเชฎเชพเชฎ เช•เซ‰เชฒเซเชธ เชธเซเชŸเซ‹เชฐเซ‡เชœ เช•เชจเซเชซเชฟเช—เชฐเซ‡เชถเชจ เชซเช‚เช•เซเชถเชจเชฎเชพเช‚ เช•เซ‡เชจเซเชฆเซเชฐเชฟเชค เช›เซ‡.
  3. เช•เซ‡เชถเชจเซ€ เช—เซ‡เชฐเชนเชพเชœเชฐเซ€เชจเซ‹ เช…เชฐเซเชฅ เช เชชเชฃ เช›เซ‡ เช•เซ‡ เชคเซ‡เชฎเชจเซ€ เชเช•เซเชธเซ‡เชธเชจเชพ เชธเชฟเช‚เช•เซเชฐเชจเชพเช‡เชเซ‡เชถเชจ เชธเชพเชฅเซ‡ เชธเช‚เช•เชณเชพเชฏเซ‡เชฒเชพ เชคเชพเชณเชพเช“เชจเซ€ เช—เซ‡เชฐเชนเชพเชœเชฐเซ€. เชตเชพเชšเช•เซ‹, เชœเซ‡เชฎเชพเช‚เชฅเซ€ เชเช• เชœ เชธเชฎเชฏเซ‡ เชตเชพเชšเช•เซ‹เชจเซ€ เชฎเชจเชธเซเชตเซ€ เชธเช‚เช–เซเชฏเชพ เชนเซ‹เชˆ เชถเช•เซ‡ เช›เซ‡, เชคเซ‡เช“ เชกเซ‡เชŸเชพเชจเชพ เชฎเชพเชฐเซเช— เชชเชฐ เชเช• เชชเชฃ เชฎเซเชฏเซเชŸเซ‡เช•เซเชธเชจเซ‹ เชธเชพเชฎเชจเซ‹ เช•เชฐเชคเชพ เชจเชฅเซ€. เช†เชจเซ‡ เช•เชพเชฐเชฃเซ‡, CPU เชจเซ€ เชธเช‚เช–เซเชฏเชพเชจเชพ เช†เชงเชพเชฐเซ‡ เชฐเซ€เชกเชฟเช‚เช— เชธเซเชชเซ€เชก เช†เชฆเชฐเซเชถ เชฐเซ‡เช–เซ€เชฏ เชฎเชพเชชเชจเซ€เชฏเชคเชพ เชงเชฐเชพเชตเซ‡ เช›เซ‡. LMDB เชฎเชพเช‚, เชฎเชพเชคเซเชฐ เชธเช‚เชถเซ‹เชงเชฟเชค เช•เชพเชฎเช—เซ€เชฐเซ€ เชธเชฟเช‚เช•เซเชฐเชจเชพเช‡เช เชฅเชพเชฏ เช›เซ‡. เชเช• เชธเชฎเชฏเซ‡ เชเช• เชœ เชฒเซ‡เช–เช• เชนเซ‹เชˆ เชถเช•เซ‡.
  4. เชจเซเชฏเซ‚เชจเชคเชฎ เช•เซ‡เชถเซ€เช‚เช— เช…เชจเซ‡ เชธเชฟเช‚เช•เซเชฐเชจเชพเช‡เชเซ‡เชถเชจ เชฒเซ‹เชœเชฟเช• เชฌเชนเซ-เชฅเซเชฐเซ‡เชกเซ‡เชก เชตเชพเชคเชพเชตเชฐเชฃเชฎเชพเช‚ เช•เชพเชฎ เช•เชฐเชตเชพ เชธเชพเชฅเซ‡ เชธเช‚เช•เชณเชพเชฏเซ‡เชฒ เช…เชคเซเชฏเช‚เชค เชœเชŸเชฟเชฒ เชชเซเชฐเช•เชพเชฐเชจเซ€ เชญเซ‚เชฒเซ‹เชจเซ‡ เชฆเซ‚เชฐ เช•เชฐเซ‡ เช›เซ‡. Usenix OSDI 2014 เช•เซ‹เชจเซเชซเชฐเชจเซเชธเชฎเชพเช‚ เชฌเซ‡ เชฐเชธเชชเซเชฐเชฆ เชกเซ‡เชŸเชพเชฌเซ‡เช เช…เชญเซเชฏเชพเชธเซ‹ เชนเชคเชพ: "เชฌเชงเซ€ เชซเชพเช‡เชฒ เชธเชฟเชธเซเชŸเชฎเซเชธ เชธเชฎเชพเชจ เชฐเซ€เชคเซ‡ เชฌเชจเชพเชตเชตเชพเชฎเชพเช‚ เช†เชตเซ€ เชจเชฅเซ€: เช•เซเชฐเซ‡เชถ-เชธเชคเชค เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเซ‹เชจเซ€ เชฐเชšเชจเชพเชจเซ€ เชœเชŸเชฟเชฒเชคเชพ เชชเชฐ" ะธ "เช†เชจเช‚เชฆ เช…เชจเซ‡ เชจเชซเชพ เชฎเชพเชŸเซ‡ เชกเซ‡เชŸเชพเชฌเซ‡เชเชจเซ‡ เชคเซเชฐเชพเชธ เช†เชชเชตเซ‹". เชคเซ‡เชฎเชจเซ€ เชชเชพเชธเซ‡เชฅเซ€ เชคเชฎเซ‡ LMDB เชจเซ€ เช…เชญเซ‚เชคเชชเซ‚เชฐเซเชต เชตเชฟเชถเซเชตเชธเชจเซ€เชฏเชคเชพ เช…เชจเซ‡ ACID เชŸเซเชฐเชพเชจเซเชเซ‡เช•เซเชถเชจ เชชเซเชฐเซ‹เชชเชฐเซเชŸเซ€เชเชจเชพ เชฒเช—เชญเช— เชฆเซ‹เชทเชฐเชนเชฟเชค เช…เชฎเชฒเซ€เช•เชฐเชฃ เชตเชฟเชถเซ‡เชจเซ€ เชฎเชพเชนเชฟเชคเซ€ เชฎเซ‡เชณเชตเซ€ เชถเช•เซ‹ เช›เซ‹, เชœเซ‡ SQLite เช•เชฐเชคเชพ เชถเซเชฐเซ‡เชทเซเช  เช›เซ‡.
  5. LMDB เชจเซ€ เชฎเชฟเชจเชฟเชฎเชฒเชฟเชเชฎ เชคเซ‡เชจเชพ เช•เซ‹เชกเชจเซ€ เชฎเชถเซ€เชจ เชฐเชœเซ‚เช†เชคเชจเซ‡ เช†เช—เชพเชฎเซ€ เชเชกเชชเชจเซ€ เชฒเชพเช•เซเชทเชฃเชฟเช•เชคเชพเช“ เชธเชพเชฅเซ‡ เชชเซเชฐเซ‹เชธเซ‡เชธเชฐเชจเชพ L1 เช•เซ‡เชถเชฎเชพเช‚ เชธเช‚เชชเซ‚เชฐเซเชฃเชชเชฃเซ‡ เชธเซเชฅเชฟเชค เชฅเชตเชพ เชฆเซ‡ เช›เซ‡.

เช•เชฎเชจเชธเซ€เชฌเซ‡, เช†เช‡เช“เชเชธเชฎเชพเช‚, เชฎเซ‡เชฎเชฐเซ€-เชฎเซ‡เชช เช•เชฐเซ‡เชฒเซ€ เชซเชพเช‡เชฒเซ‹ เชธเชพเชฅเซ‡, เชฌเชงเซเช‚ เช†เชชเชฃเซ‡ เช‡เชšเซเช›เซ€เช เชคเซ‡เชŸเชฒเซเช‚ เชตเชพเชฆเชณ เชฐเชนเชฟเชค เชจเชฅเซ€. เชคเซ‡เชฎเชจเซ€ เชธเชพเชฅเซ‡ เชธเช‚เช•เชณเชพเชฏเซ‡เชฒ เช–เชพเชฎเซ€เช“ เชตเชฟเชถเซ‡ เชตเชงเซ เชธเชญเชพเชจเชชเชฃเซ‡ เชตเชพเชค เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เช‘เชชเชฐเซ‡เชŸเชฟเช‚เช— เชธเชฟเชธเซเชŸเชฎเซเชธเชฎเชพเช‚ เช† เชชเชฆเซเชงเชคเชฟเชจเชพ เช…เชฎเชฒเซ€เช•เชฐเชฃเชจเชพ เชธเชพเชฎเชพเชจเซเชฏ เชธเชฟเชฆเซเชงเชพเช‚เชคเซ‹เชจเซ‡ เชฏเชพเชฆ เชฐเชพเช–เชตเซเช‚ เชœเชฐเซ‚เชฐเซ€ เช›เซ‡.

เชฎเซ‡เชฎเชฐเซ€-เชฎเซ‡เชช เช•เชฐเซ‡เชฒเซ€ เชซเชพเช‡เชฒเซ‹ เชตเชฟเชถเซ‡ เชธเชพเชฎเชพเชจเซเชฏ เชฎเชพเชนเชฟเชคเซ€

iOS เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเซเชธเชฎเชพเช‚ เช•เซ€-เชตเซ‡เชฒเซเชฏเซ เชกเซ‡เชŸเชพเชฌเซ‡เช LMDB เชจเซ€ เชคเซ‡เชœเชธเซเชตเซ€เชคเชพ เช…เชจเซ‡ เช—เชฐเซ€เชฌเซ€เชšเชพเชฒเชคเซ€ เชฆเชฐเซ‡เช• เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชธเชพเชฅเซ‡, เช“เชชเชฐเซ‡เชŸเชฟเช‚เช— เชธเชฟเชธเซเชŸเชฎ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เชคเชฐเซ€เช•เซ‡ เช“เชณเช–เชพเชคเซ€ เชเชจเซเชŸเชฟเชŸเซ€เชจเซ‡ เชธเชพเช‚เช•เชณเซ‡ เช›เซ‡. เชฆเชฐเซ‡เช• เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเชจเซ‡ เชธเชฐเชจเชพเชฎเชพเช‚เชจเซ€ เชธเช‚เชฒเช—เซเชจ เชถเซเชฐเซ‡เชฃเซ€ เชซเชพเชณเชตเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡ เชœเซ‡เชฎเชพเช‚ เชคเซ‡ เชคเซ‡เชจเซ‡ เช•เชพเชฎ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชœเชฐเซ‚เชฐเซ€ เชฌเชงเซเช‚ เชฎเซ‚เช•เซ‡ เช›เซ‡. เชธเซŒเชฅเซ€ เชจเซ€เชšเชพ เชธเชฐเชจเชพเชฎเชพเช‚เช“ เชชเชฐ เช•เซ‹เชก เช…เชจเซ‡ เชนเชพเชฐเซเชก-เช•เซ‹เชกเซ‡เชก เชกเซ‡เชŸเชพ เช…เชจเซ‡ เชธเช‚เชธเชพเชงเชจเซ‹ เชธเชพเชฅเซ‡เชจเชพ เชตเชฟเชญเชพเช—เซ‹ เช›เซ‡. เช†เช—เชณ เชกเชพเชฏเชจเซ‡เชฎเชฟเช• เชเชกเซเชฐเซ‡เชธ เชธเซเชชเซ‡เชธเชจเซ‹ เชตเชงเชคเซ‹ เชฌเซเชฒเซ‹เช• เช†เชตเซ‡ เช›เซ‡, เชœเซ‡ เช†เชชเชฃเชจเซ‡ เชขเช—เชฒเชพ เชจเชพเชฎเชฅเซ€ เชœเชพเชฃเซ€เชคเซ‹ เช›เซ‡. เชคเซ‡ เชเช•เชฎเซ‹เชจเชพ เชธเชฐเชจเชพเชฎเชพเช‚ เชงเชฐเชพเชตเซ‡ เช›เซ‡ เชœเซ‡ เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎเชจเชพ เชธเช‚เชšเชพเชฒเชจ เชฆเชฐเชฎเชฟเชฏเชพเชจ เชฆเซ‡เช–เชพเชฏ เช›เซ‡. เชŸเซ‹เชš เชชเชฐ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชธเซเชŸเซ‡เช• เชฆเซเชตเชพเชฐเชพ เช‰เชชเชฏเซ‹เช—เชฎเชพเช‚ เชฒเซ‡เชตเชพเชคเซ‹ เชฎเซ‡เชฎเชฐเซ€ เชตเชฟเชธเซเชคเชพเชฐ เช›เซ‡. เชคเซ‡ เช•เชพเช‚ เชคเซ‹ เชตเชงเซ‡ เช›เซ‡ เช…เชฅเชตเชพ เชธเช‚เช•เซเชšเชฟเชค เชฅเชพเชฏ เช›เซ‡; เชฌเซ€เชœเชพ เชถเชฌเซเชฆเซ‹เชฎเชพเช‚ เช•เชนเซ€เช เชคเซ‹, เชคเซ‡เชจเซเช‚ เช•เชฆ เชชเชฃ เช—เชคเชฟเชถเซ€เชฒ เชชเซเชฐเช•เซƒเชคเชฟ เชงเชฐเชพเชตเซ‡ เช›เซ‡. เชธเซเชŸเซ‡เช• เช…เชจเซ‡ เชนเซ€เชชเชจเซ‡ เชเช•เชฌเซ€เชœเชพ เชธเชพเชฅเซ‡ เชฆเชฌเชพเชฃ เช…เชจเซ‡ เชฆเช–เชฒ เช•เชฐเชคเชพ เช…เชŸเช•เชพเชตเชตเชพ เชฎเชพเชŸเซ‡, เชคเซ‡เช“ เชธเชฐเชจเชพเชฎเชพเช‚เชจเซ€ เชœเช—เซเชฏเชพเชจเชพ เชœเซเชฆเชพ เชœเซเชฆเชพ เช›เซ‡เชกเชพ เชชเชฐ เชธเซเชฅเชฟเชค เช›เซ‡. เช‰เชชเชฐ เช…เชจเซ‡ เชจเซ€เชšเซ‡ เชฌเซ‡ เช—เชคเชฟเชถเซ€เชฒ เชตเชฟเชญเชพเช—เซ‹ เชตเชšเซเชšเซ‡ เชเช• เช›เชฟเชฆเซเชฐ เช›เซ‡. เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เชธเชพเชฅเซ‡ เชตเชฟเชตเชฟเชง เชธเช‚เชธเซเชฅเชพเช“เชจเซ‡ เชธเชพเช‚เช•เชณเชตเชพ เชฎเชพเชŸเซ‡ เช“เชชเชฐเซ‡เชŸเชฟเช‚เช— เชธเชฟเชธเซเชŸเชฎ เช† เชฎเชงเซเชฏเชฎ เชตเชฟเชญเชพเช—เชฎเชพเช‚ เชธเชฐเชจเชพเชฎเชพเช‚เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‡ เช›เซ‡. เช–เชพเชธ เช•เชฐเซ€เชจเซ‡, เชคเซ‡ เชกเชฟเชธเซเช• เชชเชฐเชจเซ€ เชซเชพเช‡เชฒ เชธเชพเชฅเซ‡ เชธเชฐเชจเชพเชฎเชพเช‚เชจเชพ เชšเซ‹เช•เซเช•เชธ เชธเชคเชค เชธเซ‡เชŸเชจเซ‡ เชธเชพเช‚เช•เชณเซ€ เชถเช•เซ‡ เช›เซ‡. เช†เชตเซ€ เชซเชพเช‡เชฒเชจเซ‡ เชฎเซ‡เชฎเชฐเซ€-เชฎเซ‡เชชเซเชก เช•เชนเซ‡เชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡

เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เชฎเชพเชŸเซ‡ เชซเชพเชณเชตเซ‡เชฒ เชธเชฐเชจเชพเชฎเชพเช‚เชจเซ€ เชœเช—เซเชฏเชพ เชตเชฟเชถเชพเชณ เช›เซ‡. เชธเซˆเชฆเซเชงเชพเช‚เชคเชฟเช• เชฐเซ€เชคเซ‡, เชธเชฐเชจเชพเชฎเชพเช‚เช“เชจเซ€ เชธเช‚เช–เซเชฏเชพ เชฎเชพเชคเซเชฐ เชชเซ‹เช‡เชจเซเชŸเชฐเชจเชพ เช•เชฆ เชฆเซเชตเชพเชฐเชพ เชฎเชฐเซเชฏเชพเชฆเชฟเชค เช›เซ‡, เชœเซ‡ เชธเชฟเชธเซเชŸเชฎเชจเซ€ เชฌเซ€เชŸ เช•เซเชทเชฎเชคเชพ เชฆเซเชตเชพเชฐเชพ เชจเช•เซเช•เซ€ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡. เชœเซ‹ เชญเซŒเชคเชฟเช• เชฎเซ‡เชฎเชฐเซ€เชจเซ‡ 1-เชฅเซ€-1 เชธเชพเชฅเซ‡ เชฎเซ‡เชช เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ€ เชนเซ‹เชฏ, เชคเซ‹ เชชเซเชฐเชฅเชฎ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เชธเชฎเช—เซเชฐ เชฐเซ‡เชฎเชจเซ‡ เช—เชฌเชกเชถเซ‡, เช…เชจเซ‡ เช•เซ‹เชˆเชชเชฃ เชฎเชฒเซเชŸเชฟเชŸเชพเชธเซเช•เชฟเช‚เช—เชจเซ€ เช•เซ‹เชˆ เชตเชพเชค เชฅเชถเซ‡ เชจเชนเซ€เช‚.

เชœเซ‹ เช•เซ‡, เช…เชฎเชพเชฐเชพ เช…เชจเซเชญเชต เชชเชฐเชฅเซ€ เช†เชชเชฃเซ‡ เชœเชพเชฃเซ€เช เช›เซ€เช เช•เซ‡ เช†เชงเซเชจเชฟเช• เช“เชชเชฐเซ‡เชŸเชฟเช‚เช— เชธเชฟเชธเซเชŸเชฎ เชเช•เชธเชพเชฅเซ‡ เช‡เชšเซเช›เชฟเชค เชนเซ‹เชฏ เชคเซ‡เชŸเชฒเซ€ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเช“ เชเช•เซเชเชฟเช•เซเชฏเซเชŸ เช•เชฐเซ€ เชถเช•เซ‡ เช›เซ‡. เช† เช เชนเช•เซ€เช•เชคเชจเซ‡ เช•เชพเชฐเชฃเซ‡ เชถเช•เซเชฏ เช›เซ‡ เช•เซ‡ เชคเซ‡เช“ เชซเช•เซเชค เช•เชพเช—เชณ เชชเชฐเชจเซ€ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเช“ เชฎเชพเชŸเซ‡ เช˜เชฃเซ€ เชฌเชงเซ€ เชฎเซ‡เชฎเชฐเซ€ เชซเชพเชณเชตเซ‡ เช›เซ‡, เชชเชฐเช‚เชคเซ เชตเชพเชธเซเชคเชตเชฎเชพเช‚ เชคเซ‡เช“ เชฎเซเช–เซเชฏ เชญเซŒเชคเชฟเช• เชฎเซ‡เชฎเชฐเซ€เชฎเชพเช‚ เชซเช•เซเชค เชคเซ‡ เชœ เชญเชพเช— เชฒเซ‹เชก เช•เชฐเซ‡ เช›เซ‡ เชœเซ‡เชจเซ€ เช…เชนเซ€เช‚ เช…เชจเซ‡ เชนเชตเซ‡ เชฎเชพเช‚เช— เช›เซ‡. เชคเซ‡เชฅเซ€, เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เชธเชพเชฅเซ‡ เชธเช‚เช•เชณเชพเชฏเซ‡เชฒ เชฎเซ‡เชฎเชฐเซ€เชจเซ‡ เชตเชฐเซเชšเซเชฏเซเช…เชฒ เช•เชนเซ‡เชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡.

iOS เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเซเชธเชฎเชพเช‚ เช•เซ€-เชตเซ‡เชฒเซเชฏเซ เชกเซ‡เชŸเชพเชฌเซ‡เช LMDB เชจเซ€ เชคเซ‡เชœเชธเซเชตเซ€เชคเชพ เช…เชจเซ‡ เช—เชฐเซ€เชฌเซ€

เช“เชชเชฐเซ‡เชŸเชฟเช‚เช— เชธเชฟเชธเซเชŸเชฎ เชตเชฐเซเชšเซเชฏเซเช…เชฒ เช…เชจเซ‡ เชญเซŒเชคเชฟเช• เชฎเซ‡เชฎเชฐเซ€เชจเซ‡ เชšเซ‹เช•เซเช•เชธ เช•เชฆเชจเชพ เชชเซƒเชทเซเช เซ‹เชฎเชพเช‚ เช—เซ‹เช เชตเซ‡ เช›เซ‡. เชœเชฒเชฆเซ€ เชตเชฐเซเชšเซเชฏเซเช…เชฒ เชฎเซ‡เชฎเชฐเซ€เชจเชพ เชšเซ‹เช•เซเช•เชธ เชชเซƒเชทเซเช เชจเซ€ เชฎเชพเช‚เช— เช›เซ‡, เช‘เชชเชฐเซ‡เชŸเชฟเช‚เช— เชธเชฟเชธเซเชŸเชฎ เชคเซ‡เชจเซ‡ เชญเซŒเชคเชฟเช• เชฎเซ‡เชฎเชฐเซ€เชฎเชพเช‚ เชฒเซ‹เชก เช•เชฐเซ‡ เช›เซ‡ เช…เชจเซ‡ เชคเซ‡เชฎเชจเซ‡ เชตเชฟเชถเชฟเชทเซเชŸ เช•เซ‹เชทเซเชŸเช•เชฎเชพเช‚ เชฎเซ‡เชณ เช–เชพเชฏ เช›เซ‡. เชœเซ‹ เชคเซเชฏเชพเช‚ เช•เซ‹เชˆ เชฎเชซเชค เชธเซเชฒเซ‹เชŸเซเชธ เชจ เชนเซ‹เชฏ, เชคเซ‹ เชชเชนเซ‡เชฒเชพ เชฒเซ‹เชก เช•เชฐเซ‡เชฒเชพ เชชเซƒเชทเซเช เซ‹เชฎเชพเช‚เชฅเซ€ เชเช• เชกเชฟเชธเซเช• เชชเชฐ เช•เซ‰เชชเชฟ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡, เช…เชจเซ‡ เชฎเชพเช‚เช—เชฎเชพเช‚เชจเซเช‚ เชเช• เชคเซ‡เชจเซเช‚ เชธเซเชฅเชพเชจ เชฒเซ‡ เช›เซ‡. เช† เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ, เชœเซ‡เชจเชพ เชชเชฐ เช†เชชเชฃเซ‡ เชŸเซ‚เช‚เช• เชธเชฎเชฏเชฎเชพเช‚ เชชเชพเช›เชพ เช†เชตเซ€เชถเซเช‚, เชคเซ‡เชจเซ‡ เชธเซเชตเซ‡เชชเชฟเช‚เช— เช•เชนเซ‡เชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡. เชจเซ€เชšเซ‡เชจเซ€ เช†เช•เซƒเชคเชฟ เชตเชฐเซเชฃเชตเซ‡เชฒ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเชจเซ‡ เชธเชฎเชœเชพเชตเซ‡ เช›เซ‡. เชคเซ‡เชจเชพ เชชเชฐ, เชธเชฐเชจเชพเชฎเชพเช‚ 0 เชธเชพเชฅเซ‡เชจเซเช‚ เชชเซƒเชทเซเช  A เชฒเซ‹เชก เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซเช‚ เชนเชคเซเช‚ เช…เชจเซ‡ เชธเชฐเชจเชพเชฎเชพเช‚ 4 เชธเชพเชฅเซ‡ เชฎเซเช–เซเชฏ เชฎเซ‡เชฎเชฐเซ€ เชชเซƒเชทเซเช  เชชเชฐ เชฎเซ‚เช•เชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซเช‚ เชนเชคเซเช‚. เช† เชนเช•เซ€เช•เชค เชธเซ‡เชฒ เชจเช‚เชฌเชฐ 0 เชฎเชพเช‚ เชชเชคเซเชฐเชตเซเชฏเชตเชนเชพเชฐ เช•เซ‹เชทเซเชŸเช•เชฎเชพเช‚ เชชเซเชฐเชคเชฟเชฌเชฟเช‚เชฌเชฟเชค เชฅเชˆ เชนเชคเซ€.

iOS เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเซเชธเชฎเชพเช‚ เช•เซ€-เชตเซ‡เชฒเซเชฏเซ เชกเซ‡เชŸเชพเชฌเซ‡เช LMDB เชจเซ€ เชคเซ‡เชœเชธเซเชตเซ€เชคเชพ เช…เชจเซ‡ เช—เชฐเซ€เชฌเซ€

เชฎเซ‡เชฎเชฐเซ€เชฎเชพเช‚ เชฎเซ‡เชช เช•เชฐเซ‡เชฒเซ€ เชซเชพเช‡เชฒเซ‹ เชธเชพเชฅเซ‡ เชตเชพเชฐเซเชคเชพ เชฌเชฐเชพเชฌเชฐ เช เชœ เช›เซ‡. เชคเชพเชฐเซเช•เชฟเช• เชฐเซ€เชคเซ‡, เชคเซ‡เช“ เชฎเชพเชจเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡ เช•เซ‡ เชธเชคเชค เช…เชจเซ‡ เชธเช‚เชชเซ‚เชฐเซเชฃ เชฐเซ€เชคเซ‡ เชตเชฐเซเชšเซเชฏเซเช…เชฒ เชธเชฐเชจเชพเชฎเชพเช‚เชจเซ€ เชœเช—เซเชฏเชพเชฎเชพเช‚ เชธเซเชฅเชฟเชค เช›เซ‡. เชœเซ‹ เช•เซ‡, เชคเซ‡เช“ เชชเซƒเชทเซเช  เชฆเซเชตเชพเชฐเชพ เช…เชจเซ‡ เชฎเชพเชคเซเชฐ เชตเชฟเชจเช‚เชคเซ€ เชชเชฐ เชญเซŒเชคเชฟเช• เชฎเซ‡เชฎเชฐเซ€ เชชเซƒเชทเซเช  เชฆเชพเช–เชฒ เช•เชฐเซ‡ เช›เซ‡. เช†เชตเชพ เชชเซƒเชทเซเช เซ‹เชจเชพ เชซเซ‡เชฐเชซเชพเชฐเชจเซ‡ เชกเชฟเชธเซเช• เชชเชฐเชจเซ€ เชซเชพเช‡เชฒ เชธเชพเชฅเซ‡ เชธเชฟเช‚เช•เซเชฐเชจเชพเช‡เช เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡. เช† เชฐเซ€เชคเซ‡, เชคเชฎเซ‡ เชซเช•เซเชค เชฎเซ‡เชฎเชฐเซ€เชฎเชพเช‚ เชฌเชพเช‡เชŸ เชธเชพเชฅเซ‡ เช•เชพเชฎ เช•เชฐเซ€เชจเซ‡ เชซเชพเช‡เชฒ I/O เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹ - เชฌเชงเชพ เชซเซ‡เชฐเชซเชพเชฐเซ‹ เช‘เชชเชฐเซ‡เชŸเชฟเช‚เช— เชธเชฟเชธเซเชŸเชฎ เช•เชฐเซเชจเชฒ เชฆเซเชตเชพเชฐเชพ เช‘เชŸเซ‹เชฎเซ…เชŸเชฟเช• เชฐเซ€เชคเซ‡ เชธเซเชฐเซ‹เชค เชซเชพเช‡เชฒเชฎเชพเช‚ เชธเซเชฅเชพเชจเชพเช‚เชคเชฐเชฟเชค เชฅเชถเซ‡.
'
เชจเซ€เชšเซ‡เชจเซ€ เช›เชฌเซ€ เชฆเชฐเซเชถเชพเชตเซ‡ เช›เซ‡ เช•เซ‡ เชตเชฟเชตเชฟเชง เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเช“เชฎเชพเช‚เชฅเซ€ เชกเซ‡เชŸเชพเชฌเซ‡เช เชธเชพเชฅเซ‡ เช•เชพเชฎ เช•เชฐเชคเซ€ เชตเช–เชคเซ‡ LMDB เชคเซ‡เชจเซ€ เชธเซเชฅเชฟเชคเชฟเชจเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชธเชฟเช‚เช•เซเชฐเชจเชพเช‡เช เช•เชฐเซ‡ เช›เซ‡. เชเช• เชœ เชซเชพเช‡เชฒเชฎเชพเช‚ เชตเชฟเชตเชฟเชง เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเช“เชจเซ€ เชตเชฐเซเชšเซเชฏเซเช…เชฒ เชฎเซ‡เชฎเชฐเซ€เชจเซ‡ เชฎเซ‡เชช เช•เชฐเซ€เชจเซ‡, เช…เชฎเซ‡ เชนเช•เซ€เช•เชคเชฎเชพเช‚ เช‘เชชเชฐเซ‡เชŸเชฟเช‚เช— เชธเชฟเชธเซเชŸเชฎเชจเซ‡ เชคเซ‡เชฎเชจเซ€ เชธเชฐเชจเชพเชฎเชพเช‚เชจเซ€ เชœเช—เซเชฏเชพเช“เชจเชพ เช…เชฎเซเช• เชฌเซเชฒเซ‹เช•เซเชธเชจเซ‡ เชเช•เชฌเซ€เชœเชพ เชธเชพเชฅเซ‡ เชธเช‚เช•เซเชฐเชฎเชฟเชค เชฐเซ€เชคเซ‡ เชธเชฟเช‚เช•เซเชฐเชจเชพเช‡เช เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชซเชฐเชœ เชชเชพเชกเซ€เช เช›เซ€เช, เชœเซเชฏเชพเช‚ LMDB เชฆเซ‡เช–เชพเชฏ เช›เซ‡.
'

iOS เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเซเชธเชฎเชพเช‚ เช•เซ€-เชตเซ‡เชฒเซเชฏเซ เชกเซ‡เชŸเชพเชฌเซ‡เช LMDB เชจเซ€ เชคเซ‡เชœเชธเซเชตเซ€เชคเชพ เช…เชจเซ‡ เช—เชฐเซ€เชฌเซ€

เชเช• เชฎเชนเชคเซเชตเชชเซ‚เชฐเซเชฃ เชธเซ‚เช•เซเชทเซเชฎเชคเชพ เช เช›เซ‡ เช•เซ‡ LMDB, เชกเชฟเชซเซ‰เชฒเซเชŸ เชฐเซ‚เชชเซ‡, เชฐเชพเช‡เชŸ เชธเชฟเชธเซเชŸเชฎ เช•เซ‰เชฒ เชฎเชฟเช•เซ‡เชจเชฟเชเชฎ เชฆเซเชตเชพเชฐเชพ เชกเซ‡เชŸเชพ เชซเชพเช‡เชฒเชฎเชพเช‚ เชซเซ‡เชฐเชซเชพเชฐ เช•เชฐเซ‡ เช›เซ‡, เช…เชจเซ‡ เชซเชพเช‡เชฒเชจเซ‡ เชซเช•เซเชค เชตเชพเช‚เชšเชตเชพ เชฎเชพเชŸเซ‡เชจเชพ เชฎเซ‹เชกเชฎเชพเช‚ เชชเซเชฐเชฆเชฐเซเชถเชฟเชค เช•เชฐเซ‡ เช›เซ‡. เช† เช…เชญเชฟเช—เชฎเชจเชพ เชฌเซ‡ เชฎเชนเชคเซเชตเชชเซ‚เชฐเซเชฃ เชชเชฐเชฟเชฃเชพเชฎเซ‹ เช›เซ‡.

เชชเซเชฐเชฅเชฎ เชชเชฐเชฟเชฃเชพเชฎ เชคเชฎเชพเชฎ เช“เชชเชฐเซ‡เชŸเชฟเช‚เช— เชธเชฟเชธเซเชŸเชฎเซ‹ เชฎเชพเชŸเซ‡ เชธเชพเชฎเชพเชจเซเชฏ เช›เซ‡. เชคเซ‡เชจเซ‹ เชธเชพเชฐ เช เช›เซ‡ เช•เซ‡ เช–เซ‹เชŸเชพ เช•เซ‹เชก เชฆเซเชตเชพเชฐเชพ เชกเซ‡เชŸเชพเชฌเซ‡เชเชจเซ‡ เช…เชœเชพเชฃเชคเชพเช‚ เชจเซเช•เชธเชพเชจ เชธเชพเชฎเซ‡ เชฐเช•เซเชทเชฃ เช‰เชฎเซ‡เชฐเชตเซเช‚. เชœเซ‡เชฎ เชคเชฎเซ‡ เชœเชพเชฃเซ‹ เช›เซ‹, เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเชจเซ€ เชเช•เซเชเชฟเช•เซเชฏเซเชŸเซ‡เชฌเชฒ เชธเซ‚เชšเชจเชพเช“ เชคเซ‡เชจเชพ เชธเชฐเชจเชพเชฎเชพเช‚เชจเซ€ เชœเช—เซเชฏเชพเชฎเชพเช‚ เช—เชฎเซ‡ เชคเซเชฏเชพเช‚เชฅเซ€ เชกเซ‡เชŸเชพ เชเช•เซเชธเซ‡เชธ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชฎเชซเชค เช›เซ‡. เชคเซ‡ เชœ เชธเชฎเชฏเซ‡, เชœเซ‡เชฎ เช†เชชเชฃเซ‡ เชนเชฎเชฃเชพเช‚ เชœ เชฏเชพเชฆ เช•เชฐเซเชฏเซเช‚ เช›เซ‡, เชซเชพเช‡เชฒเชจเซ‡ เชตเชพเช‚เชšเชตเชพ-เชฒเซ‡เช–เชตเชพเชจเซ€ เชธเซเชฅเชฟเชคเชฟเชฎเชพเช‚ เชชเซเชฐเชฆเชฐเซเชถเชฟเชค เช•เชฐเชตเชพเชจเซ‹ เช…เชฐเซเชฅ เช เช›เซ‡ เช•เซ‡ เช•เซ‹เชˆเชชเชฃ เชธเซ‚เชšเชจเชพ เชคเซ‡เชจเซ‡ เชธเซเชงเชพเชฐเซ€ เชถเช•เซ‡ เช›เซ‡. เชœเซ‹ เชคเซ‡เชฃเซ€ เชญเซ‚เชฒเชฅเซ€ เช† เช•เชฐเซ‡ เช›เซ‡, เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เช…เชธเซเชคเชฟเชคเซเชตเชฎเชพเช‚ เชจ เชนเซ‹เชฏ เชคเซ‡เชตเชพ เช…เชจเซเช•เซเชฐเชฎเชฃเชฟเช•เชพ เชชเชฐ เชตเชพเชธเซเชคเชตเชฎเชพเช‚ เชเชฐเซ‡ เช˜เชŸเช• เชชเชฐ เชซเชฐเซ€เชฅเซ€ เชฒเช–เชตเชพเชจเซ‹ เชชเซเชฐเชฏเชพเชธ เช•เชฐเซ‡ เช›เซ‡, เชคเซ‹ เชคเซ‡ เช†เช•เชธเซเชฎเชฟเช• เชฐเซ€เชคเซ‡ เช† เชธเชฐเชจเชพเชฎเชพเช‚ เชชเชฐ เชฎเซ‡เชช เช•เชฐเซ‡เชฒเซ€ เชซเชพเช‡เชฒเชจเซ‡ เชฌเชฆเชฒเซ€ เชถเช•เซ‡ เช›เซ‡, เชœเซ‡ เชกเซ‡เชŸเชพเชฌเซ‡เชเชจเชพ เชญเซเชฐเชทเซเชŸเชพเชšเชพเชฐ เชคเชฐเชซ เชฆเซ‹เชฐเซ€ เชœเชถเซ‡. เชœเซ‹ เชซเชพเช‡เชฒ เชซเช•เซเชค-เชฐเซ€เชก-เช“เชจเซเชฒเซ€ เชฎเซ‹เชกเชฎเชพเช‚ เชชเซเชฐเชฆเชฐเซเชถเชฟเชค เชฅเชพเชฏ เช›เซ‡, เชคเซ‹ เช…เชจเซเชฐเซ‚เชช เชธเชฐเชจเชพเชฎเชพเช‚เชจเซ€ เชœเช—เซเชฏเชพ เชฌเชฆเชฒเชตเชพเชจเซ‹ เชชเซเชฐเชฏเชพเชธ เชธเชฟเช—เซเชจเชฒ เชธเชพเชฅเซ‡ เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎเชจเซ‡ เช•เชŸเซ‹เช•เชŸเซ€ เชธเชฎเชพเชชเซเชคเชฟ เชคเชฐเชซ เชฆเซ‹เชฐเซ€ เชœเชถเซ‡. SIGSEGV, เช…เชจเซ‡ เชซเชพเช‡เชฒ เช…เช•เชฌเช‚เชง เชฐเชนเซ‡เชถเซ‡.

เชฌเซ€เชœเซเช‚ เชชเชฐเชฟเชฃเชพเชฎ เชชเชนเซ‡เชฒเซ‡เชฅเซ€ เชœ iOS เชฎเชพเชŸเซ‡ เชตเชฟเชถเชฟเชทเซเชŸ เช›เซ‡. เชจ เชคเซ‹ เชฒเซ‡เช–เช• เช•เซ‡ เช…เชจเซเชฏ เช•เซ‹เชˆ เชธเซเชคเซเชฐเซ‹เชค เชคเซ‡เชจเซ‹ เชธเซเชชเชทเซเชŸ เช‰เชฒเซเชฒเซ‡เช– เช•เชฐเซ‡ เช›เซ‡, เชชเชฐเช‚เชคเซ เชคเซ‡เชจเชพ เชตเชฟเชจเชพ LMDB เช† เชฎเซ‹เชฌเชพเชˆเชฒ เช“เชชเชฐเซ‡เชŸเชฟเช‚เช— เชธเชฟเชธเซเชŸเชฎ เชชเชฐ เชšเชพเชฒเชตเชพ เชฎเชพเชŸเซ‡ เชฏเซ‹เช—เซเชฏ เชฐเชนเซ‡เชถเซ‡ เชจเชนเซ€เช‚. เช†เช—เชณเชจเซ‹ เชตเชฟเชญเชพเช— เชคเซ‡เชจเชพ เชตเชฟเชšเชพเชฐเชฃเชพ เชฎเชพเชŸเซ‡ เชธเชฎเชฐเซเชชเชฟเชค เช›เซ‡.

iOS เชฎเชพเช‚ เชฎเซ‡เชฎเชฐเซ€-เชฎเซ‡เชช เช•เชฐเซ‡เชฒเซ€ เชซเชพเช‡เชฒเซ‹เชจเซ€ เชตเชฟเชถเชฟเชทเซเชŸเชคเชพเช“

WWDC เช–เชพเชคเซ‡ 2018 เชฎเชพเช‚ เชเช• เช…เชฆเซเชญเซเชค เช…เชนเซ‡เชตเชพเชฒ เชนเชคเซ‹ "iOS เชฎเซ‡เชฎเชฐเซ€ เชกเซ€เชช เชกเชพเช‡เชต". เชคเซ‡ เช…เชฎเชจเซ‡ เช•เชนเซ‡ เช›เซ‡ เช•เซ‡ iOS เชฎเชพเช‚, เชญเซŒเชคเชฟเช• เชฎเซ‡เชฎเชฐเซ€เชฎเชพเช‚ เชธเซเชฅเชฟเชค เชคเชฎเชพเชฎ เชชเซƒเชทเซเช เซ‹ 3 เชชเซเชฐเช•เชพเชฐเซ‹เชฎเชพเช‚เชฅเซ€ เชเช• เช›เซ‡: เช—เช‚เชฆเชพ, เชธเช‚เช•เซเชšเชฟเชค เช…เชจเซ‡ เชธเซเชตเชšเซเช›.

iOS เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเซเชธเชฎเชพเช‚ เช•เซ€-เชตเซ‡เชฒเซเชฏเซ เชกเซ‡เชŸเชพเชฌเซ‡เช LMDB เชจเซ€ เชคเซ‡เชœเชธเซเชตเซ€เชคเชพ เช…เชจเซ‡ เช—เชฐเซ€เชฌเซ€

เชธเซเชตเชšเซเช› เชฎเซ‡เชฎเชฐเซ€ เช เชชเซƒเชทเซเช เซ‹เชจเซ‹ เชธเช‚เช—เซเชฐเชน เช›เซ‡ เชœเซ‡ เชญเซŒเชคเชฟเช• เชฎเซ‡เชฎเชฐเซ€เชฎเชพเช‚เชฅเซ€ เชชเซ€เชกเชพเชฐเชนเชฟเชค เชฐเซ€เชคเซ‡ เช…เชจเชฒเซ‹เชก เช•เชฐเซ€ เชถเช•เชพเชฏ เช›เซ‡. เชคเซ‡เช“ เชœเซ‡ เชกเซ‡เชŸเชพ เชงเชฐเชพเชตเซ‡ เช›เซ‡ เชคเซ‡ เชคเซ‡เชจเชพ เชฎเซ‚เชณ เชธเซเชคเซเชฐเซ‹เชคเซ‹เชฎเชพเช‚เชฅเซ€ เชœเชฐเซ‚เชฐเชฟเชฏเชพเชค เชฎเซเชœเชฌ เชซเชฐเซ€เชฅเซ€ เชฒเซ‹เชก เช•เชฐเซ€ เชถเช•เชพเชฏ เช›เซ‡. เชซเช•เซเชค เชตเชพเช‚เชšเชตเชพ เชฎเชพเชŸเซ‡เชจเซ€ เชฎเซ‡เชฎเชฐเซ€-เชฎเซ‡เชช เช•เชฐเซ‡เชฒเซ€ เชซเชพเช‡เชฒเซ‹ เช† เชถเซเชฐเซ‡เชฃเซ€เชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡. iOS เช•เซ‹เชˆเชชเชฃ เชธเชฎเชฏเซ‡ เชฎเซ‡เชฎเชฐเซ€เชฎเชพเช‚เชฅเซ€ เชซเชพเช‡เชฒเชฎเชพเช‚ เชฎเซ‡เชช เช•เชฐเซ‡เชฒเชพ เชชเซƒเชทเซเช เซ‹เชจเซ‡ เช…เชจเชฒเซ‹เชก เช•เชฐเชตเชพเชฎเชพเช‚ เชกเชฐเชคเซเช‚ เชจเชฅเซ€, เช•เชพเชฐเชฃ เช•เซ‡ เชคเซ‡เช“ เชกเชฟเชธเซเช• เชชเชฐเชจเซ€ เชซเชพเช‡เชฒ เชธเชพเชฅเซ‡ เชธเชฟเช‚เช•เซเชฐเชจเชพเช‡เช เชฅเชตเชพเชจเซ€ เช–เชพเชคเชฐเซ€ เช†เชชเซ‡ เช›เซ‡.
'
เชฌเชงเชพ เชธเช‚เชถเซ‹เชงเชฟเชค เชชเซƒเชทเซเช เซ‹ เช—เช‚เชฆเชพ เชฎเซ‡เชฎเชฐเซ€เชฎเชพเช‚ เชธเชฎเชพเชชเซเชค เชฅเชพเชฏ เช›เซ‡, เชชเช›เซ€ เชญเชฒเซ‡ เชคเซ‡ เชฎเซ‚เชณ เชฐเซ‚เชชเซ‡ เช•เซเชฏเชพเช‚ เชธเซเชฅเชฟเชค เชนเซ‹เชฏ. เช–เชพเชธ เช•เชฐเซ€เชจเซ‡, เชคเซ‡เชฎเชจเซ€ เชธเชพเชฅเซ‡ เชธเช‚เช•เชณเชพเชฏเซ‡เชฒ เชตเชฐเซเชšเซเชฏเซเช…เชฒ เชฎเซ‡เชฎเชฐเซ€เชฎเชพเช‚ เชฒเช–เซ€เชจเซ‡ เชธเช‚เชถเซ‹เชงเชฟเชค เชฎเซ‡เชฎเชฐเซ€-เชฎเซ‡เชช เช•เชฐเซ‡เชฒเซ€ เชซเชพเช‡เชฒเซ‹เชจเซ‡ เช† เชฐเซ€เชคเซ‡ เชตเชฐเซเช—เซ€เช•เซƒเชค เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡. เชงเซเชตเชœ เชธเชพเชฅเซ‡ LMDB เช–เซ‹เชฒเซ€ เชฐเชนเซเชฏเซเช‚ เช›เซ‡ MDB_WRITEMAP, เชคเซ‡เชฎเชพเช‚ เชซเซ‡เชฐเชซเชพเชฐ เช•เชฐเซเชฏเชพ เชชเช›เซ€, เชคเชฎเซ‡ เช†เชจเซ‡ เชตเซเชฏเช•เซเชคเชฟเช—เชค เชฐเซ€เชคเซ‡ เชšเช•เชพเชธเซ€ เชถเช•เซ‹ เช›เซ‹

เชœเชฒเชฆเซ€ เช•เซ‹เชˆ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เช–เซ‚เชฌ เชœ เชญเซŒเชคเชฟเช• เชฎเซ‡เชฎเชฐเซ€ เชฒเซ‡เชตเชพเชจเซเช‚ เชถเชฐเซ‚ เช•เชฐเซ‡ เช›เซ‡, iOS เชคเซ‡เชจเซ‡ เช—เช‚เชฆเชพ เชชเซƒเชทเซเช  เช•เชฎเซเชชเซเชฐเซ‡เชถเชจเชจเซ‡ เช†เชงเชฟเชจ เช•เชฐเซ‡ เช›เซ‡. เช—เช‚เชฆเชพ เช…เชจเซ‡ เชธเช‚เช•เซเชšเชฟเชค เชชเซƒเชทเซเช เซ‹ เชฆเซเชตเชพเชฐเชพ เช•เชฌเชœเซ‡ เช•เชฐเชพเชฏเซ‡เชฒ เช•เซเชฒ เชฎเซ‡เชฎเชฐเซ€ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเชจเซ€ เช•เชนเซ‡เชตเชพเชคเซ€ เชฎเซ‡เชฎเชฐเซ€ เชซเซ‚เชŸเชชเซเชฐเชฟเชจเซเชŸ เชฌเชจเชพเชตเซ‡ เช›เซ‡. เชเช•เชตเชพเชฐ เชคเซ‡ เชšเซ‹เช•เซเช•เชธ เชฅเซเชฐเซ‡เชถเซ‹เชฒเซเชก เชฎเซ‚เชฒเซเชฏ เชธเซเชงเซ€ เชชเชนเซ‹เช‚เชšเซ€ เชœเชพเชฏ, OOM เช•เชฟเชฒเชฐ เชธเชฟเชธเซเชŸเชฎ เชกเชฟเชฎเชจ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เชชเช›เซ€ เช†เชตเซ‡ เช›เซ‡ เช…เชจเซ‡ เชคเซ‡เชจเซ‡ เชฌเชณเชœเชฌเชฐเซ€เชฅเซ€ เชธเชฎเชพเชชเซเชค เช•เชฐเซ‡ เช›เซ‡. เชกเซ‡เชธเซเช•เชŸเซ‹เชช เช“เชชเชฐเซ‡เชŸเชฟเช‚เช— เชธเชฟเชธเซเชŸเชฎเซเชธเชจเซ€ เชธเชฐเช–เชพเชฎเชฃเซ€เชฎเชพเช‚ iOSเชจเซ€ เช† เช–เชพเชธเชฟเชฏเชค เช›เซ‡. เชคเซ‡เชจเชพเชฅเซ€ เชตเชฟเชชเชฐเชฟเชค, เชซเชฟเชเชฟเช•เชฒ เชฎเซ‡เชฎเชฐเซ€เชฎเชพเช‚เชฅเซ€ เชกเชฟเชธเซเช•เชฎเชพเช‚ เชชเซƒเชทเซเช เซ‹เชจเซ‡ เชธเซเชตเซ‡เชช เช•เชฐเซ€เชจเซ‡ เชฎเซ‡เชฎเชฐเซ€ เชซเซ‚เชŸเชชเซเชฐเชฟเชจเซเชŸเชจเซ‡ เช˜เชŸเชพเชกเชตเซเช‚ iOS เชฎเชพเช‚ เชชเซเชฐเชฆเชพเชจ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเชคเซเช‚ เชจเชฅเซ€. เช•เชพเชฐเชฃเซ‹ เชซเช•เซเชค เช…เชจเซเชฎเชพเชจ เช•เชฐเซ€ เชถเช•เชพเชฏ เช›เซ‡. เช•เชฆเชพเชš เชธเช˜เชจ เชฐเซ€เชคเซ‡ เชชเซƒเชทเซเช เซ‹เชจเซ‡ เชกเชฟเชธเซเช• เชชเชฐ เช…เชจเซ‡ เชชเชพเช›เชณ เช–เชธเซ‡เชกเชตเชพเชจเซ€ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เชฎเซ‹เชฌเชพเช‡เชฒ เช‰เชชเช•เชฐเชฃเซ‹ เชฎเชพเชŸเซ‡ เช–เซ‚เชฌ เชŠเชฐเซเชœเชพ-เชตเชชเชฐเชพเชถ เช•เชฐเชจเชพเชฐเซ€ เช›เซ‡, เช…เชฅเชตเชพ iOS เชเชธเชเชธเชกเซ€ เชกเซเชฐเชพเช‡เชตเซเชธ เชชเชฐ เช•เซ‹เชทเซ‹เชจเซ‡ เชซเชฐเซ€เชฅเซ€ เชฒเช–เชตเชพเชจเชพ เชธเช‚เชธเชพเชงเชจเชจเซ‡ เชฌเชšเชพเชตเซ‡ เช›เซ‡, เช…เชฅเชตเชพ เช•เชฆเชพเชš เชกเชฟเชเชพเช‡เชจเชฐเซเชธ เชธเชฟเชธเซเชŸเชฎเชจเชพ เชเช•เช‚เชฆเชฐ เชชเซเชฐเชฆเชฐเซเชถเชจเชฅเซ€ เชธเช‚เชคเซเชทเซเชŸ เชจ เชนเชคเชพ, เชœเซเชฏเชพเช‚ เชฌเชงเซเช‚ เชœ เช›เซ‡. เชธเชคเชค เช…เชฆเชฒเชพเชฌเชฆเชฒเซ€. เชญเชฒเซ‡ เชคเซ‡ เชฌเชจเซ€ เชถเช•เซ‡, เชนเช•เซ€เช•เชค เช เชนเช•เซ€เช•เชค เชฐเชนเซ‡ เช›เซ‡.

เชธเชพเชฐเชพ เชธเชฎเชพเชšเชพเชฐ, เชชเชนเซ‡เชฒเชพเชฅเซ€ เชœ เช‰เชฒเซเชฒเซ‡เช–เชฟเชค เช›เซ‡, เช เช›เซ‡ เช•เซ‡ LMDB เชฎเซ‚เชณเชญเซ‚เชค เชฐเซ€เชคเซ‡ เชซเชพเช‡เชฒเซ‹เชจเซ‡ เช…เชชเชกเซ‡เชŸ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ mmap เชฎเชฟเช•เซ‡เชจเชฟเชเชฎเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชคเซเช‚ เชจเชฅเซ€. เช†เชจเซ‹ เช…เชฐเซเชฅ เช เช›เซ‡ เช•เซ‡ เชชเซเชฐเชฆเชฐเซเชถเชฟเชค เชกเซ‡เชŸเชพเชจเซ‡ iOS เชฆเซเชตเชพเชฐเชพ เชธเซเชตเชšเซเช› เชฎเซ‡เชฎเชฐเซ€ เชคเชฐเซ€เช•เซ‡ เชตเชฐเซเช—เซ€เช•เซƒเชค เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡ เช…เชจเซ‡ เชคเซ‡ เชฎเซ‡เชฎเชฐเซ€ เชซเซ‚เชŸเชชเซเชฐเชฟเชจเซเชŸเชฎเชพเช‚ เชฏเซ‹เช—เชฆเชพเชจ เช†เชชเชคเซเช‚ เชจเชฅเซ€. เชคเชฎเซ‡ VM เชŸเซเชฐเซ‡เช•เชฐ เชจเชพเชฎเชจเชพ Xcode เชธเชพเชงเชจเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เช†เชจเซ‡ เชšเช•เชพเชธเซ€ เชถเช•เซ‹ เช›เซ‹. เชจเซ€เชšเซ‡เชจเซ‹ เชธเซเช•เซเชฐเซ€เชจเชถเซ‹เชŸ เช“เชชเชฐเซ‡เชถเชจ เชฆเชฐเชฎเชฟเชฏเชพเชจ เช•เซเชฒเชพเช‰เชก เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเชจเซ€ iOS เชตเชฐเซเชšเซเชฏเซเช…เชฒ เชฎเซ‡เชฎเชฐเซ€เชจเซ€ เชธเซเชฅเชฟเชคเชฟ เชฌเชคเชพเชตเซ‡ เช›เซ‡. เชถเชฐเซ‚เช†เชคเชฎเชพเช‚, เชคเซ‡เชฎเชพเช‚ 2 LMDB เชฆเชพเช–เชฒเชพ เชถเชฐเซ‚ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเชพ เชนเชคเชพ. เชชเซเชฐเชฅเชฎเชจเซ‡ เชคเซ‡เชจเซ€ เชซเชพเช‡เชฒ เชตเชฐเซเชšเซเชฏเซเช…เชฒ เชฎเซ‡เชฎเชฐเซ€เชจเชพ 1GiB เชชเชฐ เชชเซเชฐเชฆเชฐเซเชถเชฟเชค เช•เชฐเชตเชพเชจเซ€ เชฎเช‚เชœเซ‚เชฐเซ€ เช†เชชเชตเชพเชฎเชพเช‚ เช†เชตเซ€ เชนเชคเซ€, เชฌเซ€เชœเซ€ - 512MiB. เช เชนเช•เซ€เช•เชค เชนเซ‹เชตเชพ เช›เชคเชพเช‚ เช•เซ‡ เชฌเช‚เชจเซ‡ เชธเซเชŸเซ‹เชฐเซ‡เชœ เชจเชฟเชตเชพเชธเซ€ เชฎเซ‡เชฎเชฐเซ€เชจเซ€ เชšเซ‹เช•เซเช•เชธ เชฐเช•เชฎ เชงเชฐเชพเชตเซ‡ เช›เซ‡, เชคเซ‡เชฎเชพเช‚เชฅเซ€ เช•เซ‹เชˆ เชชเชฃ เช—เช‚เชฆเชพ เช•เชฆเชจเซเช‚ เชฏเซ‹เช—เชฆเชพเชจ เช†เชชเชคเซเช‚ เชจเชฅเซ€.

iOS เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเซเชธเชฎเชพเช‚ เช•เซ€-เชตเซ‡เชฒเซเชฏเซ เชกเซ‡เชŸเชพเชฌเซ‡เช LMDB เชจเซ€ เชคเซ‡เชœเชธเซเชตเซ€เชคเชพ เช…เชจเซ‡ เช—เชฐเซ€เชฌเซ€

เช…เชจเซ‡ เชนเชตเซ‡ เช–เชฐเชพเชฌ เชธเชฎเชพเชšเชพเชฐเชจเซ‹ เชธเชฎเชฏ เช›เซ‡. 64-เชฌเซ€เชŸ เชกเซ‡เชธเซเช•เชŸเซ‹เชช เช“เชชเชฐเซ‡เชŸเชฟเช‚เช— เชธเชฟเชธเซเชŸเชฎเชฎเชพเช‚ เชธเซเชตเซ‡เชช เชฎเชฟเช•เซ‡เชจเชฟเชเชฎ เชฎเชพเชŸเซ‡ เช†เชญเชพเชฐ, เชฆเชฐเซ‡เช• เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เชคเซ‡เชจเชพ เชธเช‚เชญเชตเชฟเชค เชธเซเชตเซ‡เชช เชฎเชพเชŸเซ‡ เชฎเชซเชค เชนเชพเชฐเซเชก เชกเชฟเชธเซเช• เชœเช—เซเชฏเชพ เชชเชฐเชตเชพเชจเช—เซ€ เช†เชชเซ‡ เช›เซ‡ เชคเซ‡เชŸเชฒเซ€ เชตเชฐเซเชšเซเชฏเซเช…เชฒ เชเชกเซเชฐเซ‡เชธ เชธเซเชชเซ‡เชธ เชฐเซ‹เช•เซ€ เชถเช•เซ‡ เช›เซ‡. iOS เชฎเชพเช‚ เช•เชฎเซเชชเซเชฐเซ‡เชถเชจ เชธเชพเชฅเซ‡ เชธเซเชตเซ‡เชชเชจเซ‡ เชฌเชฆเชฒเชตเชพเชฅเซ€ เชธเซˆเชฆเซเชงเชพเช‚เชคเชฟเช• เชฎเชนเชคเซเชคเชฎ เช˜เชŸเชพเชกเซ‹ เชฅเชพเชฏ เช›เซ‡. เชนเชตเซ‡ เชคเชฎเชพเชฎ เชœเซ€เชตเช‚เชค เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเช“ เชฎเซเช–เซเชฏ (เชฐเซ‡เชฎ เชตเชพเช‚เชšเซ‹) เชฎเซ‡เชฎเชฐเซ€เชฎเชพเช‚ เชซเชฟเชŸ เชฅเชตเซ€ เชœเซ‹เชˆเช, เช…เชจเซ‡ เชคเซ‡ เชฌเชงเซ€ เชœเซ‡ เชฌเช‚เชงเชฌเซ‡เชธเชคเซ€ เชจเชฅเซ€ เชคเซ‡เชจเซ‡ เชธเชฎเชพเชชเซเชค เช•เชฐเชตเชพเชจเซ€ เชซเชฐเชœ เชชเชพเชกเชตเซ€ เชœเซ‹เชˆเช. เช† เช‰เชชเชฐเซ‹เช•เซเชค เชฎเซเชœเชฌ เชœเชฃเชพเชตเซเชฏเซเช‚ เช›เซ‡ เช…เชนเซ‡เชตเชพเชฒ, เช…เชจเซ‡ เชฎเชพเช‚ เชธเชคเซเชคเชพเชตเชพเชฐ เชฆเชธเซเชคเชพเชตเซ‡เชœเซ€เช•เชฐเชฃ. เชชเชฐเชฟเชฃเชพเชฎเซ‡, iOS mmap เชฆเซเชตเชพเชฐเชพ เชซเชพเชณเชตเชฃเซ€ เชฎเชพเชŸเซ‡ เช‰เชชเชฒเชฌเซเชง เชฎเซ‡เชฎเชฐเซ€เชจเซ€ เชฎเชพเชคเซเชฐเชพเชจเซ‡ เช—เช‚เชญเซ€เชฐเชชเชฃเซ‡ เชฎเชฐเซเชฏเชพเชฆเชฟเชค เช•เชฐเซ‡ เช›เซ‡. เช…เชนเซ€เช‚ เช…เชนเซ€เช‚ เชคเชฎเซ‡ เช† เชธเชฟเชธเซเชŸเชฎ เช•เซ‹เชฒเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชตเชฟเชตเชฟเชง เช‰เชชเช•เชฐเชฃเซ‹ เชชเชฐ เชซเชพเชณเชตเซ€ เชถเช•เชพเชฏ เชคเซ‡เชตเซ€ เชฎเซ‡เชฎเชฐเซ€เชจเซ€ เชฎเชพเชคเซเชฐเชพเชจเซ€ เชชเซเชฐเชฏเซ‹เช—เชฎเซ‚เชฒเช• เชฎเชฐเซเชฏเชพเชฆเชพ เชœเซ‹เชˆ เชถเช•เซ‹ เช›เซ‹. เชธเซŒเชฅเซ€ เช†เชงเซเชจเชฟเช• เชธเซเชฎเชพเชฐเซเชŸเชซเซ‹เชจ เชฎเซ‹เชกเชฒเซเชธ เชชเชฐ, iOS 2 เช—เซ€เช—เชพเชฌเชพเช‡เชŸเซเชธ เชฆเซเชตเชพเชฐเชพ เช‰เชฆเชพเชฐ เชฌเชจเซเชฏเซเช‚ เช›เซ‡, เช…เชจเซ‡ เช†เชˆเชชเซ‡เชกเชจเชพ เชŸเซ‹เชšเชจเชพ เชธเช‚เชธเซเช•เชฐเชฃเซ‹ เชชเชฐ - 4 เชฆเซเชตเชพเชฐเชพ. เชตเซเชฏเชตเชนเชพเชฐเชฎเชพเช‚, เช…เชฒเชฌเชคเซเชค, เชคเชฎเชพเชฐเซ‡ เชธเซŒเชฅเซ€ เชจเซ€เชšเชพ เชธเชชเซ‹เชฐเซเชŸเซ‡เชก เชกเชฟเชตเชพเช‡เชธ เชฎเซ‹เชกเชฒเซเชธ เชชเชฐ เชงเซเชฏเชพเชจ เช•เซ‡เชจเซเชฆเซเชฐเชฟเชค เช•เชฐเชตเซเช‚ เชชเชกเชถเซ‡, เชœเซเชฏเชพเช‚ เชฌเชงเซเช‚ เช–เซ‚เชฌ เชœ เช‰เชฆเชพเชธเซ€ เช›เซ‡. เช†เชจเชพเชฅเซ€ เชชเชฃ เช–เชฐเชพเชฌ, VM เชŸเซเชฐเซ‡เช•เชฐเชฎเชพเช‚ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเชจเซ€ เชฎเซ‡เชฎเชฐเซ€ เชธเซเชฅเชฟเชคเชฟ เชœเซ‹เชˆเชจเซ‡, เชคเชฎเซ‡ เชœเซ‹เชถเซ‹ เช•เซ‡ LMDB เช เชฎเซ‡เชฎเชฐเซ€-เชฎเซ‡เชชเซเชก เชนเซ‹เชตเชพเชจเซ‹ เชฆเชพเชตเซ‹ เช•เชฐเชคเซ€ เชเช•เชฎเชพเชคเซเชฐ เชตเซเชฏเช•เซเชคเชฟเชฅเซ€ เชฆเซ‚เชฐ เช›เซ‡. เชธเชฟเชธเซเชŸเชฎ เชเชฒเซ‹เช•เซ‡เชŸเชฐเซเชธ, เชฐเชฟเชธเซ‹เชฐเซเชธ เชซเชพเช‡เชฒเซ‹, เช‡เชฎเซ‡เชœ เชซเซเชฐเซ‡เชฎเชตเชฐเซเช• เช…เชจเซ‡ เช…เชจเซเชฏ เชจเชพเชจเชพ เชถเชฟเช•เชพเชฐเซ€เช“ เชฆเซเชตเชพเชฐเชพ เชธเชพเชฐเชพ เชนเชฟเชธเซเชธเชพเชจเซ‡ เช–เชพเชˆ เชœเชพเชฏ เช›เซ‡.

เช•เซเชฒเชพเช‰เชกเชฎเชพเช‚ เชชเซเชฐเชฏเซ‹เช—เซ‹เชจเชพ เชชเชฐเชฟเชฃเชพเชฎเซ‹เชจเชพ เช†เชงเชพเชฐเซ‡, เช…เชฎเซ‡ LMDB เชฆเซเชตเชพเชฐเชพ เชซเชพเชณเชตเซ‡เชฒ เชฎเซ‡เชฎเชฐเซ€ เชฎเชพเชŸเซ‡ เชจเซ€เชšเซ‡เชจเชพ เชธเชฎเชพเชงเชพเชจ เชฎเซ‚เชฒเซเชฏเซ‹ เชชเชฐ เช†เชตเซเชฏเชพ: 384-เชฌเซ€เชŸ เช‰เชชเช•เชฐเชฃเซ‹ เชฎเชพเชŸเซ‡ 32 เชฎเซ‡เช—เชพเชฌเชพเช‡เชŸเซเชธ เช…เชจเซ‡ 768-เชฌเซ€เชŸ เช‰เชชเช•เชฐเชฃเซ‹ เชฎเชพเชŸเซ‡ 64. เช† เชตเซ‹เชฒเซเชฏเซเชฎเชจเซ‹ เช‰เชชเชฏเซ‹เช— เชฅเชˆ เช—เชฏเชพ เชชเช›เซ€, เช•เซ‹เชˆเชชเชฃ เชซเซ‡เชฐเชซเชพเชฐ เช•เชฐเชตเชพเชจเซ€ เช•เชพเชฎเช—เซ€เชฐเซ€ เช•เซ‹เชก เชธเชพเชฅเซ‡ เชธเชฎเชพเชชเซเชค เชฅเชตเชพเชจเซเช‚ เชถเชฐเซ‚ เชฅเชพเชฏ เช›เซ‡ MDB_MAP_FULL. เช…เชฎเซ‡ เช…เชฎเชพเชฐเชพ เชฎเซ‹เชจเชฟเชŸเชฐเชฟเช‚เช—เชฎเชพเช‚ เช†เชตเซ€ เชญเซ‚เชฒเซ‹เชจเซเช‚ เช…เชตเชฒเซ‹เช•เชจ เช•เชฐเซ€เช เช›เซ€เช, เชชเชฐเช‚เชคเซ เชคเซ‡ เชเชŸเชฒเซ€ เชจเชพเชจเซ€ เช›เซ‡ เช•เซ‡ เช† เชคเชฌเช•เซเช•เซ‡ เชคเซ‡เชจเซ€ เช…เชตเช—เชฃเชจเชพ เช•เชฐเซ€ เชถเช•เชพเชฏ เช›เซ‡.

เชธเซเชŸเซ‹เชฐเซ‡เชœ เชฆเซเชตเชพเชฐเชพ เชตเชงเซ เชชเชกเชคเซ€ เชฎเซ‡เชฎเชฐเซ€ เชตเชชเชฐเชพเชถ เชฎเชพเชŸเซ‡เชจเซเช‚ เชเช• เช…เชธเซเชชเชทเซเชŸ เช•เชพเชฐเชฃ เชฒเชพเช‚เชฌเชพ เช—เชพเชณเชพเชจเชพ เชตเซเชฏเชตเชนเชพเชฐเซ‹ เชนเซ‹เชˆ เชถเช•เซ‡ เช›เซ‡. เช† เชฌเซ‡ เช˜เชŸเชจเชพเช“ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชœเซ‹เชกเชพเชฏเซ‡เชฒ เช›เซ‡ เชคเซ‡ เชธเชฎเชœเชตเชพ เชฎเชพเชŸเซ‡, LMDB เชจเชพ เชฌเชพเช•เซ€เชจเชพ เชฌเซ‡ เชธเซเชคเช‚เชญเซ‹เชจเซ‡ เชงเซเชฏเชพเชจเชฎเชพเช‚ เชฒเชˆเชจเซ‡ เช…เชฎเชจเซ‡ เชฎเชฆเชฆ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡.

3.2. เชตเซเชนเซ‡เชฒ #2. B+-เชตเซƒเช•เซเชท

เช•เซ€-เชตเซ‡เชฒเซเชฏเซ เชธเซเชŸเซ‹เชฐเซ‡เชœเชจเซ€ เชŸเซ‹เชš เชชเชฐ เช•เซ‹เชทเซเชŸเช•เซ‹เชจเซเช‚ เช…เชจเซเช•เชฐเชฃ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เชจเซ€เชšเซ‡เชจเชพ เช‘เชชเชฐเซ‡เชถเชจเซเชธ เชคเซ‡เชจเชพ API เชฎเชพเช‚ เชนเชพเชœเชฐ เชนเซ‹เชตเชพ เชœเซ‹เชˆเช:

  1. เชจเชตเซเช‚ เชคเชคเซเชต เชฆเชพเช–เชฒ เช•เชฐเซ€ เชฐเชนเซเชฏเซเช‚ เช›เซ‡.
  2. เช†เชชเซ‡เชฒ เช•เซ€ เชตเชกเซ‡ เชคเชคเซเชต เชถเซ‹เชงเซ‹.
  3. เชเช• เชคเชคเซเชต เชฆเซ‚เชฐ เช•เชฐเซ€ เชฐเชนเซเชฏเชพ เช›เซ€เช.
  4. เช•เซ€เชจเชพ เช…เช‚เชคเชฐเชพเชฒเซ‹ เชชเชฐ เชคเซ‡ เช•เซเชฐเชฎเชฎเชพเช‚ เชชเซเชจเชฐเชพเชตเชฐเซเชคเชฟเชค เช•เชฐเซ‹.

iOS เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเซเชธเชฎเชพเช‚ เช•เซ€-เชตเซ‡เชฒเซเชฏเซ เชกเซ‡เชŸเชพเชฌเซ‡เช LMDB เชจเซ€ เชคเซ‡เชœเชธเซเชตเซ€เชคเชพ เช…เชจเซ‡ เช—เชฐเซ€เชฌเซ€เชธเชฐเชณ เชกเซ‡เชŸเชพ เชฎเชพเชณเช–เซเช‚ เชœเซ‡ เชคเชฎเชพเชฎ เชšเชพเชฐ เช•เชพเชฎเช—เซ€เชฐเซ€เชจเซ‡ เชธเชฐเชณเชคเชพเชฅเซ€ เช…เชฎเชฒเชฎเชพเช‚ เชฎเซ‚เช•เซ€ เชถเช•เซ‡ เช›เซ‡ เชคเซ‡ เชฆเซเชตเชฟเชธเช‚เช—เซ€ เชถเซ‹เชง เชตเซƒเช•เซเชท เช›เซ‡. เชคเซ‡เชจเชพ เชฆเชฐเซ‡เช• เชจเซ‹เชกเซเชธ เชเช• เช•เซ€เชจเซเช‚ เชชเซเชฐเชคเชฟเชจเชฟเชงเชฟเชคเซเชต เช•เชฐเซ‡ เช›เซ‡ เชœเซ‡ เชšเชพเชˆเชฒเซเชก เช•เซ€เชจเชพ เชธเชฎเช—เซเชฐ เชธเชฌเชธเซ‡เชŸเชจเซ‡ เชฌเซ‡ เชธเชฌเชŸเซเชฐเซ€เชเชฎเชพเช‚ เชตเชฟเชญเชพเชœเชฟเชค เช•เชฐเซ‡ เช›เซ‡. เชกเชพเชฌเชพเชฎเชพเช‚ เชคเซ‡ เช›เซ‡ เชœเซ‡ เชฎเชพเชคเชพเชชเชฟเชคเชพ เช•เชฐเชคเชพ เชจเชพเชจเชพ เช›เซ‡, เช…เชจเซ‡ เชœเชฎเชฃเชพเชฎเชพเช‚ เชฎเซ‹เชŸเชพ เช›เซ‡. เช•เซเชฒเชพเชธเชฟเช• เชŸเซเชฐเซ€ เชŸเซเชฐเชพเชตเชฐเซเชธเชฒเซเชธเชฎเชพเช‚เชฅเซ€ เชเช• เชฆเซเชตเชพเชฐเชพ เช•เซ€เชจเซ‹ เช“เชฐเซเชกเชฐ เช•เชฐเซ‡เชฒ เชธเซ‡เชŸ เชฎเซ‡เชณเชตเชตเซ‹

เชฆเซเชตเชฟเชธเช‚เช—เซ€ เชตเซƒเช•เซเชทเซ‹เชฎเชพเช‚ เชฌเซ‡ เชฎเซ‚เชณเชญเซ‚เชค เช–เชพเชฎเซ€เช“ เช›เซ‡ เชœเซ‡ เชคเซ‡เชฎเชจเซ‡ เชกเชฟเชธเซเช•-เช†เชงเชพเชฐเชฟเชค เชกเซ‡เชŸเชพ เชธเซเชŸเซเชฐเช•เซเชšเชฐ เชคเชฐเซ€เช•เซ‡ เช…เชธเชฐเช•เชพเชฐเช• เชฌเชจเชตเชพเชฅเซ€ เช…เชŸเช•เชพเชตเซ‡ เช›เซ‡. เชชเซเชฐเชฅเชฎ, เชคเซ‡เชฎเชจเชพ เชธเช‚เชคเซเชฒเชจเชจเซ€ เชกเชฟเช—เซเชฐเซ€ เช…เชฃเชงเชพเชฐเซ€ เช›เซ‡. เชตเซƒเช•เซเชทเซ‹ เชฎเซ‡เชณเชตเชตเชพเชจเซเช‚ เชจเซ‹เช‚เชงเชชเชพเชคเซเชฐ เชœเซ‹เช–เชฎ เช›เซ‡ เชœเซ‡เชฎเชพเช‚ เชตเชฟเชตเชฟเชง เชถเชพเช–เชพเช“เชจเซ€ เชŠเช‚เชšเชพเชˆ เชฎเซ‹เชŸเชพ เชชเซเชฐเชฎเชพเชฃเชฎเชพเช‚ เช…เชฒเช— เชนเซ‹เชˆ เชถเช•เซ‡ เช›เซ‡, เชœเซ‡ เช…เชชเซ‡เช•เซเชทเชฟเชค เช›เซ‡ เชคเซ‡เชจเซ€ เชคเซเชฒเชจเชพเชฎเชพเช‚ เชถเซ‹เชงเชจเซ€ เช…เชฒเซเช—เซ‹เชฐเชฟเชงเชฎเชฟเช• เชœเชŸเชฟเชฒเชคเชพเชจเซ‡ เชจเซ‹เช‚เชงเชชเชพเชคเซเชฐ เชฐเซ€เชคเซ‡ เชตเชงเซ เช–เชฐเชพเชฌ เช•เชฐเซ‡ เช›เซ‡. เชฌเซ€เชœเซเช‚, เชจเซ‹เชกเซเชธ เชตเชšเซเชšเซ‡เชจเซ€ เช•เซเชฐเซ‹เชธ-เชฒเชฟเช‚เช•เซเชธเชจเซ€ เชตเชฟเชชเซเชฒเชคเชพ เชฎเซ‡เชฎเชฐเซ€เชฎเชพเช‚ เชธเซเชฅเชพเชจเชฟเช•เชคเชพเชจเชพ เชฆเซเชตเชฟเชธเช‚เช—เซ€ เชตเซƒเช•เซเชทเซ‹เชจเซ‡ เชตเช‚เชšเชฟเชค เช•เชฐเซ‡ เช›เซ‡. เช•เซเชฒเซ‹เช เชจเซ‹เชกเซเชธ (เชคเซ‡เชฎเชจเซ€ เชตเชšเซเชšเซ‡เชจเชพ เชœเซ‹เชกเชพเชฃเซ‹เชจเซ€ เชฆเซเชฐเชทเซเชŸเชฟเช) เชตเชฐเซเชšเซเชฏเซเช…เชฒ เชฎเซ‡เชฎเชฐเซ€เชฎเชพเช‚ เชธเช‚เชชเซ‚เชฐเซเชฃเชชเชฃเซ‡ เช…เชฒเช— เชชเซƒเชทเซเช เซ‹ เชชเชฐ เชธเซเชฅเชฟเชค เชนเซ‹เชˆ เชถเช•เซ‡ เช›เซ‡. เชชเชฐเชฟเชฃเชพเชฎเซ‡, เชเช• เชตเซƒเช•เซเชทเชฎเชพเช‚ เช•เซ‡เชŸเชฒเชพเช• เชชเชกเซ‹เชถเซ€ เช—เชพเช‚เช เซ‹เชจเชพ เชเช• เชธเชฐเชณ เชŸเซเชฐเชพเชตเชฐเซเชธเชฒ เชฎเชพเชŸเซ‡ เชชเชฃ เชคเซเชฒเชจเชพเชคเซเชฎเช• เชธเช‚เช–เซเชฏเชพเชฎเชพเช‚ เชชเซƒเชทเซเช เซ‹เชจเซ€ เชฎเซเชฒเชพเช•เชพเชค เชฒเซ‡เชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เชชเชกเซ€ เชถเช•เซ‡ เช›เซ‡. เชœเซเชฏเชพเชฐเซ‡ เช†เชชเชฃเซ‡ เช‡เชจ-เชฎเซ‡เชฎเชฐเซ€ เชกเซ‡เชŸเชพ เชธเซเชŸเซเชฐเช•เซเชšเชฐ เชคเชฐเซ€เช•เซ‡ เชฌเชพเชˆเชจเชฐเซ€ เชŸเซเชฐเซ€เชจเซ€ เช…เชธเชฐเช•เชพเชฐเช•เชคเชพ เชตเชฟเชถเซ‡ เชตเชพเชค เช•เชฐเซ€เช เชคเซเชฏเชพเชฐเซ‡ เชชเชฃ เช† เชเช• เชธเชฎเชธเซเชฏเชพ เช›เซ‡, เช•เชพเชฐเชฃ เช•เซ‡ เชชเซเชฐเซ‹เชธเซ‡เชธเชฐ เช•เซ‡เชถเชฎเชพเช‚ เชชเซƒเชทเซเช เซ‹เชจเซ‡ เชธเชคเชค เชซเซ‡เชฐเชตเชตเซเช‚ เช เชธเชธเซเชคเซ‹ เช†เชจเช‚เชฆ เชจเชฅเซ€. เชœเซเชฏเชพเชฐเซ‡ เชกเชฟเชธเซเช•เชฎเชพเช‚เชฅเซ€ เชจเซ‹เชกเซเชธ เชธเชพเชฅเซ‡ เชธเช‚เช•เชณเชพเชฏเซ‡เชฒเชพ เชชเซƒเชทเซเช เซ‹เชจเซ‡ เชตเชพเชฐเช‚เชตเชพเชฐ เชชเซเชจเชƒเชชเซเชฐเชพเชชเซเชค เช•เชฐเชตเชพเชจเซ€ เชตเชพเชค เช†เชตเซ‡ เช›เซ‡, เชคเซเชฏเชพเชฐเซ‡ เชชเชฐเชฟเชธเซเชฅเชฟเชคเชฟ เชธเช‚เชชเซ‚เชฐเซเชฃเชชเชฃเซ‡ เชฌเชจเซ€ เชœเชพเชฏ เช›เซ‡ เชฆเซ:เช–เชฆเชพเชฏเช•.

iOS เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเซเชธเชฎเชพเช‚ เช•เซ€-เชตเซ‡เชฒเซเชฏเซ เชกเซ‡เชŸเชพเชฌเซ‡เช LMDB เชจเซ€ เชคเซ‡เชœเชธเซเชตเซ€เชคเชพ เช…เชจเซ‡ เช—เชฐเซ€เชฌเซ€B-เชตเซƒเช•เซเชทเซ‹, เชฆเซเชตเชฟเชธเช‚เช—เซ€ เชตเซƒเช•เซเชทเซ‹เชจเซ€ เช‰เชคเซเช•เซเชฐเชพเช‚เชคเชฟ เชนเซ‹เชตเชพเชฅเซ€, เชชเชพเช›เชฒเชพ เชซเช•เชฐเชพเชฎเชพเช‚ เช“เชณเช–เชพเชฏเซ‡เชฒเซ€ เชธเชฎเชธเซเชฏเชพเช“เชจเซเช‚ เชจเชฟเชฐเชพเช•เชฐเชฃ เช•เชฐเซ‡ เช›เซ‡. เชชเซเชฐเชฅเชฎ, เชคเซ‡เช“ เชธเซเชต-เชธเช‚เชคเซเชฒเชฟเชค เช›เซ‡. เชฌเซ€เชœเซเช‚, เชคเซ‡เชฎเชจเชพ เชฆเชฐเซ‡เช• เชจเซ‹เชกเซเชธ เชšเชพเชˆเชฒเซเชก เช•เซ€เชจเชพ เชธเซ‡เชŸเชจเซ‡ 2 เชฎเชพเช‚ เชจเชนเซ€เช‚, เชชเชฐเช‚เชคเซ M เช“เชฐเซเชกเชฐ เช•เชฐเซ‡เชฒเชพ เชธเชฌเชธเซ‡เชŸเชฎเชพเช‚ เชตเชฟเชญเชพเชœเชฟเชค เช•เชฐเซ‡ เช›เซ‡, เช…เชจเซ‡ เชธเช‚เช–เซเชฏเชพ M เช˜เชฃเซ€ เชฎเซ‹เชŸเซ€ เชนเซ‹เชˆ เชถเช•เซ‡ เช›เซ‡, เช•เซ‡เชŸเชฒเชพเช• เชธเซ‹ เช…เชฅเชตเชพ เชคเซ‹ เชนเชœเชพเชฐเซ‹เชจเชพ เช•เซเชฐเชฎเชฎเชพเช‚.

เช†เชฎ:

  1. เชฆเชฐเซ‡เช• เชจเซ‹เชกเชฎเชพเช‚ เชชเชนเซ‡เชฒเซ‡เชฅเซ€ เชœ เช“เชฐเซเชกเชฐ เช•เชฐเซ‡เชฒเซ€ เช•เซ€เชจเซ€ เชฎเซ‹เชŸเซ€ เชธเช‚เช–เซเชฏเชพ เชนเซ‹เชฏ เช›เซ‡ เช…เชจเซ‡ เชตเซƒเช•เซเชทเซ‹ เช–เซ‚เชฌ เชŸเซ‚เช‚เช•เชพ เชนเซ‹เชฏ เช›เซ‡.
  2. เชตเซƒเช•เซเชท เชฎเซ‡เชฎเชฐเซ€เชฎเชพเช‚ เชธเซเชฅเชพเชจเชจเชพ เชธเซเชฅเชพเชจเชจเซ€ เชฎเชฟเชฒเช•เชค เชฎเซ‡เชณเชตเซ‡ เช›เซ‡, เช•เชพเชฐเชฃ เช•เซ‡ เช•เซ€ เชœเซ‡ เช•เชฟเช‚เชฎเชคเชฎเชพเช‚ เชจเชœเซ€เช• เช›เซ‡ เชคเซ‡ เช•เซเชฆเชฐเชคเซ€ เชฐเซ€เชคเซ‡ เชธเชฎเชพเชจ เช…เชฅเชตเชพ เชชเชกเซ‹เชถเซ€ เช—เชพเช‚เช เซ‹ เชชเชฐ เชเช•เชฌเซ€เชœเชพเชจเซ€ เชฌเชพเชœเซเชฎเชพเช‚ เชธเซเชฅเชฟเชค เช›เซ‡.
  3. เชธเชฐเซเชš เช“เชชเชฐเซ‡เชถเชจ เชฆเชฐเชฎเชฟเชฏเชพเชจ เชเชพเชก เชจเซ€เชšเซ‡ เช‰เชคเชฐเชคเซ€ เชตเช–เชคเซ‡ เชŸเซเชฐเชพเชจเซเชเชฟเชŸ เชจเซ‹เชกเชจเซ€ เชธเช‚เช–เซเชฏเชพ เช“เช›เซ€ เชฅเชพเชฏ เช›เซ‡.
  4. เชถเซเชฐเซ‡เชฃเซ€ เช•เซเชตเซ‡เชฐเซ€เช เชฆเชฐเชฎเชฟเชฏเชพเชจ เชตเชพเช‚เชšเชตเชพเชฎเชพเช‚ เช†เชตเชคเชพ เชฒเช•เซเชทเซเชฏ เชจเซ‹เชกเซเชธเชจเซ€ เชธเช‚เช–เซเชฏเชพ เช“เช›เซ€ เชฅเชˆ เช›เซ‡, เช•เชพเชฐเชฃ เช•เซ‡ เชคเซ‡เชฎเชพเช‚เชจเชพ เชฆเชฐเซ‡เช•เชฎเชพเช‚ เชชเชนเซ‡เชฒเซ‡เชฅเซ€ เชœ เชฎเซ‹เชŸเซ€ เชธเช‚เช–เซเชฏเชพเชฎเชพเช‚ เช“เชฐเซเชกเชฐ เช•เชฐเซ‡เชฒเซ€ เช•เซ€ เช›เซ‡.

iOS เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเซเชธเชฎเชพเช‚ เช•เซ€-เชตเซ‡เชฒเซเชฏเซ เชกเซ‡เชŸเชพเชฌเซ‡เช LMDB เชจเซ€ เชคเซ‡เชœเชธเซเชตเซ€เชคเชพ เช…เชจเซ‡ เช—เชฐเซ€เชฌเซ€

LMDB เชกเซ‡เชŸเชพ เชธเซเชŸเซ‹เชฐ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ B+ เชŸเซเชฐเซ€ เชคเชฐเซ€เช•เซ‡ เช“เชณเช–เชพเชคเชพ B-เชŸเซเชฐเซ€เชจเซ€ เชตเชฟเชตเชฟเชงเชคเชพเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‡ เช›เซ‡. เช‰เชชเชฐเซ‹เช•เซเชค เช†เช•เซƒเชคเชฟ เชคเซเชฐเชฃ เชชเซเชฐเช•เชพเชฐเชจเชพ เช—เชพเช‚เช เซ‹ เชฆเชฐเซเชถเชพเชตเซ‡ เช›เซ‡ เชœเซ‡ เชคเซ‡เชฎเชพเช‚ เช…เชธเซเชคเชฟเชคเซเชต เชงเชฐเชพเชตเซ‡ เช›เซ‡:

  1. เชŸเซ‹เชš เชชเชฐ เชฐเซเชŸ เช›เซ‡. เชคเซ‡ เชตเซ‡เชฐเชนเชพเช‰เชธเชจเซ€ เช…เช‚เชฆเชฐเชจเชพ เชกเซ‡เชŸเชพเชฌเซ‡เชเชจเซ€ เชตเชฟเชญเชพเชตเชจเชพ เชธเชฟเชตเชพเชฏ เชฌเซ€เชœเซเช‚ เช•เชถเซเช‚ เชœ เชธเชพเช•เชพเชฐ เช•เชฐเชคเซเช‚ เชจเชฅเซ€. เชเช• LMDB เชฆเชพเช–เชฒเชพเชจเซ€ เช…เช‚เชฆเชฐ, เชคเชฎเซ‡ เช˜เชฃเชพ เชกเซ‡เชŸเชพเชฌเซ‡เชธเซ‡เชธ เชฌเชจเชพเชตเซ€ เชถเช•เซ‹ เช›เซ‹ เชœเซ‡ เชฎเซ‡เชช เช•เชฐเซ‡เชฒ เชตเชฐเซเชšเซเชฏเซเช…เชฒ เชเชกเซเชฐเซ‡เชธ เชธเซเชชเซ‡เชธ เชถเซ‡เชฐ เช•เชฐเซ‡ เช›เซ‡. เชคเซ‡เชฎเชพเช‚เชฅเซ€ เชฆเชฐเซ‡เช• เชคเซ‡เชจเชพ เชชเซ‹เชคเชพเชจเชพ เชฎเซ‚เชณเชฅเซ€ เชถเชฐเซ‚ เชฅเชพเชฏ เช›เซ‡.
  2. เชธเซŒเชฅเซ€ เชจเซ€เชšเชพ เชธเซเชคเชฐเซ‡ เชชเชพเช‚เชฆเชกเชพ เช›เซ‡. เชคเซ‡เช“ เช…เชจเซ‡ เชฎเชพเชคเซเชฐ เชคเซ‡เช“ เชœ เชกเซ‡เชŸเชพเชฌเซ‡เชเชฎเชพเช‚ เชธเช‚เช—เซเชฐเชนเชฟเชค เช•เซ€-เชตเซ‡เชฒเซเชฏเซ เชœเซ‹เชกเซ€ เชงเชฐเชพเชตเซ‡ เช›เซ‡. เชฎเชพเชฐเซเช— เชฆเซเชตเชพเชฐเชพ, เช† B+-เชตเซƒเช•เซเชทเซ‹เชจเซ€ เช–เชพเชธเชฟเชฏเชค เช›เซ‡. เชœเซ‹ เชจเชฟเชฏเชฎเชฟเชค เชฌเซ€-เชŸเซเชฐเซ€ เชคเชฎเชพเชฎ เชธเซเชคเชฐเซ‹เชจเชพ เชจเซ‹เชกเซเชธเชฎเชพเช‚ เชฎเซ‚เชฒเซเชฏเชจเชพ เชญเชพเช—เซ‹เชจเซ‡ เชธเช‚เช—เซเชฐเชนเชฟเชค เช•เชฐเซ‡ เช›เซ‡, เชคเซ‹ B+ เชญเชฟเชจเซเชจเชคเชพ เชซเช•เซเชค เชธเซŒเชฅเซ€ เชจเซ€เชšเชพเชฎเชพเช‚ เชœ เช›เซ‡. เช† เชนเช•เซ€เช•เชคเชจเซ‡ เชจเชฟเชถเซเชšเชฟเชค เช•เชฐเซเชฏเชพ เชชเช›เซ€, เช…เชฎเซ‡ เช†เช—เชณ LMDB เชฎเชพเช‚ เชตเชชเชฐเชพเชคเชพ เชตเซƒเช•เซเชทเชจเชพ เชชเซ‡เชŸเชพ เชชเซเชฐเช•เชพเชฐเชจเซ‡ เชซเช•เซเชค เชฌเซ€-เชŸเซเชฐเซ€ เช•เชนเซ€เชถเซเช‚.
  3. เชฎเซ‚เชณ เช…เชจเซ‡ เชชเชพเช‚เชฆเชกเชพ เชตเชšเซเชšเซ‡ เชจเซ‡เชตเชฟเช—เซ‡เชถเชจเชฒ (เชฌเซเชฐเชพเช‚เชš) เชจเซ‹เชกเซเชธ เชธเชพเชฅเซ‡ 0 เช…เชฅเชตเชพ เชตเชงเซ เชคเช•เชจเซ€เช•เซ€ เชธเซเชคเชฐเซ‹ เช›เซ‡. เชคเซ‡เชฎเชจเซเช‚ เช•เชพเชฐเซเชฏ เชชเชพเช‚เชฆเชกเชพ เชตเชšเซเชšเซ‡ เชšเชพเชตเซ€เช“เชจเชพ เชธเซ‰เชฐเซเชŸ เช•เชฐเซ‡เชฒ เชธเชฎเซ‚เชนเชจเซ‡ เชตเชฟเชญเชพเชœเซ€เชค เช•เชฐเชตเชพเชจเซเช‚ เช›เซ‡.

เชญเซŒเชคเชฟเช• เชฐเซ€เชคเซ‡, เชจเซ‹เชกเซเชธ เช เชชเซ‚เชฐเซเชตเชจเชฟเชฐเซเชงเชพเชฐเชฟเชค เชฒเช‚เชฌเชพเชˆเชจเซ€ เชฎเซ‡เชฎเชฐเซ€เชจเชพ เชฌเซเชฒเซ‹เช•เซเชธ เช›เซ‡. เชคเซ‡เชฎเชจเซเช‚ เช•เชฆ เช“เชชเชฐเซ‡เชŸเชฟเช‚เช— เชธเชฟเชธเซเชŸเชฎเชฎเชพเช‚ เชฎเซ‡เชฎเชฐเซ€ เชชเซƒเชทเซเช เซ‹เชจเชพ เช•เชฆเชจเชพ เชฌเชนเซเชตเชฟเชง เช›เซ‡, เชœเซ‡เชจเซ€ เช†เชชเชฃเซ‡ เช‰เชชเชฐ เชšเชฐเซเชšเชพ เช•เชฐเซ€ เช›เซ‡. เชจเซ‹เชก เชฎเชพเชณเช–เซเช‚ เชจเซ€เชšเซ‡ เชฆเชฐเซเชถเชพเชตเซ‡เชฒ เช›เซ‡. เชนเซ‡เชกเชฐเชฎเชพเช‚ เชฎเซ‡เชŸเชพ เชฎเชพเชนเชฟเชคเซ€ เชนเซ‹เชฏ เช›เซ‡, เชœเซ‡เชฎเชพเช‚เชฅเซ€ เชธเซŒเชฅเซ€ เชตเชงเซ เชธเซเชชเชทเซเชŸ เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡ เชšเซ‡เช•เชธเชฎ เช›เซ‡. เช†เช—เชณ เช‘เชซเชธเซ‡เชŸเซเชธ เชตเชฟเชถเซ‡เชจเซ€ เชฎเชพเชนเชฟเชคเซ€ เช†เชตเซ‡ เช›เซ‡ เชœเซ‡เชฎเชพเช‚ เชกเซ‡เชŸเชพ เชธเชพเชฅเซ‡เชจเชพ เช•เซ‹เชทเซ‹ เชธเซเชฅเชฟเชค เช›เซ‡. เชœเซ‹ เช†เชชเชฃเซ‡ เชจเซ‡เชตเชฟเช—เซ‡เชถเชจ เชจเซ‹เชกเซเชธ เชตเชฟเชถเซ‡ เชตเชพเชค เช•เชฐเซ€ เชฐเชนเซเชฏเชพ เชนเซ‹เชˆเช เชคเซ‹ เชกเซ‡เชŸเชพ เช•เชพเช‚เชคเซ‹ เช•เซ€ เชนเซ‹เชˆ เชถเช•เซ‡ เช›เซ‡, เช…เชฅเชตเชพ เชชเชพเช‚เชฆเชกเชพเชจเชพ เช•เชฟเชธเซเชธเชพเชฎเชพเช‚ เชธเช‚เชชเซ‚เชฐเซเชฃ เช•เซ€-เชตเซ‡เชฒเซเชฏเซ เชœเซ‹เชกเซ€เช“ เชตเชฟเชถเซ‡.โ€‹ เชคเชฎเซ‡ เช•เชพเชฐเซเชฏเชฎเชพเช‚ เชชเซƒเชทเซเช เซ‹เชจเซ€ เชฐเชšเชจเชพ เชตเชฟเชถเซ‡ เชตเชงเซ เชตเชพเช‚เชšเซ€ เชถเช•เซ‹ เช›เซ‹ "เช‰เชšเซเชš เชชเซเชฐเชฆเชฐเซเชถเชจ เช•เซ€-เชตเซ‡เชฒเซเชฏเซ เชธเซเชŸเซ‹เชฐเซเชธเชจเซเช‚ เชฎเซ‚เชฒเซเชฏเชพเช‚เช•เชจ".

iOS เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเซเชธเชฎเชพเช‚ เช•เซ€-เชตเซ‡เชฒเซเชฏเซ เชกเซ‡เชŸเชพเชฌเซ‡เช LMDB เชจเซ€ เชคเซ‡เชœเชธเซเชตเซ€เชคเชพ เช…เชจเซ‡ เช—เชฐเซ€เชฌเซ€

เชชเซƒเชทเซเช  เช—เชพเช‚เช เซ‹เชจเซ€ เช†เช‚เชคเชฐเชฟเช• เชธเชพเชฎเช—เซเชฐเซ€ เชธเชพเชฅเซ‡ เชตเซเชฏเชตเชนเชพเชฐ เช•เชฐเซเชฏเชพ เชชเช›เซ€, เช…เชฎเซ‡ เช†เช—เชณเชจเชพ เชธเซเชตเชฐเซ‚เชชเชฎเชพเช‚ LMDB B-เชŸเซเชฐเซ€เชจเซ‡ เชธเชฐเชณ เชฐเซ€เชคเซ‡ เชฐเชœเซ‚ เช•เชฐเซ€เชถเซเช‚.

iOS เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเซเชธเชฎเชพเช‚ เช•เซ€-เชตเซ‡เชฒเซเชฏเซ เชกเซ‡เชŸเชพเชฌเซ‡เช LMDB เชจเซ€ เชคเซ‡เชœเชธเซเชตเซ€เชคเชพ เช…เชจเซ‡ เช—เชฐเซ€เชฌเซ€

เชจเซ‹เชกเซเชธเชตเชพเชณเชพ เชชเซƒเชทเซเช เซ‹ เชกเชฟเชธเซเช• เชชเชฐ เช•เซเชฐเชฎเชฟเช• เชฐเซ€เชคเซ‡ เชธเซเชฅเชฟเชค เช›เซ‡. เช‰เชšเซเชš เช•เซเชฐเชฎเชพเช‚เช•เชฟเชค เชชเซƒเชทเซเช เซ‹ เชซเชพเช‡เชฒเชจเชพ เช…เช‚เชค เชคเชฐเชซ เชธเซเชฅเชฟเชค เช›เซ‡. เช•เชนเซ‡เชตเชพเชคเชพ เชฎเซ‡เชŸเชพ เชชเซƒเชทเซเช เชฎเชพเช‚ เช‘เชซเชธเซ‡เชŸเซเชธ เชตเชฟเชถเซ‡เชจเซ€ เชฎเชพเชนเชฟเชคเซ€ เช›เซ‡ เชœเซ‡เชจเชพ เชฆเซเชตเชพเชฐเชพ เชคเชฎเชพเชฎ เชตเซƒเช•เซเชทเซ‹เชจเชพ เชฎเซ‚เชณ เชถเซ‹เชงเซ€ เชถเช•เชพเชฏ เช›เซ‡. เชซเชพเช‡เชฒ เช–เซ‹เชฒเชคเซ€ เชตเช–เชคเซ‡, เชฎเชพเชจเซเชฏ เชฎเซ‡เชŸเชพ เชชเซ‡เชœเชจเซ€ เชถเซ‹เชงเชฎเชพเช‚ LMDB เชซเชพเช‡เชฒ เชชเซ‡เชœเชจเซ‡ เชชเซ‡เชœ เชฆเซเชตเชพเชฐเชพ เช…เช‚เชคเชฅเซ€ เชถเชฐเซ‚เช†เชค เชธเซเชงเซ€ เชธเซเช•เซ‡เชจ เช•เชฐเซ‡ เช›เซ‡ เช…เชจเซ‡ เชคเซ‡เชจเชพ เชฆเซเชตเชพเชฐเชพ เชนเชพเชฒเชจเชพ เชกเซ‡เชŸเชพเชฌเซ‡เชธเซ‡เชธ เชถเซ‹เชงเซ‡ เช›เซ‡.

iOS เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเซเชธเชฎเชพเช‚ เช•เซ€-เชตเซ‡เชฒเซเชฏเซ เชกเซ‡เชŸเชพเชฌเซ‡เช LMDB เชจเซ€ เชคเซ‡เชœเชธเซเชตเซ€เชคเชพ เช…เชจเซ‡ เช—เชฐเซ€เชฌเซ€

เชนเชตเซ‡, เชกเซ‡เชŸเชพ เช“เชฐเซเช—เซ‡เชจเชพเชˆเชเซ‡เชถเชจเชจเซ€ เชคเชพเชฐเซเช•เชฟเช• เช…เชจเซ‡ เชญเซŒเชคเชฟเช• เชฐเชšเชจเชพเชจเซ‹ เช–เซเชฏเชพเชฒ เชฐเชพเช–เซ€เชจเซ‡, เช†เชชเชฃเซ‡ LMDB เชจเชพ เชคเซเชฐเซ€เชœเชพ เชธเซเชคเช‚เชญเชจเซ‡ เชงเซเชฏเชพเชจเชฎเชพเช‚ เชฒเชˆ เชถเช•เซ€เช เช›เซ€เช. เชคเซ‡ เชคเซ‡เชจเซ€ เชฎเชฆเชฆเชฅเซ€ เช›เซ‡ เช•เซ‡ เชคเชฎเชพเชฎ เชธเซเชŸเซ‹เชฐเซ‡เชœ เชซเซ‡เชฐเชซเชพเชฐเซ‹ เชตเซเชฏเชตเชนเชพเชฐเชฟเช• เชฐเซ€เชคเซ‡ เช…เชจเซ‡ เชเช•เชฌเซ€เชœเชพเชฅเซ€ เช…เชฒเช—เชคเชพเชฎเชพเช‚ เชฅเชพเชฏ เช›เซ‡, เชœเซ‡ เชธเชฎเช—เซเชฐ เชกเซ‡เชŸเชพเชฌเซ‡เชเชจเซ‡ เชฎเชฒเซเชŸเซ€เชตเชฐเซเชเชจเชจเซ€ เชฎเชฟเชฒเช•เชค เช†เชชเซ‡ เช›เซ‡.

3.3. เชตเซเชนเซ‡เชฒ #3. เช•เซ‹เชชเซ€-เช“เชจ-เชฐเชพเชˆเชŸ

เช•เซ‡เชŸเชฒเชพเช• เชฌเซ€-เชŸเซเชฐเซ€ เช“เชชเชฐเซ‡เชถเชจเชฎเชพเช‚ เชคเซ‡เชจเชพ เช—เชพเช‚เช เซ‹เชฎเชพเช‚ เชถเซเชฐเซ‡เชฃเซ€เชฌเชฆเซเชง เชซเซ‡เชฐเชซเชพเชฐเซ‹ เช•เชฐเชตเชพเชจเซ‹ เชธเชฎเชพเชตเซ‡เชถ เชฅเชพเชฏ เช›เซ‡. เชเช• เช‰เชฆเชพเชนเชฐเชฃ เชจเซ‹เชกเชฎเชพเช‚ เชจเชตเซ€ เช•เซ€ เช‰เชฎเซ‡เชฐเซ€ เชฐเชนเซเชฏเซเช‚ เช›เซ‡ เชœเซ‡ เชคเซ‡เชจเซ€ เชฎเชนเชคเซเชคเชฎ เช•เซเชทเชฎเชคเชพ เชธเซเชงเซ€ เชชเชนเซ‹เช‚เชšเซ€ เช—เชฏเซเช‚ เช›เซ‡. เช† เช•เชฟเชธเซเชธเชพเชฎเชพเช‚, เชคเซ‡ เชœเชฐเซ‚เชฐเซ€ เช›เซ‡, เชชเซเชฐเชฅเชฎ, เชจเซ‹เชกเชจเซ‡ เชฌเซ‡ เชญเชพเช—เชฎเชพเช‚ เชตเชฟเชญเชพเชœเชฟเชค เช•เชฐเชตเซเช‚, เช…เชจเซ‡ เชฌเซ€เชœเซเช‚, เชคเซ‡เชจเชพ เชฎเชพเชคเชพเชชเชฟเชคเชพเชฎเชพเช‚ เชจเชตเชพ เช‰เชญเชฐเชคเชพ เชšเชพเช‡เชฒเซเชก เชจเซ‹เชกเชจเซ€ เชฒเชฟเช‚เช• เช‰เชฎเซ‡เชฐเชตเซ€. เช† เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เชธเช‚เชญเชตเชฟเชค เชฐเซ€เชคเซ‡ เช–เซ‚เชฌ เชœเซ‹เช–เชฎเซ€ เช›เซ‡. เชœเซ‹ เช•เซ‹เชˆ เช•เชพเชฐเชฃเซ‹เชธเชฐ (เช•เซเชฐเซ‡เชถ, เชชเชพเชตเชฐ เช†เช‰เชŸเซ‡เชœ, เชตเช—เซ‡เชฐเซ‡) เชถเซเชฐเซ‡เชฃเซ€เชฎเชพเช‚เชฅเซ€ เชซเซ‡เชฐเชซเชพเชฐเซ‹เชจเซ‹ เชฎเชพเชคเซเชฐ เชเช• เชญเชพเช— เชฅเชพเชฏ เช›เซ‡, เชคเซ‹ เชชเช›เซ€ เชตเซƒเช•เซเชท เช…เชธเช‚เช—เชค เชธเซเชฅเชฟเชคเชฟเชฎเชพเช‚ เชฐเชนเซ‡เชถเซ‡.

เชกเซ‡เชŸเชพเชฌเซ‡เช เชซเซ‹เชฒเซเชŸ-เชŸเซ‹เชฒเชฐเชจเซเชŸ เชฌเชจเชพเชตเชตเชพ เชฎเชพเชŸเซ‡เชจเซ‹ เชเช• เชชเชฐเช‚เชชเชฐเชพเช—เชค เช‰เช•เซ‡เชฒ เช เช›เซ‡ เช•เซ‡ เชฌเซ€-เชŸเซเชฐเซ€เชจเซ€ เชฌเชพเชœเซเชฎเชพเช‚ เชตเชงเชพเชฐเชพเชจเซ€ เช‘เชจ-เชกเชฟเชธเซเช• เชกเซ‡เชŸเชพ เชธเซเชŸเซเชฐเช•เซเชšเชฐ เช‰เชฎเซ‡เชฐเชตเซเช‚ - เชเช• เชŸเซเชฐเชพเชจเซเชเซ‡เช•เซเชถเชจ เชฒเซ‹เช—, เชœเซ‡เชจเซ‡ เชฐเชพเชˆเชŸ-เชนเซ‡เชก เชฒเซ‹เช— (WAL) เชคเชฐเซ€เช•เซ‡ เชชเชฃ เช“เชณเช–เชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡. เชคเซ‡ เชเช• เชซเชพเช‡เชฒ เช›เซ‡ เชœเซ‡เชจเชพ เช…เช‚เชคเซ‡ เชฌเซ€-เชŸเซเชฐเซ€เชฎเชพเช‚ เชซเซ‡เชฐเชซเชพเชฐ เช•เชฐเชคเชพ เชชเชนเซ‡เชฒเชพ เช‡เชšเซเช›เชฟเชค เช•เชพเชฎเช—เซ€เชฐเซ€ เชธเช–เชค เชฐเซ€เชคเซ‡ เชฒเช–เชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡. เช†เชฎ, เชœเซ‹ เชธเซเชต-เชจเชฟเชฆเชพเชจ เชฆเชฐเชฎเชฟเชฏเชพเชจ เชกเซ‡เชŸเชพ เชญเซเชฐเชทเซเชŸเชพเชšเชพเชฐ เชฎเชณเซ€ เช†เชตเซ‡, เชคเซ‹ เชกเซ‡เชŸเชพเชฌเซ‡เช เชชเซ‹เชคเชพเชจเซ‡ เชตเซเชฏเชตเชธเซเชฅเชฟเชค เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชฒเซ‹เช—เชจเซ€ เชธเชฒเชพเชน เชฒเซ‡ เช›เซ‡.

LMDB เช เชซเซ‹เชฒเซเชŸ เชŸเซ‹เชฒเชฐเชจเซเชธ เชฎเชฟเช•เซ‡เชจเชฟเชเชฎ เชคเชฐเซ€เช•เซ‡ เชเช• เช…เชฒเช— เชชเชฆเซเชงเชคเชฟ เชชเชธเช‚เชฆ เช•เชฐเซ€ เช›เซ‡, เชœเซ‡เชจเซ‡ เช•เซ‹เชชเซ€-เช“เชจ-เชฐเชพเชˆเชŸ เช•เชนเซ‡เชตเชพเชฏ เช›เซ‡. เชคเซ‡เชจเซ‹ เชธเชพเชฐ เช เช›เซ‡ เช•เซ‡ เชตเชฐเซเชคเชฎเชพเชจ เชชเซƒเชทเซเช  เชชเชฐ เชกเซ‡เชŸเชพ เช…เชชเชกเซ‡เชŸ เช•เชฐเชตเชพเชจเซ‡ เชฌเชฆเชฒเซ‡, เชคเซ‡ เชชเชนเซ‡เชฒเชพ เชคเซ‡เชจเซ€ เชธเช‚เชชเซ‚เชฐเซเชฃ เชจเช•เชฒ เช•เชฐเซ‡ เช›เซ‡ เช…เชจเซ‡ เชจเช•เชฒเชฎเชพเช‚ เชคเชฎเชพเชฎ เชซเซ‡เชฐเชซเชพเชฐเซ‹ เช•เชฐเซ‡ เช›เซ‡.

iOS เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเซเชธเชฎเชพเช‚ เช•เซ€-เชตเซ‡เชฒเซเชฏเซ เชกเซ‡เชŸเชพเชฌเซ‡เช LMDB เชจเซ€ เชคเซ‡เชœเชธเซเชตเซ€เชคเชพ เช…เชจเซ‡ เช—เชฐเซ€เชฌเซ€

เช†เช—เชณ, เช…เชชเชกเซ‡เชŸ เช•เชฐเซ‡เชฒ เชกเซ‡เชŸเชพ เช‰เชชเชฒเชฌเซเชง เชฅเชตเชพ เชฎเชพเชŸเซ‡, เชจเซ‹เชกเชจเซ€ เชฒเชฟเช‚เช•เชจเซ‡ เชฌเชฆเชฒเชตเซ€ เชœเชฐเซ‚เชฐเซ€ เช›เซ‡ เชœเซ‡ เชคเซ‡เชจเชพ เชชเซ‡เชฐเซ‡เช‚เชŸ เชจเซ‹เชกเชฎเชพเช‚ เชตเชฐเซเชคเชฎเชพเชจ เชฌเชจเซ€ เช—เชฏเซเช‚ เช›เซ‡. เช† เชฎเชพเชŸเซ‡ เชคเซ‡เชฎเชพเช‚ เชซเซ‡เชฐเชซเชพเชฐ เช•เชฐเชตเชพเชจเซ€ เชชเชฃ เชœเชฐเซ‚เชฐ เชนเซ‹เชตเชพเชฅเซ€, เชคเซ‡เชจเซ€ เชจเช•เชฒ เชชเชฃ เช…เช—เชพเช‰เชฅเซ€ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡. เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เชฐเซเชŸ เชธเซเชงเซ€ เชฌเชงเซ€ เชฐเซ€เชคเซ‡ เชตเชพเชฐเช‚เชตเชพเชฐ เชšเชพเชฒเซ เชฐเชนเซ‡ เช›เซ‡. เชฌเชฆเชฒเชตเชพ เชฎเชพเชŸเซ‡เชจเซ€ เช›เซ‡เชฒเซเชฒเซ€ เชตเชธเซเชคเซ เชฎเซ‡เชŸเชพ เชชเซ‡เชœ เชชเชฐเชจเซ‹ เชกเซ‡เชŸเชพ เช›เซ‡

iOS เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเซเชธเชฎเชพเช‚ เช•เซ€-เชตเซ‡เชฒเซเชฏเซ เชกเซ‡เชŸเชพเชฌเซ‡เช LMDB เชจเซ€ เชคเซ‡เชœเชธเซเชตเซ€เชคเชพ เช…เชจเซ‡ เช—เชฐเซ€เชฌเซ€

เชœเซ‹ เช…เชชเชกเซ‡เชŸ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เชฆเชฐเชฎเชฟเชฏเชพเชจ เช…เชšเชพเชจเช• เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เช•เซเชฐเซ‡เชถ เชฅเชˆ เชœเชพเชฏ, เชคเซ‹ เช•เชพเช‚ เชคเซ‹ เชจเชตเซเช‚ เชฎเซ‡เชŸเชพ เชชเซ‡เชœ เชฌเชจเชพเชตเชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡ เชจเชนเซ€เช‚, เช…เชฅเชตเชพ เชคเซ‡ เชธเช‚เชชเซ‚เชฐเซเชฃเชชเชฃเซ‡ เชกเชฟเชธเซเช• เชชเชฐ เชฒเช–เชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡ เชจเชนเซ€เช‚, เช…เชจเซ‡ เชคเซ‡เชจเซเช‚ เชšเซ‡เช•เชธเชฎ เช–เซ‹เชŸเซเช‚ เชนเชถเซ‡. เช† เชฌเซ‡เชฎเชพเช‚เชฅเซ€ เช•เซ‹เชˆเชชเชฃ เช•เชฟเชธเซเชธเชพเชฎเชพเช‚, เชจเชตเชพ เชชเซƒเชทเซเช เซ‹ เช…เช—เชฎเซเชฏ เชนเชถเซ‡, เชชเชฐเช‚เชคเซ เชœเซ‚เชจเชพ เชชเซƒเชทเซเช เซ‹เชจเซ‡ เช…เชธเชฐ เชฅเชถเซ‡ เชจเชนเซ€เช‚. เช† เชกเซ‡เชŸเชพ เชธเซเชธเช‚เช—เชคเชคเชพ เชœเชพเชณเชตเชตเชพ เชฎเชพเชŸเซ‡ เช†เช—เชณ เชฒเซ‰เช— เชฒเช–เชตเชพเชจเซ€ LMDB เชจเซ€ เชœเชฐเซ‚เชฐเชฟเชฏเชพเชคเชจเซ‡ เชฆเซ‚เชฐ เช•เชฐเซ‡ เช›เซ‡. เชนเช•เซ€เช•เชคเชฎเชพเช‚, เช‰เชชเชฐ เชตเชฐเซเชฃเชตเซ‡เชฒ เชกเชฟเชธเซเช• เชชเชฐ เชกเซ‡เชŸเชพ เชธเซเชŸเซ‹เชฐเซ‡เชœเชจเซเช‚ เชฎเชพเชณเช–เซเช‚ เชเช•เชธเชพเชฅเซ‡ เชคเซ‡เชจเซเช‚ เช•เชพเชฐเซเชฏ เชฒเซ‡ เช›เซ‡. เชธเซเชชเชทเซเชŸ เชŸเซเชฐเชพเชจเซเชเซ‡เช•เซเชถเชจ เชฒเซ‹เช—เชจเซ€ เช—เซ‡เชฐเชนเชพเชœเชฐเซ€ เช LMDB เชจเซ€ เชตเชฟเชถเซ‡เชทเชคเชพเช“เชฎเชพเช‚เชจเซ€ เชเช• เช›เซ‡ เชœเซ‡ เช‰เชšเซเชš เชกเซ‡เชŸเชพ เชตเชพเช‚เชšเชตเชพเชจเซ€ เชเชกเชช เชชเซ‚เชฐเซ€ เชชเชพเชกเซ‡ เช›เซ‡.

iOS เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเซเชธเชฎเชพเช‚ เช•เซ€-เชตเซ‡เชฒเซเชฏเซ เชกเซ‡เชŸเชพเชฌเซ‡เช LMDB เชจเซ€ เชคเซ‡เชœเชธเซเชตเซ€เชคเชพ เช…เชจเซ‡ เช—เชฐเซ€เชฌเซ€

เชชเชฐเชฟเชฃเชพเชฎเซ€ เชกเชฟเชเชพเช‡เชจ, เชœเซ‡เชจเซ‡ เชเชชเซ‡เชจเซเชก-เช“เชจเซเชฒเซ€ เชฌเซ€-เชŸเซเชฐเซ€ เช•เชนเซ‡เชตเชพเชฏ เช›เซ‡, เช•เซเชฆเชฐเชคเซ€ เชฐเซ€เชคเซ‡ เชŸเซเชฐเชพเชจเซเชเซ‡เช•เซเชถเชจ เช†เช‡เชธเซ‹เชฒเซ‡เชถเชจ เช…เชจเซ‡ เชฎเชฒเซเชŸเชฟ-เชตเชฐเซเชเชจเชฟเช‚เช— เชชเซเชฐเชฆเชพเชจ เช•เชฐเซ‡ เช›เซ‡. LMDB เชฎเชพเช‚, เชฆเชฐเซ‡เช• เช“เชชเชจ เชŸเซเชฐเชพเชจเซเชเซ‡เช•เซเชถเชจ เชตเชฐเซเชคเชฎเชพเชจเชฎเชพเช‚ เชธเช‚เชฌเช‚เชงเชฟเชค เชตเซƒเช•เซเชทเชจเชพ เชฎเซ‚เชณ เชธเชพเชฅเซ‡ เชธเช‚เช•เชณเชพเชฏเซ‡เชฒเซเช‚ เช›เซ‡. เชœเซเชฏเชพเช‚ เชธเซเชงเซ€ เชŸเซเชฐเชพเชจเซเชเซ‡เช•เซเชถเชจ เชชเซ‚เชฐเซเชฃ เชจ เชฅเชพเชฏ เชคเซเชฏเชพเช‚ เชธเซเชงเซ€, เชคเซ‡เชจเซ€ เชธเชพเชฅเซ‡ เชธเช‚เช•เชณเชพเชฏเซ‡เชฒเชพ เชตเซƒเช•เซเชทเชจเชพ เชชเซƒเชทเซเช เซ‹เชจเซ‡ เช•เซเชฏเชพเชฐเซ‡เชฏ เชฌเชฆเชฒเชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡ เชจเชนเซ€เช‚ เช…เชฅเชตเชพ เชกเซ‡เชŸเชพเชจเชพ เชจเชตเชพ เชธเช‚เชธเซเช•เชฐเชฃเซ‹ เชฎเชพเชŸเซ‡ เชชเซเชจเชƒเช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡ เชจเชนเซ€เช‚. เช†เชฎ, เชคเซ‡ เชธเชฎเชฏเซ‡ เชธเช‚เชฌเช‚เชงเชฟเชค เชกเซ‡เชŸเชพเชจเชพ เชšเซ‹เช•เซเช•เชธ เชธเซ‡เชŸ เชธเชพเชฅเซ‡ เชคเชฎเชจเซ‡ เช—เชฎเซ‡ เชคเซเชฏเชพเช‚ เชธเซเชงเซ€ เชคเชฎเซ‡ เช•เชพเชฎ เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹. เช† เชธเชฎเชฏเซ‡ เชธเซเชŸเซ‹เชฐเซ‡เชœ เชธเช•เซเชฐเชฟเชฏเชชเชฃเซ‡ เช…เชชเชกเซ‡เชŸ เชฅเชตเชพเชจเซเช‚ เชšเชพเชฒเซ เชฐเชนเซ‡ เชคเซ‹ เชชเชฃ เชตเซเชฏเชตเชนเชพเชฐ เช–เซ‹เชฒเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซ‹ เชนเชคเซ‹. เช† เชฎเชฒเซเชŸเซ€เชตเชฐเซเชเชจเชจเซ‹ เชธเชพเชฐ เช›เซ‡, เชœเซ‡ LMDB เชจเซ‡ เช…เชฎเชพเชฐเชพ เชชเซเชฐเชฟเชฏเชœเชจเซ‹ เชฎเชพเชŸเซ‡ เชเช• เช†เชฆเชฐเซเชถ เชกเซ‡เชŸเชพ เชธเซเชคเซเชฐเซ‹เชค เชฌเชจเชพเชตเซ‡ เช›เซ‡ UICollectionView. เชŸเซเชฐเชพเชจเซเชเซ‡เช•เซเชถเชจ เช–เซ‹เชฒเซเชฏเชพ เชชเช›เซ€, เช•เช‚เชˆ เชฌเชพเช•เซ€ เชจ เชฐเชนเซ‡เชตเชพเชจเชพ เชกเชฐเชฅเซ€, เชตเชฐเซเชคเชฎเชพเชจ เชกเซ‡เชŸเชพเชจเซ‡ เช‰เชคเชพเชตเชณเชฅเซ€ เช•เซ‡เชŸเชฒเชพเช• เช‡เชจ-เชฎเซ‡เชฎเชฐเซ€ เชธเซเชŸเซเชฐเช•เซเชšเชฐเชฎเชพเช‚ เชชเชฎเซเชช เช•เชฐเซ€เชจเซ‡ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเชจเซ€ เชฎเซ‡เชฎเชฐเซ€ เชซเซ‚เชŸเชชเซเชฐเชฟเชจเซเชŸ เชตเชงเชพเชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เชจเชฅเซ€. เช† เชฒเช•เซเชทเชฃ LMDB เชจเซ‡ เชธเชฎเชพเชจ SQLite เชฅเซ€ เช…เชฒเช— เชชเชพเชกเซ‡ เช›เซ‡, เชœเซ‡ เช†เชตเชพ เชธเช‚เชชเซ‚เชฐเซเชฃ เช…เชฒเช—เชคเชพเชจเซ€ เชฌเชกเชพเชˆ เช•เชฐเซ€ เชถเช•เชคเซเช‚ เชจเชฅเซ€. เชฌเชพเชฆเชฎเชพเช‚ เชฌเซ‡ เชตเซเชฏเชตเชนเชพเชฐเซ‹ เช–เซ‹เชฒเซเชฏเชพ เชชเช›เซ€ เช…เชจเซ‡ เชคเซ‡เชฎเชพเช‚เชฅเซ€ เชเช•เชฎเชพเช‚ เชšเซ‹เช•เซเช•เชธ เชฐเซ‡เช•เซ‹เชฐเซเชก เช•เชพเชขเซ€ เชจเชพเช–เซเชฏเชพ เชชเช›เซ€, เชฌเชพเช•เซ€เชจเชพ เชฌเซ€เชœเชพ เชเช•เชฎเชพเช‚ เชธเชฎเชพเชจ เชฐเซ‡เช•เซ‹เชฐเซเชก เชฎเซ‡เชณเชตเชตเชพเชจเซเช‚ เชนเชตเซ‡ เชถเช•เซเชฏ เชฌเชจเชถเซ‡ เชจเชนเซ€เช‚.

เชธเชฟเช•เซเช•เชพเชจเซ€ เชซเซเชฒเชฟเชช เชฌเชพเชœเซ เช เชตเชฐเซเชšเซเชฏเซเช…เชฒ เชฎเซ‡เชฎเชฐเซ€เชจเซ‹ เชธเช‚เชญเชตเชฟเชคเชชเชฃเซ‡ เชจเซ‹เช‚เชงเชชเชพเชคเซเชฐ เชฐเซ€เชคเซ‡ เชตเชงเซ เชตเชชเชฐเชพเชถ เช›เซ‡. เช† เชธเซเชฒเชพเช‡เชก เชฌเชคเชพเชตเซ‡ เช›เซ‡ เช•เซ‡ เชกเซ‡เชŸเชพเชฌเซ‡เชเชจเซเช‚ เชฎเชพเชณเช–เซเช‚ เช•เซ‡เชตเซเช‚ เชฆเซ‡เช–เชพเชถเซ‡ เชœเซ‹ เชคเซ‡ เชกเซ‡เชŸเชพเชฌเซ‡เชเชจเชพ เชตเชฟเชตเชฟเชง เชธเช‚เชธเซเช•เชฐเชฃเซ‹เชจเซ‡ เชœเซ‹เชคเชพ 3 เช“เชชเชจ เชฐเซ€เชก เชŸเซเชฐเชพเชจเซเชเซ‡เช•เซเชถเชจ เชธเชพเชฅเซ‡ เชเช•เชธเชพเชฅเซ‡ เชธเช‚เชถเซ‹เชงเชฟเชค เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡. LMDB เชตเชฐเซเชคเชฎเชพเชจ เชตเซเชฏเชตเชนเชพเชฐเซ‹ เชธเชพเชฅเซ‡ เชธเช‚เช•เชณเชพเชฏเซ‡เชฒเชพ เชฎเซ‚เชณเชฎเชพเช‚เชฅเซ€ เชชเชนเซ‹เช‚เชšเซ€ เชถเช•เชพเชฏ เชคเซ‡เชตเชพ เชจเซ‹เชกเซเชธเชจเซ‹ เชชเซเชจเชƒเช‰เชชเชฏเซ‹เช— เช•เชฐเซ€ เชถเช•เชคเซเช‚ เชจเชฅเซ€, เชคเซ‡เชฅเซ€ เชธเซเชŸเซ‹เชฐ เชชเชพเชธเซ‡ เชฎเซ‡เชฎเชฐเซ€เชฎเชพเช‚ เชฌเซ€เชœเซเช‚ เชšเซ‹เชฅเซเช‚ เชฐเซเชŸ เชซเชพเชณเชตเชตเชพ เช…เชจเซ‡ เชคเซ‡เชจเชพ เชนเซ‡เช เชณ เชธเช‚เชถเซ‹เชงเชฟเชค เชชเซƒเชทเซเช เซ‹เชจเซ‡ เชซเชฐเซ€เชฅเซ€ เช•เซเชฒเซ‹เชจ เช•เชฐเชตเชพ เชธเชฟเชตเชพเชฏ เช•เซ‹เชˆ เชตเชฟเช•เชฒเซเชช เชจเชฅเซ€.

iOS เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเซเชธเชฎเชพเช‚ เช•เซ€-เชตเซ‡เชฒเซเชฏเซ เชกเซ‡เชŸเชพเชฌเซ‡เช LMDB เชจเซ€ เชคเซ‡เชœเชธเซเชตเซ€เชคเชพ เช…เชจเซ‡ เช—เชฐเซ€เชฌเซ€

เช…เชนเซ€เช‚ เชฎเซ‡เชฎเชฐเซ€-เชฎเซ‡เชช เช•เชฐเซ‡เชฒเซ€ เชซเชพเช‡เชฒเซ‹ เชชเชฐเชจเซ‹ เชตเชฟเชญเชพเช— เชฏเชพเชฆ เช•เชฐเชตเซ‹ เช‰เชชเชฏเซ‹เช—เซ€ เชฅเชถเซ‡. เชเชตเซเช‚ เชฒเชพเช—เซ‡ เช›เซ‡ เช•เซ‡ เชตเชฐเซเชšเซเชฏเซเช…เชฒ เชฎเซ‡เชฎเชฐเซ€เชจเชพ เชตเชงเชพเชฐเชพเชจเชพ เชตเชชเชฐเชพเชถเชฅเซ€ เช…เชฎเชจเซ‡ เชตเชงเซ เชšเชฟเช‚เชคเชพ เชจ เชฅเชตเซ€ เชœเซ‹เชˆเช, เช•เชพเชฐเชฃ เช•เซ‡ เชคเซ‡ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเชจเชพ เชฎเซ‡เชฎเชฐเซ€ เชซเซ‚เชŸเชชเซเชฐเชฟเชจเซเชŸเชฎเชพเช‚ เชซเชพเชณเซ‹ เช†เชชเชคเซเช‚ เชจเชฅเซ€. เชœเซ‹ เช•เซ‡, เชคเซ‡ เชœ เชธเชฎเชฏเซ‡, เช เชจเซ‹เช‚เชงเซเชฏเซเช‚ เชนเชคเซเช‚ เช•เซ‡ iOS เชคเซ‡เชจเซ‡ เชซเชพเชณเชตเชตเชพเชฎเชพเช‚ เช–เซ‚เชฌ เช•เช‚เชœเซ‚เชธ เช›เซ‡, เช…เชจเซ‡ เช…เชฎเซ‡ เชธเชฐเซเชตเชฐ เช…เชฅเชตเชพ เชกเซ‡เชธเซเช•เชŸเซ‹เชชเชจเซ€ เชœเซ‡เชฎ, 1 เชŸเซ‡เชฐเชพเชฌเชพเช‡เชŸเชจเซ‹ LMDB เชชเซเชฐเชฆเซ‡เชถ เชชเซเชฐเชฆเชพเชจ เช•เชฐเซ€ เชถเช•เชคเชพ เชจเชฅเซ€ เช…เชจเซ‡ เช† เชธเซเชตเชฟเชงเชพ เชตเชฟเชถเซ‡ เชฌเชฟเชฒเช•เซเชฒ เชตเชฟเชšเชพเชฐเซ€ เชถเช•เชคเชพ เชจเชฅเซ€. เชœเซ‹ เชถเช•เซเชฏ เชนเซ‹เชฏ เชคเซ‹, เชคเชฎเชพเชฐเซ‡ เชตเซเชฏเชตเชนเชพเชฐเซ‹เชจเซเช‚ เชœเซ€เชตเชจเช•เชพเชณ เชถเช•เซเชฏ เชคเซ‡เชŸเชฒเซเช‚ เชŸเซ‚เช‚เช•เซเช‚ เชฌเชจเชพเชตเชตเชพเชจเซ‹ เชชเซเชฐเชฏเชพเชธ เช•เชฐเชตเซ‹ เชœเซ‹เชˆเช.

4. เช•เซ€-เชตเซ‡เชฒเซเชฏเซ API เชจเซ€ เชŸเซ‹เชš เชชเชฐ เชกเซ‡เชŸเชพ เชธเซเช•เซ€เชฎเชพ เชกเชฟเชเชพเช‡เชจ เช•เชฐเชตเซ€

เชšเชพเชฒเซ‹ LMDB เชฆเซเชตเชพเชฐเชพ เชชเซเชฐเชฆเชพเชจ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡เชฒ เชฎเซ‚เชณเชญเซ‚เชค เช…เชฎเซ‚เชฐเซเชคเชคเชพเช“เชจเซ‡ เชœเซ‹เชˆเชจเซ‡ เช…เชฎเชพเชฐเชพ API เชตเชฟเชถเซเชฒเซ‡เชทเชฃเชจเซ€ เชถเชฐเซ‚เช†เชค เช•เชฐเซ€เช: เชชเชฐเซเชฏเชพเชตเชฐเชฃ เช…เชจเซ‡ เชกเซ‡เชŸเชพเชฌเซ‡เชธเซ‡เชธ, เช•เซ€ เช…เชจเซ‡ เชฎเซ‚เชฒเซเชฏเซ‹, เชตเซเชฏเชตเชนเชพเชฐเซ‹ เช…เชจเซ‡ เช•เชฐเซเชธเชฐ.

เช•เซ‹เชก เชธเซ‚เชšเชฟเช“ เชตเชฟเชถเซ‡ เชจเซ‹เช‚เชง

เชธเชพเชฐเซเชตเชœเชจเชฟเช• LMDB API เชฎเชพเช‚เชจเชพ เชคเชฎเชพเชฎ เช•เชพเชฐเซเชฏเซ‹ เชคเซ‡เชฎเชจเชพ เช•เชพเชฐเซเชฏเชจเซเช‚ เชชเชฐเชฟเชฃเชพเชฎ เชญเซ‚เชฒ เช•เซ‹เชกเชจเชพ เชฐเซ‚เชชเชฎเชพเช‚ เชชเชฐเชค เช•เชฐเซ‡ เช›เซ‡, เชชเชฐเช‚เชคเซ เชชเช›เซ€เชจเซ€ เชคเชฎเชพเชฎ เชธเซ‚เชšเชฟเช“เชฎเชพเช‚ เชธเช‚เช•เซเชทเชฟเชชเซเชคเชคเชพ เช–เชพเชคเชฐ เชคเซ‡เชจเซ€ เชšเช•เชพเชธเชฃเซ€ เช…เชตเช—เชฃเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡. เช•เชพเช‚เชŸเซ‹ C++ เชฐเซ‡เชชเชฐเซเชธ lmdbxx, เชœเซ‡เชฎเชพเช‚ เชญเซ‚เชฒเซ‹เชจเซ‡ C++ เช…เชชเชตเชพเชฆเซ‹ เชคเชฐเซ€เช•เซ‡ เชธเชพเช•เชพเชฐ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡.

IOS เช…เชฅเชตเชพ macOS เชฎเชพเชŸเซ‡เชจเชพ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸ เชธเชพเชฅเซ‡ LMDB เชจเซ‡ เช•เชจเซ‡เช•เซเชŸ เช•เชฐเชตเชพเชจเซ€ เชธเซŒเชฅเซ€ เชเชกเชชเซ€ เชฐเซ€เชค เชคเชฐเซ€เช•เซ‡, เชนเซเช‚ เชฎเชพเชฐเชพ เช•เซ‹เช•เซ‹เชชเซ‹เชกเชจเซเช‚ เชธเซ‚เชšเชจ เช•เชฐเซเช‚ เช›เซเช‚ POSLMDB.

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 เช•เซเชฒเชพเช‰เชก เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเชฎเชพเช‚, เช…เชฎเซ‡ เชซเช•เซเชค เชฌเซ‡ เชชเชฐเชฟเชฎเชพเชฃเซ‹เชจเชพ เชกเชฟเชซเซ‰เชฒเซเชŸ เชฎเซ‚เชฒเซเชฏเซ‹ เชฌเชฆเชฒเซเชฏเชพเช‚ เช›เซ‡.

เชชเซเชฐเชฅเชฎ เชตเชฐเซเชšเซเชฏเซเช…เชฒ เชเชกเซเชฐเซ‡เชธ เชธเซเชชเซ‡เชธเชจเซเช‚ เช•เชฆ เช›เซ‡ เชœเซ‡เชจเชพ เชชเชฐ เชธเซเชŸเซ‹เชฐเซ‡เชœ เชซเชพเช‡เชฒ เชฎเซ‡เชช เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ€ เช›เซ‡. เช•เชฎเชจเชธเซ€เชฌเซ‡, เชธเชฎเชพเชจ เช‰เชชเช•เชฐเชฃ เชชเชฐ เชชเชฃ, เชšเซ‹เช•เซเช•เชธ เชฎเซ‚เชฒเซเชฏ เชฐเชจเชฅเซ€ เชฐเชจ เชธเซเชงเซ€ เชจเซ‹เช‚เชงเชชเชพเชคเซเชฐ เชฐเซ€เชคเซ‡ เชฌเชฆเชฒเชพเชˆ เชถเช•เซ‡ เช›เซ‡. iOS เชจเซ€ เช† เชธเซเชตเชฟเชงเชพเชจเซ‡ เชงเซเชฏเชพเชจเชฎเชพเช‚ เชฒเซ‡เชตเชพ เชฎเชพเชŸเซ‡, เชฎเชนเชคเซเชคเชฎ เชธเซเชŸเซ‹เชฐเซ‡เชœ เชตเซ‹เชฒเซเชฏเซเชฎ เช—เชคเชฟเชถเซ€เชฒ เชฐเซ€เชคเซ‡ เชชเชธเช‚เชฆ เชฅเชฏเซ‡เชฒ เช›เซ‡. เชšเซ‹เช•เซเช•เชธ เชฎเซ‚เชฒเซเชฏเชฅเซ€ เชถเชฐเซ‚ เช•เชฐเซ€เชจเซ‡, เชคเซ‡ เชซเช‚เช•เซเชถเชจ เชธเซเชงเซ€ เช•เซเชฐเชฎเชฟเช• เชฐเซ€เชคเซ‡ เช…เชกเชงเซเช‚ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡ mdb_env_open เชฅเซ€ เช…เชฒเช— เชชเชฐเชฟเชฃเชพเชฎ เช†เชชเชถเซ‡ เชจเชนเซ€เช‚ ENOMEM. เชธเซˆเชฆเซเชงเชพเช‚เชคเชฟเช• เชฐเซ€เชคเซ‡, เชคเซเชฏเชพเช‚ เชตเชฟเชชเชฐเซ€เชค เชฐเซ€เชค เชชเชฃ เช›เซ‡ - เชชเซเชฐเชฅเชฎ เชเชจเซเชœเชฟเชจเชจเซ‡ เชจเซเชฏเซ‚เชจเชคเชฎ เชฎเซ‡เชฎเชฐเซ€ เชซเชพเชณเชตเซ‹, เช…เชจเซ‡ เชชเช›เซ€, เชœเซเชฏเชพเชฐเซ‡ เชญเซ‚เชฒเซ‹ เชชเซเชฐเชพเชชเซเชค เชฅเชพเชฏ เช›เซ‡, MDB_MAP_FULL, เชคเซ‡เชจเซ‡ เชตเชงเชพเชฐเซ‹. เชœเซ‹ เช•เซ‡, เชคเซ‡ เชตเชงเซ เช•เชพเช‚เชŸเชพเชตเชพเชณเซเช‚ เช›เซ‡. เช•เชพเชฐเชฃ เช เช›เซ‡ เช•เซ‡ เชซเช‚เช•เซเชถเชจเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชฎเซ‡เชฎเชฐเซ€ (เชฐเชฟเชฎเซ‡เชช) เชซเชฐเซ€เชฅเซ€ เชซเชพเชณเชตเชตเชพเชจเซ€ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ mdb_env_set_map_size เชเชจเซเชœเซ€เชจเชฎเชพเช‚เชฅเซ€ เช…เช—เชพเช‰ เชชเซเชฐเชพเชชเซเชค เชฅเชฏเซ‡เชฒ เชคเชฎเชพเชฎ เชเช•เชฎเซ‹ (เช•เชฐเซเชธเชฐ, เชตเซเชฏเชตเชนเชพเชฐเซ‹, เช•เซ€ เช…เชจเซ‡ เชฎเซ‚เชฒเซเชฏเซ‹) เช…เชฎเชพเชจเซเชฏ เช•เชฐเซ‡ เช›เซ‡. เช•เซ‹เชกเชฎเชพเช‚ เช˜เชŸเชจเชพเช“เชจเชพ เช† เชตเชณเชพเช‚เช•เชจเซ‡ เชงเซเชฏเชพเชจเชฎเชพเช‚ เชฒเซ‡เชตเชพเชฅเซ€ เชคเซ‡เชจเซ€ เชจเซ‹เช‚เชงเชชเชพเชคเซเชฐ เช—เซ‚เช‚เชšเชตเชฃเซ‹ เชฅเชถเซ‡. เชœเซ‹, เชœเซ‹ เช•เซ‡, เชตเชฐเซเชšเซเชฏเซเช…เชฒ เชฎเซ‡เชฎเชฐเซ€ เชคเชฎเชพเชฐเชพ เชฎเชพเชŸเซ‡ เช–เซ‚เชฌ เชœ เชฎเชนเชคเซเชตเชชเซ‚เชฐเซเชฃ เช›เซ‡, เชคเซ‹ เช† เช•เชพเช‚เชŸเชพเชจเซ‡ เชจเชœเซ€เช•เชฅเซ€ เชœเซ‹เชตเชพเชจเซเช‚ เช•เชพเชฐเชฃ เชนเซ‹เชˆ เชถเช•เซ‡ เช›เซ‡ เชœเซ‡ เช–เซ‚เชฌ เช†เช—เชณ เชตเชงเซ€ เช—เชฏเซเช‚ เช›เซ‡. MDBX, เชœเซเชฏเชพเช‚ เช˜เซ‹เชทเชฟเชค เชธเซเชตเชฟเชงเชพเช“เชฎเชพเช‚ "เช“เชŸเซ‹เชฎเซ‡เชŸเชฟเช• เช“เชจ-เชง-เชซเซเชฒเชพเชฏ เชกเซ‡เชŸเชพเชฌเซ‡เช เชธเชพเช‡เช เชเชกเชœเชธเซเชŸเชฎเซ‡เชจเซเชŸ" เช›เซ‡.

เชฌเซ€เชœเซเช‚ เชชเชฐเชฟเชฎเชพเชฃ, เชœเซ‡เชจเซเช‚ เชกเชฟเชซเซ‰เชฒเซเชŸ เชฎเซ‚เชฒเซเชฏ เช…เชฎเชจเซ‡ เช…เชจเซเช•เซ‚เชณ เชจ เชนเชคเซเช‚, เชฅเซเชฐเซ‡เชก เชธเชฒเชพเชฎเชคเซ€ เชธเซเชจเชฟเชถเซเชšเชฟเชค เช•เชฐเชตเชพเชจเชพ เชฎเชฟเช•เซ‡เชจเชฟเช•เซเชธเชจเซเช‚ เชจเชฟเชฏเชฎเชจ เช•เชฐเซ‡ เช›เซ‡. เช•เชฎเชจเชธเซ€เชฌเซ‡, เช“เช›เชพเชฎเชพเช‚ เช“เช›เชพ iOS 10 เชจเซ‡ เชฅเซเชฐเซ‡เชก เชฒเซ‹เช•เชฒ เชธเซเชŸเซ‹เชฐเซ‡เชœ เชฎเชพเชŸเซ‡ เชธเชชเซ‹เชฐเซเชŸ เชธเชพเชฅเซ‡ เชธเชฎเชธเซเชฏเชพ เช›เซ‡. เช† เช•เชพเชฐเชฃเซ‹เชธเชฐ, เช‰เชชเชฐเชจเชพ เช‰เชฆเชพเชนเชฐเชฃเชฎเชพเช‚, เชฐเซ€เชชเซ‹เชเซ€เชŸเชฐเซ€ เชงเซเชตเชœ เชธเชพเชฅเซ‡ เช–เซ‹เชฒเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡ MDB_NOTLS. เช† เช‰เชชเชฐเชพเช‚เชค เชคเซ‡ เชœเชฐเซ‚เชฐเซ€ เชชเชฃ เชนเชคเซเช‚ เช•เชพเช‚เชŸเซ‹ C++ เชฐเซ‡เชชเชฐ lmdbxxเช† เชเชŸเซเชฐเชฟเชฌเซเชฏเซเชŸ เชธเชพเชฅเซ‡ เช…เชจเซ‡ เชคเซ‡เชฎเชพเช‚ เชตเซ‡เชฐเซ€เชเชฌเชฒเซเชธเชจเซ‡ เช•เชพเชชเชตเชพ เชฎเชพเชŸเซ‡.

เชกเซ‡เชŸเชพเชฌเซ‡เชธเซ‡เชธ

เชกเซ‡เชŸเชพเชฌเซ‡เช เช เชเช• เช…เชฒเช— เชฌเซ€-เชŸเซเชฐเซ€ เช‰เชฆเชพเชนเชฐเชฃ เช›เซ‡, เชœเซ‡เชจเซ€ เช†เชชเชฃเซ‡ เช‰เชชเชฐ เชšเชฐเซเชšเชพ เช•เชฐเซ€ เช›เซ‡. เชคเซ‡เชจเซเช‚ เช“เชชเชจเชฟเช‚เช— เชŸเซเชฐเชพเชจเซเชเซ‡เช•เซเชถเชจเชจเซ€ เช…เช‚เชฆเชฐ เชฅเชพเชฏ เช›เซ‡, เชœเซ‡ เชถเชฐเซ‚เช†เชคเชฎเชพเช‚ เชฅเซ‹เชกเซเช‚ เชตเชฟเชšเชฟเชคเซเชฐ เชฒเชพเช—เซ‡ เช›เซ‡.

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;โ€‹โ€‹

เช•เชฎเซเชชเซ‡เชฐเซ‡เชŸเชฐเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡, เชธเซเชŸเซ‹เชฐ เชšเชพเชตเซ€เช“เชจเซ‡ เชšเชกเชคเชพ เช•เซเชฐเชฎเชฎเชพเช‚ เชธเซ‰เชฐเซเชŸ เช•เชฐเซ‡ เช›เซ‡. เชœเซ‹ เชคเชฎเซ‡ เชคเซ‡เชจเซ‡ เชคเชฎเชพเชฐเซ€ เชชเซ‹เชคเชพเชจเซ€ เชธเชพเชฅเซ‡ เชฌเชฆเชฒเซ‹ เชจเชนเซ€เช‚, เชคเซ‹ เชกเชฟเชซเซ‹เชฒเซเชŸเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡, เชœเซ‡ เชคเซ‡เชจเซ‡ เชฒเซ‡เช•เซเชธเชฟเช•เซ‹เช—เซเชฐเชพเชซเชฟเช• เช•เซเชฐเชฎเชฎเชพเช‚ เชฌเชพเช‡เชŸ-เชฌเชพเชฏ-เชฌเชพเช‡เชŸ เชธเซ‰เชฐเซเชŸ เช•เชฐเซ‡ เช›เซ‡.

เชตเซเชฏเชตเชนเชพเชฐ

เชŸเซเชฐเชพเชจเซเชเซ‡เช•เซเชถเชจ เชฎเชพเชณเช–เซเช‚ เชตเชฟเช—เชคเชตเชพเชฐ เชฎเชพเช‚ เชตเชฐเซเชฃเชตเซ‡เชฒ เช›เซ‡ เช…เช—เชพเช‰เชจเซ‹ เชชเซเชฐเช•เชฐเชฃ, เชคเซ‡เชฅเซ€ เช…เชนเซ€เช‚ เชนเซเช‚ เชคเซ‡เชฎเชจเชพ เชฎเซเช–เซเชฏ เช—เซเชฃเชงเชฐเซเชฎเซ‹เชจเซ‡ เชธเช‚เช•เซเชทเชฟเชชเซเชคเชฎเชพเช‚ เชชเซเชจเชฐเชพเชตเชฐเซเชคเชจ เช•เชฐเซ€เชถ:

  1. เชคเชฎเชพเชฎ เชฎเซ‚เชณเชญเซ‚เชค เช—เซเชฃเชงเชฐเซเชฎเซ‹เชจเซ‡ เชธเชชเซ‹เชฐเซเชŸ เช•เชฐเซ‡ เช›เซ‡ ACID: เชชเชฐเชฎเชพเชฃเซ, เชธเซเชธเช‚เช—เชคเชคเชพ, เช…เชฒเช—เชคเชพ เช…เชจเซ‡ เชตเชฟเชถเซเชตเชธเชจเซ€เชฏเชคเชพ. เชนเซเช‚ เชฎเชฆเชฆ เช•เชฐเซ€ เชถเช•เชคเซ‹ เชจเชฅเซ€ เชชเชฐเช‚เชคเซ เชจเซ‹เช‚เชง เช•เชฐเซ‹ เช•เซ‡ macOS เช…เชจเซ‡ iOS เชชเชฐ เชŸเช•เชพเช‰เชชเชฃเซเช‚เชจเชพ เชธเช‚เชฆเชฐเซเชญเชฎเชพเช‚ เชเช• เชฌเช— เช›เซ‡ เชœเซ‡ MDBX เชฎเชพเช‚ เช เซ€เช• เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซ‹ เชนเชคเซ‹. เชคเชฎเซ‡ เชคเซ‡เชฎเชจเชพเชฎเชพเช‚ เชตเชงเซ เชตเชพเช‚เชšเซ€ เชถเช•เซ‹ เช›เซ‹ README.
  2. เชฎเชฒเซเชŸเชฟเชฅเซเชฐเซ‡เชกเชฟเช‚เช—เชจเซ‹ เช…เชญเชฟเช—เชฎ "เชธเชฟเช‚เช—เชฒ เชฐเชพเช‡เชŸเชฐ / เชฌเชนเซเชตเชฟเชง เชตเชพเชšเช•เซ‹" เชธเซเช•เซ€เชฎ เชฆเซเชตเชพเชฐเชพ เชตเชฐเซเชฃเชตเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซ‹ เช›เซ‡. เชฒเซ‡เช–เช•เซ‹ เชเช•เชฌเซ€เชœเชพเชจเซ‡ เช…เชตเชฐเซ‹เชงเซ‡ เช›เซ‡, เชชเชฐเช‚เชคเซ เชตเชพเชšเช•เซ‹เชจเซ‡ เช…เชตเชฐเซ‹เชงเชฟเชค เช•เชฐเชคเชพ เชจเชฅเซ€. เชตเชพเชšเช•เซ‹ เชฒเซ‡เช–เช•เซ‹ เช•เซ‡ เชเช•เชฌเซ€เชœเชพเชจเซ‡ เช…เชตเชฐเซ‹เชงเชคเชพ เชจเชฅเซ€.
  3. เชจเซ‡เชธเซเชŸเซ‡เชก เชตเซเชฏเชตเชนเชพเชฐเซ‹ เชฎเชพเชŸเซ‡ เช†เชงเชพเชฐ.
  4. เชฎเชฒเซเชŸเซ€เชตเชฐเซเชเชจ เชธเชชเซ‹เชฐเซเชŸ.

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 เชธเชพเชฅเซ‡ เชธเชฎเชพเชจ เชฏเซเช•เซเชคเชฟเชจเซ‹ เชชเซเชฐเชฏเชพเชธ เช•เชฐเซ‹ เช…เชจเซ‡ เชœเซเช“ เช•เซ‡ เชถเซเช‚ เชฅเชพเชฏ เช›เซ‡.

เชฎเชฒเซเชŸเซ€เชตเชฐเซเชเชจ iOS เชกเซ‡เชตเชฒเชชเชฐเชจเชพ เชœเซ€เชตเชจเชฎเชพเช‚ เช–เซ‚เชฌ เชœ เชธเชฐเชธ เชฒเชพเชญ เชฒเชพเชตเซ‡ เช›เซ‡. เช† เช—เซเชฃเชงเชฐเซเชฎเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡, เชคเชฎเซ‡ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพ เช…เชจเซเชญเชตเชจเซ€ เชตเชฟเชšเชพเชฐเชฃเชพเช“เชจเชพ เช†เชงเชพเชฐเซ‡, เชธเซเช•เซเชฐเซ€เชจ เชธเซเชตเชฐเซ‚เชชเซ‹ เชฎเชพเชŸเซ‡ เชกเซ‡เชŸเชพ เชธเซเชฐเซ‹เชคเชจเชพ เช…เชชเชกเซ‡เชŸ เชฆเชฐเชจเซ‡ เชธเชฐเชณเชคเชพเชฅเซ€ เช…เชจเซ‡ เช•เซเชฆเชฐเชคเซ€ เชฐเซ€เชคเซ‡ เชธเชฎเชพเชฏเซ‹เชœเชฟเชค เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹. เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชšเชพเชฒเซ‹ Mail.ru เช•เซเชฒเชพเช‰เชก เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเชจเซ€ เชเช• เชตเชฟเชถเซ‡เชทเชคเชพ เชฒเชˆเช เชœเซ‡เชฎ เช•เซ‡ เชธเชฟเชธเซเชŸเชฎ เชฎเซ€เชกเชฟเชฏเชพ เช—เซ‡เชฒเซ‡เชฐเซ€เชฎเชพเช‚เชฅเซ€ เชธเชพเชฎเช—เซเชฐเซ€ เช“เชŸเซ‹เชฒเซ‹เชก เช•เชฐเชตเซ€. เชธเชพเชฐเชพ เช•เชจเซ‡เช•เซเชถเชจ เชธเชพเชฅเซ‡, เช•เซเชฒเชพเชฏเช‚เชŸ เชธเชฐเซเชตเชฐ เชชเชฐ เชธเซ‡เช•เชจเซเชก เชฆเซ€เช  เช˜เชฃเชพ เชซเซ‹เชŸเชพ เช‰เชฎเซ‡เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชธเช•เซเชทเชฎ เช›เซ‡. เชœเซ‹ เชคเชฎเซ‡ เชฆเชฐเซ‡เช• เชกเชพเช‰เชจเชฒเซ‹เชก เชชเช›เซ€ เช…เชชเชกเซ‡เชŸ เช•เชฐเซ‹ เช›เซ‹ UICollectionView เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพเชจเชพ เช•เซเชฒเชพเช‰เชกเชฎเชพเช‚ เชฎเซ€เชกเชฟเชฏเชพ เชธเชพเชฎเช—เซเชฐเซ€ เชธเชพเชฅเซ‡, เชคเชฎเซ‡ เช† เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เชฆเชฐเชฎเชฟเชฏเชพเชจ เชฒเช—เชญเช— 60 fps เช…เชจเซ‡ เชธเชฐเชณ เชธเซเช•เซเชฐเซ‹เชฒเชฟเช‚เช— เชญเซ‚เชฒเซ€ เชถเช•เซ‹ เช›เซ‹. เชตเชพเชฐเช‚เชตเชพเชฐ เชธเซเช•เซเชฐเซ€เชจ เช…เชชเชกเซ‡เชŸเซเชธเชจเซ‡ เชฐเซ‹เช•เชตเชพ เชฎเชพเชŸเซ‡, เชคเชฎเชพเชฐเซ‡ เช•เซ‹เชˆ เชฐเซ€เชคเซ‡ เชคเซ‡ เชฆเชฐเชจเซ‡ เชฎเชฐเซเชฏเชพเชฆเชฟเชค เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡ เช•เซ‡ เชœเซ‡เชจเชพ เชชเชฐ เชกเซ‡เชŸเชพ เช…เช‚เชคเชฐเซเช—เชคเชฎเชพเช‚ เชซเซ‡เชฐเชซเชพเชฐ เชฅเชพเชฏ เช›เซ‡ UICollectionViewDataSource.

เชœเซ‹ เชกเซ‡เชŸเชพเชฌเซ‡เช เชฎเชฒเซเชŸเซ€เชตเชฐเซเชเชจเชจเซ‡ เชธเชชเซ‹เชฐเซเชŸ เช•เชฐเชคเซเช‚ เชจเชฅเซ€ เช…เชจเซ‡ เชคเชฎเชจเซ‡ เชซเช•เซเชค เชตเชฐเซเชคเชฎเชพเชจ เชตเชฐเซเชคเชฎเชพเชจ เชธเซเชฅเชฟเชคเชฟ เชธเชพเชฅเซ‡ เช•เชพเชฎ เช•เชฐเชตเชพเชจเซ€ เชฎเช‚เชœเซ‚เชฐเซ€ เช†เชชเซ‡ เช›เซ‡, เชคเซ‹ เชกเซ‡เชŸเชพเชจเซ‹ เชธเชฎเชฏ-เชธเซเชฅเชฟเชฐ เชธเซเชจเซ‡เชชเชถเซ‹เชŸ เชฌเชจเชพเชตเชตเชพ เชฎเชพเชŸเซ‡ เชคเชฎเชพเชฐเซ‡ เชคเซ‡เชจเซ‡ เช…เชฎเซเช• เช‡เชจ-เชฎเซ‡เชฎเชฐเซ€ เชกเซ‡เชŸเชพ เชธเซเชŸเซเชฐเช•เซเชšเชฐ เช…เชฅเชตเชพ เช…เชธเซเชฅเชพเชฏเซ€ เช•เซ‹เชทเซเชŸเช•เชฎเชพเช‚ เช•เซ‰เชชเชฟ เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡. เช†เชฎเชพเช‚เชฅเซ€ เช•เซ‹เชˆเชชเชฃ เช…เชญเชฟเช—เชฎ เช–เซ‚เชฌ เช–เชฐเซเชšเชพเชณ เช›เซ‡. เช‡เชจ-เชฎเซ‡เชฎเชฐเซ€ เชธเซเชŸเซ‹เชฐเซ‡เชœเชจเชพ เช•เชฟเชธเซเชธเชพเชฎเชพเช‚, เช…เชฎเชจเซ‡ เชฎเซ‡เชฎเชฐเซ€เชฎเชพเช‚ เชฌเช‚เชจเซ‡ เช–เชฐเซเชš เชฎเชณเซ‡ เช›เซ‡, เชœเซ‡ เชฌเชพเช‚เชงเชตเชพเชฎเชพเช‚ เช†เชตเซ‡เชฒเซ€ เชตเชธเซเชคเซเช“เชจเซ‡ เชธเช‚เช—เซเชฐเชนเชฟเชค เช•เชฐเชตเชพเชจเซ‡ เช•เชพเชฐเชฃเซ‡ เชฅเชพเชฏ เช›เซ‡ เช…เชจเซ‡ เชธเชฎเชฏ เชœเชคเชพเช‚, เชฌเชฟเชจเชœเชฐเซ‚เชฐเซ€ ORM เชชเชฐเชฟเชตเชฐเซเชคเชจเซ‹ เชธเชพเชฅเซ‡ เชธเช‚เช•เชณเชพเชฏเซ‡เชฒเชพ เช›เซ‡. เช…เชธเซเชฅเชพเชฏเซ€ เช•เซ‹เชทเซเชŸเช•เชจเซ€ เชตเชพเชค เช•เชฐเซ€เช เชคเซ‹, เช† เชเช• เชตเชงเซ เช–เชฐเซเชšเชพเชณ เช†เชจเช‚เชฆ เช›เซ‡, เชœเซ‡ เชซเช•เซเชค เชฌเชฟเชจ-เชคเซเชšเซเช› เช•เซ‡เชธเซ‹เชฎเชพเช‚ เชœ เช…เชฐเซเชฅเชชเซ‚เชฐเซเชฃ เช›เซ‡.

เชเชฒเชเชฎเชกเซ€เชฌเซ€เชจเซเช‚ เชฎเชฒเซเชŸเซ€เชตเชฐเซเชเชจ เชธเซ‹เชฒเซเชฏเซเชถเชจ เชธเซเชฅเชฟเชฐ เชกเซ‡เชŸเชพ เชธเซเชคเซเชฐเซ‹เชค เชœเชพเชณเชตเชตเชพเชจเซ€ เชธเชฎเชธเซเชฏเชพเชจเซ‡ เช–เซ‚เชฌ เชœ เชญเชตเซเชฏ เชฐเซ€เชคเซ‡ เชนเชฒ เช•เชฐเซ‡ เช›เซ‡. เชคเซ‡ เชฎเชพเชคเซเชฐ เชเช• เชตเซเชฏเชตเชนเชพเชฐ เช…เชจเซ‡ เชตเซ‹เช‡เชฒเชพ เช–เซ‹เชฒเชตเชพ เชฎเชพเชŸเซ‡ เชชเซ‚เชฐเชคเซเช‚ เช›เซ‡ - เชœเซเชฏเชพเช‚ เชธเซเชงเซ€ เช…เชฎเซ‡ เชคเซ‡เชจเซ‡ เชชเซ‚เชฐเซเชฃ เชจ เช•เชฐเซ€เช, เชคเซเชฏเชพเช‚ เชธเซเชงเซ€ เชกเซ‡เชŸเชพ เชธเซ‡เชŸ เชจเชฟเชถเซเชšเชฟเชค เชฅเชตเชพเชจเซ€ เช–เชพเชคเชฐเซ€ เช†เชชเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡. เชคเซ‡เชจเซ€ เช…เชชเชกเซ‡เชŸ เชธเซเชชเซ€เชก เชฎเชพเชŸเซ‡เชจเซ‹ เชคเชฐเซเช• เชนเชตเซ‡ เชธเช‚เชชเซ‚เชฐเซเชฃ เชฐเซ€เชคเซ‡ เชชเซเชฐเซ‡เชเชจเซเชŸเซ‡เชถเชจ เชฒเซ‡เชฏเชฐเชจเชพ เชนเชพเชฅเชฎเชพเช‚ เช›เซ‡, เชœเซ‡เชฎเชพเช‚ เชจเซ‹เช‚เชงเชชเชพเชคเซเชฐ เชธเช‚เชธเชพเชงเชจเซ‹เชจเซ‹ เช•เซ‹เชˆ เช“เชตเชฐเชนเซ‡เชก เชจเชฅเซ€.

เช•เชฐเซเชธเชฐ

เช•เชฐเซเชธเชฐ เชฌเซ€-เชŸเซเชฐเซ€ เชŸเซเชฐเชพเชตเชฐเซเชธเชฒ เชฆเซเชตเชพเชฐเชพ เช•เซ€-เชตเซ‡เชฒเซเชฏเซ เชœเซ‹เชกเซ€ เชชเชฐ เชตเซเชฏเชตเชธเซเชฅเชฟเชค เชฐเซ€เชคเซ‡ เชชเซเชจเชฐเชพเชตเชฐเซเชคเชฟเชค เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชเช• เชชเชฆเซเชงเชคเชฟ เชชเซเชฐเชฆเชพเชจ เช•เชฐเซ‡ เช›เซ‡. เชคเซ‡เชฎเชจเชพ เชตเชฟเชจเชพ, เชกเซ‡เชŸเชพเชฌเซ‡เชเชฎเชพเช‚ เช•เซ‹เชทเซเชŸเช•เซ‹เชจเซเช‚ เช…เชธเชฐเช•เชพเชฐเช• เชฐเซ€เชคเซ‡ เชฎเซ‹เชกเซ‡เชฒ เชฌเชจเชพเชตเชตเซเช‚ เช…เชถเช•เซเชฏ เชนเชถเซ‡, เชœเซ‡ เช†เชชเชฃเซ‡ เชนเชตเซ‡ เชšเชพเชฒเซ เช•เชฐเซ€เช เช›เซ€เช.

4.2. เชŸเซ‡เชฌเชฒ เชฎเซ‹เชกเซ‡เชฒเชฟเช‚เช—

เช•เซ€ เช“เชฐเซเชกเชฐเชฟเช‚เช—เชจเซ€ เชฎเชฟเชฒเช•เชค เชคเชฎเชจเซ‡ เช‰เชšเซเชš-เชธเซเชคเชฐเชจเซ€ เชเชฌเซเชธเซเชŸเซเชฐเซ‡เช•เซเชถเชจ เชฌเชจเชพเชตเชตเชพเชจเซ€ เชฎเช‚เชœเซ‚เชฐเซ€ เช†เชชเซ‡ เช›เซ‡ เชœเซ‡เชฎ เช•เซ‡ เชฎเซ‚เชณเชญเซ‚เชค เชเชฌเซเชธเซเชŸเซเชฐเซ‡เช•เซเชถเชจเชจเซ€ เชŸเซ‹เชš เชชเชฐ เชŸเซ‡เชฌเชฒ. เชšเชพเชฒเซ‹ เช•เซเชฒเชพเช‰เชก เช•เซเชฒเชพเชฏเช‚เชŸเชจเชพ เชฎเซเช–เซเชฏ เช•เซ‹เชทเซเชŸเช•เชจเชพ เช‰เชฆเชพเชนเชฐเชฃเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เช† เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเชจเซ‡ เชงเซเชฏเชพเชจเชฎเชพเช‚ เชฒเชˆเช, เชœเซ‡ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพเชจเซ€ เชฌเชงเซ€ เชซเชพเช‡เชฒเซ‹ เช…เชจเซ‡ เชซเซ‹เชฒเซเชกเชฐเซเชธ เชตเชฟเชถเซ‡เชจเซ€ เชฎเชพเชนเชฟเชคเซ€เชจเซ‡ เช•เซ‡เชถ เช•เชฐเซ‡ เช›เซ‡.

เช•เซ‹เชทเซเชŸเช• เชธเซเช•เซ€เชฎเชพ

เชเช• เชธเชพเชฎเชพเชจเซเชฏ เชฆเซƒเชถเซเชฏเซ‹ เช•เซ‡ เชœเซ‡เชจเชพ เชฎเชพเชŸเซ‡ เชซเซ‹เชฒเซเชกเชฐ เชŸเซเชฐเซ€ เชธเชพเชฅเซ‡ เช•เซ‹เชทเซเชŸเช•เชจเซเช‚ เชฎเชพเชณเช–เซเช‚ เช…เชจเซเชฐเซ‚เชช เชนเซ‹เชตเซเช‚ เชœเซ‹เชˆเช เชคเซ‡ เช†เชชเซ‡เชฒ เชจเชฟเชฐเซเชฆเซ‡เชถเชฟเช•เชพเชฎเชพเช‚ เชธเซเชฅเชฟเชค เชคเชฎเชพเชฎ เช˜เชŸเช•เซ‹เชจเซ€ เชชเชธเช‚เชฆเช—เซ€ เช›เซ‡. เช† เชชเซเชฐเช•เชพเชฐเชจเซ€ เช•เชพเชฐเซเชฏเช•เซเชทเชฎ เช•เซเชตเซ‡เชฐเซ€เช เชฎเชพเชŸเซ‡ เชเช• เชธเชพเชฐเซเช‚ เชกเซ‡เชŸเชพ เชธเช‚เชธเซเชฅเชพ เชฎเซ‹เชกเซ‡เชฒ เช›เซ‡. เชธเช‚เชฒเช—เซเชจเชคเชพ เชธเซ‚เชšเชฟ. เชคเซ‡เชจเซ‡ เช•เซ€-เชตเซ‡เชฒเซเชฏเซ เชธเซเชŸเซ‹เชฐเซ‡เชœเชจเซ€ เชŸเซ‹เชš เชชเชฐ เช…เชฎเชฒเชฎเชพเช‚ เชฎเซ‚เช•เชตเชพ เชฎเชพเชŸเซ‡, เชซเชพเช‡เชฒเซ‹ เช…เชจเซ‡ เชซเซ‹เชฒเซเชกเชฐเซเชธเชจเซ€ เช•เซ€เชจเซ‡ เชเชตเซ€ เชฐเซ€เชคเซ‡ เชธเซ‰เชฐเซเชŸ เช•เชฐเชตเซ€ เชœเชฐเซ‚เชฐเซ€ เช›เซ‡ เช•เซ‡ เชคเซ‡เช“ เชชเซ‡เชฐเซ‡เชจเซเชŸ เชกเชฟเชฐเซ‡เช•เซเชŸเชฐเซ€เชฎเชพเช‚ เชคเซ‡เชฎเชจเชพ เชธเชญเซเชฏเชชเชฆเชจเชพ เช†เชงเชพเชฐเซ‡ เชœเซ‚เชฅเชฌเชฆเซเชง เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡. เช† เช‰เชชเชฐเชพเช‚เชค, เชตเชฟเชจเซเชกเซ‹เช เชฏเซเชเชฐ (เชชเซเชฐเชฅเชฎ เชซเซ‹เชฒเซเชกเชฐเซเชธ, เชชเช›เซ€ เชซเชพเช‡เชฒเซ‹, เชฌเช‚เชจเซ‡ เชฎเซ‚เชณเชพเช•เซเชทเชฐเซ‹ เชชเซเชฐเชฎเชพเชฃเซ‡ เชธเซ‰เชฐเซเชŸ เช•เชฐเซ‡เชฒ) เชจเซ‡ เชชเชฐเชฟเชšเชฟเชค เชซเซ‹เชฐเซเชฎเชฎเชพเช‚ เชกเชฟเชฐเซ‡เช•เซเชŸเชฐเซ€เชจเซ€ เชธเชพเชฎเช—เซเชฐเซ€ เชชเซเชฐเชฆเชฐเซเชถเชฟเชค เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เช•เซ€เชฎเชพเช‚ เช…เชจเซเชฐเซ‚เชช เชตเชงเชพเชฐเชพเชจเชพ เช•เซเชทเซ‡เชคเซเชฐเซ‹เชจเซ‹ เชธเชฎเชพเชตเซ‡เชถ เช•เชฐเชตเซ‹ เชœเชฐเซ‚เชฐเซ€ เช›เซ‡.

เชจเซ€เชšเซ‡เชจเซเช‚ เชšเชฟเชคเซเชฐ เชฌเชคเชพเชตเซ‡ เช›เซ‡ เช•เซ‡, เชนเชพเชฅ เชชเชฐเชจเชพ เช•เชพเชฐเซเชฏเชจเชพ เช†เชงเชพเชฐเซ‡, เชฌเชพเชˆเชŸ เชเชฐเซ‡เชจเชพ เชฐเซ‚เชชเชฎเชพเช‚ เช•เซ€เชจเซ€ เชฐเชœเซ‚เช†เชค เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชฆเซ‡เช–เชพเชˆ เชถเช•เซ‡ เช›เซ‡. เชชเซ‡เชฐเซ‡เชจเซเชŸ เชกเชพเชฏเชฐเซ‡เช•เซเชŸเชฐเซ€ (เชฒเชพเชฒ) เชจเชพ เช“เชณเช–เช•เชฐเซเชคเชพ เชธเชพเชฅเซ‡เชจเชพ เชฌเชพเชˆเชŸเซ‹เชจเซ‡ เชชเชนเซ‡เชฒเชพ, เชชเช›เซ€ เชชเซเชฐเช•เชพเชฐ (เชฒเซ€เชฒเชพ) เชธเชพเชฅเซ‡ เช…เชจเซ‡ เชชเซ‚เช‚เช›เชกเซ€เชฎเชพเช‚ เชจเชพเชฎ (เชตเชพเชฆเชณเซ€) เชธเชพเชฅเซ‡ เชฎเซ‚เช•เชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡. เชกเชฟเชซเซ‹เชฒเซเชŸ LMDB เชคเซเชฒเชจเชพเช•เชพเชฐ เชฆเซเชตเชพเชฐเชพ เชฒเซ‡เช•เซเชธเชฟเช•เซ‹เช—เซเชฐเชพเชซเชฟเช•เชฒ เช•เซเชฐเชฎเชฎเชพเช‚ เช•เซเชฐเชฎเชฎเชพเช‚ เช—เซ‹เช เชตเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡. เชœเชฐเซ‚เชฐเซ€ เชฐเซ€เชค. เชธเชฎเชพเชจ เชฒเชพเชฒ เช‰เชชเชธเชฐเซเช— เชธเชพเชฅเซ‡ เช…เชจเซเช•เซเชฐเชฎเซ‡ เช†เช—เชณ เชตเชงเชตเชพเชฅเซ€ เช…เชฎเชจเซ‡ เชคเซ‡เชฎเชจเชพ เชธเช‚เชฌเช‚เชงเชฟเชค เชฎเซ‚เชฒเซเชฏเซ‹ เชฎเชณเซ‡ เช›เซ‡ เชœเซ‡ เช•เซเชฐเชฎเชฎเชพเช‚ เชคเซ‡เช“ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพ เชˆเชจเซเชŸเชฐเชซเซ‡เชธเชฎเชพเช‚ (เชœเชฎเชฃเซ€ เชฌเชพเชœเซเช) เชชเซเชฐเชฆเชฐเซเชถเชฟเชค เชฅเชตเชพ เชœเซ‹เชˆเช, เช•เซ‹เชˆเชชเชฃ เชตเชงเชพเชฐเชพเชจเซ€ เชชเซ‹เชธเซเชŸ-เชชเซเชฐเซ‹เชธเซ‡เชธเชฟเช‚เช—เชจเซ€ เชœเชฐเซ‚เชฐ เชตเช—เชฐ.

iOS เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเซเชธเชฎเชพเช‚ เช•เซ€-เชตเซ‡เชฒเซเชฏเซ เชกเซ‡เชŸเชพเชฌเซ‡เช 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 เช‰เชชเช•เชฐเชฃเซ‹ เชชเชฐ, เชชเซ‚เชฐเซเชฃเชพเช‚เช• เชšเชฒเซ‹ เชซเซ‹เชฐเซเชฎเซ‡เชŸเชฎเชพเช‚ เชธเช‚เช—เซเชฐเชนเชฟเชค เชฅเชพเชฏ เช›เซ‡ เชฒเชฟเชŸเชฒ เชเชจเซเชกเชฟเชฏเชจ. เช†เชจเซ‹ เช…เชฐเซเชฅ เช เช›เซ‡ เช•เซ‡ เชธเซŒเชฅเซ€ เช“เช›เซ€ เชจเซ‹เช‚เชงเชชเชพเชคเซเชฐ เชฌเชพเชˆเชŸ เชกเชพเชฌเซ€ เชฌเชพเชœเซ เชนเชถเซ‡, เช…เชจเซ‡ เชฌเชพเชˆเชŸ-เชฌเชพเชฏ-เชฌเชพเชˆเชŸ เชธเชฐเช–เชพเชฎเชฃเซ€เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชชเซ‚เชฐเซเชฃเชพเช‚เช•เซ‹เชจเซ‡ เชธเซ‰เชฐเซเชŸ เช•เชฐเชตเชพเชจเซเช‚ เชถเช•เซเชฏ เชฌเชจเชถเซ‡ เชจเชนเซ€เช‚. เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, 0 เชฅเซ€ 511 เชธเซเชงเซ€เชจเซ€ เชธเช‚เช–เซเชฏเชพเชจเชพ เชธเชฎเซ‚เชน เชธเชพเชฅเซ‡ เช† เช•เชฐเชตเชพเชจเซ‹ เชชเซเชฐเชฏเชพเชธ เช•เชฐเชตเชพเชฅเซ€ เชจเซ€เชšเซ‡เชจเซเช‚ เชชเชฐเชฟเชฃเชพเชฎ เช†เชตเชถเซ‡.

// 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 เชธเช‚เช—เซเชฐเชนเชฟเชค เชฐเซ‡เช•เซ‹เชฐเซเชกเซเชธเชจเซ€ เชšเชพเชตเซ€เช“ เชธเชพเชฅเซ‡ เช…เชคเซเชฏเช‚เชค เชธเช˜เชจ เชฐเซ€เชคเซ‡ เช•เชพเชฎ เช•เชฐเซ‡ เช›เซ‡. เชเช•เชฌเซ€เชœเชพ เชธเชพเชฅเซ‡ เชคเซ‡เชฎเชจเซ€ เชธเชฐเช–เชพเชฎเชฃเซ€ เช•เซ‹เชˆเชชเชฃ เชฒเชพเช—เซ เช•เชพเชฎเช—เซ€เชฐเซ€เชจเชพ เชฎเชพเชณเช–เชพเชฎเชพเช‚ เชฅเชพเชฏ เช›เซ‡, เช…เชจเซ‡ เชธเชฎเช—เซเชฐ เช‰เช•เซ‡เชฒเชจเซเช‚ เชชเซเชฐเชฆเชฐเซเชถเชจ เชคเซเชฒเชจเชพเช•เชพเชฐเชจเซ€ เชเชกเชช เชชเชฐ เช†เชงเชพเชฐเชฟเชค เช›เซ‡. เช†เชฆเชฐเซเชถ เชตเชฟเชถเซเชตเชฎเชพเช‚, เชกเชฟเชซเซ‰เชฒเซเชŸ เชฆเซเชตเชฟเชธเช‚เช—เซ€ เชคเซเชฒเชจเชพเช•เชพเชฐ เช•เซ€เช“เชจเซ€ เชคเซเชฒเชจเชพ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชชเซ‚เชฐเชคเซเช‚ เชนเซ‹เชตเซเช‚ เชœเซ‹เชˆเช, เชชเชฐเช‚เชคเซ เชœเซ‹ เชคเชฎเชพเชฐเซ‡ เชคเชฎเชพเชฐเซ€ เชชเซ‹เชคเชพเชจเซ€ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชจเซ€ เชนเซ‹เชฏ, เชคเซ‹ เชคเซ‡เชฎเชพเช‚ เช•เซ€เชจเซ‡ เชกเซ€เชธเซ€เชฐเชฟเชฏเชฒเชพเชˆเช เช•เชฐเชตเชพเชจเซ€ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เชถเช•เซเชฏ เชคเซ‡เชŸเชฒเซ€ เชเชกเชชเซ€ เชนเซ‹เชตเซ€ เชœเซ‹เชˆเช.

เชกเซ‡เชŸเชพเชฌเซ‡เชเชจเซ‡ เชฐเซ‡เช•เซ‹เชฐเซเชกเชจเชพ เชฎเซ‚เชฒเซเชฏเชจเชพ เชญเชพเช— (เชฎเซ‚เชฒเซเชฏ)เชฎเชพเช‚ เช–เชพเชธ เชฐเชธ เชจเชฅเซ€. เชฌเชพเชˆเชŸเชจเชพ เชชเซเชฐเชคเชฟเชจเชฟเชงเชฟเชคเซเชตเชฎเชพเช‚เชฅเซ€ เช‘เชฌเซเชœเซ‡เช•เซเชŸเชฎเชพเช‚ เชคเซ‡เชจเซเช‚ เชฐเซ‚เชชเชพเช‚เชคเชฐ เชคเซเชฏเชพเชฐเซ‡ เชœ เชฅเชพเชฏ เช›เซ‡ เชœเซเชฏเชพเชฐเซ‡ เชคเซ‡ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เช•เซ‹เชก เชฆเซเชตเชพเชฐเชพ เชชเชนเซ‡เชฒเชพเชฅเซ€ เชœ เชœเชฐเซ‚เชฐเซ€ เชนเซ‹เชฏ, เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชคเซ‡เชจเซ‡ เชธเซเช•เซเชฐเซ€เชจ เชชเชฐ เชชเซเชฐเชฆเชฐเซเชถเชฟเชค เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡. เช† เชชเซเชฐเชฎเชพเชฃเชฎเชพเช‚ เชญเชพเช—เซเชฏเซ‡ เชœ เชฌเชจเชคเซเช‚ เชนเซ‹เชตเชพเชฅเซ€, เช† เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เชฎเชพเชŸเซ‡เชจเซ€ เช—เชคเชฟ เช†เชตเชถเซเชฏเช•เชคเชพเช“ เชเชŸเชฒเซ€ เชœเชŸเชฟเชฒ เชจเชฅเซ€, เช…เชจเซ‡ เชคเซ‡เชจเชพ เช…เชฎเชฒเซ€เช•เชฐเชฃเชฎเชพเช‚ เช…เชฎเซ‡ เชธเช—เชตเชกเชคเชพ เชชเชฐ เชงเซเชฏเชพเชจ เช•เซ‡เชจเซเชฆเซเชฐเชฟเชค เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชตเชงเซ เชฎเซเช•เซเชค เช›เซ€เช. เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชนเชœเซ€ เชธเซเชงเซ€ เชกเชพเช‰เชจเชฒเซ‹เชก เชจ เชฅเชˆ เชนเซ‹เชฏ เชคเซ‡เชตเซ€ เชซเชพเช‡เชฒเซ‹ เชตเชฟเชถเซ‡เชจเชพ เชฎเซ‡เชŸเชพเชกเซ‡เชŸเชพเชจเซ‡ เชถเซเชฐเซ‡เชฃเซ€เชฌเชฆเซเชง เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เช…เชฎเซ‡ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เช เช›เซ€เช. NSKeyedArchiver.

NSData *data = serialize(object);โ€‹
MDB_val value = {โ€‹
    .mv_size = data.length,โ€‹
    .mv_data = (void *)data.bytesโ€‹
};

เชœเซ‹ เช•เซ‡, เชเชตเชพ เชธเชฎเชฏเซ‡ เชนเซ‹เชฏ เช›เซ‡ เชœเซเชฏเชพเชฐเซ‡ เชชเซเชฐเชฆเชฐเซเชถเชจ เชนเชœเซ เชชเชฃ เชฎเชนเชคเซเชตเชจเซเช‚ เชนเซ‹เชฏ เช›เซ‡. เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชฏเซเชเชฐ เช•เซเชฒเชพเช‰เชกเชจเซ€ เชซเชพเช‡เชฒ เชธเซเชŸเซเชฐเช•เซเชšเชฐ เชตเชฟเชถเซ‡ เชฎเซ‡เชŸเซ‡เชจเชซเซ‹เชฐเซเชฎเซ‡เชถเชจ เชธเชพเชšเชตเชคเซ€ เชตเช–เชคเซ‡, เช…เชฎเซ‡ เช‘เชฌเซเชœเซ‡เช•เซเชŸเชจเชพ เชธเชฎเชพเชจ เชฎเซ‡เชฎเชฐเซ€ เชกเชฎเซเชชเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เช เช›เซ€เช. เชคเซ‡เชฎเชจเซ€ เชถเซเชฐเซ‡เชฃเซ€เชฌเชฆเซเชง เชฐเชœเซ‚เช†เชค เชœเชจเชฐเซ‡เชŸ เช•เชฐเชตเชพเชจเชพ เช•เชพเชฐเซเชฏเชจเซ€ เชตเชฟเชถเซ‡เชทเชคเชพ เช เชนเช•เซ€เช•เชค เช›เซ‡ เช•เซ‡ เชจเชฟเชฐเซเชฆเซ‡เชถเชฟเช•เชพเชจเชพ เช˜เชŸเช•เซ‹ เชตเชฐเซเช—เซ‹เชจเชพ เชตเช‚เชถเชตเซ‡เชฒเซ‹ เชฆเซเชตเชพเชฐเชพ เชฎเซ‹เชกเซ‡เชฒ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡.

iOS เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเซเชธเชฎเชพเช‚ เช•เซ€-เชตเซ‡เชฒเซเชฏเซ เชกเซ‡เชŸเชพเชฌเซ‡เช LMDB เชจเซ€ เชคเซ‡เชœเชธเซเชตเซ€เชคเชพ เช…เชจเซ‡ เช—เชฐเซ€เชฌเซ€

เชคเซ‡เชจเซ‡ เชธเซ€ เชญเชพเชทเชพเชฎเชพเช‚ เช…เชฎเชฒเชฎเชพเช‚ เชฎเซ‚เช•เชตเชพ เชฎเชพเชŸเซ‡, เชตเชพเชฐเชธเชฆเชพเชฐเซ‹เชจเชพ เชตเชฟเชถเชฟเชทเซเชŸ เช•เซเชทเซ‡เชคเซเชฐเซ‹เชจเซ‡ เช…เชฒเช— เชฎเชพเชณเช–เชพเชฎเชพเช‚ เชฎเซ‚เช•เชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡, เช…เชจเซ‡ เชคเซ‡เชฎเชจเชพ เช†เชงเชพเชฐ เชธเชพเชฅเซ‡เชจเซเช‚ เชœเซ‹เชกเชพเชฃ เชชเซเชฐเช•เชพเชฐ เชฏเซเชจเชฟเชฏเชจเชจเชพ เช•เซเชทเซ‡เชคเซเชฐ เชฆเซเชตเชพเชฐเชพ เชจเชฟเชฐเซเชฆเชฟเชทเซเชŸ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡. เชฏเซเชจเชฟเชฏเชจเชจเซ€ เชตเชพเชธเซเชคเชตเชฟเช• เชธเชพเชฎเช—เซเชฐเซ€ เชคเช•เชจเซ€เช•เซ€ เชตเชฟเชถเซ‡เชทเชคเชพ เชชเซเชฐเช•เชพเชฐ เชฆเซเชตเชพเชฐเชพ เชจเชฟเชฐเซเชฆเชฟเชทเซเชŸ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡.

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 เชฎเชณเซ‡ เช›เซ‡ เชœเซ‡ เช–เซ‚เชฌ เชœ เชŠเช‚เชšเซ€ เชกเซ‡เชŸเชพ เชฐเซ€เชกเชฟเช‚เช— เชธเซเชชเซ€เชก เชฒเช—เชญเช— เชฎเชซเชคเชฎเชพเช‚ เชชเซเชฐเชฆเชพเชจ เช•เชฐเซ‡ เช›เซ‡. เช…เชญเชฟเช—เชฎเชจเซ€ เชคเชฎเชพเชฎ เชธเซเช‚เชฆเชฐเชคเชพ เชนเซ‹เชตเชพ เช›เชคเชพเช‚, เชคเซ‡เชจเซ€ เชธเชพเชฅเซ‡ เชธเช‚เช•เชณเชพเชฏเซ‡เชฒเซ€ เช˜เชฃเซ€ เชธเซเชตเชฟเชงเชพเช“ เชฏเชพเชฆ เชฐเชพเช–เชตเซ€ เชœเชฐเซ‚เชฐเซ€ เช›เซ‡.

  1. เชซเช•เซเชค เชตเชพเช‚เชšเชตเชพ เชฎเชพเชŸเซ‡เชจเชพ เชตเซเชฏเชตเชนเชพเชฐ เชฎเชพเชŸเซ‡, เชตเซ‡เชฒเซเชฏเซ เชธเซเชŸเซเชฐเช•เซเชšเชฐ เชคเชฐเชซเชจเซ‹ เชจเชฟเชฐเซเชฆเซ‡เชถเช• เชฎเชพเชคเซเชฐ เชตเซเชฏเชตเชนเชพเชฐ เชฌเช‚เชง เชจ เชฅเชพเชฏ เชคเซเชฏเชพเช‚ เชธเซเชงเซ€ เชฎเชพเชจเซเชฏ เชฐเชนเซ‡เชตเชพเชจเซ€ เช–เชพเชคเชฐเซ€ เช†เชชเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡. เช…เช—เชพเช‰ เชจเซ‹เช‚เชงเซเชฏเซเช‚ เช›เซ‡ เชคเซ‡เชฎ, เชฌเซ€-เชŸเซเชฐเซ€ เชชเซƒเชทเซเช เซ‹ เช•เซ‡ เชœเซ‡เชจเชพ เชชเชฐ เช‘เชฌเซเชœเซ‡เช•เซเชŸ เชธเซเชฅเชฟเชค เช›เซ‡, เช•เซ‰เชชเชฟ-เช‘เชจ-เชฐเชพเช‡เชŸ เชธเชฟเชฆเซเชงเชพเช‚เชคเชจเซ‡ เช†เชญเชพเชฐเซ€ เช›เซ‡, เชœเซเชฏเชพเช‚ เชธเซเชงเซ€ เชคเซ‡เช“ เช“เช›เชพเชฎเชพเช‚ เช“เช›เชพ เชเช• เชตเซเชฏเชตเชนเชพเชฐ เชฆเซเชตเชพเชฐเชพ เชธเช‚เชฆเชฐเซเชญเชฟเชค เชนเซ‹เชฏ เชคเซเชฏเชพเช‚ เชธเซเชงเซ€ เชฏเชฅเชพเชตเชค เชฐเชนเซ‡ เช›เซ‡. เชคเซ‡ เชœ เชธเชฎเชฏเซ‡, เชคเซ‡เชฎเชจเซ€ เชธเชพเชฅเซ‡ เชธเช‚เช•เชณเชพเชฏเซ‡เชฒ เช›เซ‡เชฒเซเชฒเซเช‚ เชŸเซเชฐเชพเชจเซเชเซ‡เช•เซเชถเชจ เชชเซ‚เชฐเซเชฃ เชฅเชคเชพเช‚ เชœ, เชชเซƒเชทเซเช เซ‹เชจเซ‹ เชจเชตเชพ เชกเซ‡เชŸเชพ เชฎเชพเชŸเซ‡ เชซเชฐเซ€เชฅเซ€ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€ เชถเช•เชพเชฏ เช›เซ‡. เชœเซ‹ เช‘เชฌเซเชœเซ‡เช•เซเชŸเซเชธเชจเซ‡ เชœเชจเชฐเซ‡เชŸ เช•เชฐเซ‡เชฒเชพ เชŸเซเชฐเชพเชจเซเชเซ‡เช•เซเชถเชจเชจเซ‡ เชŸเช•เซ€ เชฐเชนเซ‡เชตเชพ เชฎเชพเชŸเซ‡ เชคเซ‡ เชœเชฐเซ‚เชฐเซ€ เชนเซ‹เชฏ, เชคเซ‹ เชคเซ‡ เชนเชœเซ เชชเชฃ เช•เซ‰เชชเชฟ เช•เชฐเชตเชพเชจเซ€ เชฐเชนเซ‡เชถเซ‡.
  2. เชฐเซ€เชกเชฐเชพเชˆเชŸ เชŸเซเชฐเชพเชจเซเชเซ‡เช•เซเชถเชจ เชฎเชพเชŸเซ‡, เชชเชฐเชฟเชฃเชพเชฎเซ€ เชตเซ‡เชฒเซเชฏเซ เชธเซเชŸเซเชฐเช•เซเชšเชฐ เชฎเชพเชŸเซ‡เชจเซ‹ เชจเชฟเชฐเซเชฆเซ‡เชถเช• เชซเช•เซเชค เชชเซเชฐเชฅเชฎ เชซเซ‡เชฐเชซเชพเชฐ เช•เชฐเชตเชพเชจเซ€ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ (เชกเซ‡เชŸเชพ เชฒเช–เชตเชพ เช…เชฅเชตเชพ เช•เชพเชขเซ€ เชจเชพเช–เชตเชพ) เชธเซเชงเซ€ เชฎเชพเชจเซเชฏ เชฐเชนเซ‡เชถเซ‡.
  3. เชฎเชพเชณเช–เซเช‚ เชนเซ‹เชตเชพ เช›เชคเชพเช‚ NodeValue เชธเช‚เชชเซ‚เชฐเซเชฃ เชธเซเชตเชฟเชงเชพเชฏเซเช•เซเชค เชจเชฅเซ€, เชชเชฐเช‚เชคเซ เชธเซเชตเซเชฏเชตเชธเซเชฅเชฟเชค (เชชเซ‡เชŸเชพเชตเชฟเชญเชพเช— "เชฌเชพเชนเซเชฏ เชคเซเชฒเชจเชพเช•เชพเชฐเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เช•เซ€เช“ เช“เชฐเซเชกเชฐ เช•เชฐเชตเซ€" เชœเซเช“), เชคเชฎเซ‡ เชชเซ‹เช‡เชจเซเชŸเชฐ เชฆเซเชตเชพเชฐเชพ เชคเซ‡เชจเชพ เช•เซเชทเซ‡เชคเซเชฐเซ‹เชจเซ‡ เชธเซเชฐเช•เซเชทเชฟเชค เชฐเซ€เชคเซ‡ เชเช•เซเชธเซ‡เชธ เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹. เชฎเซเช–เซเชฏ เชตเชธเซเชคเซ เชคเซ‡เชจเซ‡ เช…เชชเชฎเชพเชจเชฟเชค เช•เชฐเชตเชพเชจเซ€ เชจเชฅเซ€!
  4. เช•เซ‹เชˆ เชชเชฃ เชธเช‚เชœเซ‹เช—เซ‹เชฎเชพเช‚ เชชเซเชฐเชพเชชเซเชค เชจเชฟเชฐเซเชฆเซ‡เชถเช• เชฆเซเชตเชพเชฐเชพ เชฌเช‚เชงเชพเชฐเชฃเชฎเชพเช‚ เชซเซ‡เชฐเชซเชพเชฐ เช•เชฐเชตเซ‹ เชœเซ‹เชˆเช เชจเชนเซ€เช‚. เชคเชฎเชพเชฎ เชซเซ‡เชฐเชซเชพเชฐเซ‹ เชชเชฆเซเชงเชคเชฟ เชฆเซเชตเชพเชฐเชพ เชœ เช•เชฐเชตเชพ เชœเซ‹เชˆเช mdb_put. เชœเซ‹ เช•เซ‡, เชคเชฎเซ‡ เช† เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เช—เชฎเซ‡ เชคเซ‡เชŸเชฒเซ€ เชฎเชนเซ‡เชจเชค เช•เชฐเชตเชพ เชฎเชพเช‚เช—เซ‹ เช›เซ‹, เชคเซ‡ เชถเช•เซเชฏ เชฌเชจเชถเซ‡ เชจเชนเซ€เช‚, เช•เชพเชฐเชฃ เช•เซ‡ เชฎเซ‡เชฎเชฐเซ€ เชตเชฟเชธเซเชคเชพเชฐ เชœเซเชฏเชพเช‚ เช† เชฎเชพเชณเช–เซเช‚ เชธเซเชฅเชฟเชค เช›เซ‡ เชคเซ‡ เชซเช•เซเชค เชตเชพเช‚เชšเชตเชพ เชฎเซ‹เชกเชฎเชพเช‚ เชฎเซ‡เชช เชฅเชฏเซ‡เชฒ เช›เซ‡.
  5. เชฆเชพเช–เชฒเชพ เชคเชฐเซ€เช•เซ‡, เชซเช‚เช•เซเชถเชจเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชฎเชนเชคเซเชคเชฎ เชธเซเชŸเซ‹เชฐเซ‡เชœ เช•เชฆเชฎเชพเช‚ เชตเชงเชพเชฐเซ‹ เช•เชฐเชตเชพเชจเชพ เชนเซ‡เชคเซเชฅเซ€ เชซเชพเช‡เชฒเชจเซ‡ เชชเซเชฐเซ‹เชธเซ‡เชธ เชเชกเซเชฐเซ‡เชธ เชธเซเชชเซ‡เชธเชฎเชพเช‚ เชฐเซ€เชฎเซ‡เชช เช•เชฐเซ‹ mdb_env_set_map_size เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡ เชคเชฎเชพเชฎ เชตเซเชฏเชตเชนเชพเชฐเซ‹ เช…เชจเซ‡ เชธเช‚เชฌเช‚เชงเชฟเชค เชเช•เชฎเซ‹เชจเซ‡ เชธเช‚เชชเซ‚เชฐเซเชฃเชชเชฃเซ‡ เช…เชฎเชพเชจเซเชฏ เช•เชฐเซ‡ เช›เซ‡ เช…เชจเซ‡ เช–เชพเชธ เช•เชฐเซ€เชจเซ‡ เช…เชฎเซเช• เชตเชธเซเชคเซเช“ เชคเชฐเชซ เชจเชฟเชฐเซเชฆเซ‡เชถ เช•เชฐเซ‡ เช›เซ‡.

เช›เซ‡เชฒเซเชฒเซ‡, เชฌเซ€เชœเซ€ เชตเชฟเชถเซ‡เชทเชคเชพ เชเชŸเชฒเซ€ เช•เชชเชŸเซ€ เช›เซ‡ เช•เซ‡ เชคเซ‡เชจเซ‹ เชธเชพเชฐ เชœเชพเชนเซ‡เชฐ เช•เชฐเชตเซ‹ เช เชฌเซ€เชœเชพ เชซเช•เชฐเชพเชฎเชพเช‚ เชฌเช‚เชงเชฌเซ‡เชธเชคเซเช‚ เชจเชฅเซ€. เชฌเซ€-เชŸเซเชฐเซ€ เชตเชฟเชถเซ‡เชจเชพ เชชเซเชฐเช•เชฐเชฃเชฎเชพเช‚, เชฎเซ‡เช‚ เชคเซ‡เชจเชพ เชชเซƒเชทเซเช เซ‹เชจเซ‡ เชฎเซ‡เชฎเชฐเซ€เชฎเชพเช‚ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช—เซ‹เช เชตเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡ เชคเซ‡เชจเซ‹ เช†เช•เซƒเชคเชฟ เช†เชชเซเชฏเซ‹. เชคเซ‡ เช†เชจเชพเชฅเซ€ เช…เชจเซเชธเชฐเซ‡ เช›เซ‡ เช•เซ‡ เชธเซ€เชฐเซ€เชฏเชฒเชพเช‡เชเซเชก เชกเซ‡เชŸเชพ เชธเชพเชฅเซ‡ เชฌเชซเชฐเชจเซ€ เชถเชฐเซ‚เช†เชคเชจเซเช‚ เชธเชฐเชจเชพเชฎเซเช‚ เชเช•เชฆเชฎ เชฎเชจเชธเซเชตเซ€ เชนเซ‹เชˆ เชถเช•เซ‡ เช›เซ‡. เช† เช•เชพเชฐเชฃเซ‡, เชคเซ‡เชฎเชจเซ‡ เชชเซ‹เชˆเชจเซเชŸเชฐ เชฌเช‚เชงเชพเชฐเชฃเชฎเชพเช‚ เชชเซเชฐเชพเชชเซเชค เชฅเชฏเซเช‚ 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 เชฆเซเชตเชพเชฐเชพ เช“เชฐเซเชกเชฐ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡. เช†เชฎ, เชคเช•เชจเซ€เช•เซ€ เชฐเซ€เชคเซ‡, เชซเซ‹เชฒเซเชกเชฐเชจเซ€ เชธเชพเชฎเช—เซเชฐเซ€เช“ เชชเซเชจเชƒเชชเซเชฐเชพเชชเซเชค เช•เชฐเชตเชพเชจเซเช‚ เช•เชพเชฐเซเชฏ เช•เชฐเซเชธเชฐเชจเซ‡ เช†เชชเซ‡เชฒ เช‰เชชเชธเชฐเซเช— เชธเชพเชฅเซ‡ เช•เซ€เชจเชพ เชœเซ‚เชฅเชจเซ€ เช‰เชชเชฐเชจเซ€ เชธเซ€เชฎเชพ เชชเชฐ เชฎเซ‚เช•เชตเชพ เช…เชจเซ‡ เชชเช›เซ€ เชจเซ€เชšเชฒเชพ เชธเซ€เชฎเชพ เชชเชฐ เชชเซเชจเชฐเชพเชตเชฐเซเชคเชฟเชค เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชจเซ€เชšเซ‡ เช†เชตเซ‡ เช›เซ‡.

iOS เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเซเชธเชฎเชพเช‚ เช•เซ€-เชตเซ‡เชฒเซเชฏเซ เชกเซ‡เชŸเชพเชฌเซ‡เช LMDB เชจเซ€ เชคเซ‡เชœเชธเซเชตเซ€เชคเชพ เช…เชจเซ‡ เช—เชฐเซ€เชฌเซ€

เช…เชชเชฐ เชฌเชพเช‰เชจเซเชก เชธเซ€เชงเซเช‚ เช•เซเชฐเชฎเชฟเช• เชถเซ‹เชง เชฆเซเชตเชพเชฐเชพ เชถเซ‹เชงเซ€ เชถเช•เชพเชฏ เช›เซ‡. เช† เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เช•เชฐเซเชธเชฐเชจเซ‡ เชกเซ‡เชŸเชพเชฌเซ‡เชเชฎเชพเช‚ เช•เซ€เช“เชจเซ€ เชธเช‚เชชเซ‚เชฐเซเชฃ เชธเซ‚เชšเชฟเชจเซ€ เชถเชฐเซ‚เช†เชคเชฎเชพเช‚ เชฎเซ‚เช•เชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡ เช…เชจเซ‡ เชœเซเชฏเชพเช‚ เชธเซเชงเซ€ เชคเซ‡เชจเซ€ เชจเซ€เชšเซ‡ เชชเซ‡เชฐเซ‡เชจเซเชŸ เชกเชฟเชฐเซ‡เช•เซเชŸเชฐเซ€เชจเชพ เช“เชณเช–เช•เชฐเซเชคเชพ เชธเชพเชฅเซ‡เชจเซ€ เช•เซ€ เชฆเซ‡เช–เชพเชฏ เชคเซเชฏเชพเช‚ เชธเซเชงเซ€ เชคเซ‡เชจเซ‡ เชตเชงเซ เชตเชงเชพเชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡. เช† เช…เชญเชฟเช—เชฎเชฎเชพเช‚ 2 เชธเซเชชเชทเซเชŸ เช—เซ‡เชฐเชซเชพเชฏเชฆเชพ เช›เซ‡:

  1. เชฐเซ‡เช–เซ€เชฏ เชถเซ‹เชง เชœเชŸเชฟเชฒเชคเชพ, เชœเซ‹ เช•เซ‡, เชœเซ‡เชฎ เช•เซ‡ เชœเชพเชฃเซ€เชคเซเช‚ เช›เซ‡, เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡ เชตเซƒเช•เซเชทเซ‹เชฎเชพเช‚ เช…เชจเซ‡ เช–เชพเชธ เช•เชฐเซ€เชจเซ‡ เชฌเซ€-เชŸเซเชฐเซ€เชฎเชพเช‚ เชคเซ‡ เชฒเช˜เซเช—เชฃเช• เชธเชฎเชฏเชฎเชพเช‚ เชนเชพเชฅ เชงเชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ€ เชถเช•เซ‡ เช›เซ‡.
  2. เชจเชฟเชฐเชฐเซเชฅเช•, เชฎเชพเช‚เช—เชตเชพเชฎเชพเช‚ เช†เชตเชคเชพ เชชเชนเซ‡เชฒเชพเชจเชพ เชคเชฎเชพเชฎ เชชเซƒเชทเซเช เซ‹เชจเซ‡ เชซเชพเช‡เชฒเชฎเชพเช‚เชฅเซ€ เชฎเซเช–เซเชฏ เชฎเซ‡เชฎเชฐเซ€เชฎเชพเช‚ เช‰เชชเชพเชกเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡, เชœเซ‡ เช…เชคเซเชฏเช‚เชค เช–เชฐเซเชšเชพเชณ เช›เซ‡.

เชธเชฆเชจเชธเซ€เชฌเซ‡, 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. เช•เซ‹เชทเซเชŸเช•เซ‹ เชตเชšเซเชšเซ‡ เชฎเซ‹เชกเซ‡เชฒเชฟเช‚เช— เชธเช‚เชฌเช‚เชงเซ‹

เช…เชคเซเชฏเชพเชฐ เชธเซเชงเซ€เชฎเชพเช‚, เช…เชฎเซ‡ เชธเชฟเช‚เช—เชฒ-เชŸเซ‡เชฌเชฒ เชกเซ‡เชŸเชพเชฌเซ‡เช เชธเชพเชฅเซ‡ เชกเชฟเชเชพเช‡เชจ เช…เชจเซ‡ เช•เชพเชฎ เช•เชฐเชตเชพเชจเชพ เชคเชฎเชพเชฎ เชชเชพเชธเชพเช“เชจเซ‡ เชงเซเชฏเชพเชจเชฎเชพเช‚ เชฒเซ‡เชตเชพเชจเซเช‚ เชตเซเชฏเชตเชธเซเชฅเชพเชชเชฟเชค เช•เชฐเซเชฏเซเช‚ เช›เซ‡. เช†เชชเชฃเซ‡ เช•เชนเซ€ เชถเช•เซ€เช เช•เซ‡ เช•เซ‹เชทเซเชŸเช• เช เชเช• เชœ เชชเซเชฐเช•เชพเชฐเชจเชพ เช•เซ€-เชตเซ‡เชฒเซเชฏเซ เชœเซ‹เชกเซ€เช“เชจเซ‹ เชธเชฎเชพเชตเซ‡เชถ เช•เชฐเซ€เชจเซ‡ เชธเซ‰เชฐเซเชŸ เช•เชฐเซ‡เชฒเชพ เชฐเซ‡เช•เซ‹เชฐเซเชกเชจเซ‹ เชธเชฎเซ‚เชน เช›เซ‡. เชœเซ‹ เชคเชฎเซ‡ เช•เซ€เชจเซ‡ เชฒเช‚เชฌเชšเซ‹เชฐเชธ เชคเชฐเซ€เช•เซ‡ เช…เชจเซ‡ เชธเช‚เชฒเช—เซเชจ เชฎเซ‚เชฒเซเชฏเชจเซ‡ เชธเชฎเชพเช‚เชคเชฐ เชคเชฐเซ€เช•เซ‡ เชฆเชฐเซเชถเชพเชตเซ‹ เช›เซ‹, เชคเซ‹ เชคเชฎเชจเซ‡ เชกเซ‡เชŸเชพเชฌเซ‡เชเชจเซ‹ เชตเชฟเชเซเชฏเซเช…เชฒ เชกเชพเชฏเชพเช—เซเชฐเชพเชฎ เชฎเชณเชถเซ‡.

'

iOS เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเซเชธเชฎเชพเช‚ เช•เซ€-เชตเซ‡เชฒเซเชฏเซ เชกเซ‡เชŸเชพเชฌเซ‡เช LMDB เชจเซ€ เชคเซ‡เชœเชธเซเชตเซ€เชคเชพ เช…เชจเซ‡ เช—เชฐเซ€เชฌเซ€

เชœเซ‹ เช•เซ‡, เชตเชพเชธเซเชคเชตเชฟเช• เชœเซ€เชตเชจเชฎเชพเช‚ เช†เชŸเชฒเชพ เช“เช›เชพ เชฐเช•เซเชคเชธเซเชฐเชพเชตเชฅเซ€ เชชเชธเชพเชฐ เชฅเชตเซเช‚ เชญเชพเช—เซเชฏเซ‡ เชœ เชถเช•เซเชฏ เช›เซ‡. เช˜เชฃเซ€ เชตเช–เชค เชกเซ‡เชŸเชพเชฌเซ‡เชเชฎเชพเช‚ เชคเซ‡ เชœเชฐเซ‚เชฐเซ€ เช›เซ‡, เชชเซเชฐเชฅเชฎ, เช˜เชฃเชพ เช•เซ‹เชทเซเชŸเช•เซ‹ เชนเซ‹เชตเชพ เชœเซ‹เชˆเช, เช…เชจเซ‡ เชฌเซ€เชœเซเช‚, เชชเซเชฐเชพเชฅเชฎเชฟเช• เช•เซ€ เช•เชฐเชคเชพ เช…เชฒเช— เช•เซเชฐเชฎเชฎเชพเช‚ เชคเซ‡เชฎเชพเช‚ เชชเชธเช‚เชฆเช—เซ€ เช•เชฐเชตเซ€. เช† เช›เซ‡เชฒเซเชฒเซ‹ เชตเชฟเชญเชพเช— เชคเซ‡เชฎเชจเซ€ เชฐเชšเชจเชพ เช…เชจเซ‡ เช†เช‚เชคเชฐเชธเช‚เชฌเช‚เชงเชจเชพ เชฎเซเชฆเซเชฆเชพเช“เชจเซ‡ เชธเชฎเชฐเซเชชเชฟเชค เช›เซ‡.

เช…เชจเซเช•เซเชฐเชฎเชฃเชฟเช•เชพ เช•เซ‹เชทเซเชŸเช•เซ‹

เช•เซเชฒเชพเช‰เชก เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเชฎเชพเช‚ "เช—เซ‡เชฒเซ‡เชฐเซ€" เชตเชฟเชญเชพเช— เช›เซ‡. เชคเซ‡ เชคเชพเชฐเซ€เช– เชฆเซเชตเชพเชฐเชพ เชธเซ‰เชฐเซเชŸ เช•เชฐเซ‡เชฒ เชธเชฎเช—เซเชฐ เช•เซเชฒเชพเช‰เชกเชฎเชพเช‚เชฅเซ€ เชฎเซ€เชกเชฟเชฏเชพ เชธเชพเชฎเช—เซเชฐเซ€ เชชเซเชฐเชฆเชฐเซเชถเชฟเชค เช•เชฐเซ‡ เช›เซ‡. เช†เชตเซ€ เชชเชธเช‚เชฆเช—เซ€เชจเซ‡ เชถเซเชฐเซ‡เชทเซเช  เชฐเซ€เชคเซ‡ เช…เชฎเชฒเชฎเชพเช‚ เชฎเซ‚เช•เชตเชพ เชฎเชพเชŸเซ‡, เชฎเซเช–เซเชฏ เช•เซ‹เชทเซเชŸเช•เชจเซ€ เชฌเชพเชœเซเชฎเชพเช‚ เชคเชฎเชพเชฐเซ‡ เชจเชตเชพ เชชเซเชฐเช•เชพเชฐเชจเซ€ เช•เซ€ เชธเชพเชฅเซ‡ เชฌเซ€เชœเซ€ เชฌเชจเชพเชตเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡. เชคเซ‡เชฎเชพเช‚ เชซเชพเช‡เชฒ เชฌเชจเชพเชตเชตเชพเชฎเชพเช‚ เช†เชตเซ€ เชนเชคเซ€ เชคเซ‡ เชคเชพเชฐเซ€เช– เชธเชพเชฅเซ‡เชจเซเช‚ เช•เซเชทเซ‡เชคเซเชฐ เชนเชถเซ‡, เชœเซ‡ เชชเซเชฐเชพเชฅเชฎเชฟเช• เชธเซ‰เชฐเซเชŸเชฟเช‚เช— เชฎเชพเชชเชฆเช‚เชก เชคเชฐเซ€เช•เซ‡ เช•เชพเชฐเซเชฏ เช•เชฐเชถเซ‡. เช•เชพเชฐเชฃ เช•เซ‡ เชจเชตเซ€ เช•เซ€ เชฎเซเช–เซเชฏ เช•เซ‹เชทเซเชŸเช•เชจเซ€ เช•เซ€ เชœเซ‡เชตเชพ เชœ เชกเซ‡เชŸเชพเชจเซ‹ เชธเช‚เชฆเชฐเซเชญ เช†เชชเซ‡ เช›เซ‡, เชคเซ‡เชจเซ‡ เช‡เชจเซเชกเซ‡เช•เซเชธ เช•เซ€ เช•เชนเซ‡เชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡. เชจเซ€เชšเซ‡เชจเชพ เชšเชฟเชคเซเชฐเชฎเชพเช‚ เชคเซ‡เช“ เชจเชพเชฐเช‚เช—เซ€ เชฐเช‚เช—เชฎเชพเช‚ เชชเซเชฐเช•เชพเชถเชฟเชค เชฅเชพเชฏ เช›เซ‡.

iOS เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเซเชธเชฎเชพเช‚ เช•เซ€-เชตเซ‡เชฒเซเชฏเซ เชกเซ‡เชŸเชพเชฌเซ‡เช LMDB เชจเซ€ เชคเซ‡เชœเชธเซเชตเซ€เชคเชพ เช…เชจเซ‡ เช—เชฐเซ€เชฌเซ€

เชธเชฎเชพเชจ เชกเซ‡เชŸเชพเชฌเซ‡เชเชฎเชพเช‚ เชตเชฟเชตเชฟเชง เช•เซ‹เชทเซเชŸเช•เซ‹เชจเซ€ เชšเชพเชตเซ€เช“เชจเซ‡ เชเช•เชฌเซ€เชœเชพเชฅเซ€ เช…เชฒเช— เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เชคเซ‡ เชฌเชงเชพเชฎเชพเช‚ เชตเชงเชพเชฐเชพเชจเซ€ เชคเช•เชจเซ€เช•เซ€ เชซเซ€เชฒเซเชก เชŸเซ‡เชฌเชฒเช†เชˆเชกเซ€ เช‰เชฎเซ‡เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ€ เชนเชคเซ€. เชคเซ‡เชจเซ‡ เชธเซ‰เชฐเซเชŸ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชธเชฐเซเชตเซ‹เชšเซเชš เช…เช—เซเชฐเชคเชพ เชฌเชจเชพเชตเซ€เชจเซ‡, เช…เชฎเซ‡ เช…เชฎเชพเชฐเชพ เชชเซ‹เชคเชพเชจเชพ เชจเชฟเชฏเชฎเซ‹ เช…เชจเซเชธเชพเชฐ - เช•เซ‹เชทเซเชŸเช•เซ‹ เชฆเซเชตเชพเชฐเชพ เช…เชจเซ‡ เช•เซ‹เชทเซเชŸเช•เซ‹เชฎเชพเช‚ เชชเชนเซ‡เชฒเชพ เช•เซ€เชจเชพ เชœเซ‚เชฅเชจเซ‡ เชชเซเชฐเชพเชชเซเชค เช•เชฐเซ€เชถเซเช‚.

เช‡เชจเซเชกเซ‡เช•เซเชธ เช•เซ€ เชชเซเชฐเชพเชฅเชฎเชฟเช• เช•เซ€ เชœเซ‡เชตเซ‹ เชœ เชกเซ‡เชŸเชพเชจเซ‹ เชธเช‚เชฆเชฐเซเชญ เช†เชชเซ‡ เช›เซ‡. เชชเซเชฐเชพเชฅเชฎเชฟเช• เช•เซ€เชจเชพ เชฎเซ‚เชฒเซเชฏเชจเชพ เชญเชพเช—เชจเซ€ เชจเช•เชฒ เชคเซ‡เชจเซ€ เชธเชพเชฅเซ‡ เชธเชพเช‚เช•เชณเซ€เชจเซ‡ เช† เช—เซเชฃเชงเชฐเซเชฎเชจเซ‹ เชธเซ€เชงเซ‹เชธเชพเชฆเซ‹ เช…เชฎเชฒ เช…เชจเซ‡เช• เชฆเซƒเชทเซเชŸเชฟเช•เซ‹เชฃเชฅเซ€ เชถเซเชฐเซ‡เชทเซเช  เชจเชฅเซ€:

  1. เชฒเซ‡เชตเชพเชฎเชพเช‚ เช†เชตเซ‡เชฒเซ€ เชœเช—เซเชฏเชพเชจเชพ เชธเช‚เชฆเชฐเซเชญเชฎเชพเช‚, เชฎเซ‡เชŸเชพเชกเซ‡เชŸเชพ เช–เซ‚เชฌ เชธเชฎเซƒเชฆเซเชง เชนเซ‹เชˆ เชถเช•เซ‡ เช›เซ‡.
  2. เชชเซเชฐเชฆเชฐเซเชถเชจเชจเชพ เชฆเซƒเชทเซเชŸเชฟเช•เซ‹เชฃเชฅเซ€, เชจเซ‹เชกเชจเชพ เชฎเซ‡เชŸเชพเชกเซ‡เชŸเชพเชจเซ‡ เช…เชชเชกเซ‡เชŸ เช•เชฐเชคเซ€ เชตเช–เชคเซ‡, เชคเชฎเชพเชฐเซ‡ เชคเซ‡เชจเซ‡ เชฌเซ‡ เช•เซ€เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชซเชฐเซ€เชฅเซ€ เชฒเช–เชตเซเช‚ เชชเชกเชถเซ‡.
  3. เช•เซ‹เชก เชธเชชเซ‹เชฐเซเชŸเชจเชพ เชฆเซƒเชทเซเชŸเชฟเช•เซ‹เชฃเชฅเซ€, เชœเซ‹ เช†เชชเชฃเซ‡ เชเช• เช•เซ€ เชฎเชพเชŸเซ‡ เชกเซ‡เชŸเชพ เช…เชชเชกเซ‡เชŸ เช•เชฐเชตเชพเชจเซเช‚ เชญเซ‚เชฒเซ€ เชœเชˆเช, เชคเซ‹ เช…เชฎเชจเซ‡ เชธเซเชŸเซ‹เชฐเซ‡เชœเชฎเชพเช‚ เชกเซ‡เชŸเชพเชจเซ€ เช…เชธเช‚เช—เชคเชคเชพเชจเซ‹ เชเช• เชชเซเชฐเชชเช‚เชšเซ€ เชฌเช— เชฎเชณเชถเซ‡.

เช†เช—เชณ, เช…เชฎเซ‡ เช† เช–เชพเชฎเซ€เช“เชจเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชฆเซ‚เชฐ เช•เชฐเชตเซ€ เชคเซ‡ เชงเซเชฏเชพเชจเชฎเชพเช‚ เชฒเชˆเชถเซเช‚.

เช•เซ‹เชทเซเชŸเช•เซ‹ เชตเชšเซเชšเซ‡ เชธเช‚เชฌเช‚เชงเซ‹ เช—เซ‹เช เชตเซ‹

เช‡เชจเซเชกเซ‡เช•เซเชธ เช•เซ‹เชทเซเชŸเช•เชจเซ‡ เชฎเซเช–เซเชฏ เช•เซ‹เชทเซเชŸเช• เชธเชพเชฅเซ‡ เชœเซ‹เชกเชตเชพ เชฎเชพเชŸเซ‡ เชชเซ‡เชŸเชฐเซเชจ เชธเชพเชฐเซ€ เชฐเซ€เชคเซ‡ เช…เชจเซเช•เซ‚เชณ เช›เซ‡ "เชฎเซ‚เชฒเซเชฏ เชคเชฐเซ€เช•เซ‡ เช•เซ€". เชคเซ‡เชจเซเช‚ เชจเชพเชฎ เชธเซ‚เชšเชตเซ‡ เช›เซ‡ เชคเซ‡เชฎ, เช‡เชจเซเชกเซ‡เช•เซเชธ เชฐเซ‡เช•เซ‹เชฐเซเชกเชจเซ‹ เชฎเซ‚เชฒเซเชฏเชจเซ‹ เชญเชพเช— เชชเซเชฐเชพเชฅเชฎเชฟเช• เช•เซ€ เชฎเซ‚เชฒเซเชฏเชจเซ€ เชจเช•เชฒ เช›เซ‡. เช† เช…เชญเชฟเช—เชฎ เชชเซเชฐเชพเชฅเชฎเชฟเช• เชฐเซ‡เช•เซ‹เชฐเซเชกเชจเชพ เชฎเซ‚เชฒเซเชฏเชจเชพ เชญเชพเช—เชจเซ€ เชจเช•เชฒ เชธเช‚เช—เซเชฐเชนเชฟเชค เช•เชฐเชตเชพ เชธเชพเชฅเซ‡ เชธเช‚เช•เชณเชพเชฏเซ‡เชฒ เช‰เชชเชฐเซ‹เช•เซเชค เชคเชฎเชพเชฎ เช—เซ‡เชฐเชซเชพเชฏเชฆเชพเชจเซ‡ เชฆเซ‚เชฐ เช•เชฐเซ‡ เช›เซ‡. เชฎเชพเชคเซเชฐ เช•เชฟเช‚เชฎเชค เช เช›เซ‡ เช•เซ‡ เช‡เชจเซเชกเซ‡เช•เซเชธ เช•เซ€ เชฆเซเชตเชพเชฐเชพ เชฎเซ‚เชฒเซเชฏ เชฎเซ‡เชณเชตเชตเชพ เชฎเชพเชŸเซ‡, เชคเชฎเชพเชฐเซ‡ เชกเซ‡เชŸเชพเชฌเซ‡เชเชฎเชพเช‚ เชเช•เชจเซ‡ เชฌเชฆเชฒเซ‡ 2 เช•เซเชตเซ‡เชฐเซ€ เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡. เชฏเซ‹เชœเชจเชพเช•เซ€เชฏ เชฐเซ€เชคเซ‡, เชชเชฐเชฟเชฃเชพเชฎเซ€ เชกเซ‡เชŸเชพเชฌเซ‡เช เชธเซเช•เซ€เชฎเชพ เช†เชจเชพ เชœเซ‡เชตเซ‹ เชฆเซ‡เช–เชพเชฏ เช›เซ‡.

iOS เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเซเชธเชฎเชพเช‚ เช•เซ€-เชตเซ‡เชฒเซเชฏเซ เชกเซ‡เชŸเชพเชฌเซ‡เช LMDB เชจเซ€ เชคเซ‡เชœเชธเซเชตเซ€เชคเชพ เช…เชจเซ‡ เช—เชฐเซ€เชฌเซ€

เช•เซ‹เชทเซเชŸเช•เซ‹ เชตเชšเซเชšเซ‡เชจเชพ เชธเช‚เชฌเช‚เชงเซ‹เชจเซ‡ เช—เซ‹เช เชตเชตเชพ เชฎเชพเชŸเซ‡เชจเซ€ เชฌเซ€เชœเซ€ เชชเซ‡เชŸเชฐเซเชจ เช›เซ‡ "เชฐเชฟเชกเชจเซเชกเชจเซเชŸ เช•เซ€". เชคเซ‡เชจเซ‹ เชธเชพเชฐ เช เช•เซ€เชฎเชพเช‚ เชตเชงเชพเชฐเชพเชจเชพ เชฒเช•เซเชทเชฃเซ‹ เช‰เชฎเซ‡เชฐเชตเชพเชจเซ‹ เช›เซ‡, เชœเซ‡ เชธเซ‰เชฐเซเชŸ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชจเชนเซ€เช‚, เชชเชฐเช‚เชคเซ เชธเช‚เช•เชณเชพเชฏเซ‡เชฒ เช•เซ€เชจเซ‡ เชซเชฐเซ€เชฅเซ€ เชฌเชจเชพเชตเชตเชพ เชฎเชพเชŸเซ‡ เชœเชฐเซ‚เชฐเซ€ เช›เซ‡. Mail.ru เช•เซเชฒเชพเช‰เชก เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเชฎเชพเช‚ เชคเซ‡เชจเชพ เช‰เชชเชฏเซ‹เช—เชจเชพ เชตเชพเชธเซเชคเชตเชฟเช• เช‰เชฆเชพเชนเชฐเชฃเซ‹ เช›เซ‡, เชœเซ‹ เช•เซ‡, เชŠเช‚เชกเชพ เชกเชพเช‡เชต เชŸเชพเชณเชตเชพ เชฎเชพเชŸเซ‡ เชšเซ‹เช•เซเช•เชธ iOS เชซเซเชฐเซ‡เชฎเชตเชฐเซเช•เชจเชพ เชธเช‚เชฆเชฐเซเชญเชฎเชพเช‚, เชนเซเช‚ เชเช• เช•เชพเชฒเซเชชเชจเชฟเช•, เชชเชฐเช‚เชคเซ เชเช• เชธเซเชชเชทเซเชŸ เช‰เชฆเชพเชนเชฐเชฃ เช†เชชเซ€เชถ

เช•เซเชฒเชพเช‰เชก เชฎเซ‹เชฌเชพเช‡เชฒ เช•เซเชฒเชพเชฏเช‚เชŸ เชชเชพเชธเซ‡ เชเช• เชชเซƒเชทเซเช  เช›เซ‡ เชœเซ‡ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพเช เช…เชจเซเชฏ เชฒเซ‹เช•เซ‹ เชธเชพเชฅเซ‡ เชถเซ‡เชฐ เช•เชฐเซ‡เชฒเซ€ เชฌเชงเซ€ เชซเชพเช‡เชฒเซ‹ เช…เชจเซ‡ เชซเซ‹เชฒเซเชกเชฐเซเชธ เชฆเชฐเซเชถเชพเชตเซ‡ เช›เซ‡. เช†เชตเซ€ เชซเชพเช‡เชฒเซ‹ เชชเซเชฐเชฎเชพเชฃเชฎเชพเช‚ เช“เช›เซ€ เชนเซ‹เชตเชพเชฅเซ€, เช…เชจเซ‡ เชคเซ‡เชฎเชจเซ€ เชธเชพเชฅเซ‡ เชธเช‚เช•เชณเชพเชฏเซ‡เชฒ เชชเซเชฐเชšเชพเชฐ เชตเชฟเชถเซ‡ เช˜เชฃเซ€ เชฌเชงเซ€ เชตเชฟเชตเชฟเชง เชชเซเชฐเช•เชพเชฐเชจเซ€ เชšเซ‹เช•เซเช•เชธ เชฎเชพเชนเชฟเชคเซ€ เช›เซ‡ (เช•เซ‹เชจเซ‡ เชเช•เซเชธเซ‡เชธ เช†เชชเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡, เช•เชฏเชพ เช…เชงเชฟเช•เชพเชฐเซ‹ เชธเชพเชฅเซ‡, เชตเช—เซ‡เชฐเซ‡), เชคเซ‡เชจเชพ เชฎเซ‚เชฒเซเชฏเชจเชพ เชญเชพเช— เชชเชฐ เชฌเซ‹เชœ เชจเชพเช–เชตเซ‹ เชคเชฐเซเช•เชธเช‚เช—เชค เชฐเชนเซ‡เชถเซ‡ เชจเชนเซ€เช‚. เชคเซ‡เชจเซ€ เชธเชพเชฅเซ‡ เชฎเซเช–เซเชฏ เช•เซ‹เชทเซเชŸเช•เชฎเชพเช‚ เชฐเซ‡เช•เซ‹เชฐเซเชก เช•เชฐเซ‹. เชœเซ‹ เช•เซ‡, เชœเซ‹ เชคเชฎเซ‡ เช†เชตเซ€ เชซเชพเช‡เชฒเซ‹เชจเซ‡ เช‘เชซเชฒเชพเช‡เชจ เชชเซเชฐเชฆเชฐเซเชถเชฟเชค เช•เชฐเชตเชพ เชฎเชพเช‚เช—เชคเชพ เชนเซ‹, เชคเซ‹ เชคเชฎเชพเชฐเซ‡ เชคเซ‡เชจเซ‡ เช•เซเชฏเชพเช‚เช• เชธเช‚เช—เซเชฐเชนเชฟเชค เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡. เช•เซเชฆเชฐเชคเซ€ เช‰เช•เซ‡เชฒ เชคเซ‡เชจเชพ เชฎเชพเชŸเซ‡ เชเช• เช…เชฒเช— เชŸเซ‡เชฌเชฒ เชฌเชจเชพเชตเชตเชพเชจเซเช‚ เช›เซ‡. เชจเซ€เชšเซ‡เชจเชพ เชšเชฟเชคเซเชฐเชฎเชพเช‚, เชคเซ‡เชจเซ€ เช•เซ€ "P" เชธเชพเชฅเซ‡ เช‰เชชเชธเชฐเซเช— เช›เซ‡, เช…เชจเซ‡ เชชเซเชฒเซ‡เชธเชนเซ‹เชฒเซเชกเชฐ "เชชเซเชฐเซ‹เชชเชจเซ‡เชฎ" เชจเซ‡ เชตเชงเซ เชšเซ‹เช•เซเช•เชธ เชฎเซ‚เชฒเซเชฏ "เชœเชพเชนเซ‡เชฐ เชฎเชพเชนเชฟเชคเซ€" เชธเชพเชฅเซ‡ เชฌเชฆเชฒเซ€ เชถเช•เชพเชฏ เช›เซ‡.

iOS เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเซเชธเชฎเชพเช‚ เช•เซ€-เชตเซ‡เชฒเซเชฏเซ เชกเซ‡เชŸเชพเชฌเซ‡เช LMDB เชจเซ€ เชคเซ‡เชœเชธเซเชตเซ€เชคเชพ เช…เชจเซ‡ เช—เชฐเซ€เชฌเซ€

เชคเชฎเชพเชฎ เช…เชจเชจเซเชฏ เชฎเซ‡เชŸเชพเชกเซ‡เชŸเชพ, เชธเซเชŸเซ‹เชฐ เช•เชฐเชตเชพ เช–เชพเชคเชฐ เช•เซ‡ เชœเซ‡ เชจเชตเซเช‚ เชŸเซ‡เชฌเชฒ เชฌเชจเชพเชตเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซเช‚ เชนเชคเซเช‚, เชคเซ‡ เชฐเซ‡เช•เซ‹เชฐเซเชกเชจเชพ เชฎเซ‚เชฒเซเชฏเชจเชพ เชญเชพเช—เชฎเชพเช‚ เชฎเซ‚เช•เชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡. เชคเซ‡ เชœ เชธเชฎเชฏเซ‡, เชคเชฎเซ‡ เชชเชนเซ‡เชฒเชพเชฅเซ€ เชœ เชฎเซเช–เซเชฏ เช•เซ‹เชทเซเชŸเช•เชฎเชพเช‚ เชธเช‚เช—เซเชฐเชนเชฟเชค เชซเชพเช‡เชฒเซ‹ เช…เชจเซ‡ เชซเซ‹เชฒเซเชกเชฐเซเชธ เชตเชฟเชถเซ‡เชจเชพ เชกเซ‡เชŸเชพเชจเซ‡ เชกเซเชชเซเชฒเชฟเช•เซ‡เชŸ เช•เชฐเชตเชพ เชฎเชพเช‚เช—เชคเชพ เชจเชฅเซ€. เชคเซ‡เชจเชพ เชฌเชฆเชฒเซ‡, "เชจเซ‹เชก ID" เช…เชจเซ‡ "เชŸเชพเช‡เชฎเชธเซเชŸเซ‡เชฎเซเชช" เชซเซ€เชฒเซเชกเชจเชพ เชฐเซ‚เชชเชฎเชพเช‚ "P" เช•เซ€เชฎเชพเช‚ เชฐเซ€เชกเชจเซเชกเชจเซเชŸ เชกเซ‡เชŸเชพ เช‰เชฎเซ‡เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡. เชคเซ‡เชฎเชจเชพ เชฎเชพเชŸเซ‡ เช†เชญเชพเชฐ, เชคเชฎเซ‡ เช‡เชจเซเชกเซ‡เช•เซเชธ เช•เซ€ เชฌเชจเชพเชตเซ€ เชถเช•เซ‹ เช›เซ‹, เชœเซ‡เชฎเชพเช‚เชฅเซ€ เชคเชฎเซ‡ เชชเซเชฐเชพเชฅเชฎเชฟเช• เช•เซ€ เชฎเซ‡เชณเชตเซ€ เชถเช•เซ‹ เช›เซ‹, เชœเซ‡เชฎเชพเช‚เชฅเซ€, เช…เช‚เชคเซ‡, เชคเชฎเซ‡ เชจเซ‹เชก เชฎเซ‡เชŸเชพเชกเซ‡เชŸเชพ เชฎเซ‡เชณเชตเซ€ เชถเช•เซ‹ เช›เซ‹.

เชจเชฟเชทเซเช•เชฐเซเชท

เช…เชฎเซ‡ LMDB เชจเชพ เช…เชฎเชฒเซ€เช•เชฐเชฃเชจเชพ เชชเชฐเชฟเชฃเชพเชฎเซ‹เชจเซเช‚ เชนเช•เชพเชฐเชพเชคเซเชฎเช• เชฎเซ‚เชฒเซเชฏเชพเช‚เช•เชจ เช•เชฐเซ€เช เช›เซ€เช. เชคเซ‡ เชชเช›เซ€, เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชซเซเชฐเซ€เชเชจเซ€ เชธเช‚เช–เซเชฏเชพเชฎเชพเช‚ 30% เช˜เชŸเชพเชกเซ‹ เชฅเชฏเซ‹.

iOS เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเซเชธเชฎเชพเช‚ เช•เซ€-เชตเซ‡เชฒเซเชฏเซ เชกเซ‡เชŸเชพเชฌเซ‡เช LMDB เชจเซ€ เชคเซ‡เชœเชธเซเชตเซ€เชคเชพ เช…เชจเซ‡ เช—เชฐเซ€เชฌเซ€

เช•เชฐเซ‡เชฒเชพ เช•เชพเชฐเซเชฏเชจเชพ เชชเชฐเชฟเชฃเชพเชฎเซ‹ iOS เชŸเซ€เชฎเชจเซ€ เชฌเชนเชพเชฐ เชชเชกเช˜เซ‹ เชชเชพเชกเซ‡ เช›เซ‡. เชนเชพเชฒเชฎเชพเช‚, เชเชจเซเชกเซเชฐเซ‹เช‡เชก เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเชฎเชพเช‚ เชฎเซเช–เซเชฏ "เชซเชพเช‡เชฒเซ‹" เชตเชฟเชญเชพเช—เซ‹เชฎเชพเช‚เชฅเซ€ เชเช• เชชเชฃ LMDB เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพ เชชเชฐ เชธเซเชตเชฟเชš เช•เชฐเซ€ เช—เชฏเซ‹ เช›เซ‡, เช…เชจเซ‡ เช…เชจเซเชฏ เชญเชพเช—เซ‹ เชฎเชพเชฐเซเช— เชชเชฐ เช›เซ‡. C เชญเชพเชทเชพ, เชœเซ‡เชฎเชพเช‚ เช•เซ€-เชตเซ‡เชฒเซเชฏเซ เชธเซเชŸเซ‹เชฐ เชฒเชพเช—เซ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡, เชถเชฐเซ‚เช†เชคเชฎเชพเช‚ C++ เชฎเชพเช‚ เช•เซเชฐเซ‹เชธ-เชชเซเชฒเซ‡เชŸเชซเซ‹เชฐเซเชฎ เชคเซ‡เชจเซ€ เช†เชธเชชเชพเชธ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชซเซเชฐเซ‡เชฎเชตเชฐเซเช• เชฌเชจเชพเชตเชตเชพ เชฎเชพเชŸเซ‡ เชธเชพเชฐเซ€ เชฎเชฆเชฆ เชนเชคเซ€. เชเช• เช•เซ‹เชก เชœเชจเชฐเซ‡เชŸเชฐเชจเซ‹ เช‰เชชเชฏเซ‹เช— เชชเชฐเชฟเชฃเชพเชฎเซ€ C++ เชฒเชพเช‡เชฌเซเชฐเซ‡เชฐเซ€เชจเซ‡ เช‘เชฌเซเชœเซ‡เช•เซเชŸเชฟเชต-C เช…เชจเซ‡ เช•เซ‹เชŸเชฒเชฟเชจเชฎเชพเช‚ เชชเซเชฒเซ‡เชŸเชซเซ‹เชฐเซเชฎ เช•เซ‹เชก เชธเชพเชฅเซ‡ เชธเซ€เชฎเชฒเซ‡เชธ เชฐเซ€เชคเซ‡ เช•เชจเซ‡เช•เซเชŸ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซ‹ เชนเชคเซ‹. เชœเซ€เชจเซเชจเซ€ เชกเซเชฐเซ‰เชชเชฌเซ‰เช•เซเชธเชฎเชพเช‚เชฅเซ€, เชชเชฐเช‚เชคเซ เชคเซ‡ เชธเช‚เชชเซ‚เชฐเซเชฃเชชเชฃเซ‡ เช…เชฒเช— เชตเชพเชฐเซเชคเชพ เช›เซ‡.

เชธเซ‹เชฐเซเชธ: www.habr.com

เชเช• เชŸเชฟเชชเซเชชเชฃเซ€ เช‰เชฎเซ‡เชฐเซ‹