เจ†เจˆเจ“เจเจธ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจเจพเจ‚ เจตเจฟเฉฑเจš เจฎเฉเฉฑเจ–-เจฎเฉเฉฑเจฒ เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ LMDB เจฆเฉ€ เจšเจฎเจ• เจ…เจคเฉ‡ เจ—เจฐเฉ€เจฌเฉ€

เจ†เจˆเจ“เจเจธ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจเจพเจ‚ เจตเจฟเฉฑเจš เจฎเฉเฉฑเจ–-เจฎเฉเฉฑเจฒ เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ LMDB เจฆเฉ€ เจšเจฎเจ• เจ…เจคเฉ‡ เจ—เจฐเฉ€เจฌเฉ€

2019 เจฆเฉ‡ เจชเจคเจเฉœ เจตเจฟเฉฑเจš, Mail.ru เจ•เจฒเจพเจ‰เจก เจ†เจˆเจ“เจเจธ เจŸเฉ€เจฎ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจฒเฉฐเจฌเฉ‡ เจธเจฎเฉ‡เจ‚ เจคเฉ‹เจ‚ เจ‰เจกเฉ€เจ•เจฟเจ† เจ—เจฟเจ† เจ‡เจตเฉˆเจ‚เจŸ เจนเฉ‹เจ‡เจ†เฅค เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจธเจŸเฉ‡เจŸ เจฆเฉ‡ เจจเจฟเจฐเฉฐเจคเจฐ เจธเจŸเฉ‹เจฐเฉ‡เจœ เจฒเจˆ เจฎเฉเฉฑเจ– เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจฎเฉ‹เจฌเจพเจˆเจฒ เจธเฉฐเจธเจพเจฐ เจฒเจˆ เจ•เจพเจซเจผเฉ€ เจตเจฟเจฆเฉ‡เจธเจผเฉ€ เจฌเจฃ เจ—เจฟเจ† เจนเฉˆ เจฒเจพเจˆเจŸเจจเจฟเฉฐเจ— เจฎเฉˆเจฎเฉ‹เจฐเฉ€-เจฎเฉˆเจชเจก เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ (LMDB)เฅค เจ•เฉฑเจŸ เจฆเฉ‡ เจคเจนเจฟเจค, เจคเฉเจนเจพเจกเฉ‡ เจงเจฟเจ†เจจ เจจเฉ‚เฉฐ เจšเจพเจฐ เจญเจพเจ—เจพเจ‚ เจตเจฟเฉฑเจš เจ‡เจธเจฆเฉ€ เจตเจฟเจธเจคเฉเจฐเจฟเจค เจธเจฎเฉ€เจ–เจฟเจ† เจตเฉฑเจฒ เจธเฉฑเจฆเจพ เจฆเจฟเฉฑเจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆเฅค เจชเจนเจฟเจฒเจพเจ‚, เจ†เจ“ เจ…เจœเจฟเจนเฉ€ เจ—เฉˆเจฐ-เจฎเจพเจฎเฉ‚เจฒเฉ€ เจ…เจคเฉ‡ เจฎเฉเจธเจผเจ•เจฒ เจšเฉ‹เจฃ เจฆเฉ‡ เจ•เจพเจฐเจจเจพเจ‚ เจฌเจพเจฐเฉ‡ เจ—เฉฑเจฒ เจ•เจฐเฉ€เจ. เจซเจฟเจฐ เจ†เจ“ LMDB เจ†เจฐเจ•เฉ€เจŸเฉˆเจ•เจšเจฐ เจฆเฉ‡ เจ•เฉ‡เจ‚เจฆเจฐ เจตเจฟเฉฑเจš เจคเจฟเฉฐเจจ เจตเฉเจนเฉ‡เจฒเจพเจ‚ เจฆเฉ‡ เจตเจฟเจšเจพเจฐ เจตเฉฑเจฒ เจตเจงเฉ€เจ: เจฎเฉˆเจฎเฉ‹เจฐเฉ€-เจฎเฉˆเจชเจก เจซเจพเจˆเจฒเจพเจ‚, เจฌเฉ€ + เจŸเฉเจฐเฉ€, เจŸเฉเจฐเจพเจ‚เจœเฉˆเจ•เจธเจผเจจเจฒ เจ…เจคเฉ‡ เจฎเจฒเจŸเฉ€เจตเจฐเจœเจผเจจเจฟเฉฐเจ— เจจเฉ‚เฉฐ เจฒเจพเจ—เฉ‚ เจ•เจฐเจจ เจฒเจˆ เจ•เจพเจชเฉ€-เจ†เจจ-เจฐเจพเจˆเจŸ เจชเจนเฉเฉฐเจšเฅค เจ…เฉฐเจค เจตเจฟเฉฑเจš, เจฎเจฟเจ เจ†เจˆ เจฒเจˆ - เจ…เจฎเจฒเฉ€ เจนเจฟเฉฑเจธเจพ. เจ‡เจธ เจตเจฟเฉฑเจš, เจ…เจธเฉ€เจ‚ เจฆเฉ‡เจ–เจพเจ‚เจ—เฉ‡ เจ•เจฟ เจนเฉ‡เจ เจฒเฉ‡-เจชเฉฑเจงเจฐ เจฆเฉ‡ เจฎเฉเฉฑเจ–-เจฎเฉเฉฑเจฒ API เจฆเฉ‡ เจธเจฟเจ–เจฐ 'เจคเฉ‡, เจ‡เฉฑเจ• เจธเฉ‚เจšเจ•เจพเจ‚เจ• เจธเจฎเฉ‡เจค, เจ•เจˆ เจŸเฉ‡เจฌเจฒเจพเจ‚ เจฆเฉ‡ เจจเจพเจฒ เจ‡เฉฑเจ• เจฌเฉ‡เจธ เจธเจ•เฉ€เจฎเจพ เจจเฉ‚เฉฐ เจ•เจฟเจตเฉ‡เจ‚ เจกเจฟเจœเจผเจพเจˆเจจ เจ•เจฐเจจเจพ เจ…เจคเฉ‡ เจฒเจพเจ—เฉ‚ เจ•เจฐเจจเจพ เจนเฉˆเฅค

เจธเจฎเฉฑเจ—เจฐเฉ€

  1. เจฒเจพเจ—เฉ‚ เจ•เจฐเจจ เจฆเฉ€ เจชเฉเจฐเฉ‡เจฐเจฃเจพ
  2. LMDB เจฆเฉ€ เจธเจฅเจฟเจคเฉ€
  3. เจคเจฟเฉฐเจจ เจตเฉเจนเฉ‡เจฒ LMDB
    3.1. เจตเฉเจนเฉ‡เจฒ #1. เจฎเฉˆเจฎเฉ‹เจฐเฉ€-เจฎเฉˆเจช เจ•เฉ€เจคเฉ€เจ†เจ‚ เจซเจพเจˆเจฒเจพเจ‚
    3.2. เจตเฉเจนเฉ‡เจฒ #2. เจฌเฉ€+-เจฐเฉเฉฑเจ–
    3.3. เจตเฉเจนเฉ‡เจฒ #3. เจ•เจพเจชเฉ€-เจ†เจจ-เจฒเจฟเจ–เจฃ
  4. เจ•เฉเฉฐเจœเฉ€-เจฎเฉเฉฑเจฒ API เจฆเฉ‡ เจธเจฟเจ–เจฐ 'เจคเฉ‡ เจ‡เฉฑเจ• เจกเจพเจŸเจพ เจธเจ•เฉ€เจฎเจพ เจกเจฟเจœเจผเจพเจˆเจจ เจ•เจฐเจจเจพ
    4.1. เจฌเฉเจจเจฟเจ†เจฆเฉ€ เจเจฌเจธเจŸเจฐเฉˆเจ•เจธเจผเจจ
    4.2. เจŸเฉ‡เจฌเจฒ เจฎเจพเจกเจฒเจฟเฉฐเจ—
    4.3. เจŸเฉ‡เจฌเจฒ เจตเจฟเจšเจ•เจพเจฐ เจฎเจพเจกเจฒเจฟเฉฐเจ— เจธเจฌเฉฐเจง

1. เจฒเจพเจ—เฉ‚ เจ•เจฐเจจ เจฆเฉ€ เจชเฉเจฐเฉ‡เจฐเจฃเจพ

เจธเจพเจฒ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจตเจพเจฐ, 2015 เจตเจฟเฉฑเจš, เจ…เจธเฉ€เจ‚ เจ‡เฉฑเจ• เจฎเฉˆเจŸเฉเจฐเจฟเจ• เจฒเฉˆเจฃ เจฆเจพ เจงเจฟเจ†เจจ เจฐเฉฑเจ–เจฟเจ†, เจธเจพเจกเฉ€ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจฆเจพ เจ‡เฉฐเจŸเจฐเจซเฉ‡เจธ เจ•เจฟเฉฐเจจเฉ€ เจตเจพเจฐ เจชเจ›เฉœ เจœเจพเจ‚เจฆเจพ เจนเฉˆเฅค เจ…เจธเฉ€เจ‚ เจธเจฟเจฐเจซเจผ เจ‡เจน เจจเจนเฉ€เจ‚ เจ•เฉ€เจคเจพเฅค เจธเจพเจกเฉ‡ เจ•เฉ‹เจฒ เจ‡เจธ เจคเฉฑเจฅ เจฌเจพเจฐเฉ‡ เจตเฉฑเจง เจคเฉ‹เจ‚ เจตเฉฑเจง เจธเจผเจฟเจ•เจพเจ‡เจคเจพเจ‚ เจนเจจ เจ•เจฟ เจ•เจˆ เจตเจพเจฐ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจ‰เจชเจญเฉ‹เจ—เจคเจพ เจฆเฉ€เจ†เจ‚ เจ•เจพเจฐเจตเจพเจˆเจ†เจ‚ เจฆเจพ เจœเจตเจพเจฌ เจฆเฉ‡เจฃเจพ เจฌเฉฐเจฆ เจ•เจฐ เจฆเจฟเฉฐเจฆเฉ€ เจนเฉˆ: เจฌเจŸเจจ เจฆเจฌเจพเจ เจจเจนเฉ€เจ‚ เจœเจพเจ‚เจฆเฉ‡, เจธเฉ‚เจšเฉ€เจ†เจ‚ เจธเจ•เฉเจฐเฉŒเจฒ เจจเจนเฉ€เจ‚ เจนเฉเฉฐเจฆเฉ€เจ†เจ‚, เจ†เจฆเจฟเฅค เจฎเจพเจช เจฆเฉ‡ เจฎเจ•เฉˆเจจเจฟเจ•เจธ เจฌเจพเจฐเฉ‡ เจฆเฉฑเจธเจฟเจ† AvitoTech 'เจคเฉ‡, เจ‡เจธ เจฒเจˆ เจ‡เฉฑเจฅเฉ‡ เจฎเฉˆเจ‚ เจธเจฟเจฐเจซเจผ เจธเฉฐเจ–เจฟเจ†เจตเจพเจ‚ เจฆเจพ เจ•เฉเจฐเจฎ เจฆเจฟเฉฐเจฆเจพ เจนเจพเจ‚เฅค

เจ†เจˆเจ“เจเจธ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจเจพเจ‚ เจตเจฟเฉฑเจš เจฎเฉเฉฑเจ–-เจฎเฉเฉฑเจฒ เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ LMDB เจฆเฉ€ เจšเจฎเจ• เจ…เจคเฉ‡ เจ—เจฐเฉ€เจฌเฉ€

เจฎเจพเจช เจฆเฉ‡ เจจเจคเฉ€เจœเฉ‡ เจธเจพเจกเฉ‡ เจฒเจˆ เจ เฉฐเจกเฉ‡ เจธเจผเจพเจตเจฐ เจฌเจฃ เจ—เจ. เจ‡เจน เจชเจคเจพ เจšเจฒเจฟเจ† เจ•เจฟ เจซเฉเจฐเฉ€เจœเจผ เจ•เจพเจฐเจจ เจนเฉ‹เจฃ เจตเจพเจฒเฉ€เจ†เจ‚ เจธเจฎเฉฑเจธเจฟเจ†เจตเจพเจ‚ เจ•เจฟเจธเฉ‡ เจนเฉ‹เจฐ เจจเจพเจฒเฉ‹เจ‚ เจฌเจนเฉเจค เจœเจผเจฟเจ†เจฆเจพ เจนเจจ. เจœเฉ‡, เจ‡เจธ เจคเฉฑเจฅ เจจเฉ‚เฉฐ เจธเจฎเจเจฃ เจคเฉ‹เจ‚ เจชเจนเจฟเจฒเจพเจ‚, เจ—เฉเจฃเจตเฉฑเจคเจพ เจฆเจพ เจฎเฉเฉฑเจ– เจคเจ•เจจเฉ€เจ•เฉ€ เจธเฉ‚เจšเจ• เจ•เจฐเฉˆเจธเจผ เจฎเฉเจ•เจค เจธเฉ€, เจซเจฟเจฐ เจซเฉ‹เจ•เจธ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ เจธเจผเจฟเจซเจŸ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจซเฉเจฐเฉ€เจœเจผ 'เจคเฉ‡.

เจฌเจฃเจพเจ‡เจ† เจนเฉ‹เจ‡เจ† เจนเฉˆ เจซเฉเจฐเฉ€เจœเจผ เจฆเฉ‡ เจจเจพเจฒ เจกเฉˆเจธเจผเจฌเฉ‹เจฐเจก เจ…เจคเฉ‡ เจ–เจฐเจš เจ•เฉ€เจคเจพ เจฎเจพเจคเจฐเจพเจคเจฎเจ• ะธ เจ—เฉเจฃเจตเฉฑเจคเจพ เจ‰เจนเจจเจพเจ‚ เจฆเฉ‡ เจ•เจพเจฐเจจเจพเจ‚ เจฆเจพ เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจฃ, เจฎเฉเฉฑเจ– เจฆเฉเจธเจผเจฎเจฃ เจธเจชเฉฑเจธเจผเจŸ เจนเฉ‹ เจ—เจฟเจ† - เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจฆเฉ‡ เจฎเฉเฉฑเจ– เจฅเฉเจฐเฉˆเจก เจตเจฟเฉฑเจš เจญเจพเจฐเฉ€ เจตเจชเจพเจฐเจ• เจคเจฐเจ• เจจเฉ‚เฉฐ เจฒเจพเจ—เฉ‚ เจ•เจฐเจจเจพ. เจ‡เจธ เจฌเฉ‡เจ‡เฉฑเจœเจผเจคเฉ€ เจฒเจˆ เจ‡เฉฑเจ• เจ•เฉเจฆเจฐเจคเฉ€ เจชเฉเจฐเจคเฉ€เจ•เฉเจฐเจฟเจ† เจ‡เจธ เจจเฉ‚เฉฐ เจ•เฉฐเจฎ เจฆเฉ€เจ†เจ‚ เจงเจพเจฐเจพเจตเจพเจ‚ เจตเจฟเฉฑเจš เจงเฉฑเจ•เจฃ เจฆเฉ€ เจ‡เฉฑเจ• เจฌเจฒเจฆเฉ€ เจ‡เฉฑเจ›เจพ เจธเฉ€เฅค เจ‡เจธ เจธเจฎเฉฑเจธเจฟเจ† เจฆเฉ‡ เจตเจฟเจตเจธเจฅเจฟเจค เจนเฉฑเจฒ เจฒเจˆ, เจ…เจธเฉ€เจ‚ เจนเจฒเจ•เฉ‡ เจเจ•เจŸเจฐเจพเจ‚ 'เจคเฉ‡ เจ…เจงเจพเจฐเจค เจฎเจฒเจŸเฉ€-เจฅเจฐเจฟเฉฑเจกเจก เจ†เจฐเจ•เฉ€เจŸเฉˆเจ•เจšเจฐ เจฆเจพ เจธเจนเจพเจฐเจพ เจฒเจฟเจ†เฅค เจฎเฉˆเจ‚ เจ‰เจธเจฆเฉ‡ เจ…เจจเฉเจ•เฉ‚เจฒเจจ เจจเฉ‚เฉฐ เจ†เจˆเจ“เจเจธ เจธเฉฐเจธเจพเจฐ เจฒเจˆ เจธเจฎเจฐเจชเจฟเจค เจ•เฉ€เจคเจพ เจฆเฉ‹ เจฅเจฐเจฟเฉฑเจก เจธเจฎเฉ‚เจนเจฟเจ• เจŸเจตเจฟเฉฑเจŸเจฐ เจตเจฟเฉฑเจš เจ…เจคเฉ‡ Habrรฉ 'เจคเฉ‡ เจฒเฉ‡เจ–. เจฎเฉŒเจœเฉ‚เจฆเจพ เจ•เจนเจพเจฃเฉ€ เจฆเฉ‡ เจนเจฟเฉฑเจธเฉ‡ เจตเจœเฉ‹เจ‚, เจฎเฉˆเจ‚ เจซเฉˆเจธเจฒเฉ‡ เจฆเฉ‡ เจ‰เจนเจจเจพเจ‚ เจชเจนเจฟเจฒเฉ‚เจ†เจ‚ 'เจคเฉ‡ เจœเจผเฉ‹เจฐ เจฆเฉ‡เจฃเจพ เจšเจพเจนเฉเฉฐเจฆเจพ เจนเจพเจ‚ เจœเฉ‹ เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจฆเฉ€ เจšเฉ‹เจฃ เจจเฉ‚เฉฐ เจชเฉเจฐเจญเจพเจตเจฟเจค เจ•เจฐเจฆเฉ‡ เจนเจจเฅค

เจธเจฟเจธเจŸเจฎ เจธเฉฐเจ—เจ เจจ เจฆเจพ เจ…เจฆเจพเจ•เจพเจฐ เจฎเจพเจกเจฒ เจฎเฉฐเจจเจฆเจพ เจนเฉˆ เจ•เจฟ เจฎเจฒเจŸเฉ€เจฅเฉเจฐเฉˆเจกเจฟเฉฐเจ— เจ‡เจธเจฆเจพ เจฆเฉ‚เจœเจพ เจคเฉฑเจค เจฌเจฃ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆเฅค เจ‡เจธ เจตเจฟเฉฑเจš เจฎเจพเจกเจฒ เจ†เจฌเจœเฉˆเจ•เจŸ เจงเจพเจ—เฉ‡ เจฆเฉ€เจ†เจ‚ เจธเฉ€เจฎเจพเจตเจพเจ‚ เจจเฉ‚เฉฐ เจชเจพเจฐ เจ•เจฐเจจเจพ เจชเจธเฉฐเจฆ เจ•เจฐเจฆเฉ‡ เจนเจจเฅค เจ…เจคเฉ‡ เจ‰เจน เจ…เจœเจฟเจนเจพ เจ•เจฆเฉ‡-เจ•เจฆเฉ‡ เจ…เจคเฉ‡ เจ•เฉเจ เจฅเจพเจตเจพเจ‚ 'เจคเฉ‡ เจจเจนเฉ€เจ‚ เจ•เจฐเจฆเฉ‡, เจชเจฐ เจฒเจ—เจญเจ— เจฒเจ—เจพเจคเจพเจฐ เจ…เจคเฉ‡ เจนเจฐ เจœเจ—เฉเจนเจพ เจ•เจฐเจฆเฉ‡ เจนเจจเฅค

เจ†เจˆเจ“เจเจธ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจเจพเจ‚ เจตเจฟเฉฑเจš เจฎเฉเฉฑเจ–-เจฎเฉเฉฑเจฒ เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ LMDB เจฆเฉ€ เจšเจฎเจ• เจ…เจคเฉ‡ เจ—เจฐเฉ€เจฌเฉ€

เจชเฉ‡เจธเจผ เจ•เฉ€เจคเฉ‡ เจšเจฟเฉฑเจคเจฐ เจตเจฟเฉฑเจš เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจ…เจงเจพเจฐ เจฆเฉ‡ เจญเจพเจ—เจพเจ‚ เจตเจฟเฉฑเจšเฉ‹เจ‚ เจ‡เฉฑเจ• เจนเฉˆเฅค เจ‡เจธเจฆเจพ เจฎเฉเฉฑเจ– เจ•เฉฐเจฎ เจฎเฉˆเจ•เจฐเฉ‹ เจชเฉˆเจŸเจฐเจจ เจจเฉ‚เฉฐ เจฒเจพเจ—เฉ‚ เจ•เจฐเจจเจพ เจนเฉˆ เจธเจพเจ‚เจเจพ เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ. เจœเฉ‡ เจเจ‚เจŸเจฐเจชเฉเจฐเจพเจˆเจœเจผ เจธเฉฐเจธเจพเจฐ เจตเจฟเฉฑเจš เจ‡เจธเจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจธเฉ‡เจตเจพเจตเจพเจ‚ เจฆเฉ‡ เจตเจฟเจšเจ•เจพเจฐ เจกเฉ‡เจŸเจพ เจธเจฟเฉฐเจ•เฉเจฐเฉ‹เจจเจพเจˆเจœเจผเฉ‡เจธเจผเจจ เจจเฉ‚เฉฐ เจธเฉฐเจ—เจ เจฟเจค เจ•เจฐเจจ เจฒเจˆ เจ•เฉ€เจคเฉ€ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆ, เจคเจพเจ‚ เจ‡เฉฑเจ• เจเจ•เจŸเจฐ เจ†เจฐเจ•เฉ€เจŸเฉˆเจ•เจšเจฐ เจฆเฉ‡ เจฎเจพเจฎเจฒเฉ‡ เจตเจฟเฉฑเจš, เจฅเจฐเจฟเฉฑเจกเจพเจ‚ เจตเจฟเจšเจ•เจพเจฐ เจกเฉ‡เจŸเจพ. เจ‡เจธ เจคเจฐเฉเจนเจพเจ‚, เจธเจพเจจเฉ‚เฉฐ เจ…เจœเจฟเจนเฉ‡ เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจฆเฉ€ เจœเจผเจฐเฉ‚เจฐเจค เจนเฉˆ, เจœเจฟเจธ เจจเจพเจฒ เจฎเจฒเจŸเฉ€-เจฅเจฐเจฟเฉฑเจกเจก เจตเจพเจคเจพเจตเจฐเจฃ เจตเจฟเฉฑเจš เจ•เฉฐเจฎ เจ•เจฐเจจเจพ เจ˜เฉฑเจŸ เจคเฉ‹เจ‚ เจ˜เฉฑเจŸ เจฎเฉเจธเจผเจ•เจฒเจพเจ‚ เจฆเจพ เจ•เจพเจฐเจจ เจจเจนเฉ€เจ‚ เจฌเจฃเจฆเจพ. เจ–เจพเจธ เจคเฉŒเจฐ 'เจคเฉ‡, เจ‡เจธเจฆเจพ เจฎเจคเจฒเจฌ เจนเฉˆ เจ•เจฟ เจ‡เจธ เจคเฉ‹เจ‚ เจชเฉเจฐเจพเจชเจค เจ•เฉ€เจคเฉ€เจ†เจ‚ เจตเจธเจคเฉ‚เจ†เจ‚ เจ˜เฉฑเจŸเฉ‹-เจ˜เฉฑเจŸ เจฅเจฐเจฟเฉฑเจก-เจธเฉเจฐเฉฑเจ–เจฟเจ…เจค เจนเฉ‹เจฃเฉ€เจ†เจ‚ เจšเจพเจนเฉ€เจฆเฉ€เจ†เจ‚ เจนเจจ, เจ…เจคเฉ‡ เจ†เจฆเจฐเจธเจผเจ• เจคเฉŒเจฐ 'เจคเฉ‡ เจชเจฐเจฟเจตเจฐเจคเจจเจธเจผเฉ€เจฒ เจจเจนเฉ€เจ‚ เจนเฉ‹เจฃเฉ€เจ†เจ‚ เจšเจพเจนเฉ€เจฆเฉ€เจ†เจ‚ เจนเจจเฅค เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ เจคเฉเจธเฉ€เจ‚ เจœเจพเจฃเจฆเฉ‡ เจนเฉ‹, เจฌเจพเจ…เจฆ เจตเจพเจฒเฉ‡ เจจเฉ‚เฉฐ เจ•เจฟเจธเฉ‡ เจตเฉ€ เจ•เจฟเจธเจฎ เจฆเฉ‡ เจคเจพเจฒเฉ‡ เจฆเจพ เจธเจนเจพเจฐเจพ เจฒเจ เจฌเจฟเจจเจพเจ‚ เจ•เจˆ เจฅเจฐเจฟเฉฑเจกเจพเจ‚ เจคเฉ‹เจ‚ เจ‡เฉฑเจ•เฉ‹ เจธเจฎเฉ‡เจ‚ เจตเจฐเจคเจฟเจ† เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆ, เจœเจฟเจธเจฆเจพ เจชเฉเจฐเจฆเจฐเจธเจผเจจ 'เจคเฉ‡ เจฒเจพเจนเฉ‡เจตเฉฐเจฆ เจชเฉเจฐเจญเจพเจต เจนเฉเฉฐเจฆเจพ เจนเฉˆ.

เจ†เจˆเจ“เจเจธ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจเจพเจ‚ เจตเจฟเฉฑเจš เจฎเฉเฉฑเจ–-เจฎเฉเฉฑเจฒ เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ LMDB เจฆเฉ€ เจšเจฎเจ• เจ…เจคเฉ‡ เจ—เจฐเฉ€เจฌเฉ€เจกเจพเจŸเจพเจฌเฉ‡เจธ เจฆเฉ€ เจšเฉ‹เจฃ เจจเฉ‚เฉฐ เจชเฉเจฐเจญเจพเจตเจฟเจค เจ•เจฐเจจ เจตเจพเจฒเจพ เจฆเฉ‚เจœเจพ เจฎเจนเฉฑเจคเจตเจชเฉ‚เจฐเจจ เจ•เจพเจฐเจ• เจธเจพเจกเจพ เจ•เจฒเจพเจ‰เจก API เจธเฉ€เฅค เจ‡เจน เจธเจฟเฉฐเจ•เฉเจฐเฉ‹เจจเจพเจˆเจœเจผเฉ‡เจธเจผเจจ เจฒเจˆ เจ—เจฟเฉฑเจŸ เจชเจนเฉเฉฐเจš เจคเฉ‹เจ‚ เจชเฉเจฐเฉ‡เจฐเจฟเจค เจธเฉ€เฅค เจ‰เจธ เจตเจพเจ‚เจ— เจ…เจธเฉ€เจ‚ เจ‰เจฆเฉ‡เจธเจผ เจฐเฉฑเจ–เจฆเฉ‡ เจนเจพเจ‚ เจ”เจซเจฒเจพเจˆเจจ เจชเจนเจฟเจฒเจพ API, เจœเฉ‹ เจ•เจฟ เจ•เจฒเจพเจ‰เจก เจ•เจฒเจพเจ‡เฉฐเจŸเจธ เจฒเจˆ เจขเฉเจ•เจตเฉ‡เจ‚ เจคเฉ‹เจ‚ เจตเฉฑเจง เจฆเจฟเจ–เจฆเจพ เจนเฉˆเฅค เจ‡เจน เจฎเฉฐเจจเจฟเจ† เจ—เจฟเจ† เจธเฉ€ เจ•เจฟ เจ‰เจน เจธเจฟเจฐเจซ เจ‡เฉฑเจ• เจตเจพเจฐ เจ•เจฒเจพเจ‰เจก เจฆเฉ€ เจชเฉ‚เจฐเฉ€ เจธเจฅเจฟเจคเฉ€ เจจเฉ‚เฉฐ เจชเฉฐเจช เจ•เจฐเจจเจ—เฉ‡, เจ…เจคเฉ‡ เจซเจฟเจฐ เจฌเจนเฉเจค เจธเจพเจฐเฉ‡ เจฎเจพเจฎเจฒเจฟเจ†เจ‚ เจตเจฟเฉฑเจš เจฐเฉ‹เจฒเจฟเฉฐเจ— เจคเจฌเจฆเฉ€เจฒเฉ€เจ†เจ‚ เจฆเฉเจ†เจฐเจพ เจธเจฎเจ•เจพเจฒเฉ€เจ•เจฐเจจ เจนเฉ‹เจตเฉ‡เจ—เจพเฅค เจนเจพเจ, เจ‡เจน เจธเฉฐเจญเจพเจตเจจเจพ เจ…เจœเฉ‡ เจตเฉ€ เจธเจฟเจฐเจซ เจธเจฟเจงเจพเจ‚เจคเจ• เจœเจผเฉ‹เจจ เจตเจฟเฉฑเจš เจนเฉˆ, เจ…เจคเฉ‡ เจ…เจญเจฟเจ†เจธ เจตเจฟเฉฑเจš, เจ—เจพเจนเจ•เจพเจ‚ เจจเฉ‡ เจชเฉˆเจšเจพเจ‚ เจจเจพเจฒ เจ•เฉฐเจฎ เจ•เจฐเจจเจพ เจจเจนเฉ€เจ‚ เจธเจฟเฉฑเจ–เจฟเจ† เจนเฉˆ. เจ‡เจธ เจฆเฉ‡ เจ•เจˆ เจฌเจพเจนเจฐเจฎเฉเจ–เฉ€ เจ•เจพเจฐเจจ เจนเจจ, เจœเจฟเจจเฉเจนเจพเจ‚ เจจเฉ‚เฉฐ เจœเจพเจฃ-เจชเจ›เจพเจฃ เจตเจฟเจš เจฆเฉ‡เจฐเฉ€ เจจเจพ เจ•เจฐเจจ เจฒเจˆ, เจ…เจธเฉ€เจ‚ เจฌเจฐเฉˆเจ•เจŸเจพเจ‚ เจคเฉ‹เจ‚ เจฌเจพเจนเจฐ เจšเจฒเฉ‡ เจœเจพเจตเจพเจ‚เจ—เฉ‡เฅค เจนเฉเจฃ เจนเฉ‹เจฐ เจตเฉ€ เจฆเจฟเจฒเจšเจธเจช เจธเจฌเจ• เจฆเฉ‡ เจธเจฟเฉฑเจ–เจฟเจ†เจฆเจพเจ‡เจ• เจจเจคเฉ€เจœเฉ‡ เจนเจจ เจ•เจฟ เจ•เฉ€ เจนเฉเฉฐเจฆเจพ เจนเฉˆ เจœเจฆเฉ‹เจ‚ API เจจเฉ‡ "A" เจ•เจฟเจนเจพ เจ…เจคเฉ‡ เจ‡เจธเจฆเฉ‡ เจ–เจชเจคเจ•เจพเจฐ เจจเฉ‡ "B" เจจเจนเฉ€เจ‚ เจ•เจฟเจนเจพเฅค

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

เจนเฉ‹เจฐ เจฒเฉ‹เฉœเจพเจ‚ เจตเจงเฉ‡เจฐเฉ‡ เจฐเจตเจพเจ‡เจคเฉ€ เจนเจจ, เจ…เจคเฉ‡ เจ‰เจนเจจเจพเจ‚ เจฆเฉ€ เจชเฉ‚เจฐเฉ€ เจธเฉ‚เจšเฉ€ เจนเฉ‡เจ เจพเจ‚ เจฆเจฟเฉฑเจคเฉ€ เจ—เจˆ เจนเฉˆเฅค

  1. เจฅเจฐเจฟเฉฑเจก เจธเฉเจฐเฉฑเจ–เจฟเจ†.
  2. เจฎเจฒเจŸเฉ€เจชเฉเจฐเฉ‹เจธเฉˆเจธเจฟเฉฐเจ—. เจจเจพ เจธเจฟเจฐเจซเจผ เจฅเจฐเจฟเฉฑเจกเจพเจ‚ เจฆเฉ‡ เจตเจฟเจšเจ•เจพเจฐ, เจธเจ—เฉ‹เจ‚ เจฎเฉเฉฑเจ– เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจ…เจคเฉ‡ เจ†เจˆเจ“เจเจธ เจเจ•เจธเจŸเฉˆเจ‚เจธเจผเจจเจพเจ‚ เจตเจฟเจšเจ•เจพเจฐ เจธเจฅเจฟเจคเฉ€ เจจเฉ‚เฉฐ เจธเจฎเจ•เจพเจฒเฉ€ เจ•เจฐเจจ เจฒเจˆ เจ‡เฉฑเจ•เฉ‹ เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจ‰เจฆเจพเจนเจฐเจจ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจ เจฆเฉ€ เจ‡เฉฑเจ›เจพ เจฆเฉเจ†เจฐเจพ เจจเจฟเจฐเจงเจพเจฐเจค เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆเฅค
  3. เจธเจŸเฉ‹เจฐ เจ•เฉ€เจคเฉ€เจ†เจ‚ เจธเฉฐเจธเจฅเจพเจตเจพเจ‚ เจจเฉ‚เฉฐ เจ—เฉˆเจฐ-เจชเจฐเจฟเจตเจฐเจคเจจเจธเจผเฉ€เจฒ เจตเจธเจคเฉ‚เจ†เจ‚ เจตเจœเฉ‹เจ‚ เจฆเจฐเจธเจพเจ‰เจฃ เจฆเฉ€ เจฏเฉ‹เจ—เจคเจพ
  4. CRUD เจ“เจชเจฐเฉ‡เจธเจผเจจเจพเจ‚ เจฆเฉ‡ เจ…เฉฐเจฆเจฐ เจ—เจคเฉ€เจธเจผเฉ€เจฒ เจตเฉฐเจก เจฆเฉ€ เจ˜เจพเจŸเฅค
  5. เจฎเฉ‚เจฒ เจธเฉฐเจชเจคเฉ€เจ†เจ‚ เจฒเจˆ เจŸเฉเจฐเจพเจ‚เจœเฉˆเจ•เจธเจผเจจ เจธเจฎเจฐเจฅเจจ ACIDเจฎเฉเฉฑเจ– เจธเจผเจฌเจฆ: เจชเจฐเจฎเจพเจฃเฉ‚, เจ‡เจ•เจธเจพเจฐเจคเจพ, เจ…เจฒเฉฑเจ—-เจฅเจฒเฉฑเจ—เจคเจพ เจ…เจคเฉ‡ เจญเจฐเฉ‹เจธเฉ‡เจฏเฉ‹เจ—เจคเจพเฅค
  6. เจธเจญ เจคเฉ‹เจ‚ เจชเฉเจฐเจธเจฟเฉฑเจง เจ•เฉ‡เจธเจพเจ‚ 'เจคเฉ‡ เจธเจชเฉ€เจก.

เจฒเฉ‹เฉœเจพเจ‚ เจฆเฉ‡ เจ‡เจธ เจธเจฎเฉ‚เจน เจฆเฉ‡ เจจเจพเจฒ, SQLite เจ‡เฉฑเจ• เจšเฉฐเจ—เฉ€ เจšเฉ‹เจฃ เจธเฉ€ เจ…เจคเฉ‡ เจ…เจœเฉ‡ เจตเฉ€ เจนเฉˆเฅค เจนเจพเจฒเจพเจ‚เจ•เจฟ, เจตเจฟเจ•เจฒเจชเจพเจ‚ เจฆเฉ‡ เจ…เจงเจฟเจเจจ เจฆเฉ‡ เจนเจฟเฉฑเจธเฉ‡ เจตเจœเฉ‹เจ‚, เจฎเฉˆเจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจ•เจฟเจคเจพเจฌ เจฎเจฟเจฒเฉ€ "เจฒเฉˆเจตเจฒเจกเฉ€เจฌเฉ€ เจจเจพเจฒ เจธเจผเฉเจฐเฉ‚เจ†เจค เจ•เจฐเจจเจพ". เจ‰เจธเจฆเฉ€ เจ…เจ—เจตเจพเจˆ เจตเจฟเฉฑเจš, เจ‡เฉฑเจ• เจฌเฉˆเจ‚เจšเจฎเจพเจฐเจ• เจฒเจฟเจ–เจฟเจ† เจ—เจฟเจ† เจธเฉ€ เจœเฉ‹ เจ…เจธเจฒ เจ•เจฒเจพเจ‰เจก เจฆเฉเจฐเจฟเจธเจผเจพเจ‚ เจตเจฟเฉฑเจš เจตเฉฑเจ–-เจตเฉฑเจ– เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจจเจพเจฒ เจ•เฉฐเจฎ เจฆเฉ€ เจ—เจคเฉ€ เจฆเฉ€ เจคเฉเจฒเจจเจพ เจ•เจฐเจฆเจพ เจนเฉˆเฅค เจจเจคเฉ€เจœเจพ เจœเฉฐเจ—เจฒเฉ€ เจ‰เจฎเฉ€เจฆเจพเจ‚ เจคเฉ‹เจ‚ เจตเฉฑเจง เจ—เจฟเจ†. เจธเจญ เจคเฉ‹เจ‚ เจชเฉเจฐเจธเจฟเฉฑเจง เจ•เฉ‡เจธเจพเจ‚ 'เจคเฉ‡ - เจธเจพเจฐเฉ€เจ†เจ‚ เจซเจพเจˆเจฒเจพเจ‚ เจฆเฉ€ เจ•เฉเจฐเจฎเจฌเฉฑเจง เจธเฉ‚เจšเฉ€ เจ…เจคเฉ‡ เจฆเจฟเฉฑเจคเฉ€ เจ—เจˆ เจกเจพเจ‡เจฐเฉˆเจ•เจŸเจฐเฉ€ เจฒเจˆ เจธเจพเจฐเฉ€เจ†เจ‚ เจซเจพเจˆเจฒเจพเจ‚ เจฆเฉ€ เจ•เฉเจฐเจฎเจฌเฉฑเจง เจธเฉ‚เจšเฉ€ 'เจคเฉ‡ เจ•เจฐเจธเจฐ เจชเฉเจฐเจพเจชเจค เจ•เจฐเจจเจพ - LMDB SQLite เจจเจพเจฒเฉ‹เจ‚ 10 เจ—เฉเจฃเจพ เจคเฉ‡เจœเจผ เจจเจฟเจ•เจฒเจฟเจ†เฅค เจšเฉ‹เจฃ เจธเจชเฉฑเจธเจผเจŸ เจนเฉ‹ เจ—เจˆ.

เจ†เจˆเจ“เจเจธ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจเจพเจ‚ เจตเจฟเฉฑเจš เจฎเฉเฉฑเจ–-เจฎเฉเฉฑเจฒ เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ LMDB เจฆเฉ€ เจšเจฎเจ• เจ…เจคเฉ‡ เจ—เจฐเฉ€เจฌเฉ€

2. LMDB เจชเฉ‹เจœเฉ€เจธเจผเจจเจฟเฉฐเจ—

LMDB เจ‡เฉฑเจ• เจฒเจพเจ‡เจฌเฉเจฐเฉ‡เจฐเฉ€ เจนเฉˆ, เจฌเจนเฉเจค เจ›เฉ‹เจŸเฉ€ (เจธเจฟเจฐเจซ 10K เจฒเจพเจˆเจจเจพเจ‚), เจœเฉ‹ เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจฆเฉ€ เจธเจญ เจคเฉ‹เจ‚ เจจเฉ€เจตเฉ€เจ‚ เจฌเฉเจจเจฟเจ†เจฆเฉ€ เจชเจฐเจค เจจเฉ‚เฉฐ เจฒเจพเจ—เฉ‚ เจ•เจฐเจฆเฉ€ เจนเฉˆ - เจธเจŸเฉ‹เจฐเฉ‡เจœเฅค

เจ†เจˆเจ“เจเจธ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจเจพเจ‚ เจตเจฟเฉฑเจš เจฎเฉเฉฑเจ–-เจฎเฉเฉฑเจฒ เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ LMDB เจฆเฉ€ เจšเจฎเจ• เจ…เจคเฉ‡ เจ—เจฐเฉ€เจฌเฉ€

เจ‰เจชเจฐเฉ‹เจ•เจค เจšเจฟเฉฑเจคเจฐ เจฆเจฐเจธเจพเจ‰เจ‚เจฆเจพ เจนเฉˆ เจ•เจฟ SQLite เจจเจพเจฒ LMDB เจฆเฉ€ เจคเฉเจฒเจจเจพ เจ•เจฐเจจเจพ, เจœเฉ‹ เจ•เจฟ เจ‰เฉฑเจš เจชเฉฑเจงเจฐเจพเจ‚ เจจเฉ‚เฉฐ เจฒเจพเจ—เฉ‚ เจ•เจฐเจฆเจพ เจนเฉˆ, เจ†เจฎ เจคเฉŒเจฐ 'เจคเฉ‡ เจ•เฉ‹เจฐ เจกเฉ‡เจŸเจพ เจตเจพเจฒเฉ‡ SQLite เจจเจพเจฒเฉ‹เจ‚ เจœเจผเจฟเจ†เจฆเจพ เจธเจนเฉ€ เจจเจนเฉ€เจ‚ เจนเฉˆเฅค เจธเจฎเจพเจจ เจชเฉเจฐเจคเฉ€เจฏเฉ‹เจ—เฉ€ - เจฌเจฐเจ•เจฒเฉ‡เจกเฉ€เจฌเฉ€, เจฒเฉ‡เจตเจฒเจกเฉ€เจฌเฉ€, เจธเฉ‹เจซเฉ€เจ†, เจฐเฉŒเจ•เจธเจกเฉ€เจฌเฉ€, เจ†เจฆเจฟ เจฆเฉ‡ เจคเฉŒเจฐ 'เจคเฉ‡ เจธเจฎเจพเจจ เจธเจŸเฉ‹เจฐเฉ‡เจœ เจ‡เฉฐเจœเจฃเจพเจ‚ เจฆเจพ เจนเจตเจพเจฒเจพ เจฆเฉ‡เจฃเจพ เจตเจงเฉ‡เจฐเฉ‡ เจ‰เจšเจฟเจค เจนเฉ‹เจตเฉ‡เจ—เจพเฅค เจ‡เฉฑเจฅเฉ‡ เจตเฉ€ เจตเจฟเจ•เจพเจธ เจนเจจ เจœเจฟเฉฑเจฅเฉ‡ LMDB SQLite เจฒเจˆ เจธเจŸเฉ‹เจฐเฉ‡เจœ เจ‡เฉฐเจœเจฃ เจฆเฉ‡ เจนเจฟเฉฑเจธเฉ‡ เจตเจœเฉ‹เจ‚ เจ•เฉฐเจฎ เจ•เจฐเจฆเจพ เจนเฉˆเฅค เจ…เจœเจฟเจนเจพ เจชเจนเจฟเจฒเจพ เจชเฉเจฐเจฏเฉ‹เจ— 2012 เจตเจฟเฉฑเจš เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจธเฉ€ เจ–เจฐเจš เจ•เฉ€เจคเจพ เจฒเฉ‡เจ–เจ• LMDB เจนเจพเจตเจฐเจก เจšเฉ‚. ะ ะตะทัƒะปัŒั‚ะฐั‚ั‹ เจ‡เจน เจ‡เฉฐเจจเจพ เจฆเจฟเจฒเจšเจธเจช เจธเจพเจฌเจค เจนเฉ‹เจ‡เจ† เจ•เจฟ เจ‰เจธเจฆเฉ€ เจชเจนเจฟเจฒเจ•เจฆเจฎเฉ€ เจจเฉ‚เฉฐ เจ“.เจเจธ.เจเจธ. เจฆเฉ‡ เจ‰เจคเจธเจผเจพเจนเฉ€ เจฒเฉ‹เจ•เจพเจ‚ เจฆเฉเจ†เจฐเจพ เจšเฉเฉฑเจ•เจฟเจ† เจ—เจฟเจ†, เจ…เจคเฉ‡ เจ‡เจธเจฆเฉ‡ เจšเจฟเจนเจฐเฉ‡ เจตเจฟเฉฑเจš เจ‡เจธเจฆเฉ€ เจจเจฟเจฐเฉฐเจคเจฐเจคเจพ เจชเจพเจˆ เจ—เจˆเฅค LumoSQL. เจœเจจเจตเจฐเฉ€ 2020 เจตเจฟเฉฑเจš เจ‡เจธ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจฆเจพ เจฒเฉ‡เจ–เจ• เจกเฉ‡เจจ เจธเจผเฉ€เจ…เจฐเจฐ เจนเฉˆ เจชเฉ‡เจธเจผ เจ•เฉ€เจคเจพ เจ‡เจน LinuxConfAu 'เจคเฉ‡ เจนเฉˆเฅค

LMDB เจฆเฉ€ เจฎเฉเฉฑเจ– เจตเจฐเจคเฉ‹เจ‚ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจฒเจˆ เจ‡เฉฑเจ• เจ‡เฉฐเจœเจฃ เจตเจœเฉ‹เจ‚ เจนเฉˆเฅค เจฒเจพเจ‡เจฌเฉเจฐเฉ‡เจฐเฉ€ เจกเจฟเจตเฉˆเจฒเจชเจฐเจพเจ‚ เจจเฉ‚เฉฐ เจ†เจชเจฃเฉ€ เจฆเจฟเฉฑเจ– เจฆเฉ‡เจฃ เจตเจพเจฒเฉ€ เจนเฉˆ OpenLDAP, เจœเฉ‹ เจ†เจชเจฃเฉ‡ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจฆเฉ‡ เจ…เจงเจพเจฐ เจตเจœเฉ‹เจ‚ เจฌเจฐเจ•เจฒเฉ‡เจกเฉ€เจฌเฉ€ เจคเฉ‹เจ‚ เจฌเจนเฉเจค เจ…เจธเฉฐเจคเฉเจธเจผเจŸ เจธเจจเฅค เจจเจฟเจฎเจฐ เจฒเจพเจ‡เจฌเฉเจฐเฉ‡เจฐเฉ€ เจคเฉ‹เจ‚ เจฆเฉ‚เจฐ เจงเฉฑเจ•เจพ btree, เจนเจพเจตเจฐเจก เจšเฉ‚ เจธเจพเจกเฉ‡ เจธเจฎเฉ‡เจ‚ เจฆเฉ‡ เจธเจญ เจคเฉ‹เจ‚ เจชเฉเจฐเจธเจฟเฉฑเจง เจตเจฟเจ•เจฒเจชเจพเจ‚ เจตเจฟเฉฑเจšเฉ‹เจ‚ เจ‡เฉฑเจ• เจฌเจฃเจพเจ‰เจฃ เจฆเฉ‡ เจฏเฉ‹เจ— เจธเฉ€. เจ‰เจธเจจเฉ‡ เจ†เจชเจฃเฉ€ เจฌเจนเฉเจค เจตเจงเฉ€เจ† เจฐเจฟเจชเฉ‹เจฐเจŸ เจ‡เจธ เจ•เจนเจพเจฃเฉ€ เจฆเฉ‡ เจจเจพเจฒ-เจจเจพเจฒ LMDB เจฆเฉ‡ เจ…เฉฐเจฆเจฐเฉ‚เจจเฉ€ เจขเจพเจ‚เจšเฉ‡ เจจเฉ‚เฉฐ เจธเจฎเจฐเจชเจฟเจค เจ•เฉ€เจคเฉ€เฅค "เจฆเจฟ เจฒเจพเจˆเจŸเจจเจฟเฉฐเจ— เจฎเฉˆเจฎเฉ‹เจฐเฉ€-เจฎเฉˆเจชเจก เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ". เจฒเจฟเจ“เจจเจฟเจก เจฏเฉ‚เจฐเฉ€เจเจต (เจ‰เจฐเจซเจผ yleo) เจนเจพเจˆเจฒเฉ‹เจก 2015 'เจคเฉ‡ เจ†เจชเจฃเฉ‡ เจญเจพเจธเจผเจฃ เจตเจฟเฉฑเจš เจธเจ•เจพเจฐเจพเจคเจฎเจ• เจคเจ•เจจเจพเจฒเฉ‹เจœเฉ€ เจคเฉ‹เจ‚ "LMDB เจ‡เฉฐเจœเจฃ เจ‡เฉฑเจ• เจตเจฟเจธเจผเฉ‡เจธเจผ เจšเฉˆเจ‚เจชเฉ€เจ…เจจ เจนเฉˆ". เจ‡เจธ เจตเจฟเฉฑเจš, เจ‰เจน ReOpenLDAP เจจเฉ‚เฉฐ เจฒเจพเจ—เฉ‚ เจ•เจฐเจจ เจฆเฉ‡ เจธเจฎเจพเจจ เจ•เจพเจฐเจœ เจฆเฉ‡ เจธเฉฐเจฆเจฐเจญ เจตเจฟเฉฑเจš LMDB เจฌเจพเจฐเฉ‡ เจ—เฉฑเจฒ เจ•เจฐเจฆเจพ เจนเฉˆ, เจ…เจคเฉ‡ LevelDB เจชเจนเจฟเจฒเจพเจ‚ เจนเฉ€ เจคเฉเจฒเจจเจพเจคเจฎเจ• เจ†เจฒเฉ‹เจšเจจเจพ เจตเจฟเฉฑเจšเฉ‹เจ‚ เจฒเฉฐเจ˜ เจšเฉเฉฑเจ•เจพ เจนเฉˆเฅค เจฒเจพเจ—เฉ‚ เจ•เจฐเจจ เจฆเฉ‡ เจจเจคเฉ€เจœเฉ‡ เจตเจœเฉ‹เจ‚, เจธเจ•เจพเจฐเจพเจคเจฎเจ• เจคเจ•เจจเจพเจฒเฉ‹เจœเฉ€เจ†เจ‚ เจจเฉ‡ เจ‡เฉฑเจ• เจธเจฐเจ—เจฐเจฎเฉ€ เจจเจพเจฒ เจตเจฟเจ•เจพเจธเจธเจผเฉ€เจฒ เจซเฉ‹เจฐเจ• เจตเฉ€ เจชเฉเจฐเจพเจชเจค เจ•เฉ€เจคเจพ MDBX เจฌเจนเฉเจค เจนเฉ€ เจธเฉเจ†เจฆเฉ€ เจตเจฟเจธเจผเฉ‡เจธเจผเจคเจพเจตเจพเจ‚, เจ…เจจเฉเจ•เฉ‚เจฒเจคเจพเจตเจพเจ‚ เจ…เจคเฉ‡ เจจเจพเจฒ เจฌเฉฑเจ— เจซเจฟเจ•เจธ.

LMDB เจจเฉ‚เฉฐ เจ…เจ•เจธเจฐ เจธเจŸเฉ‹เจฐเฉ‡เจœ เจฆเฉ‡ เจจเจพเจฒ-เจจเจพเจฒ เจตเจฐเจคเจฟเจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆเฅค เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ, เจฎเฉ‹เจœเจผเฉ€เจฒเจพ เจซเจพเจ‡เจฐเจซเจพเจ•เจธ เจฌเจฐเจพเจŠเจœเจผเจฐ เจšเฉเจฃเจฟเจ† เจ‡เจน เจ•เจˆ เจฒเฉ‹เฉœเจพเจ‚ เจฒเจˆ, เจ…เจคเฉ‡, เจธเฉฐเจธเจ•เจฐเจฃ 9, Xcode เจคเฉ‹เจ‚ เจธเจผเฉเจฐเฉ‚ เจนเฉเฉฐเจฆเจพ เจนเฉˆ เจคเจฐเจœเฉ€เจนเฉ€ เจธเฉ‚เจšเจ•เจพเจ‚เจ• เจจเฉ‚เฉฐ เจธเจŸเฉ‹เจฐ เจ•เจฐเจจ เจฒเจˆ เจ‡เจธเจฆเจพ SQLite.

เจ‡เฉฐเจœเจฃ เจจเฉ‡ เจฎเฉ‹เจฌเจพเจˆเจฒ เจตเจฟเจ•เจพเจธ เจฆเฉ€ เจฆเฉเจจเฉ€เจ† เจตเจฟเฉฑเจš เจตเฉ€ เจซเฉœ เจฒเจฟเจ†. เจ‡เจธเจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจฆเฉ€เจ†เจ‚ เจจเจฟเจธเจผเจพเจจเฉ€เจ†เจ‚ เจนเฉ‹ เจธเจ•เจฆเฉ€เจ†เจ‚ เจนเจจ เจฒเฉฑเจญเจฃ เจฒเจˆ เจŸเฉˆเจฒเฉ€เจ—เฉเจฐเจพเจฎ เจฒเจˆ iOS เจ•เจฒเจพเจ‡เฉฐเจŸ เจตเจฟเฉฑเจšเฅค เจฒเจฟเฉฐเจ•เจกเจ‡เจจ เจ‡เฉฑเจ• เจ•เจฆเจฎ เจนเฉ‹เจฐ เจ…เฉฑเจ—เฉ‡ เจตเจงเจฟเจ† เจ…เจคเฉ‡ เจ†เจชเจฃเฉ‡ เจ˜เจฐเฉ‡เจฒเฉ‚ เจกเฉ‡เจŸเจพ เจ•เฉˆเจšเจฟเฉฐเจ— เจซเจฐเฉ‡เจฎเจตเจฐเจ•, เจฐเจพเจ•เฉ‡เจŸ เจกเฉ‡เจŸเจพ เจฒเจˆ เจกเจฟเจซเฉŒเจฒเจŸ เจธเจŸเฉ‹เจฐเฉ‡เจœ เจตเจœเฉ‹เจ‚ เจเจฒเจเจฎเจกเฉ€เจฌเฉ€ เจจเฉ‚เฉฐ เจšเฉเจฃเจฟเจ†, เจœเจฟเจธ เจฌเจพเจฐเฉ‡ เจฆเฉฑเจธเจฟเจ† 2016 เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจฒเฉ‡เจ– เจตเจฟเฉฑเจš.

เจเจฒเจเจฎเจกเฉ€เจฌเฉ€ เจ“เจฐเฉ‡เจ•เจฒ เจฆเฉ‡ เจจเจฟเจฏเฉฐเจคเจฐเจฃ เจ…เจงเฉ€เจจ เจคเจฌเจฆเฉ€เจฒเฉ€ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ เจฌเจฐเจ•เจฒเฉ‡เจกเฉ€เจฌเฉ€ เจฆเฉเจ†เจฐเจพ เจ›เฉฑเจกเฉ‡ เจ—เจ เจธเจฅเจพเจจ เจตเจฟเฉฑเจš เจธเฉ‚เจฐเจœ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจœเจ—เฉเจนเจพ เจฒเจˆ เจธเจซเจฒเจคเจพเจชเฉ‚เจฐเจตเจ• เจฒเฉœ เจฐเจฟเจนเจพ เจนเฉˆเฅค เจฒเจพเจ‡เจฌเฉเจฐเฉ‡เจฐเฉ€ เจจเฉ‚เฉฐ เจ‡เจธเจฆเฉ€ เจ—เจคเฉ€ เจ…เจคเฉ‡ เจญเจฐเฉ‹เจธเฉ‡เจฏเฉ‹เจ—เจคเจพ เจฒเจˆ เจชเจฟเจ†เจฐ เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆ, เจ‡เฉฑเจฅเฉ‹เจ‚ เจคเฉฑเจ• เจ•เจฟ เจ†เจชเจฃเฉ€ เจ•เจฟเจธเจฎ เจฆเฉ‡ เจฎเฉเจ•เจพเจฌเจฒเฉ‡ เจตเฉ€เฅค เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ เจคเฉเจธเฉ€เจ‚ เจœเจพเจฃเจฆเฉ‡ เจนเฉ‹, เจ‡เฉฑเจฅเฉ‡ เจ•เฉ‹เจˆ เจฎเฉเจซเจค เจฒเฉฐเจš เจจเจนเฉ€เจ‚ เจนเฉˆ, เจ…เจคเฉ‡ เจฎเฉˆเจ‚ เจ‰เจธ เจตเจชเจพเจฐ-เจฌเฉฐเจฆ 'เจคเฉ‡ เจœเจผเฉ‹เจฐ เจฆเฉ‡เจฃเจพ เจšเจพเจนเจพเจ‚เจ—เจพ เจœเจฟเจธเจฆเจพ เจคเฉเจนเจพเจจเฉ‚เฉฐ LMDB เจ…เจคเฉ‡ SQLite เจตเจฟเจšเจ•เจพเจฐ เจšเฉ‹เจฃ เจ•เจฐเจจ เจตเฉ‡เจฒเฉ‡ เจธเจพเจนเจฎเจฃเจพ เจ•เจฐเจจเจพ เจชเจตเฉ‡เจ—เจพเฅค เจ‰เจชเจฐเฉ‹เจ•เจค เจšเจฟเฉฑเจคเจฐ เจธเจชเจธเจผเจŸ เจคเฉŒเจฐ เจคเฉ‡ เจฆเจฐเจธเจพเจ‰เจ‚เจฆเจพ เจนเฉˆ เจ•เจฟ เจตเจงเฉ€ เจนเฉ‹เจˆ เจ—เจคเฉ€ เจ•เจฟเจตเฉ‡เจ‚ เจชเฉเจฐเจพเจชเจค เจ•เฉ€เจคเฉ€ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆเฅค เจชเจนเจฟเจฒเจพเจ‚, เจ…เจธเฉ€เจ‚ เจกเจฟเจธเจ• เจธเจŸเฉ‹เจฐเฉ‡เจœ เจฆเฉ‡ เจธเจฟเจ–เจฐ 'เจคเฉ‡ เจเจฌเจธเจŸเจฐเฉˆเจ•เจธเจผเจจ เจฆเฉ€เจ†เจ‚ เจตเจพเจงเฉ‚ เจชเจฐเจคเจพเจ‚ เจฒเจˆ เจญเฉเจ—เจคเจพเจจ เจจเจนเฉ€เจ‚ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚เฅค เจฌเฉ‡เจธเจผเฉฑเจ•, เจ‡เฉฑเจ• เจšเฉฐเจ—เฉ‡ เจ†เจฐเจ•เฉ€เจŸเฉˆเจ•เจšเจฐ เจตเจฟเฉฑเจš, เจคเฉเจธเฉ€เจ‚ เจ…เจœเฉ‡ เจตเฉ€ เจ‰เจนเจจเจพเจ‚ เจคเฉ‹เจ‚ เจฌเจฟเจจเจพเจ‚ เจจเจนเฉ€เจ‚ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹, เจ…เจคเฉ‡ เจ‰เจน เจฒเจพเจœเจผเจฎเฉ€ เจคเฉŒเจฐ 'เจคเฉ‡ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจ•เฉ‹เจก เจตเจฟเฉฑเจš เจฆเจฟเจ–เจพเจˆ เจฆเฉ‡เจฃเจ—เฉ‡, เจชเจฐ เจ‰เจน เจฌเจนเฉเจค เจชเจคเจฒเฉ‡ เจนเฉ‹เจฃเจ—เฉ‡. เจ‰เจนเจจเจพเจ‚ เจ•เฉ‹เจฒ เจ‰เจน เจตเจฟเจธเจผเฉ‡เจธเจผเจคเจพเจตเจพเจ‚ เจจเจนเฉ€เจ‚ เจนเฉ‹เจฃเจ—เฉ€เจ†เจ‚ เจœเฉ‹ เจ•เจฟเจธเฉ‡ เจ–เจพเจธ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจฒเจˆ เจฒเฉ‹เฉœเฉ€เจ‚เจฆเฉ‡ เจจเจนเฉ€เจ‚ เจนเจจ, เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ, SQL เจญเจพเจธเจผเจพ เจตเจฟเฉฑเจš เจธเจตเจพเจฒเจพเจ‚ เจฒเจˆ เจธเจฎเจฐเจฅเจจเฅค เจฆเฉ‚เจœเจพ, เจกเจฟเจธเจ• เจธเจŸเฉ‹เจฐเฉ‡เจœ เจฒเจˆ เจฌเฉ‡เจจเจคเฉ€เจ†เจ‚ เจฒเจˆ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจ“เจชเจฐเฉ‡เจธเจผเจจเจพเจ‚ เจฆเฉ€ เจฎเฉˆเจชเจฟเฉฐเจ— เจจเฉ‚เฉฐ เจฌเจฟเจนเจคเจฐ เจขเฉฐเจ— เจจเจพเจฒ เจฒเจพเจ—เฉ‚ เจ•เจฐเจจเจพ เจธเฉฐเจญเจต เจนเฉ‹ เจœเจพเจ‚เจฆเจพ เจนเฉˆเฅค เจœเฉ‡เจ•เจฐ SQLite เจฎเฉ‡เจฐเฉ‡ เจ•เฉฐเจฎ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจ”เจธเจค เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจฆเฉ€เจ†เจ‚ เจ”เจธเจค เจฒเฉ‹เฉœเจพเจ‚ เจคเฉ‹เจ‚ เจ†เจ‰เจ‚เจฆเจพ เจนเฉˆ, เจซเจฟเจฐ เจคเฉเจธเฉ€เจ‚, เจ‡เฉฑเจ• เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจกเจฟเจตเฉˆเจฒเจชเจฐ เจตเจœเฉ‹เจ‚, เจฎเฉเฉฑเจ– เจฒเฉ‹เจก เจฆเฉเจฐเจฟเจธเจผเจพเจ‚ เจคเฉ‹เจ‚ เจšเฉฐเจ—เฉ€ เจคเจฐเฉเจนเจพเจ‚ เจœเจพเจฃเฉ‚ เจนเฉ‹เฅค เจตเจงเฉ‡เจฐเฉ‡ เจฒเจพเจญเจ•เจพเจฐเฉ€ เจนเฉฑเจฒ เจฒเจˆ, เจคเฉเจนเจพเจจเฉ‚เฉฐ เจธเจผเฉเจฐเฉ‚เจ†เจคเฉ€ เจนเฉฑเจฒ เจฆเฉ‡ เจตเจฟเจ•เจพเจธ เจ…เจคเฉ‡ เจ‡เจธเจฆเฉ‡ เจฌเจพเจ…เจฆ เจฆเฉ‡ เจธเจฎเจฐเจฅเจจ เจฆเฉ‹เจตเจพเจ‚ เจฒเจˆ เจ‡เฉฑเจ• เจตเจงเฉ€ เจนเฉ‹เจˆ เจ•เฉ€เจฎเจค เจฆเจพ เจญเฉเจ—เจคเจพเจจ เจ•เจฐเจจเจพ เจนเฉ‹เจตเฉ‡เจ—เจพเฅค

3. เจคเจฟเฉฐเจจ เจตเฉเจนเฉ‡เจฒ LMDB

LMDB เจจเฉ‚เฉฐ เจชเฉฐเจ›เฉ€เจ†เจ‚ เจฆเฉ€ เจจเจœเจผเจฐ เจคเฉ‹เจ‚ เจฆเฉ‡เจ–เจฃ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ, เจ‡เจน เจกเฉ‚เฉฐเจ˜เจพเจˆ เจตเจฟเฉฑเจš เจœเจพเจฃ เจฆเจพ เจธเจฎเจพเจ‚ เจนเฉˆเฅค เจ…เจ—เจฒเฉ‡ เจคเจฟเฉฐเจจ เจญเจพเจ— เจฎเฉเฉฑเจ– เจตเฉเจนเฉ‡เจฒเจพเจ‚ เจฆเฉ‡ เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจฃ เจฒเจˆ เจธเจฎเจฐเจชเจฟเจค เจ•เฉ€เจคเฉ‡ เจœเจพเจฃเจ—เฉ‡ เจœเจฟเจจเฉเจนเจพเจ‚ 'เจคเฉ‡ เจธเจŸเฉ‹เจฐเฉ‡เจœ เจ†เจฐเจ•เฉ€เจŸเฉˆเจ•เจšเจฐ เจŸเจฟเจ•เจฟเจ† เจนเฉ‹เจ‡เจ† เจนเฉˆ:

  1. เจกเจฟเจธเจ• เจจเจพเจฒ เจ•เฉฐเจฎ เจ•เจฐเจจ เจ…เจคเฉ‡ เจ…เฉฐเจฆเจฐเฉ‚เจจเฉ€ เจกเจพเจŸเจพ เจขเจพเจ‚เจšเฉ‡ เจจเฉ‚เฉฐ เจธเจฎเจ•เจพเจฒเฉ€ เจ•เจฐเจจ เจฒเจˆ เจ‡เฉฑเจ• เจตเจฟเจงเฉ€ เจตเจœเฉ‹เจ‚ เจฎเฉˆเจฎเฉ‹เจฐเฉ€-เจฎเฉˆเจช เจ•เฉ€เจคเฉ€เจ†เจ‚ เจซเจพเจˆเจฒเจพเจ‚เฅค
  2. เจฌเฉ€+-เจŸเฉเจฐเฉ€ เจธเจŸเฉ‹เจฐ เจ•เฉ€เจคเฉ‡ เจกเฉ‡เจŸเจพ เจขเจพเจ‚เจšเฉ‡ เจฆเฉ‡ เจธเฉฐเจ—เจ เจจ เจตเจœเฉ‹เจ‚เฅค
  3. ACID เจŸเฉเจฐเจพเจ‚เจœเฉˆเจ•เจธเจผเจจเจฒ เจตเจฟเจธเจผเฉ‡เจธเจผเจคเจพเจตเจพเจ‚ เจ…เจคเฉ‡ เจฎเจฒเจŸเฉ€เจตเจฐเจœเจผเจจเจฟเฉฐเจ— เจชเฉเจฐเจฆเจพเจจ เจ•เจฐเจจ เจฒเจˆ เจ‡เฉฑเจ• เจชเจนเฉเฉฐเจš เจตเจœเฉ‹เจ‚ เจ•เจพเจชเฉ€-เจ†เจจ-เจฐเจพเจˆเจŸเฅค

3.1 เจตเฉเจนเฉ‡เจฒ #1. เจฎเฉˆเจฎเฉ‹เจฐเฉ€-เจฎเฉˆเจช เจ•เฉ€เจคเฉ€เจ†เจ‚ เจซเจพเจˆเจฒเจพเจ‚

เจฎเฉˆเจฎเฉ‹เจฐเฉ€-เจฎเฉˆเจชเจก เจซเจพเจˆเจฒเจพเจ‚ เจ‡เฉฐเจจเฉ€เจ†เจ‚ เจฎเจนเฉฑเจคเจตเจชเฉ‚เจฐเจจ เจ†เจฐเจ•เฉ€เจŸเฉˆเจ•เจšเจฐเจฒ เจคเฉฑเจค เจนเจจ เจ•เจฟ เจ‰เจน เจฐเจฟเจชเฉ‹เจœเจผเจŸเจฐเฉ€ เจฆเฉ‡ เจจเจพเจฎ 'เจคเฉ‡ เจตเฉ€ เจฆเจฟเจ–เจพเจˆ เจฆเจฟเฉฐเจฆเฉ€เจ†เจ‚ เจนเจจเฅค เจธเจŸเฉ‹เจฐ เจ•เฉ€เจคเฉ€ เจœเจพเจฃเจ•เจพเจฐเฉ€ เจคเฉฑเจ• เจ•เฉˆเจšเจฟเฉฐเจ— เจ…เจคเฉ‡ เจธเจฎเจ•เจพเจฒเฉ€ เจชเจนเฉเฉฐเจš เจฆเฉ‡ เจฎเฉเฉฑเจฆเฉ‡ เจชเฉ‚เจฐเฉ€ เจคเจฐเฉเจนเจพเจ‚ เจ“เจชเจฐเฉ‡เจŸเจฟเฉฐเจ— เจธเจฟเจธเจŸเจฎ เจฆเฉ‡ เจฐเจนเจฟเจฎ 'เจคเฉ‡ เจนเจจเฅค LMDB เจ†เจชเจฃเฉ‡ เจ…เฉฐเจฆเจฐ เจ•เฉ‹เจˆ เจ•เฉˆเจธเจผ เจจเจนเฉ€เจ‚ เจฐเฉฑเจ–เจฆเจพ เจนเฉˆเฅค เจ‡เจน เจฒเฉ‡เจ–เจ• เจฆเฉเจ†เจฐเจพ เจ‡เฉฑเจ• เจธเฉเจšเฉ‡เจค เจซเฉˆเจธเจฒเจพ เจนเฉˆ, เจ•เจฟเจ‰เจ‚เจ•เจฟ เจฎเฉˆเจช เจ•เฉ€เจคเฉ€เจ†เจ‚ เจซเจพเจˆเจฒเจพเจ‚ เจคเฉ‹เจ‚ เจธเจฟเฉฑเจงเฉ‡ เจกเฉ‡เจŸเจพ เจจเฉ‚เฉฐ เจชเฉœเฉเจนเจจเจพ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ‡เฉฐเจœเจฃ เจจเฉ‚เฉฐ เจฒเจพเจ—เฉ‚ เจ•เจฐเจจ เจตเจฟเฉฑเจš เจฌเจนเฉเจค เจธเจพเจฐเฉ‡ เจ•เฉ‹เจจเจฟเจ†เจ‚ เจจเฉ‚เฉฐ เจ•เฉฑเจŸเจฃ เจฆเฉ€ เจ†เจ—เจฟเจ† เจฆเจฟเฉฐเจฆเจพ เจนเฉˆ. เจนเฉ‡เจ เจพเจ‚ เจ‰เจนเจจเจพเจ‚ เจตเจฟเฉฑเจšเฉ‹เจ‚ เจ•เฉเจ เจฆเฉ€ เจชเฉ‚เจฐเฉ€ เจธเฉ‚เจšเฉ€ เจคเฉ‹เจ‚ เจฌเจนเฉเจค เจฆเฉ‚เจฐ เจนเฉˆ.

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

เจฌเจฆเจ•เจฟเจธเจฎเจคเฉ€ เจจเจพเจฒ, เจ†เจˆเจ“เจเจธ เจตเจฟเฉฑเจš, เจฎเฉˆเจฎเฉ‹เจฐเฉ€-เจฎเฉˆเจช เจ•เฉ€เจคเฉ€เจ†เจ‚ เจซเจพเจˆเจฒเจพเจ‚ เจ“เจจเฉ€เจ†เจ‚ เจ—เฉเจฒเจพเจฌเฉ€ เจจเจนเฉ€เจ‚ เจนเฉเฉฐเจฆเฉ€เจ†เจ‚ เจœเจฟเฉฐเจจเฉ€เจ†เจ‚ เจ…เจธเฉ€เจ‚ เจšเจพเจนเฉเฉฐเจฆเฉ‡ เจนเจพเจ‚เฅค เจ‰เจนเจจเจพเจ‚ เจจเจพเจฒ เจœเฉเฉœเฉ‡ เจจเฉเจ•เจธเจพเจจเจพเจ‚ เจฌเจพเจฐเฉ‡ เจตเจงเฉ‡เจฐเฉ‡ เจšเฉ‡เจคเฉฐเจจเจคเจพ เจจเจพเจฒ เจ—เฉฑเจฒ เจ•เจฐเจจ เจฒเจˆ, เจ“เจชเจฐเฉ‡เจŸเจฟเฉฐเจ— เจธเจฟเจธเจŸเจฎเจพเจ‚ เจตเจฟเฉฑเจš เจ‡เจธ เจตเจฟเจงเฉ€ เจจเฉ‚เฉฐ เจฒเจพเจ—เฉ‚ เจ•เจฐเจจ เจฒเจˆ เจ†เจฎ เจธเจฟเจงเจพเจ‚เจคเจพเจ‚ เจจเฉ‚เฉฐ เจฏเจพเจฆ เจ•เจฐเจจเจพ เจœเจผเจฐเฉ‚เจฐเฉ€ เจนเฉˆ.

เจฎเฉˆเจฎเฉ‹เจฐเฉ€-เจฎเฉˆเจช เจ•เฉ€เจคเฉ€เจ†เจ‚ เจซเจพเจˆเจฒเจพเจ‚ เจฌเจพเจฐเฉ‡ เจ†เจฎ เจœเจพเจฃเจ•เจพเจฐเฉ€

เจ†เจˆเจ“เจเจธ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจเจพเจ‚ เจตเจฟเฉฑเจš เจฎเฉเฉฑเจ–-เจฎเฉเฉฑเจฒ เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ LMDB เจฆเฉ€ เจšเจฎเจ• เจ…เจคเฉ‡ เจ—เจฐเฉ€เจฌเฉ€เจนเจฐเฉ‡เจ• เจเจ—เจœเจผเฉ€เจ•เจฟเจŠเจŸเฉ‡เจฌเจฒ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจฆเฉ‡ เจจเจพเจฒ, เจ“เจชเจฐเฉ‡เจŸเจฟเฉฐเจ— เจธเจฟเจธเจŸเจฎ เจ‡เฉฑเจ• เจ‡เจ•เจพเจˆ เจจเฉ‚เฉฐ เจœเฉ‹เฉœเจฆเจพ เจนเฉˆ เจœเจฟเจธเจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจชเฉเจฐเจ•เจฟเจฐเจฟเจ† เจ•เจฟเจนเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆเฅค เจนเจฐเฉ‡เจ• เจชเฉเจฐเจ•เจฟเจฐเจฟเจ† เจจเฉ‚เฉฐ เจชเจคเจฟเจ†เจ‚ เจฆเฉ€ เจ‡เฉฑเจ• เจจเจฟเจฐเฉฐเจคเจฐ เจธเจผเฉเจฐเฉ‡เจฃเฉ€ เจจเจฟเจฐเจงเจพเจฐเจค เจ•เฉ€เจคเฉ€ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆ เจœเจฟเจธ เจตเจฟเฉฑเจš เจ‡เจน เจ•เฉฐเจฎ เจ•เจฐเจจ เจฒเจˆ เจฒเฉ‹เฉœเฉ€เจ‚เจฆเฉ€ เจนเจฐ เจšเฉ€เจœเจผ เจฐเฉฑเจ–เจฆเจพ เจนเฉˆเฅค เจธเจญ เจคเฉ‹เจ‚ เจนเฉ‡เจ เจฒเฉ‡ เจชเจคเจฟเจ†เจ‚ เจตเจฟเฉฑเจš เจ•เฉ‹เจก เจ…เจคเฉ‡ เจนเจพเจฐเจกเจ•เฉ‹เจก เจ•เฉ€เจคเฉ‡ เจกเฉ‡เจŸเจพ เจ…เจคเฉ‡ เจธเจฐเฉ‹เจคเจพเจ‚ เจตเจพเจฒเฉ‡ เจญเจพเจ— เจนเฉเฉฐเจฆเฉ‡ เจนเจจเฅค เจ…เฉฑเจ—เฉ‡ เจกเจพเจ‡เจจเจพเจฎเจฟเจ• เจเจกเจฐเฉˆเฉฑเจธ เจธเจชเฉ‡เจธ เจฆเจพ เจ‰เฉฑเจชเจฐ เจตเฉฑเจฒ เจตเจงเจฃ เจตเจพเจฒเจพ เจฌเจฒเจพเจ• เจ†เจ‰เจ‚เจฆเจพ เจนเฉˆ, เจœเฉ‹ เจธเจพเจกเฉ‡ เจฒเจˆ เจขเฉ‡เจฐ เจตเจœเฉ‹เจ‚ เจœเจพเจฃเจฟเจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆเฅค เจ‡เจธ เจตเจฟเฉฑเจš เจ‡เจ•เจพเจˆเจ†เจ‚ เจฆเฉ‡ เจชเจคเฉ‡ เจนเฉเฉฐเจฆเฉ‡ เจนเจจ เจœเฉ‹ เจชเฉเจฐเฉ‹เจ—เจฐเจพเจฎ เจฆเฉ‡ เจธเฉฐเจšเจพเจฒเจจ เจฆเฉŒเจฐเจพเจจ เจชเฉเจฐเจ—เจŸ เจนเฉเฉฐเจฆเฉ‡ เจนเจจเฅค เจธเจฟเจ–เจฐ 'เจคเฉ‡ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจธเจŸเฉˆเจ• เจฆเฉเจ†เจฐเจพ เจตเจฐเจคเฉ€ เจ—เจˆ เจฎเฉˆเจฎเฉ‹เจฐเฉ€ เจฆเจพ เจ–เฉ‡เจคเจฐ เจนเฉˆเฅค เจ‡เจน เจœเจพเจ‚ เจคเจพเจ‚ เจตเจงเจฆเจพ เจนเฉˆ เจœเจพเจ‚ เจธเฉเฉฐเจ—เฉœเจฆเจพ เจนเฉˆ, เจฆเฉ‚เจœเฉ‡ เจธเจผเจฌเจฆเจพเจ‚ เจตเจฟเฉฑเจš, เจ‡เจธเจฆเจพ เจ†เจ•เจพเจฐ เจตเฉ€ เจ‡เฉฑเจ• เจ—เจคเฉ€เจธเจผเฉ€เจฒ เจธเฉเจญเจพเจ… เจนเฉˆเฅค เจคเจพเจ‚ เจœเฉ‹ เจธเจŸเฉˆเจ• เจ…เจคเฉ‡ เจนเฉ€เจช เจ‡เฉฑเจ• เจฆเฉ‚เจœเฉ‡ เจจเจพเจฒ เจงเฉฑเจ•เจฃ เจ…เจคเฉ‡ เจฆเจ–เจฒ เจจเจพ เจฆเฉ‡เจฃ, เจ‰เจนเจจเจพเจ‚ เจจเฉ‚เฉฐ เจเจกเจฐเฉˆเฉฑเจธ เจธเจชเฉ‡เจธ เจฆเฉ‡ เจตเฉฑเจ–เฉ‹-เจตเฉฑเจ–เจฐเฉ‡ เจธเจฟเจฐเจฟเจ†เจ‚ 'เจคเฉ‡ เจตเฉฑเจ– เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆเฅคเจ‰เฉฑเจชเจฐ เจ…เจคเฉ‡ เจนเฉ‡เจ เจพเจ‚ เจฆเฉ‹ เจ—เจคเฉ€เจธเจผเฉ€เจฒ เจญเจพเจ—เจพเจ‚ เจฆเฉ‡ เจตเจฟเจšเจ•เจพเจฐ เจ‡เฉฑเจ• เจฎเฉ‹เจฐเฉ€ เจนเฉˆเฅค เจ‡เจธ เจฎเฉฑเจง เจญเจพเจ— เจตเจฟเจšเจฒเฉ‡ เจชเจคเฉ‡ เจตเฉฑเจ–-เจตเฉฑเจ– เจ‡เจ•เจพเจˆเจ†เจ‚ เจฆเฉ€ เจชเฉเจฐเจ•เจฟเจฐเจฟเจ† เจจเจพเจฒ เจœเฉ‹เฉœเจจ เจฒเจˆ เจ“เจชเจฐเฉ‡เจŸเจฟเฉฐเจ— เจธเจฟเจธเจŸเจฎ เจฆเฉเจ†เจฐเจพ เจตเจฐเจคเฉ‡ เจœเจพเจ‚เจฆเฉ‡ เจนเจจเฅค เจ–เจพเจธ เจคเฉŒเจฐ 'เจคเฉ‡, เจ‡เจน เจกเจฟเจธเจ• 'เจคเฉ‡ เจ‡เฉฑเจ• เจซเจพเจˆเจฒ เจจเจพเจฒ เจชเจคเจฟเจ†เจ‚ เจฆเฉ‡ เจ‡เฉฑเจ• เจ–เจพเจธ เจจเจฟเจฐเฉฐเจคเจฐ เจธเฉˆเฉฑเจŸ เจจเฉ‚เฉฐ เจฎเฉˆเจช เจ•เจฐ เจธเจ•เจฆเจพ เจนเฉˆเฅค เจ…เจœเจฟเจนเฉ€ เจซเจพเจˆเจฒ เจจเฉ‚เฉฐ เจฎเฉˆเจฎเฉ‹เจฐเฉ€-เจฎเฉˆเจชเจก เจซเจพเจˆเจฒ เจ•เจฟเจนเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆ

เจ‡เฉฑเจ• เจชเฉเจฐเจ•เจฟเจฐเจฟเจ† เจฒเจˆ เจ…เจฒเจพเจŸ เจ•เฉ€เจคเฉ€ เจเจกเจฐเฉˆเฉฑเจธ เจธเจชเฉ‡เจธ เจฌเจนเฉเจค เจตเฉฑเจกเฉ€ เจนเฉˆเฅค เจธเจฟเจงเจพเจ‚เจคเจ• เจคเฉŒเจฐ 'เจคเฉ‡, เจชเจคเจฟเจ†เจ‚ เจฆเฉ€ เจ—เจฟเจฃเจคเฉ€ เจธเจฟเจฐเจซ เจชเฉเจ†เจ‡เฉฐเจŸเจฐ เจฆเฉ‡ เจ†เจ•เจพเจฐ เจฆเฉเจ†เจฐเจพ เจธเฉ€เจฎเจฟเจค เจนเฉเฉฐเจฆเฉ€ เจนเฉˆ, เจœเฉ‹ เจธเจฟเจธเจŸเจฎ เจฆเฉ€ เจฌเจฟเฉฑเจŸเจจเฉˆเฉฑเจธ เจฆเฉเจ†เจฐเจพ เจจเจฟเจฐเจงเจพเจฐเจค เจ•เฉ€เจคเฉ€ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆเฅค เจœเฉ‡เจ•เจฐ เจญเฉŒเจคเจฟเจ• เจฎเฉˆเจฎเฉ‹เจฐเฉ€ เจ‡เจธ เจจเฉ‚เฉฐ 1-เจ‡เจจ-1 เจจเจฟเจฐเจงเจพเจฐเจค เจ•เฉ€เจคเฉ€ เจ—เจˆ เจธเฉ€, เจคเจพเจ‚ เจชเจนเจฟเจฒเฉ€ เจชเฉเจฐเจ•เจฟเจฐเจฟเจ† เจชเฉ‚เจฐเฉ€ เจฐเฉˆเจฎ เจจเฉ‚เฉฐ เจ—เจฌเจฒ เจ•เจฐ เจฆเฉ‡เจตเฉ‡เจ—เฉ€, เจ…เจคเฉ‡ เจ•เจฟเจธเฉ‡ เจตเฉ€ เจฎเจฒเจŸเฉ€เจŸเจพเจธเจ•เจฟเฉฐเจ— เจฆเจพ เจ•เฉ‹เจˆ เจธเจตเจพเจฒ เจจเจนเฉ€เจ‚ เจนเฉ‹เจตเฉ‡เจ—เจพเฅค

เจนเจพเจฒเจพเจ‚เจ•เจฟ, เจ…เจธเฉ€เจ‚ เจคเจœเจผเจฐเจฌเฉ‡ เจคเฉ‹เจ‚ เจœเจพเจฃเจฆเฉ‡ เจนเจพเจ‚ เจ•เจฟ เจ†เจงเฉเจจเจฟเจ• เจ“เจชเจฐเฉ‡เจŸเจฟเฉฐเจ— เจธเจฟเจธเจŸเจฎ เจ‡เฉฑเจ•เฉ‹ เจธเจฎเฉ‡เจ‚ เจœเจฟเฉฐเจจเฉ€เจ†เจ‚ เจชเฉเจฐเจ•เจฟเจฐเจฟเจ†เจตเจพเจ‚ เจคเฉเจธเฉ€เจ‚ เจšเจพเจนเฉเฉฐเจฆเฉ‡ เจนเฉ‹ เจšเจฒเจพ เจธเจ•เจฆเฉ‡ เจนเจจเฅค เจ‡เจน เจ‡เจธ เจคเฉฑเจฅ เจฆเฉ‡ เจ•เจพเจฐเจจ เจธเฉฐเจญเจต เจนเฉˆ เจ•เจฟ เจ‰เจน เจธเจฟเจฐเจซ เจ•เจพเจ—เจœเจผ 'เจคเฉ‡ เจชเฉเจฐเจ•เจฟเจฐเจฟเจ†เจตเจพเจ‚ เจฒเจˆ เจฌเจนเฉเจค เจธเจพเจฐเฉ€ เจฎเฉˆเจฎเฉ‹เจฐเฉ€ เจจเจฟเจฐเจงเจพเจฐเจค เจ•เจฐเจฆเฉ‡ เจนเจจ, เจชเจฐ เจ…เจธเจฒ เจตเจฟเฉฑเจš เจ‰เจน เจฎเฉเฉฑเจ– เจญเฉŒเจคเจฟเจ• เจฎเฉˆเจฎเฉ‹เจฐเฉ€ เจตเจฟเฉฑเจš เจธเจฟเจฐเจซ เจ‰เจนเฉ€ เจนเจฟเฉฑเจธเจพ เจฒเฉ‹เจก เจ•เจฐเจฆเฉ‡ เจนเจจ เจœเฉ‹ เจ‡เฉฑเจฅเฉ‡ เจ…เจคเฉ‡ เจนเฉเจฃ เจฎเฉฐเจ— เจตเจฟเฉฑเจš เจนเฉˆเฅค เจ‡เจธ เจฒเจˆ, เจชเฉเจฐเจ•เจฟเจฐเจฟเจ† เจจเจพเจฒ เจœเฉเฉœเฉ€ เจฎเฉˆเจฎเฉ‹เจฐเฉ€ เจจเฉ‚เฉฐ เจตเจฐเจšเฉเจ…เจฒ เจ•เจฟเจนเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆ.

เจ†เจˆเจ“เจเจธ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจเจพเจ‚ เจตเจฟเฉฑเจš เจฎเฉเฉฑเจ–-เจฎเฉเฉฑเจฒ เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ LMDB เจฆเฉ€ เจšเจฎเจ• เจ…เจคเฉ‡ เจ—เจฐเฉ€เจฌเฉ€

เจ“เจชเจฐเฉ‡เจŸเจฟเฉฐเจ— เจธเจฟเจธเจŸเจฎ เจตเจฐเจšเฉเจ…เจฒ เจ…เจคเฉ‡ เจญเฉŒเจคเจฟเจ• เจฎเฉˆเจฎเฉ‹เจฐเฉ€ เจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจ–เจพเจธ เจ†เจ•เจพเจฐ เจฆเฉ‡ เจชเฉฐเจจเจฟเจ†เจ‚ เจตเจฟเฉฑเจš เจตเจฟเจตเจธเจฅเจฟเจค เจ•เจฐเจฆเจพ เจนเฉˆเฅค เจœเจฟเจตเฉ‡เจ‚ เจนเฉ€ เจตเจฐเจšเฉเจ…เจฒ เจฎเฉˆเจฎเฉ‹เจฐเฉ€ เจฆเฉ‡ เจ‡เฉฑเจ• เจ–เจพเจธ เจชเฉฐเจจเฉ‡ เจฆเฉ€ เจฎเฉฐเจ— เจนเฉเฉฐเจฆเฉ€ เจนเฉˆ, เจ“เจชเจฐเฉ‡เจŸเจฟเฉฐเจ— เจธเจฟเจธเจŸเจฎ เจ‡เจธเจจเฉ‚เฉฐ เจญเฉŒเจคเจฟเจ• เจฎเฉˆเจฎเฉ‹เจฐเฉ€ เจตเจฟเฉฑเจš เจฒเฉ‹เจก เจ•เจฐเจฆเจพ เจนเฉˆ เจ…เจคเฉ‡ เจ‡เฉฑเจ• เจตเจฟเจธเจผเฉ‡เจธเจผ เจธเจพเจฐเจฃเฉ€ เจตเจฟเฉฑเจš เจ‰เจนเจจเจพเจ‚ เจตเจฟเจšเจ•เจพเจฐ เจ‡เฉฑเจ• เจชเฉฑเจคเจฐ เจตเจฟเจนเจพเจฐ เจฐเฉฑเจ–เจฆเจพ เจนเฉˆเฅค เจœเฉ‡เจ•เจฐ เจ•เฉ‹เจˆ เจฎเฉเจซเจค เจธเจฒเจพเจŸ เจจเจนเฉ€เจ‚ เจนเจจ, เจคเจพเจ‚ เจชเจนเจฟเจฒเจพเจ‚ เจฒเฉ‹เจก เจ•เฉ€เจคเฉ‡ เจชเฉฐเจจเจฟเจ†เจ‚ เจตเจฟเฉฑเจšเฉ‹เจ‚ เจ‡เฉฑเจ• เจจเฉ‚เฉฐ เจกเจฟเจธเจ• 'เจคเฉ‡ เจ•เจพเจชเฉ€ เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆ, เจ…เจคเฉ‡ เจฌเฉ‡เจจเจคเฉ€ เจ•เฉ€เจคเฉ€ เจ—เจˆ เจ‡เฉฑเจ• เจ‡เจธเจฆเฉ€ เจฅเจพเจ‚ เจฒเฉˆ เจฒเฉˆเจ‚เจฆเจพ เจนเฉˆเฅค เจ‡เจน เจตเจฟเจงเฉ€, เจœเจฟเจธ 'เจคเฉ‡ เจ…เจธเฉ€เจ‚ เจœเจฒเจฆเฉ€ เจนเฉ€ เจตเจพเจชเจธ เจ†เจตเจพเจ‚เจ—เฉ‡, เจจเฉ‚เฉฐ เจธเจตเฉˆเจชเจฟเฉฐเจ— เจ•เจฟเจนเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆเฅค เจนเฉ‡เจ เจพเจ‚ เจฆเจฟเฉฑเจคเฉ€ เจคเจธเจตเฉ€เจฐ เจตเจฐเจฃเจฟเจค เจชเฉเจฐเจ•เจฟเจฐเจฟเจ† เจจเฉ‚เฉฐ เจฆเจฐเจธเจพเจ‰เจ‚เจฆเฉ€ เจนเฉˆเฅค เจ‡เจธ 'เจคเฉ‡, เจชเจคเฉ‡ 0 เจตเจพเจฒเจพ เจชเฉฐเจจเจพ A เจฒเฉ‹เจก เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจธเฉ€ เจ…เจคเฉ‡ เจเจกเจฐเฉˆเฉฑเจธ 4 เจฆเฉ‡ เจจเจพเจฒ เจฎเฉเฉฑเจ– เจฎเฉˆเจฎเฉ‹เจฐเฉ€ เจชเฉฐเจจเฉ‡ 'เจคเฉ‡ เจฐเฉฑเจ–เจฟเจ† เจ—เจฟเจ† เจธเฉ€เฅค เจ‡เจน เจคเฉฑเจฅ เจธเฉˆเฉฑเจฒ เจจเฉฐเจฌเจฐ 0 เจตเจฟเฉฑเจš เจชเฉฑเจคเจฐ-เจตเจฟเจนเจพเจฐ เจธเจพเจฐเจฃเฉ€ เจตเจฟเฉฑเจš เจชเฉเจฐเจคเฉ€เจฌเจฟเฉฐเจฌเจค เจนเฉ‹เจ‡เจ† เจธเฉ€เฅค

เจ†เจˆเจ“เจเจธ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจเจพเจ‚ เจตเจฟเฉฑเจš เจฎเฉเฉฑเจ–-เจฎเฉเฉฑเจฒ เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ LMDB เจฆเฉ€ เจšเจฎเจ• เจ…เจคเฉ‡ เจ—เจฐเฉ€เจฌเฉ€

เจฎเฉˆเจฎเฉ‹เจฐเฉ€-เจฎเฉˆเจชเจก เจซเจพเจˆเจฒเจพเจ‚ เจฆเฉ‡ เจจเจพเจฒ, เจ•เจนเจพเจฃเฉ€ เจฌเจฟเจฒเจ•เฉเจฒ เจ‰เจนเฉ€ เจนเฉˆ. เจคเจฐเจ•เจชเฉ‚เจฐเจจ เจคเฉŒเจฐ 'เจคเฉ‡, เจ‰เจน เจฒเจ—เจพเจคเจพเจฐ เจ…เจคเฉ‡ เจชเฉ‚เจฐเฉ€ เจคเจฐเฉเจนเจพเจ‚ เจตเจฐเจšเฉเจ…เจฒ เจเจกเจฐเฉˆเฉฑเจธ เจธเจชเฉ‡เจธ เจตเจฟเฉฑเจš เจฐเฉฑเจ–เฉ‡ เจœเจพเจ‚เจฆเฉ‡ เจนเจจเฅค เจนเจพเจฒเจพเจ‚เจ•เจฟ, เจ‰เจน เจชเฉฐเจจเฉ‡ เจฆเฉเจ†เจฐเจพ เจ…เจคเฉ‡ เจธเจฟเจฐเจซ เจฎเฉฐเจ— 'เจคเฉ‡ เจญเฉŒเจคเจฟเจ• เจฎเฉˆเจฎเฉ‹เจฐเฉ€ เจชเฉฐเจจเฉ‡ เจตเจฟเฉฑเจš เจ†เจ‰เจ‚เจฆเฉ‡ เจนเจจ. เจ…เจœเจฟเจนเฉ‡ เจชเฉฐเจจเจฟเจ†เจ‚ เจฆเฉ€ เจธเฉ‹เจง เจจเฉ‚เฉฐ เจกเจฟเจธเจ• เจ‰เฉฑเจคเฉ‡ เจซเจพเจˆเจฒ เจจเจพเจฒ เจธเจฎเจ•เจพเจฒเฉ€ เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆเฅค เจ‡เจธ เจคเจฐเฉเจนเจพเจ‚, เจคเฉเจธเฉ€เจ‚ เจธเจฟเจฐเจซเจผ เจฎเฉˆเจฎเฉ‹เจฐเฉ€ เจตเจฟเฉฑเจš เจฌเจพเจˆเจŸเจพเจ‚ เจจเจพเจฒ เจ•เฉฐเจฎ เจ•เจฐเจฆเฉ‡ เจนเฉ‹เจ, เจซเจพเจˆเจฒ I/O เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹ - เจธเจพเจฐเฉ€เจ†เจ‚ เจคเจฌเจฆเฉ€เจฒเฉ€เจ†เจ‚ เจ“เจชเจฐเฉ‡เจŸเจฟเฉฐเจ— เจธเจฟเจธเจŸเจฎ เจ•เจฐเจจเจฒ เจฆเฉเจ†เจฐเจพ เจ†เจชเจฃเฉ‡ เจ†เจช เจฎเฉ‚เจฒ เจซเจพเจˆเจฒ เจตเจฟเฉฑเจš เจŸเฉเจฐเจพเจ‚เจธเจซเจฐ เจ•เฉ€เจคเฉ€เจ†เจ‚ เจœเจพเจฃเจ—เฉ€เจ†เจ‚เฅค
'
เจนเฉ‡เจ เจพเจ‚ เจฆเจฟเฉฑเจคเฉ€ เจคเจธเจตเฉ€เจฐ เจฆเจฐเจธเจพเจ‰เจ‚เจฆเฉ€ เจนเฉˆ เจ•เจฟ เจตเฉฑเจ–-เจตเฉฑเจ– เจชเฉเจฐเจ•เจฟเจฐเจฟเจ†เจตเจพเจ‚ เจคเฉ‹เจ‚ เจกเจพเจŸเจพเจฌเฉ‡เจธ เจจเจพเจฒ เจ•เฉฐเจฎ เจ•เจฐเจฆเฉ‡ เจธเจฎเฉ‡เจ‚ LMDB เจ†เจชเจฃเฉ€ เจธเจฅเจฟเจคเฉ€ เจจเฉ‚เฉฐ เจ•เจฟเจตเฉ‡เจ‚ เจธเจฎเจ•เจพเจฒเฉ€ เจฌเจฃเจพเจ‰เจ‚เจฆเจพ เจนเฉˆเฅค เจ‡เฉฑเจ•เฉ‹ เจซเจพเจˆเจฒ เจ‰เฉฑเจคเฉ‡ เจตเฉฑเจ–-เจตเฉฑเจ– เจชเฉเจฐเจ•เจฟเจฐเจฟเจ†เจตเจพเจ‚ เจฆเฉ€ เจตเจฐเจšเฉเจ…เจฒ เจฎเฉˆเจฎเฉ‹เจฐเฉ€ เจจเฉ‚เฉฐ เจฎเฉˆเจช เจ•เจฐเจ•เฉ‡, เจ…เจธเฉ€เจ‚ เจ…เจธเจฒ เจตเจฟเฉฑเจš เจ“เจชเจฐเฉ‡เจŸเจฟเฉฐเจ— เจธเจฟเจธเจŸเจฎ เจจเฉ‚เฉฐ เจ‰เจนเจจเจพเจ‚ เจฆเฉ‡ เจเจกเจฐเฉˆเฉฑเจธ เจธเจชเฉ‡เจธ เจฆเฉ‡ เจ•เฉเจ เจฌเจฒเจพเจ•เจพเจ‚ เจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจฆเฉ‚เจœเฉ‡ เจจเจพเจฒ เจธเจฎเจ•เจพเจฒเฉ€ เจ•เจฐเจจ เจฒเจˆ เจฎเจœเจฌเฉ‚เจฐ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚, เจœเจฟเฉฑเจฅเฉ‡ LMDB เจฆเจฟเจ–เจพเจˆ เจฆเจฟเฉฐเจฆเจพ เจนเฉˆเฅค
'

เจ†เจˆเจ“เจเจธ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจเจพเจ‚ เจตเจฟเฉฑเจš เจฎเฉเฉฑเจ–-เจฎเฉเฉฑเจฒ เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ LMDB เจฆเฉ€ เจšเจฎเจ• เจ…เจคเฉ‡ เจ—เจฐเฉ€เจฌเฉ€

เจ‡เฉฑเจ• เจฎเจนเฉฑเจคเจตเจชเฉ‚เจฐเจจ เจจเฉเจ•เจคเจพ เจ‡เจน เจนเฉˆ เจ•เจฟ LMDB เจกเจพเจŸเจพ เจซเจพเจˆเจฒ เจจเฉ‚เฉฐ เจฎเฉ‚เจฒ เจฐเฉ‚เจช เจตเจฟเฉฑเจš เจฒเจฟเจ–เจฃ เจธเจฟเจธเจŸเจฎ เจ•เจพเจฒ เจตเจฟเจงเฉ€ เจฆเฉเจ†เจฐเจพ เจธเฉฐเจธเจผเฉ‹เจงเจฟเจค เจ•เจฐเจฆเจพ เจนเฉˆ, เจ…เจคเฉ‡ เจซเจพเจˆเจฒ เจ†เจชเจฃเฉ‡ เจ†เจช เจนเฉ€ เจฐเฉ€เจก-เจ“เจจเจฒเฉ€ เจฎเฉ‹เจก เจตเจฟเฉฑเจš เจชเฉเจฐเจฆเจฐเจธเจผเจฟเจค เจนเฉเฉฐเจฆเฉ€ เจนเฉˆเฅค เจ‡เจธ เจชเจนเฉเฉฐเจš เจฆเฉ‡ เจฆเฉ‹ เจฎเจนเฉฑเจคเจตเจชเฉ‚เจฐเจจ เจชเฉเจฐเจญเจพเจต เจนเจจ.

เจชเจนเจฟเจฒเจพ เจจเจคเฉ€เจœเจพ เจธเจพเจฐเฉ‡ เจ“เจชเจฐเฉ‡เจŸเจฟเฉฐเจ— เจธเจฟเจธเจŸเจฎเจพเจ‚ เจฒเจˆ เจ†เจฎ เจนเฉˆเฅค เจ‡เจธเจฆเจพ เจธเจพเจฐ เจ—เจฒเจค เจ•เฉ‹เจก เจฆเฉเจ†เจฐเจพ เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจจเฉ‚เฉฐ เจ…เจฃเจœเจพเจฃเฉ‡ เจตเจฟเฉฑเจš เจนเฉ‹เจฃ เจตเจพเจฒเฉ‡ เจจเฉเจ•เจธเจพเจจ เจคเฉ‹เจ‚ เจธเฉเจฐเฉฑเจ–เจฟเจ† เจœเฉ‹เฉœเจจเจพ เจนเฉˆ. เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ เจคเฉเจธเฉ€เจ‚ เจœเจพเจฃเจฆเฉ‡ เจนเฉ‹, เจ‡เฉฑเจ• เจชเฉเจฐเจ•เจฟเจฐเจฟเจ† เจฆเฉ‡ เจšเฉฑเจฒเจฃเจฏเฉ‹เจ— เจจเจฟเจฐเจฆเฉ‡เจธเจผ เจ‡เจธเจฆเฉ‡ เจเจกเจฐเฉˆเฉฑเจธ เจธเจชเฉ‡เจธ เจตเจฟเฉฑเจš เจ•เจฟเจคเฉ‡ เจตเฉ€ เจกเฉ‡เจŸเจพ เจคเฉฑเจ• เจชเจนเฉเฉฐเจš เจ•เจฐเจจ เจฒเจˆ เจธเฉเจคเฉฐเจคเจฐ เจนเจจเฅค เจ‡เจธ เจฆเฉ‡ เจจเจพเจฒ เจนเฉ€, เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ เจ…เจธเฉ€เจ‚ เจนเฉเจฃเฉ‡ เจฏเจพเจฆ เจ•เฉ€เจคเจพ เจนเฉˆ, เจ‡เฉฑเจ• เจซเจพเจˆเจฒ เจจเฉ‚เฉฐ เจฐเฉ€เจก-เจฐเจพเจˆเจŸ เจฎเฉ‹เจก เจตเจฟเฉฑเจš เจชเฉเจฐเจฆเจฐเจธเจผเจฟเจค เจ•เจฐเจจ เจฆเจพ เจฎเจคเจฒเจฌ เจนเฉˆ เจ•เจฟ เจ•เฉ‹เจˆ เจตเฉ€ เจนเจฆเจพเจ‡เจค เจ‡เจธ เจคเฉ‹เจ‚ เจ‡เจฒเจพเจตเจพ เจ‡เจธ เจตเจฟเฉฑเจš เจธเฉ‹เจง เจตเฉ€ เจ•เจฐ เจธเจ•เจฆเฉ€ เจนเฉˆเฅค เจœเฉ‡ เจ‰เจน เจ—เจฒเจคเฉ€ เจจเจพเจฒ เจ…เจœเจฟเจนเจพ เจ•เจฐเจฆเฉ€ เจนเฉˆ, เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ, เจ…เจธเจฒ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจ—เฉˆเจฐ-เจฎเฉŒเจœเฉ‚เจฆ เจธเฉ‚เจšเจ•เจพเจ‚เจ• 'เจคเฉ‡ เจ‡เฉฑเจ• เจเจฐเฉ‡ เจเจฒเฉ€เจฎเฉˆเจ‚เจŸ เจจเฉ‚เฉฐ เจ“เจตเจฐเจฐเจพเจˆเจŸ เจ•เจฐเจจ เจฆเฉ€ เจ•เฉ‹เจธเจผเจฟเจธเจผ เจ•เจฐเจฆเฉ€ เจนเฉˆ, เจคเจพเจ‚ เจ‡เจธ เจคเจฐเฉ€เจ•เฉ‡ เจจเจพเจฒ เจ‰เจน เจ—เจฒเจคเฉ€ เจจเจพเจฒ เจ‡เจธ เจชเจคเฉ‡ 'เจคเฉ‡ เจฎเฉˆเจช เจ•เฉ€เจคเฉ€ เจซเจพเจˆเจฒ เจจเฉ‚เฉฐ เจฌเจฆเจฒ เจธเจ•เจฆเฉ€ เจนเฉˆ, เจœเจฟเจธ เจจเจพเจฒ เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจญเฉเจฐเจฟเจธเจผเจŸเจพเจšเจพเจฐ เจนเฉ‹ เจœเจพเจตเฉ‡เจ—เจพเฅค เจœเฉ‡เจ•เจฐ เจซเจพเจˆเจฒ เจธเจฟเจฐเจซ-เจชเฉœเฉเจนเจจ เจฆเฉ‡ เจฎเฉ‹เจก เจตเจฟเฉฑเจš เจชเฉเจฐเจฆเจฐเจธเจผเจฟเจค เจนเฉเฉฐเจฆเฉ€ เจนเฉˆ, เจคเจพเจ‚ เจ‡เจธเจฆเฉ‡ เจ…เจจเฉเจธเจพเจฐเฉ€ เจเจกเจฐเฉˆเฉฑเจธ เจธเจชเฉ‡เจธ เจจเฉ‚เฉฐ เจฌเจฆเจฒเจฃ เจฆเฉ€ เจ•เฉ‹เจธเจผเจฟเจธเจผ เจธเจฟเจ—เจจเจฒ เจฆเฉ‡ เจจเจพเจฒ เจชเฉเจฐเฉ‹เจ—เจฐเจพเจฎ เจ•เจฐเฉˆเจธเจผ เจนเฉ‹ เจœเจพเจตเฉ‡เจ—เฉ€เฅค SIGSEGV, เจ…เจคเฉ‡ เจซเจพเจˆเจฒ เจฌเจฐเจ•เจฐเจพเจฐ เจฐเจนเฉ‡เจ—เฉ€เฅค

เจฆเฉ‚เจœเจพ เจจเจคเฉ€เจœเจพ เจชเจนเจฟเจฒเจพเจ‚ เจนเฉ€ เจ†เจˆเจ“เจเจธ เจฒเจˆ เจ–เจพเจธ เจนเฉˆ. เจจเจพ เจคเจพเจ‚ เจฒเฉ‡เจ–เจ• เจ…เจคเฉ‡ เจจเจพ เจนเฉ€ เจ•เฉ‹เจˆ เจนเฉ‹เจฐ เจธเจฐเฉ‹เจค เจธเจชเฉฑเจธเจผเจŸ เจคเฉŒเจฐ 'เจคเฉ‡ เจ‡เจธเจฆเจพ เจœเจผเจฟเจ•เจฐ เจ•เจฐเจฆเฉ‡ เจนเจจ, เจชเจฐ เจ‡เจธเจฆเฉ‡ เจฌเจฟเจจเจพเจ‚, LMDB เจ‡เจธ เจฎเฉ‹เจฌเจพเจˆเจฒ เจ“เจชเจฐเฉ‡เจŸเจฟเฉฐเจ— เจธเจฟเจธเจŸเจฎ 'เจคเฉ‡ เจšเฉฑเจฒเจฃ เจฒเจˆ เจ…เจฏเฉ‹เจ— เจนเฉ‹เจตเฉ‡เจ—เจพเฅค เจ…เจ—เจฒเจพ เจญเจพเจ— เจ‡เจธ เจฆเฉ‡ เจตเจฟเจšเจพเจฐ เจฒเจˆ เจธเจฎเจฐเจชเจฟเจค เจนเฉˆเฅค

iOS เจตเจฟเฉฑเจš เจฎเฉˆเจฎเฉ‹เจฐเฉ€-เจฎเฉˆเจช เจ•เฉ€เจคเฉ€เจ†เจ‚ เจซเจพเจˆเจฒเจพเจ‚ เจฆเฉ€เจ†เจ‚ เจตเจฟเจธเจผเฉ‡เจธเจผเจคเจพเจตเจพเจ‚

2018 เจตเจฟเฉฑเจš, WWDC เจตเจฟเจ–เฉ‡ เจ‡เฉฑเจ• เจธเจผเจพเจจเจฆเจพเจฐ เจฐเจฟเจชเฉ‹เจฐเจŸ เจ†เจˆ เจธเฉ€ iOS เจฎเฉˆเจฎเฉ‹เจฐเฉ€ เจกเฉ€เจช เจกเจพเจˆเจต. เจ‡เจน เจฆเฉฑเจธเจฆเจพ เจนเฉˆ เจ•เจฟ iOS เจตเจฟเฉฑเจš เจญเฉŒเจคเจฟเจ• เจฎเฉˆเจฎเฉ‹เจฐเฉ€ เจตเจฟเฉฑเจš เจธเจฅเจฟเจค เจธเจพเจฐเฉ‡ เจชเฉฐเจจเฉ‡ 3 เจ•เจฟเจธเจฎเจพเจ‚ เจตเจฟเฉฑเจšเฉ‹เจ‚ เจ‡เฉฑเจ• เจจเจพเจฒ เจธเจฌเฉฐเจงเจค เจนเจจ: เจ—เฉฐเจฆเฉ‡, เจธเฉฐเจ•เฉเจšเจฟเจค เจ…เจคเฉ‡ เจธเจพเจซเจผเฅค

เจ†เจˆเจ“เจเจธ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจเจพเจ‚ เจตเจฟเฉฑเจš เจฎเฉเฉฑเจ–-เจฎเฉเฉฑเจฒ เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ LMDB เจฆเฉ€ เจšเจฎเจ• เจ…เจคเฉ‡ เจ—เจฐเฉ€เจฌเฉ€

เจ•เจฒเฉ€เจจ เจฎเฉˆเจฎเฉ‹เจฐเฉ€ เจชเฉฐเจจเจฟเจ†เจ‚ เจฆเจพ เจ‡เฉฑเจ• เจธเฉฐเจ—เฉเจฐเจนเจฟ เจนเฉˆ เจœเฉ‹ เจญเฉŒเจคเจฟเจ• เจฎเฉˆเจฎเฉ‹เจฐเฉ€ เจคเฉ‹เจ‚ เจธเฉเจฐเฉฑเจ–เจฟเจ…เจค เจฐเฉ‚เจช เจจเจพเจฒ เจฌเจฆเจฒเจฟเจ† เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆเฅค เจ‰เจนเจจเจพเจ‚ เจตเจฟเฉฑเจš เจฎเฉŒเจœเฉ‚เจฆ เจกเฉ‡เจŸเจพ เจจเฉ‚เฉฐ เจฒเฉ‹เฉœ เจ…เจจเฉเจธเจพเจฐ เจ‰เจนเจจเจพเจ‚ เจฆเฉ‡ เจฎเฉ‚เจฒ เจธเจฐเฉ‹เจคเจพเจ‚ เจคเฉ‹เจ‚ เจฐเฉ€เจฒเฉ‹เจก เจ•เฉ€เจคเจพ เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆเฅค เจธเจฟเจฐเจซเจผ เจฐเฉ€เจก-เจ“เจจเจฒเฉ€ เจฎเฉˆเจฎเฉ‹เจฐเฉ€-เจฎเฉˆเจชเจก เจซเจพเจˆเจฒเจพเจ‚ เจ‡เจธ เจธเจผเฉเจฐเฉ‡เจฃเฉ€ เจตเจฟเฉฑเจš เจ†เจ‰เจ‚เจฆเฉ€เจ†เจ‚ เจนเจจเฅค เจ†เจˆเจ“เจเจธ เจ•เจฟเจธเฉ‡ เจตเฉ€ เจธเจฎเฉ‡เจ‚ เจฎเฉˆเจฎเฉ‹เจฐเฉ€ เจคเฉ‹เจ‚ เจ‡เฉฑเจ• เจซเจพเจˆเจฒ เจตเจฟเฉฑเจš เจฎเฉˆเจช เจ•เฉ€เจคเฉ‡ เจชเฉฐเจจเจฟเจ†เจ‚ เจจเฉ‚เฉฐ เจ…เจจเจฒเฉ‹เจก เจ•เจฐเจจ เจคเฉ‹เจ‚ เจจเจนเฉ€เจ‚ เจกเจฐเจฆเจพ, เจ•เจฟเจ‰เจ‚เจ•เจฟ เจ‰เจนเจจเจพเจ‚ เจจเฉ‚เฉฐ เจกเจฟเจธเจ• เจคเฉ‡ เจซเจพเจˆเจฒ เจจเจพเจฒ เจธเจฎเจ•เจพเจฒเฉ€ เจนเฉ‹เจฃ เจฆเฉ€ เจ—เจฐเฉฐเจŸเฉ€ เจฆเจฟเฉฑเจคเฉ€ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆ.
'
เจธเจพเจฐเฉ‡ เจธเฉ‹เจงเฉ‡ เจนเฉ‹เจ เจชเฉฐเจจเฉ‡ เจ—เฉฐเจฆเฉ‡ เจฎเฉˆเจฎเฉ‹เจฐเฉ€ เจตเจฟเฉฑเจš เจšเจฒเฉ‡ เจœเจพเจ‚เจฆเฉ‡ เจนเจจ, เจญเจพเจตเฉ‡เจ‚ เจ‰เจน เจ…เจธเจฒ เจตเจฟเฉฑเจš เจ•เจฟเฉฑเจฅเฉ‡ เจธเจฅเจฟเจค เจนเฉ‹เจฃเฅค เจ–เจพเจธ เจคเฉŒเจฐ 'เจคเฉ‡, เจ‰เจนเจจเจพเจ‚ เจจเจพเจฒ เจธเฉฐเจฌเฉฐเจงเจฟเจค เจตเจฐเจšเฉเจ…เจฒ เจฎเฉˆเจฎเฉ‹เจฐเฉ€ เจจเฉ‚เฉฐ เจฒเจฟเจ– เจ•เฉ‡ เจธเฉ‹เจงเฉ€เจ†เจ‚ เจ—เจˆเจ†เจ‚ เจฎเฉˆเจฎเฉ‹เจฐเฉ€-เจฎเฉˆเจช เจ•เฉ€เจคเฉ€เจ†เจ‚ เจซเจพเจˆเจฒเจพเจ‚ เจจเฉ‚เฉฐ เจตเฉ€ เจ‡เจธ เจคเจฐเฉเจนเจพเจ‚ เจธเจผเฉเจฐเฉ‡เจฃเฉ€เจฌเฉฑเจง เจ•เฉ€เจคเจพ เจœเจพเจตเฉ‡เจ—เจพเฅค เจเฉฐเจกเฉ‡ เจจเจพเจฒ LMDB เจ–เฉ‹เจฒเฉเจนเจฃเจพ MDB_WRITEMAP, เจ‡เจธ เจตเจฟเฉฑเจš เจฌเจฆเจฒเจพเจ… เจ•เจฐเจจ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ, เจคเฉเจธเฉ€เจ‚ เจ–เฉเจฆ เจฆเฉ‡เจ– เจธเจ•เจฆเฉ‡ เจนเฉ‹

เจœเจฟเจตเฉ‡เจ‚ เจนเฉ€ เจ•เฉ‹เจˆ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจฌเจนเฉเจค เจœเจผเจฟเจ†เจฆเจพ เจญเฉŒเจคเจฟเจ• เจฎเฉˆเจฎเฉ‹เจฐเฉ€ เจฒเฉˆเจฃเจพ เจธเจผเฉเจฐเฉ‚ เจ•เจฐเจฆเฉ€ เจนเฉˆ, iOS เจ†เจชเจฃเฉ‡ เจ—เฉฐเจฆเฉ‡ เจชเฉฐเจจเจฟเจ†เจ‚ เจจเฉ‚เฉฐ เจธเฉฐเจ•เฉเจšเจฟเจค เจ•เจฐเจฆเจพ เจนเฉˆเฅค เจฎเฉˆเจฎเฉ‹เจฐเฉ€ เจฆเจพ เจธเฉฐเจ—เฉเจฐเจนเจฟ เจ—เฉฐเจฆเฉ‡ เจ…เจคเฉ‡ เจธเฉฐเจ•เฉเจšเจฟเจค เจชเฉฐเจจเจฟเจ†เจ‚ เจฆเฉเจ†เจฐเจพ เจ•เจฌเจœเจผเจพ เจ•เจฐเจจเจพ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจฆเจพ เจ…เจ–เฉŒเจคเฉ€ เจฎเฉˆเจฎเฉ‹เจฐเฉ€ เจซเฉเฉฑเจŸเจชเฉเจฐเจฟเฉฐเจŸ เจนเฉˆเฅค เจœเจฆเฉ‹เจ‚ เจ‡เจน เจ‡เฉฑเจ• เจจเจฟเจธเจผเจšเจฟเจค เจฅเฉเจฐเฉˆเจธเจผเจนเฉ‹เจฒเจก เจฎเฉเฉฑเจฒ เจคเฉฑเจ• เจชเจนเฉเฉฐเจšเจฆเจพ เจนเฉˆ, เจคเจพเจ‚ OOM เจ•เจฟเจฒเจฐ เจธเจฟเจธเจŸเจฎ เจกเฉˆเจฎเจจ เจชเฉเจฐเจ•เจฟเจฐเจฟเจ† เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ เจ†เจ‰เจ‚เจฆเจพ เจนเฉˆ เจ…เจคเฉ‡ เจ‡เจธเจจเฉ‚เฉฐ เจœเจผเจฌเจฐเจฆเจธเจคเฉ€ เจฌเฉฐเจฆ เจ•เจฐ เจฆเจฟเฉฐเจฆเจพ เจนเฉˆเฅค เจ‡เจน เจกเฉˆเจธเจ•เจŸเจพเจช เจ“เจชเจฐเฉ‡เจŸเจฟเฉฐเจ— เจธเจฟเจธเจŸเจฎ เจฆเฉ‡ เจฎเฉเจ•เจพเจฌเจฒเฉ‡ เจ†เจˆเจ“เจเจธ เจฆเฉ€ เจตเจฟเจธเจผเฉ‡เจธเจผเจคเจพ เจนเฉˆเฅค เจ‡เจธ เจฆเฉ‡ เจ‰เจฒเจŸ, เจญเฉŒเจคเจฟเจ• เจฎเฉˆเจฎเฉ‹เจฐเฉ€ เจคเฉ‹เจ‚ เจกเจฟเจธเจ• เจคเฉฑเจ• เจชเฉฐเจจเจฟเจ†เจ‚ เจฆเฉ€ เจ…เจฆเจฒเจพ-เจฌเจฆเจฒเฉ€ เจ•เจฐเจ•เฉ‡ เจฎเฉˆเจฎเฉ‹เจฐเฉ€ เจซเฉเจŸเจชเฉเจฐเจฟเฉฐเจŸ เจจเฉ‚เฉฐ เจ˜เฉฑเจŸ เจ•เจฐเจจเจพ iOS เจตเจฟเฉฑเจš เจชเฉเจฐเจฆเจพเจจ เจจเจนเฉ€เจ‚ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆเฅค เจ•เฉ‹เจˆ เจธเจฟเจฐเจซ เจ•เจพเจฐเจจเจพเจ‚ เจฌเจพเจฐเฉ‡ เจ…เฉฐเจฆเจพเจœเจผเจพ เจฒเจ—เจพ เจธเจ•เจฆเจพ เจนเฉˆเฅค เจนเฉ‹ เจธเจ•เจฆเจพ เจนเฉˆ เจ•เจฟ เจชเฉ‡เจœเจพเจ‚ เจจเฉ‚เฉฐ เจกเจฟเจธเจ• เจ…เจคเฉ‡ เจฌเฉˆเจ• เจคเฉ‡ เจคเฉ€เจฌเจฐเจคเจพ เจจเจพเจฒ เจฒเจฟเจœเจพเจฃ เจฆเฉ€ เจตเจฟเจงเฉ€ เจฎเฉ‹เจฌเจพเจˆเจฒ เจกเจฟเจตเจพเจˆเจธเจพเจ‚ เจฒเจˆ เจฌเจนเฉเจค เจœเจผเจฟเจ†เจฆเจพ เจŠเจฐเจœเจพ เจฆเฉ€ เจ–เจชเจค เจ•เจฐเจจ เจตเจพเจฒเฉ€ เจนเฉˆ, เจœเจพเจ‚ เจ†เจˆเจ“เจเจธ เจเจธเจเจธเจกเฉ€ เจกเจฐเจพเจˆเจตเจพเจ‚ 'เจคเฉ‡ เจธเฉˆเฉฑเจฒเจพเจ‚ เจจเฉ‚เฉฐ เจฎเฉเฉœ เจฒเจฟเจ–เจฃ เจฆเฉ‡ เจธเจฐเฉ‹เจค เจจเฉ‚เฉฐ เจฌเจšเจพเจ‰เจ‚เจฆเจพ เจนเฉˆ, เจœเจพเจ‚ เจนเฉ‹ เจธเจ•เจฆเจพ เจนเฉˆ เจ•เจฟ เจกเจฟเจœเจผเจพเจˆเจจเจฐ เจธเจฟเจธเจŸเจฎ เจฆเฉ€ เจธเจฎเฉเฉฑเจšเฉ€ เจ•เจพเจฐเจ—เฉเจœเจผเจพเจฐเฉ€ เจคเฉ‹เจ‚ เจธเฉฐเจคเฉเจธเจผเจŸ เจจเจนเฉ€เจ‚ เจธเจจ, เจœเจฟเฉฑเจฅเฉ‡ เจธเจญ เจ•เฉเจ เจนเฉˆ. เจฒเจ—เจพเจคเจพเจฐ เจฌเจฆเจฒเจฟเจ†. เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ เจ‡เจน เจนเฉ‹ เจธเจ•เจฆเจพ เจนเฉˆ, เจ…เจธเจฒเฉ€เจ…เจค เจฐเจนเจฟเฉฐเจฆเฉ€ เจนเฉˆ.

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

เจ†เจˆเจ“เจเจธ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจเจพเจ‚ เจตเจฟเฉฑเจš เจฎเฉเฉฑเจ–-เจฎเฉเฉฑเจฒ เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ LMDB เจฆเฉ€ เจšเจฎเจ• เจ…เจคเฉ‡ เจ—เจฐเฉ€เจฌเฉ€

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

เจ•เจฒเจพเจŠเจก เจตเจฟเฉฑเจš เจชเฉเจฐเจฏเฉ‹เจ—เจพเจ‚ เจฆเฉ‡ เจจเจคเฉ€เจœเจฟเจ†เจ‚ เจฆเฉ‡ เจ†เจงเจพเจฐ 'เจคเฉ‡, เจ…เจธเฉ€เจ‚ LMDB เจฆเฉเจ†เจฐเจพ เจจเจฟเจฐเจงเจพเจฐเจค เจฎเฉˆเจฎเฉ‹เจฐเฉ€ เจฆเฉ‡ เจนเฉ‡เจ เจฒเฉ‡ เจธเจฎเจเฉŒเจคเจพ เจฎเฉเฉฑเจฒเจพเจ‚ 'เจคเฉ‡ เจ†เจ เจนเจพเจ‚: 384-เจฌเจฟเฉฑเจŸ เจกเจฟเจตเจพเจˆเจธเจพเจ‚ เจฒเจˆ 32 เจฎเฉˆเจ—เจพเจฌเจพเจˆเจŸ เจ…เจคเฉ‡ 768-เจฌเจฟเฉฑเจŸ เจกเจฟเจตเจพเจˆเจธเจพเจ‚ เจฒเจˆ 64เฅค เจ‡เจธ เจตเฉŒเจฒเจฏเฉ‚เจฎ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจนเฉ‹เจฃ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ, เจ•เฉ‹เจˆ เจตเฉ€ เจธเฉฐเจธเจผเฉ‹เจงเจจ เจ•เจพเจฐเจœ เจ•เฉ‹เจก เจจเจพเจฒ เจชเฉ‚เจฐเจพ เจนเฉ‹เจฃเจพ เจธเจผเฉเจฐเฉ‚ เจนเฉ‹ เจœเจพเจ‚เจฆเจพ เจนเฉˆ MDB_MAP_FULL. เจ…เจธเฉ€เจ‚ เจ†เจชเจฃเฉ€ เจจเจฟเจ—เจฐเจพเจจเฉ€ เจตเจฟเฉฑเจš เจ…เจœเจฟเจนเฉ€เจ†เจ‚ เจ—เจฒเจคเฉ€เจ†เจ‚ เจฆเฉ‡เจ–เจฆเฉ‡ เจนเจพเจ‚, เจชเจฐ เจ‰เจน เจ‡เจธ เจชเฉœเจพเจ… 'เจคเฉ‡ เจจเจœเจผเจฐเจ…เฉฐเจฆเจพเจœเจผ เจ•เจฐเจจ เจฒเจˆ เจฌเจนเฉเจค เจ˜เฉฑเจŸ เจนเจจเฅค

เจธเจŸเฉ‹เจฐเฉ‡เจœ เจฆเฉเจ†เจฐเจพ เจฌเจนเฉเจค เจœเจผเจฟเจ†เจฆเจพ เจฎเฉˆเจฎเฉ‹เจฐเฉ€ เจฆเฉ€ เจ–เจชเจค เจฆเจพ เจ‡เฉฑเจ• เจ—เฉˆเจฐ-เจธเจชเฉฑเจธเจผเจŸ เจ•เจพเจฐเจจ เจฒเฉฐเจฌเฉ‡ เจธเจฎเฉ‡เจ‚ เจคเฉฑเจ• เจšเฉฑเจฒเจฃ เจตเจพเจฒเจพ เจฒเฉˆเจฃ-เจฆเฉ‡เจฃ เจนเฉ‹ เจธเจ•เจฆเจพ เจนเฉˆเฅค เจ‡เจน เจธเจฎเจเจฃ เจฒเจˆ เจ•เจฟ เจ‡เจน เจฆเฉ‹เจตเฉ‡เจ‚ เจตเจฐเจคเจพเจฐเฉ‡ เจ•เจฟเจตเฉ‡เจ‚ เจธเจฌเฉฐเจงเจฟเจค เจนเจจ, เจ‡เจน เจฌเจพเจ•เฉ€ เจฆเฉ€เจ†เจ‚ เจฆเฉ‹ LMDB เจตเฉเจนเฉ‡เจฒเจพเจ‚ 'เจคเฉ‡ เจตเจฟเจšเจพเจฐ เจ•เจฐเจจ เจตเจฟเฉฑเจš เจธเจพเจกเฉ€ เจฎเจฆเจฆ เจ•เจฐเฉ‡เจ—เจพเฅค

3.2 เจตเฉเจนเฉ‡เจฒ #2. เจฌเฉ€+-เจฐเฉเฉฑเจ–

เจ•เฉเฉฐเจœเฉ€-เจฎเฉเฉฑเจฒ เจธเจŸเฉ‹เจฐ เจฆเฉ‡ เจธเจฟเจ–เจฐ 'เจคเฉ‡ เจŸเฉ‡เจฌเจฒเจพเจ‚ เจฆเฉ€ เจจเจ•เจฒ เจ•เจฐเจจ เจฒเจˆ, เจนเฉ‡เจ เจพเจ‚ เจฆเจฟเฉฑเจคเฉ‡ เจ“เจชเจฐเฉ‡เจธเจผเจจ เจ‡เจธเจฆเฉ‡ API เจตเจฟเฉฑเจš เจฎเฉŒเจœเฉ‚เจฆ เจนเฉ‹เจฃเฉ‡ เจšเจพเจนเฉ€เจฆเฉ‡ เจนเจจ:

  1. เจ‡เฉฑเจ• เจจเจตเจพเจ‚ เจคเฉฑเจค เจธเจผเจพเจฎเจฒ เจ•เฉ€เจคเจพ เจœเจพ เจฐเจฟเจนเจพ เจนเฉˆเฅค
  2. เจฆเจฟเฉฑเจคเฉ€ เจ•เฉเฉฐเจœเฉ€ เจฆเฉ‡ เจจเจพเจฒ เจ‡เฉฑเจ• เจคเฉฑเจค เจฆเฉ€ เจ–เฉ‹เจœ เจ•เจฐเฉ‹เฅค
  3. เจ‡เฉฑเจ• เจคเฉฑเจค เจจเฉ‚เฉฐ เจฎเจฟเจŸเจพเจ‰เจฃเจพเฅค
  4. เจฎเฉเฉฑเจ– เจ…เฉฐเจคเจฐเจพเจฒเจพเจ‚ เจจเฉ‚เฉฐ เจ‰เจนเจจเจพเจ‚ เจฆเฉ‡ เจฒเฉœเฉ€เจฌเฉฑเจง เจ•เฉเจฐเจฎ เจตเจฟเฉฑเจš เจฆเฉเจนเจฐเจพเจ“เฅค

เจ†เจˆเจ“เจเจธ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจเจพเจ‚ เจตเจฟเฉฑเจš เจฎเฉเฉฑเจ–-เจฎเฉเฉฑเจฒ เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ LMDB เจฆเฉ€ เจšเจฎเจ• เจ…เจคเฉ‡ เจ—เจฐเฉ€เจฌเฉ€เจธเจญ เจคเฉ‹เจ‚ เจธเจฐเจฒ เจกเจพเจŸเจพ เจขเจพเจ‚เจšเจพ เจœเฉ‹ เจธเจพเจฐเฉ‡ เจšเจพเจฐ เจ“เจชเจฐเฉ‡เจธเจผเจจเจพเจ‚ เจจเฉ‚เฉฐ เจ†เจธเจพเจจเฉ€ เจจเจพเจฒ เจฒเจพเจ—เฉ‚ เจ•เจฐ เจธเจ•เจฆเจพ เจนเฉˆ เจ‡เฉฑเจ• เจฌเจพเจˆเจจเจฐเฉ€ เจ–เฉ‹เจœ เจŸเฉเจฐเฉ€ เจนเฉˆเฅค เจ‡เจธ เจฆเจพ เจนเจฐเฉ‡เจ• เจจเฉ‹เจก เจ‡เฉฑเจ• เจ•เฉเฉฐเจœเฉ€ เจนเฉˆ เจœเฉ‹ เจšเจพเจˆเจฒเจก เจ•เฉเฉฐเจœเฉ€เจ†เจ‚ เจฆเฉ‡ เจชเฉ‚เจฐเฉ‡ เจธเจฌเจธเฉˆเฉฑเจŸ เจจเฉ‚เฉฐ เจฆเฉ‹ เจธเจฌเจŸเฉเจฐเฉ€เจœเจผ เจตเจฟเฉฑเจš เจตเฉฐเจกเจฆเจพ เจนเฉˆเฅค เจ–เฉฑเจฌเฉ‡ เจชเจพเจธเฉ‡ เจ‰เจน เจนเจจ เจœเฉ‹ เจฎเจพเจคเจพ-เจชเจฟเจคเจพ เจคเฉ‹เจ‚ เจ›เฉ‹เจŸเฉ‡ เจนเจจ, เจ…เจคเฉ‡ เจธเฉฑเจœเฉ‡ เจชเจพเจธเฉ‡ - เจ‰เจน เจœเฉ‹ เจตเฉฑเจกเฉ‡ เจนเจจเฅค เจ•เฉเฉฐเจœเฉ€เจ†เจ‚ เจฆเจพ เจ†เจฐเจกเจฐเจก เจธเฉˆเฉฑเจŸ เจชเฉเจฐเจพเจชเจค เจ•เจฐเจจเจพ เจ•เจฒเจพเจธเจฟเจ• เจŸเฉเจฐเฉ€ เจŸเฉเจฐเฉˆเจตเจฐเจธเจฒเจพเจ‚ เจตเจฟเฉฑเจšเฉ‹เจ‚ เจ‡เฉฑเจ• เจฆเฉเจ†เจฐเจพ เจชเฉเจฐเจพเจชเจค เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆ

เจฌเจพเจˆเจจเจฐเฉ€ เจŸเฉเจฐเฉ€ เจฆเฉ€เจ†เจ‚ เจฆเฉ‹ เจฌเฉเจจเจฟเจ†เจฆเฉ€ เจ•เจฎเฉ€เจ†เจ‚ เจนเจจ เจœเฉ‹ เจ‰เจนเจจเจพเจ‚ เจจเฉ‚เฉฐ เจกเจฟเจธเจ• เจกเฉ‡เจŸเจพ เจขเจพเจ‚เจšเฉ‡ เจฆเฉ‡ เจฐเฉ‚เจช เจตเจฟเฉฑเจš เจชเฉเจฐเจญเจพเจตเฉ€ เจนเฉ‹เจฃ เจคเฉ‹เจ‚ เจฐเฉ‹เจ•เจฆเฉ€เจ†เจ‚ เจนเจจเฅค เจชเจนเจฟเจฒเจพเจ‚, เจ‰เจนเจจเจพเจ‚ เจฆเฉ‡ เจธเฉฐเจคเฉเจฒเจจ เจฆเฉ€ เจกเจฟเจ—เจฐเฉ€ เจ…เจฃ-เจ…เจจเฉเจฎเจพเจจเจฟเจค เจนเฉˆ. เจฆเจฐเจ–เจคเจพเจ‚ เจจเฉ‚เฉฐ เจชเฉเจฐเจพเจชเจค เจ•เจฐเจจ เจฆเจพ เจ•เจพเจซเจผเฉ€ เจ–เจผเจคเจฐเจพ เจนเฉˆ เจœเจฟเจธ เจตเจฟเฉฑเจš เจตเฉฑเจ–-เจตเฉฑเจ– เจธเจผเจพเจ–เจพเจตเจพเจ‚ เจฆเฉ€ เจ‰เจšเจพเจˆ เจฌเจนเฉเจค เจตเฉฑเจ–เจฐเฉ€ เจนเฉ‹ เจธเจ•เจฆเฉ€ เจนเฉˆ, เจœเฉ‹ เจ•เจฟ เจ‰เจฎเฉ€เจฆ เจ•เฉ€เจคเฉ€ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆ เจฆเฉ‡ เจฎเฉเจ•เจพเจฌเจฒเฉ‡ เจ–เฉ‹เจœ เจฆเฉ€ เจ…เจฒเจ—เฉ‹เจฐเจฟเจฆเจฎเจฟเจ• เจ—เฉเฉฐเจเจฒเจคเจพ เจจเฉ‚เฉฐ เจฎเจนเฉฑเจคเจตเจชเฉ‚เจฐเจฃ เจฐเฉ‚เจช เจตเจฟเฉฑเจš เจตเจฟเจ—เฉœเจฆเฉ€ เจนเฉˆเฅค เจฆเฉ‚เจœเจพ, เจจเฉ‹เจกเจพเจ‚ เจฆเฉ‡ เจตเจฟเจšเจ•เจพเจฐ เจ•เจฐเจพเจธ-เจฒเจฟเฉฐเจ•เจธ เจฆเฉ€ เจฌเจนเฉเจคเจพเจค เจฎเฉˆเจฎเฉ‹เจฐเฉ€ เจตเจฟเฉฑเจš เจธเจฅเจพเจจเจพเจ‚ เจฆเฉ‡ เจฌเจพเจˆเจจเจฐเฉ€ เจฐเฉเฉฑเจ–เจพเจ‚ เจจเฉ‚เฉฐ เจตเจพเจ‚เจเฉ‡ เจฐเฉฑเจ–เจฆเฉ€ เจนเฉˆ เจฌเฉฐเจฆ เจจเฉ‹เจกเจพเจ‚ (เจ‰เจนเจจเจพเจ‚ เจตเจฟเจšเจ•เจพเจฐ เจฒเจฟเฉฐเจ•เจพเจ‚ เจฆเฉ‡ เจฐเฉ‚เจช เจตเจฟเฉฑเจš) เจตเจฐเจšเฉเจ…เจฒ เจฎเฉˆเจฎเฉ‹เจฐเฉ€ เจตเจฟเฉฑเจš เจชเฉ‚เจฐเฉ€ เจคเจฐเฉเจนเจพเจ‚ เจตเฉฑเจ–เจฐเฉ‡ เจชเฉฐเจจเจฟเจ†เจ‚ 'เจคเฉ‡ เจธเจฅเจฟเจค เจนเฉ‹ เจธเจ•เจฆเฉ‡ เจนเจจเฅค เจจเจคเฉ€เจœเฉ‡ เจตเจœเฉ‹เจ‚, เจ‡เฉฑเจ• เจฆเจฐเฉฑเจ–เจค เจตเจฟเฉฑเจš เจ•เจˆ เจ—เฉเจ†เจ‚เจขเฉ€ เจจเฉ‹เจกเจพเจ‚ เจฆเฉ‡ เจ‡เฉฑเจ• เจธเจงเจพเจฐเจจ เจŸเจฐเจพเจตเจฐเจธเจฒ เจฒเจˆ เจตเฉ€ เจชเฉฐเจจเจฟเจ†เจ‚ เจฆเฉ€ เจคเฉเจฒเจจเจพเจคเจฎเจ• เจธเฉฐเจ–เจฟเจ† เจตเจฟเฉฑเจš เจœเจพเจฃ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉ‹ เจธเจ•เจฆเฉ€ เจนเฉˆเฅค เจ‡เจน เจ‡เฉฑเจ• เจธเจฎเฉฑเจธเจฟเจ† เจนเฉˆ เจ‰เจฆเฉ‹เจ‚ เจตเฉ€ เจœเจฆเฉ‹เจ‚ เจ…เจธเฉ€เจ‚ เจ‡เฉฑเจ• เจ‡เจจ-เจฎเฉˆเจฎเฉ‹เจฐเฉ€ เจกเฉ‡เจŸเจพ เจขเจพเจ‚เจšเฉ‡ เจฆเฉ‡ เจฐเฉ‚เจช เจตเจฟเฉฑเจš เจฌเจพเจˆเจจเจฐเฉ€ เจฐเฉเฉฑเจ–เจพเจ‚ เจฆเฉ€ เจชเฉเจฐเจญเจพเจตเจธเจผเฉ€เจฒเจคเจพ เจฌเจพเจฐเฉ‡ เจ—เฉฑเจฒ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚, เจ•เจฟเจ‰เจ‚เจ•เจฟ เจชเฉเจฐเฉ‹เจธเฉˆเจธเจฐ เจ•เฉˆเจธเจผ เจตเจฟเฉฑเจš เจฒเจ—เจพเจคเจพเจฐ เจชเฉฐเจจเจฟเจ†เจ‚ เจจเฉ‚เฉฐ เจ˜เฉเฉฐเจฎเจพเจ‰เจฃเจพ เจธเจธเจคเจพ เจจเจนเฉ€เจ‚ เจนเฉˆเฅค เจœเจฆเฉ‹เจ‚ เจกเจฟเจธเจ• เจคเฉ‹เจ‚ เจจเฉ‹เจก-เจธเจฌเฉฐเจงเจค เจชเฉฐเจจเจฟเจ†เจ‚ เจจเฉ‚เฉฐ เจ…เจ•เจธเจฐ เจ‰เจญเจพเจฐเจจ เจฆเฉ€ เจ—เฉฑเจฒ เจ†เจ‰เจ‚เจฆเฉ€ เจนเฉˆ, เจคเจพเจ‚ เจšเฉ€เจœเจผเจพเจ‚ เจ…เจธเจฒ เจตเจฟเฉฑเจš เจ–เจฐเจพเจฌ เจนเฉ‹ เจœเจพเจ‚เจฆเฉ€เจ†เจ‚ เจนเจจเฅค เจฆเฉเจ–เจฆเจพเจˆ.

เจ†เจˆเจ“เจเจธ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจเจพเจ‚ เจตเจฟเฉฑเจš เจฎเฉเฉฑเจ–-เจฎเฉเฉฑเจฒ เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ LMDB เจฆเฉ€ เจšเจฎเจ• เจ…เจคเฉ‡ เจ—เจฐเฉ€เจฌเฉ€เจฌเฉ€-เจฐเฉเฉฑเจ–, เจฌเจพเจˆเจจเจฐเฉ€ เจฐเฉเฉฑเจ–เจพเจ‚ เจฆเจพ เจตเจฟเจ•เจพเจธ เจนเฉ‹เจฃ เจ•เจฐเจ•เฉ‡, เจชเจฟเจ›เจฒเฉ‡ เจชเฉˆเจฐเฉ‡ เจตเจฟเฉฑเจš เจชเจ›เจพเจฃเฉ€เจ†เจ‚ เจ—เจˆเจ†เจ‚ เจธเจฎเฉฑเจธเจฟเจ†เจตเจพเจ‚ เจจเฉ‚เฉฐ เจนเฉฑเจฒ เจ•เจฐเจฆเฉ‡ เจนเจจเฅค เจชเจนเจฟเจฒเจพเจ‚, เจ‰เจน เจธเจตเฉˆ-เจธเฉฐเจคเฉเจฒเจจ เจ•เจฐ เจฐเจนเฉ‡ เจนเจจ. เจฆเฉ‚เจœเจพ, เจ‰เจนเจจเจพเจ‚ เจฆเฉ‡ เจนเจฐเฉ‡เจ• เจจเฉ‹เจก เจšเจพเจˆเจฒเจก เจ•เฉเฉฐเจœเฉ€เจ†เจ‚ เจฆเฉ‡ เจธเฉˆเฉฑเจŸ เจจเฉ‚เฉฐ 2 เจตเจฟเฉฑเจš เจจเจนเฉ€เจ‚, เจธเจ—เฉ‹เจ‚ M เจ†เจฐเจกเจฐ เจ•เฉ€เจคเฉ‡ เจธเจฌเจธเฉˆเฉฑเจŸเจพเจ‚ เจตเจฟเฉฑเจš เจตเฉฐเจกเจฆเจพ เจนเฉˆ, เจ…เจคเฉ‡ เจจเฉฐเจฌเจฐ M เจ•เจพเจซเจผเฉ€ เจตเฉฑเจกเจพ เจนเฉ‹ เจธเจ•เจฆเจพ เจนเฉˆ, เจ•เจˆ เจธเฉŒ เจœเจพเจ‚ เจนเจœเจผเจพเจฐเจพเจ‚ เจฆเฉ‡ เจ•เฉเจฐเจฎ 'เจคเฉ‡เฅค

เจ‡เจธ เจคเจฐเฉเจนเจพเจ‚:

  1. เจนเจฐเฉ‡เจ• เจจเฉ‹เจก เจตเจฟเฉฑเจš เจชเจนเจฟเจฒเจพเจ‚ เจนเฉ€ เจ†เจฐเจกเจฐ เจ•เฉ€เจคเฉ€เจ†เจ‚ เจ•เฉเฉฐเจœเฉ€เจ†เจ‚ เจฆเฉ€ เจ‡เฉฑเจ• เจตเฉฑเจกเฉ€ เจ—เจฟเจฃเจคเฉ€ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆ เจ…เจคเฉ‡ เจฐเฉเฉฑเจ– เจฌเจนเฉเจค เจ˜เฉฑเจŸ เจนเฉเฉฐเจฆเฉ‡ เจนเจจเฅค
  2. เจฐเฉเฉฑเจ– เจฎเฉˆเจฎเฉ‹เจฐเฉ€ เจตเจฟเฉฑเจš เจธเจฅเจพเจจ เจฆเฉ€ เจตเจฟเจธเจผเฉ‡เจธเจผเจคเจพ เจชเฉเจฐเจพเจชเจค เจ•เจฐเจฆเจพ เจนเฉˆ, เจ•เจฟเจ‰เจ‚เจ•เจฟ เจ•เฉเฉฐเจœเฉ€เจ†เจ‚ เจœเฉ‹ เจฎเฉเฉฑเจฒ เจตเจฟเฉฑเจš เจจเฉ‡เฉœเฉ‡ เจนเฉเฉฐเจฆเฉ€เจ†เจ‚ เจนเจจ เจ•เฉเจฆเจฐเจคเฉ€ เจคเฉŒเจฐ 'เจคเฉ‡ เจ‡เฉฑเจ• เจœเจพเจ‚ เจ—เฉเจ†เจ‚เจขเฉ€ เจจเฉ‹เจกเจพเจ‚ 'เจคเฉ‡ เจ‡เฉฑเจ• เจฆเฉ‚เจœเฉ‡ เจฆเฉ‡ เจ…เฉฑเจ—เฉ‡ เจธเจฅเจฟเจค เจนเฉเฉฐเจฆเฉ€เจ†เจ‚ เจนเจจเฅค
  3. เจธเจฐเจš เจ“เจชเจฐเฉ‡เจธเจผเจจ เจฆเฉŒเจฐเจพเจจ เจŸเฉเจฐเฉ€ เจคเฉ‹เจ‚ เจนเฉ‡เจ เจพเจ‚ เจ‰เจคเจฐเจจ เจตเฉ‡เจฒเฉ‡ เจŸเฉเจฐเจพเจ‚เจœเจผเจฟเจŸ เจจเฉ‹เจกเจพเจ‚ เจฆเฉ€ เจ—เจฟเจฃเจคเฉ€ เจ˜เจŸเจพเจ‰เจ‚เจฆเจพ เจนเฉˆเฅค
  4. เจฐเฉ‡เจ‚เจœ เจชเฉเฉฑเจ›เจ—เจฟเฉฑเจ›เจพเจ‚ เจฒเจˆ เจชเฉœเฉเจนเฉ‡ เจ—เจ เจŸเจพเจฐเจ—เฉ‡เจŸ เจจเฉ‹เจกเจพเจ‚ เจฆเฉ€ เจธเฉฐเจ–เจฟเจ† เจจเฉ‚เฉฐ เจ˜เจŸเจพเจ‰เจ‚เจฆเจพ เจนเฉˆ, เจ•เจฟเจ‰เจ‚เจ•เจฟ เจ‰เจนเจจเจพเจ‚ เจตเจฟเฉฑเจšเฉ‹เจ‚ เจนเจฐเฉ‡เจ• เจตเจฟเฉฑเจš เจชเจนเจฟเจฒเจพเจ‚ เจคเฉ‹เจ‚ เจนเฉ€ เจ†เจฐเจกเจฐ เจ•เฉ€เจคเฉ€เจ†เจ‚ เจ•เฉเฉฐเจœเฉ€เจ†เจ‚ เจฆเฉ€ เจ‡เฉฑเจ• เจตเฉฑเจกเฉ€ เจ—เจฟเจฃเจคเฉ€ เจนเฉˆเฅค

เจ†เจˆเจ“เจเจธ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจเจพเจ‚ เจตเจฟเฉฑเจš เจฎเฉเฉฑเจ–-เจฎเฉเฉฑเจฒ เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ LMDB เจฆเฉ€ เจšเจฎเจ• เจ…เจคเฉ‡ เจ—เจฐเฉ€เจฌเฉ€

LMDB เจกเจพเจŸเจพ เจธเจŸเฉ‹เจฐ เจ•เจฐเจจ เจฒเจˆ B- เจŸเฉเจฐเฉ€ เจฆเฉ‡ เจ‡เฉฑเจ• เจฐเฉ‚เจช เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเจพ เจนเฉˆ เจœเจฟเจธเจจเฉ‚เฉฐ B+ เจŸเฉเจฐเฉ€ เจ•เจฟเจนเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆเฅค เจ‰เจชเจฐเฉ‹เจ•เจค เจšเจฟเฉฑเจคเจฐ เจคเจฟเฉฐเจจ เจ•เจฟเจธเจฎเจพเจ‚ เจฆเฉ‡ เจจเฉ‹เจกเจพเจ‚ เจจเฉ‚เฉฐ เจฆเจฐเจธเจพเจ‰เจ‚เจฆเจพ เจนเฉˆ เจœเฉ‹ เจ‡เจธ เจตเจฟเฉฑเจš เจธเจผเจพเจฎเจฒ เจนเจจ:

  1. เจธเจฟเจ–เจฐ 'เจคเฉ‡ เจฐเฉ‚เจŸ เจนเฉˆ. เจ‡เจน เจ‡เฉฑเจ• เจฐเจฟเจชเฉ‹เจœเจผเจŸเจฐเฉ€ เจฆเฉ‡ เจ…เฉฐเจฆเจฐ เจ‡เฉฑเจ• เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจฆเฉ€ เจงเจพเจฐเจจเจพ เจคเฉ‹เจ‚ เจ‡เจฒเจพเจตเจพ เจนเฉ‹เจฐ เจ•เฉเจ เจจเจนเฉ€เจ‚ เจฌเจฃเจพเจ‰เจ‚เจฆเจพ. เจ‡เฉฑเจ• เจธเจฟเฉฐเจ—เจฒ LMDB เจ‰เจฆเจพเจนเจฐเจจ เจฆเฉ‡ เจ…เฉฐเจฆเจฐ, เจคเฉเจธเฉ€เจ‚ เจ•เจˆ เจกเจพเจŸเจพเจฌเฉ‡เจธ เจฌเจฃเจพ เจธเจ•เจฆเฉ‡ เจนเฉ‹ เจœเฉ‹ เจฎเฉˆเจช เจ•เฉ€เจคเฉ‡ เจตเจฐเจšเฉเจ…เจฒ เจเจกเจฐเฉˆเฉฑเจธ เจธเจชเฉ‡เจธ เจจเฉ‚เฉฐ เจธเจพเจ‚เจเจพ เจ•เจฐเจฆเฉ‡ เจนเจจเฅค เจ‰เจนเจจเจพเจ‚ เจตเจฟเฉฑเจšเฉ‹เจ‚ เจนเจฐ เจ‡เฉฑเจ• เจ†เจชเจฃเฉ€ เจœเฉœเฉเจน เจคเฉ‹เจ‚ เจธเจผเฉเจฐเฉ‚ เจนเฉเฉฐเจฆเจพ เจนเฉˆ.
  2. เจธเจญ เจคเฉ‹เจ‚ เจนเฉ‡เจ เจฒเฉ‡ เจชเฉฑเจงเจฐ 'เจคเฉ‡ เจชเฉฑเจคเฉ‡ (เจชเฉฑเจคเฉ€) เจนเจจ. เจ‡เจน เจ‰เจน เจนเจจ เจ…เจคเฉ‡ เจธเจฟเจฐเจซ เจ‰เจน เจนเจจ เจœเฉ‹ เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจตเจฟเฉฑเจš เจธเจŸเฉ‹เจฐ เจ•เฉ€เจคเฉ‡ เจฎเฉเฉฑเจ–-เจฎเฉเฉฑเจฒ เจฆเฉ‡ เจœเฉ‹เฉœเฉ‡ เจฐเฉฑเจ–เจฆเฉ‡ เจนเจจเฅค เจตเฉˆเจธเฉ‡, เจ‡เจน เจฌเฉ€+-เจฐเฉเฉฑเจ–เจพเจ‚ เจฆเฉ€ เจตเจฟเจธเจผเฉ‡เจธเจผเจคเจพ เจนเฉˆเฅค เจœเฉ‡เจ•เจฐ เจ‡เฉฑเจ• เจธเจพเจงเจพเจฐเจจ เจฌเฉ€-เจŸเฉเจฐเฉ€ เจตเฉˆเจฒเจฏเฉ‚-เจชเจพเจฐเจŸเจธ เจจเฉ‚เฉฐ เจธเจพเจฐเฉ‡ เจชเฉฑเจงเจฐเจพเจ‚ เจฆเฉ‡ เจจเฉ‹เจกเจพเจ‚ 'เจคเฉ‡ เจธเจŸเฉ‹เจฐ เจ•เจฐเจฆเจพ เจนเฉˆ, เจคเจพเจ‚ B+-เจญเจฟเฉฐเจจเจคเจพ เจธเจฟเจฐเจซ เจธเจญ เจคเฉ‹เจ‚ เจนเฉ‡เจ เจฒเฉ‡ เจชเฉฑเจงเจฐ 'เจคเฉ‡ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆเฅค เจ‡เจธ เจคเฉฑเจฅ เจจเฉ‚เฉฐ เจจเจฟเจธเจผเจšเจฟเจค เจ•เจฐเจจ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ, เจ…เจธเฉ€เจ‚ LMDB เจตเจฟเฉฑเจš เจตเจฐเจคเฉ‡ เจ—เจ เจฐเฉเฉฑเจ– เจฆเฉ‡ เจ‰เจช-เจ•เจฟเจธเจฎ เจจเฉ‚เฉฐ เจธเจฟเจฐเจซเจผ เจ‡เฉฑเจ• B-เจŸเฉเจฐเฉ€ เจ•เจนเจพเจ‚เจ—เฉ‡เฅค
  3. เจœเฉœเฉเจน เจ…เจคเฉ‡ เจชเฉฑเจคเจฟเจ†เจ‚ เจฆเฉ‡ เจตเจฟเจšเจ•เจพเจฐ, เจจเฉ‡เจตเฉ€เจ—เฉ‡เจธเจผเจจ (เจธเจผเจพเจ–เจพ) เจจเฉ‹เจกเจพเจ‚ เจฆเฉ‡ เจจเจพเจฒ 0 เจœเจพเจ‚ เจตเฉฑเจง เจคเจ•เจจเฉ€เจ•เฉ€ เจชเฉฑเจงเจฐ เจนเฉเฉฐเจฆเฉ‡ เจนเจจเฅค เจ‰เจนเจจเจพเจ‚ เจฆเจพ เจ•เฉฐเจฎ เจชเฉฑเจคเจฟเจ†เจ‚ เจฆเฉ‡ เจตเจฟเจšเจ•เจพเจฐ เจ•เฉเจฐเจฎเจฌเฉฑเจง เจ•เฉเฉฐเจœเฉ€เจ†เจ‚ เจจเฉ‚เฉฐ เจตเฉฐเจกเจฃเจพ เจนเฉˆเฅค

เจญเฉŒเจคเจฟเจ• เจคเฉŒเจฐ 'เจคเฉ‡, เจจเฉ‹เจก เจ‡เฉฑเจ• เจชเฉ‚เจฐเจต-เจจเจฟเจฐเจงเจพเจฐเจค เจฒเฉฐเจฌเจพเจˆ เจฆเฉ‡ เจฎเฉˆเจฎเฉ‹เจฐเฉ€ เจฆเฉ‡ เจฌเจฒเจพเจ• เจนเฉเฉฐเจฆเฉ‡ เจนเจจเฅค เจ‰เจนเจจเจพเจ‚ เจฆเจพ เจ†เจ•เจพเจฐ เจ“เจชเจฐเฉ‡เจŸเจฟเฉฐเจ— เจธเจฟเจธเจŸเจฎ เจตเจฟเฉฑเจš เจฎเฉˆเจฎเฉ‹เจฐเฉ€ เจชเฉฐเจจเจฟเจ†เจ‚ เจฆเฉ‡ เจ†เจ•เจพเจฐ เจฆเจพ เจฎเจฒเจŸเฉ€เจชเจฒ เจนเฉˆ, เจœเจฟเจธ เจฌเจพเจฐเฉ‡ เจ…เจธเฉ€เจ‚ เจ‰เฉฑเจชเจฐ เจ—เฉฑเจฒ เจ•เฉ€เจคเฉ€ เจนเฉˆเฅค เจจเฉ‹เจก เจฌเจฃเจคเจฐ เจนเฉ‡เจ  เจฆเจฟเจ–เจพเจ‡เจ† เจ—เจฟเจ† เจนเฉˆ. เจธเจฟเจฐเจฒเฉ‡เจ– เจตเจฟเฉฑเจš เจฎเฉˆเจŸเจพ-เจœเจพเจฃเจ•เจพเจฐเฉ€ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆ, เจœเจฟเจธ เจตเจฟเฉฑเจšเฉ‹เจ‚ เจธเจญ เจคเฉ‹เจ‚ เจธเจชเฉฑเจธเจผเจŸ, เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ, เจšเฉˆเฉฑเจ•เจธเจฎ เจนเฉˆเฅค เจ…เฉฑเจ—เฉ‡ เจ†เจซเจธเฉˆเจŸเจพเจ‚ เจฌเจพเจฐเฉ‡ เจœเจพเจฃเจ•เจพเจฐเฉ€ เจ†เจ‰เจ‚เจฆเฉ€ เจนเฉˆ, เจœเจฟเจธ เจฆเฉ‡ เจจเจพเจฒ เจกเฉ‡เจŸเจพ เจตเจพเจฒเฉ‡ เจธเฉˆเฉฑเจฒ เจธเจฅเจฟเจค เจนเจจเฅค เจกเฉ‡เจŸเจพ เจฆเฉ€ เจญเฉ‚เจฎเจฟเจ•เจพ เจœเจพเจ‚ เจคเจพเจ‚ เจ•เฉเฉฐเจœเฉ€เจ†เจ‚ เจนเฉ‹ เจธเจ•เจฆเฉ€ เจนเฉˆ, เจœเฉ‡เจ•เจฐ เจ…เจธเฉ€เจ‚ เจจเฉˆเจตเฉ€เจ—เฉ‡เจธเจผเจจ เจจเฉ‹เจกเจพเจ‚ เจฌเจพเจฐเฉ‡ เจ—เฉฑเจฒ เจ•เจฐ เจฐเจนเฉ‡ เจนเจพเจ‚, เจœเจพเจ‚ เจชเฉฑเจคเจฟเจ†เจ‚ เจฆเฉ‡ เจฎเจพเจฎเจฒเฉ‡ เจตเจฟเฉฑเจš เจชเฉ‚เจฐเฉ‡ เจ•เฉเฉฐเจœเฉ€-เจฎเฉเฉฑเจฒ เจฆเฉ‡ เจœเฉ‹เฉœเจฟเจ†เจ‚ เจฌเจพเจฐเฉ‡ เจ—เฉฑเจฒ เจ•เจฐ เจฐเจนเฉ‡ เจนเจพเจ‚เฅค เจคเฉเจธเฉ€เจ‚ เจ•เฉฐเจฎ เจตเจฟเฉฑเจš เจชเฉฐเจจเจฟเจ†เจ‚ เจฆเฉ€ เจฌเจฃเจคเจฐ เจฌเจพเจฐเฉ‡ เจนเฉ‹เจฐ เจชเฉœเฉเจน เจธเจ•เจฆเฉ‡ เจนเฉ‹เฅค "เจ‰เฉฑเจš เจชเฉเจฐเจฆเจฐเจธเจผเจจ เจ•เฉเฉฐเจœเฉ€-เจฎเฉเฉฑเจฒ เจธเจŸเฉ‹เจฐเจพเจ‚ เจฆเจพ เจฎเฉเจฒเจพเจ‚เจ•เจฃ".

เจ†เจˆเจ“เจเจธ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจเจพเจ‚ เจตเจฟเฉฑเจš เจฎเฉเฉฑเจ–-เจฎเฉเฉฑเจฒ เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ LMDB เจฆเฉ€ เจšเจฎเจ• เจ…เจคเฉ‡ เจ—เจฐเฉ€เจฌเฉ€

เจชเฉ‡เจœ เจจเฉ‹เจกเจธ เจฆเฉ€ เจ…เฉฐเจฆเจฐเฉ‚เจจเฉ€ เจธเจฎเฉฑเจ—เจฐเฉ€ เจจเจพเจฒ เจจเจœเจฟเฉฑเจ เจฃ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ, เจ…เจธเฉ€เจ‚ เจ…เฉฑเจ—เฉ‡ เจฆเจฟเฉฑเจคเฉ‡ เจฐเฉ‚เจช เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจธเจฐเจฒ เจคเจฐเฉ€เจ•เฉ‡ เจจเจพเจฒ LMDB เจฌเฉ€-เจŸเฉเจฐเฉ€ เจจเฉ‚เฉฐ เจฆเจฐเจธเจพเจตเจพเจ‚เจ—เฉ‡เฅค

เจ†เจˆเจ“เจเจธ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจเจพเจ‚ เจตเจฟเฉฑเจš เจฎเฉเฉฑเจ–-เจฎเฉเฉฑเจฒ เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ LMDB เจฆเฉ€ เจšเจฎเจ• เจ…เจคเฉ‡ เจ—เจฐเฉ€เจฌเฉ€

เจจเฉ‹เจกเจพเจ‚ เจตเจพเจฒเฉ‡ เจชเฉฐเจจเจฟเจ†เจ‚ เจจเฉ‚เฉฐ เจกเจฟเจธเจ• 'เจคเฉ‡ เจ•เฉเจฐเจฎเจตเจพเจฐ เจตเจฟเจตเจธเจฅเจฟเจค เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆเฅค เจตเฉฑเจง เจจเฉฐเจฌเจฐ เจตเจพเจฒเฉ‡ เจชเฉฐเจจเฉ‡ เจซเจพเจˆเจฒ เจฆเฉ‡ เจ…เฉฐเจค เจตเจฟเฉฑเจš เจธเจฅเจฟเจค เจนเจจเฅค เจ…เจ–เฉŒเจคเฉ€ เจฎเฉˆเจŸเจพ เจชเฉ‡เจœ (เจฎเฉˆเจŸเจพ เจชเฉ‡เจœ) เจตเจฟเฉฑเจš เจ”เจซเจธเฉˆเจŸเจธ เจฌเจพเจฐเฉ‡ เจœเจพเจฃเจ•เจพเจฐเฉ€ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆ, เจœเจฟเจธเจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจธเจพเจฐเฉ‡ เจฐเฉเฉฑเจ–เจพเจ‚ เจฆเฉ€เจ†เจ‚ เจœเฉœเฉเจนเจพเจ‚ เจจเฉ‚เฉฐ เจฒเฉฑเจญเจฃ เจฒเจˆ เจ•เฉ€เจคเฉ€ เจœเจพ เจธเจ•เจฆเฉ€ เจนเฉˆเฅค เจœเจฆเฉ‹เจ‚ เจ‡เฉฑเจ• เจซเจพเจˆเจฒ เจ–เฉ‹เจฒเฉเจนเฉ€ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆ, เจคเจพเจ‚ LMDB เจ‡เฉฑเจ• เจตเฉˆเจง เจฎเฉˆเจŸเจพ เจชเฉ‡เจœ เจฆเฉ€ เจ–เฉ‹เจœ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจชเฉฐเจจเฉ‡ เจฆเฉ‡ เจ…เฉฐเจค เจคเฉ‹เจ‚ เจธเจผเฉเจฐเฉ‚ เจคเฉฑเจ• เจซเจพเจˆเจฒ เจชเฉ‡เจœ เจจเฉ‚เฉฐ เจธเจ•เฉˆเจจ เจ•เจฐเจฆเจพ เจนเฉˆ เจ…เจคเฉ‡ เจ‡เจธเจฆเฉ‡ เจฆเฉเจ†เจฐเจพ เจฎเฉŒเจœเฉ‚เจฆเจพ เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจฒเฉฑเจญเจฆเจพ เจนเฉˆเฅค

เจ†เจˆเจ“เจเจธ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจเจพเจ‚ เจตเจฟเฉฑเจš เจฎเฉเฉฑเจ–-เจฎเฉเฉฑเจฒ เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ LMDB เจฆเฉ€ เจšเจฎเจ• เจ…เจคเฉ‡ เจ—เจฐเฉ€เจฌเฉ€

เจนเฉเจฃ, เจกเฉ‡เจŸเจพ เจธเฉฐเจ—เจ เจจ เจฆเฉ€ เจคเจฐเจ•เจชเฉ‚เจฐเจจ เจ…เจคเฉ‡ เจญเฉŒเจคเจฟเจ• เจฌเจฃเจคเจฐ เจฆเจพ เจตเจฟเจšเจพเจฐ เจฐเฉฑเจ–เจฆเฉ‡ เจนเฉ‹เจ, เจ…เจธเฉ€เจ‚ LMDB เจฆเฉ€ เจคเฉ€เจœเฉ€ เจตเฉเจนเฉ‡เจฒ 'เจคเฉ‡ เจตเจฟเจšเจพเจฐ เจ•เจฐเจจ เจฒเจˆ เจ…เฉฑเจ—เฉ‡ เจตเจง เจธเจ•เจฆเฉ‡ เจนเจพเจ‚เฅค เจ‡เจน เจ‡เจธเจฆเฉ€ เจฎเจฆเจฆ เจจเจพเจฒ เจนเฉˆ เจ•เจฟ เจธเจŸเฉ‹เจฐเฉ‡เจœเจผ เจฆเฉ€เจ†เจ‚ เจธเจพเจฐเฉ€เจ†เจ‚ เจธเฉ‹เจงเจพเจ‚ เจฒเฉˆเจฃ-เจฆเฉ‡เจฃ เจ…เจคเฉ‡ เจ‡เจ• เจฆเฉ‚เจœเฉ‡ เจคเฉ‹เจ‚ เจ…เจฒเฉฑเจ—-เจฅเจฒเฉฑเจ— เจนเฉเฉฐเจฆเฉ€เจ†เจ‚ เจนเจจ, เจœเจฟเจธ เจจเจพเจฒ เจกเจพเจŸเจพเจฌเฉ‡เจธ เจจเฉ‚เฉฐ เจธเจฎเฉเฉฑเจšเฉ‡ เจคเฉŒเจฐ 'เจคเฉ‡ เจฎเจฒเจŸเฉ€เจตเจฐเจœเจผเจจ เจธเฉฐเจชเจคเฉ€ เจตเฉ€ เจฎเจฟเจฒเจฆเฉ€ เจนเฉˆเฅค

3.3 เจตเฉเจนเฉ‡เจฒ #3. เจ•เจพเจชเฉ€-เจ†เจจ-เจฒเจฟเจ–เจฃ

เจ•เฉเจ เจฌเฉ€-เจŸเฉเจฐเฉ€ เจ“เจชเจฐเฉ‡เจธเจผเจจเจพเจ‚ เจตเจฟเฉฑเจš เจ‡เจธเจฆเฉ‡ เจจเฉ‹เจกเจพเจ‚ เจตเจฟเฉฑเจš เจคเจฌเจฆเฉ€เจฒเฉ€เจ†เจ‚ เจฆเฉ€ เจ‡เฉฑเจ• เจชเฉ‚เจฐเฉ€ เจฒเฉœเฉ€ เจธเจผเจพเจฎเจฒ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆเฅค เจ‡เฉฑเจ• เจ‰เจฆเจพเจนเจฐเจฃ เจ‡เฉฑเจ• เจจเฉ‹เจก เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจจเจตเฉ€เจ‚ เจ•เฉเฉฐเจœเฉ€ เจœเฉ‹เฉœ เจฐเจนเฉ€ เจนเฉˆ เจœเฉ‹ เจชเจนเจฟเจฒเจพเจ‚ เจนเฉ€ เจ†เจชเจฃเฉ€ เจ…เจงเจฟเจ•เจคเจฎ เจธเจฎเจฐเฉฑเจฅเจพ เจคเฉ‡ เจชเจนเฉเฉฐเจš เจšเฉเฉฑเจ•เฉ€ เจนเฉˆเฅค เจ‡เจธ เจ•เฉ‡เจธ เจตเจฟเฉฑเจš, เจ‡เจน เจœเจผเจฐเฉ‚เจฐเฉ€ เจนเฉˆ, เจชเจนเจฟเจฒเจพเจ‚, เจจเฉ‹เจก เจจเฉ‚เฉฐ เจฆเฉ‹ เจตเจฟเฉฑเจš เจตเฉฐเจกเจฃเจพ, เจ…เจคเฉ‡ เจฆเฉ‚เจœเจพ, เจ‡เจธเจฆเฉ‡ เจฎเจพเจคเจพ-เจชเจฟเจคเจพ เจตเจฟเฉฑเจš เจจเจตเฉ‡เจ‚ เจธเจชเจจ เจ†เจซ เจšเจพเจˆเจฒเจก เจจเฉ‹เจก เจฒเจˆ เจ‡เฉฑเจ• เจฒเจฟเฉฐเจ• เจœเฉ‹เฉœเจจเจพ. เจ‡เจน เจตเจฟเจงเฉ€ เจธเฉฐเจญเจพเจตเฉ€ เจคเฉŒเจฐ 'เจคเฉ‡ เจฌเจนเฉเจค เจ–เจคเจฐเจจเจพเจ• เจนเฉˆเฅค เจœเฉ‡เจ•เจฐ เจ•เจฟเจธเฉ‡ เจ•เจพเจฐเจจ เจ•เจฐเจ•เฉ‡ (เจ•เจฐเฉˆเจธเจผ, เจชเจพเจตเจฐ เจ†เจŠเจŸเฉ‡เจœ, เจ†เจฆเจฟ) เจฒเฉœเฉ€ เจคเฉ‹เจ‚ เจคเจฌเจฆเฉ€เจฒเฉ€เจ†เจ‚ เจฆเจพ เจธเจฟเจฐเจซเจผ เจ‡เฉฑเจ• เจนเจฟเฉฑเจธเจพ เจตเจพเจชเจฐเจฆเจพ เจนเฉˆ, เจคเจพเจ‚ เจฐเฉเฉฑเจ– เจ‡เฉฑเจ• เจ…เจธเฉฐเจ—เจค เจธเจฅเจฟเจคเฉ€ เจตเจฟเฉฑเจš เจฐเจนเฉ‡เจ—เจพเฅค

เจ‡เฉฑเจ• เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจจเฉ‚เฉฐ เจจเฉเจ•เจธ-เจธเจนเจฟเจฃเจธเจผเฉ€เจฒ เจฌเจฃเจพเจ‰เจฃ เจฆเจพ เจ‡เฉฑเจ• เจฐเจตเจพเจ‡เจคเฉ€ เจนเฉฑเจฒ เจนเฉˆ เจ‡เฉฑเจ• เจตเจพเจงเฉ‚ เจกเจฟเจธเจ•-เจ…เจงเจพเจฐเจฟเจค เจกเฉ‡เจŸเจพ เจขเจพเจ‚เจšเจพ เจœเฉ‹เฉœเจจเจพ, เจŸเฉเจฐเจพเจ‚เจœเฉˆเจ•เจธเจผเจจ เจฒเฉŒเจ—, เจœเจฟเจธเจจเฉ‚เฉฐ เจฐเจพเจˆเจŸ-เจ…เจ—เฉ‡เจก เจฒเฉŒเจ— (WAL) เจตเฉ€ เจ•เจฟเจนเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆ, เจฌเฉ€-เจŸเฉเจฐเฉ€ เจฆเฉ‡ เจ…เฉฑเจ—เฉ‡เฅค เจ‡เจน เจ‡เฉฑเจ• เจซเจพเจˆเจฒ เจนเฉˆ, เจœเจฟเจธ เจฆเฉ‡ เจ…เฉฐเจค เจตเจฟเฉฑเจš, เจฌเฉ€-เจŸเฉเจฐเฉ€ เจจเฉ‚เฉฐ เจธเฉ‹เจงเจฃ เจคเฉ‹เจ‚ เจชเจนเจฟเจฒเจพเจ‚ เจธเจ–เจคเฉ€ เจจเจพเจฒ, เจ‡เจฐเจพเจฆเจพ เจธเฉฐเจšเจพเจฒเจจ เจฒเจฟเจ–เจฟเจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆเฅค เจ‡เจธ เจคเจฐเฉเจนเจพเจ‚, เจœเฉ‡เจ•เจฐ เจธเจตเฉˆ-เจจเจฟเจฆเจพเจจ เจฆเฉŒเจฐเจพเจจ เจกเฉ‡เจŸเจพ เจญเฉเจฐเจฟเจธเจผเจŸเจพเจšเจพเจฐ เจฆเจพ เจชเจคเจพ เจฒเจ—เจพเจ‡เจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆ, เจคเจพเจ‚ เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจ†เจชเจฃเฉ‡ เจ†เจช เจจเฉ‚เฉฐ เจธเจพเจซเจผ เจ•เจฐเจจ เจฒเจˆ เจฒเฉŒเจ— เจฆเฉ€ เจธเจฒเจพเจน เจฒเฉˆเจ‚เจฆเจพ เจนเฉˆเฅค

LMDB เจจเฉ‡ เจ†เจชเจฃเฉ€ เจ—เจฒเจคเฉ€ เจธเจนเจฟเจฃเจธเจผเฉ€เจฒเจคเจพ เจตเจฟเจงเฉ€ เจฆเฉ‡ เจคเฉŒเจฐ 'เจคเฉ‡ เจ‡เฉฑเจ• เจตเฉฑเจ–เจฐเจพ เจคเจฐเฉ€เจ•เจพ เจšเฉเจฃเจฟเจ† เจนเฉˆ, เจœเจฟเจธ เจจเฉ‚เฉฐ เจ•เจพเจชเฉ€-เจ†เจจ-เจฐเจพเจˆเจŸ เจ•เจฟเจนเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆเฅค เจ‡เจธเจฆเจพ เจธเจพเจฐ เจ‡เจน เจนเฉˆ เจ•เจฟ เจฎเฉŒเจœเฉ‚เจฆเจพ เจชเฉฐเจจเฉ‡ 'เจคเฉ‡ เจกเฉ‡เจŸเจพ เจจเฉ‚เฉฐ เจ…เฉฑเจชเจกเฉ‡เจŸ เจ•เจฐเจจ เจฆเฉ€ เจฌเจœเจพเจ, เจ‡เจน เจชเจนเจฟเจฒเจพเจ‚ เจ‡เจธเจจเฉ‚เฉฐ เจชเฉ‚เจฐเฉ€ เจคเจฐเฉเจนเจพเจ‚ เจ•เจพเจชเฉ€ เจ•เจฐเจฆเจพ เจนเฉˆ เจ…เจคเฉ‡ เจ•เจพเจชเฉ€ เจตเจฟเฉฑเจš เจชเจนเจฟเจฒเจพเจ‚ เจนเฉ€ เจธเจพเจฐเฉ€เจ†เจ‚ เจธเฉ‹เจงเจพเจ‚ เจ•เจฐเจฆเจพ เจนเฉˆเฅค

เจ†เจˆเจ“เจเจธ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจเจพเจ‚ เจตเจฟเฉฑเจš เจฎเฉเฉฑเจ–-เจฎเฉเฉฑเจฒ เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ LMDB เจฆเฉ€ เจšเจฎเจ• เจ…เจคเฉ‡ เจ—เจฐเฉ€เจฌเฉ€

เจ‡เจธ เจคเฉ‹เจ‚ เจ‡เจฒเจพเจตเจพ, เจ…เฉฑเจชเจกเฉ‡เจŸ เจ•เฉ€เจคเฉ‡ เจกเฉ‡เจŸเจพ เจฆเฉ‡ เจ‰เจชเจฒเจฌเจง เจนเฉ‹เจฃ เจฒเจˆ, เจจเฉ‹เจก เจฆเฉ‡ เจฒเจฟเฉฐเจ• เจจเฉ‚เฉฐ เจฌเจฆเจฒเจฃเจพ เจœเจผเจฐเฉ‚เจฐเฉ€ เจนเฉˆ เจœเฉ‹ เจ‡เจธเจฆเฉ‡ เจธเจฌเฉฐเจง เจตเจฟเฉฑเจš เจชเฉ‡เจฐเฉˆเจ‚เจŸ เจจเฉ‹เจก เจตเจฟเฉฑเจš เจ…เฉฑเจช-เจŸเฉ‚-เจกเฉ‡เจŸ เจนเฉ‹ เจ—เจฟเจ† เจนเฉˆเฅค เจ•เจฟเจ‰เจ‚เจ•เจฟ เจ‡เจธเจฆเฉ‡ เจฒเจˆ เจตเฉ€ เจ‡เจธ เจจเฉ‚เฉฐ เจธเฉ‹เจงเจฃ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆ, เจ‡เจธ เจฒเจˆ เจ‡เจน เจตเฉ€ เจชเจนเจฟเจฒเจพเจ‚ เจคเฉ‹เจ‚ เจ•เจพเจชเฉ€ เจนเฉˆเฅค เจ‡เจน เจชเฉเจฐเจ•เจฟเจฐเจฟเจ† เจฐเฉ‚เจŸ เจคเฉฑเจ• เจฒเจ—เจพเจคเจพเจฐ เจœเจพเจฐเฉ€ เจฐเจนเจฟเฉฐเจฆเฉ€ เจนเฉˆเฅค เจฎเฉˆเจŸเจพ เจชเฉ‡เจœ 'เจคเฉ‡ เจกเจพเจŸเจพ เจฌเจฆเจฒเจฃ เจฒเจˆ เจ†เจ–เจฐเฉ€ เจนเฉˆ

เจ†เจˆเจ“เจเจธ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจเจพเจ‚ เจตเจฟเฉฑเจš เจฎเฉเฉฑเจ–-เจฎเฉเฉฑเจฒ เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ LMDB เจฆเฉ€ เจšเจฎเจ• เจ…เจคเฉ‡ เจ—เจฐเฉ€เจฌเฉ€

เจœเฉ‡เจ•เจฐ เจ…เฉฑเจชเจกเฉ‡เจŸ เจชเฉเจฐเจ•เจฟเจฐเจฟเจ† เจฆเฉŒเจฐเจพเจจ เจชเฉเจฐเจ•เจฟเจฐเจฟเจ† เจ…เจšเจพเจจเจ• เจ•เจฐเฉˆเจธเจผ เจนเฉ‹ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆ, เจคเจพเจ‚ เจœเจพเจ‚ เจคเจพเจ‚ เจ‡เฉฑเจ• เจจเจตเจพเจ‚ เจฎเฉˆเจŸเจพ เจชเฉ‡เจœ เจจเจนเฉ€เจ‚ เจฌเจฃเจพเจ‡เจ† เจœเจพเจตเฉ‡เจ—เจพ, เจœเจพเจ‚ เจ‡เจน เจ…เฉฐเจค เจคเฉฑเจ• เจกเจฟเจธเจ• 'เจคเฉ‡ เจจเจนเฉ€เจ‚ เจฒเจฟเจ–เจฟเจ† เจœเจพเจตเฉ‡เจ—เจพ, เจ…เจคเฉ‡ เจ‡เจธเจฆเจพ เจšเฉˆเจ•เจธเจฎ เจ—เจฒเจค เจนเฉ‹เจตเฉ‡เจ—เจพเฅค เจ‡เจนเจจเจพเจ‚ เจฆเฉ‹เจตเจพเจ‚ เจตเจฟเฉฑเจšเฉ‹เจ‚ เจ•เจฟเจธเฉ‡ เจตเฉ€ เจธเจฅเจฟเจคเฉ€ เจตเจฟเฉฑเจš, เจจเจตเฉ‡เจ‚ เจชเฉฐเจจเฉ‡ เจชเจนเฉเฉฐเจšเจฏเฉ‹เจ— เจจเจนเฉ€เจ‚ เจนเฉ‹เจฃเจ—เฉ‡ เจ…เจคเฉ‡ เจชเฉเจฐเจพเจฃเฉ‡ เจชเฉฐเจจเฉ‡ เจชเฉเจฐเจญเจพเจตเจฟเจค เจจเจนเฉ€เจ‚ เจนเฉ‹เจฃเจ—เฉ‡เฅค เจ‡เจน เจกเจพเจŸเจพ เจ‡เจ•เจธเจพเจฐเจคเจพ เจฌเจฃเจพเจˆ เจฐเฉฑเจ–เจฃ เจฒเจˆ เจ…เฉฑเจ—เฉ‡ เจฒเฉŒเจ— เจฒเจฟเจ–เจฃ เจฒเจˆ LMDB เจฆเฉ€ เจฒเฉ‹เฉœ เจจเฉ‚เฉฐ เจ–เจคเจฎ เจ•เจฐเจฆเจพ เจนเฉˆเฅค เจ…เจธเจฒ เจตเจฟเฉฑเจš, เจ‰เฉฑเจชเจฐ เจตเจฐเจฃเจฟเจค เจกเจฟเจธเจ• เจ‰เฉฑเจคเฉ‡ เจกเฉ‡เจŸเจพ เจธเจŸเฉ‹เจฐเฉ‡เจœ เจฆเฉ€ เจฌเจฃเจคเจฐ, เจ‡เจธเจฆเฉ‡ เจ•เจพเจฐเจœ เจจเฉ‚เฉฐ เจ‡เฉฑเจ•เฉ‹ เจธเจฎเฉ‡เจ‚ เจคเฉ‡ เจฒเฉˆเจ‚เจฆเฉ€ เจนเฉˆเฅค เจ‡เฉฑเจ• เจธเจชเฉฑเจธเจผเจŸ เจŸเฉเจฐเจพเจ‚เจœเฉˆเจ•เจธเจผเจจ เจฒเฉŒเจ— เจฆเฉ€ เจ…เจฃเจนเฉ‹เจ‚เจฆ LMDB เจฆเฉ€เจ†เจ‚ เจตเจฟเจธเจผเฉ‡เจธเจผเจคเจพเจตเจพเจ‚ เจตเจฟเฉฑเจšเฉ‹เจ‚ เจ‡เฉฑเจ• เจนเฉˆ, เจœเฉ‹ เจ‰เฉฑเจš เจกเจพเจŸเจพ เจชเฉœเฉเจนเจจ เจฆเฉ€ เจ—เจคเฉ€ เจชเฉเจฐเจฆเจพเจจ เจ•เจฐเจฆเฉ€ เจนเฉˆเฅค

เจ†เจˆเจ“เจเจธ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจเจพเจ‚ เจตเจฟเฉฑเจš เจฎเฉเฉฑเจ–-เจฎเฉเฉฑเจฒ เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ LMDB เจฆเฉ€ เจšเจฎเจ• เจ…เจคเฉ‡ เจ—เจฐเฉ€เจฌเฉ€

เจจเจคเฉ€เจœเจพ-เจจเจฟเจฐเจฎเจพเจฃ, เจœเจฟเจธเจจเฉ‚เฉฐ เจœเฉ‹เฉœ-เจธเจฟเจฐเจซเจผ เจฌเฉ€-เจŸเฉเจฐเฉ€ เจ•เจฟเจนเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆ, เจ•เฉเจฆเจฐเจคเฉ€ เจคเฉŒเจฐ 'เจคเฉ‡ เจŸเฉเจฐเจพเจ‚เจœเฉˆเจ•เจธเจผเจจ เจ†เจˆเจธเฉ‹เจฒเฉ‡เจธเจผเจจ เจ…เจคเฉ‡ เจฎเจฒเจŸเฉ€เจตเจฐเจœเจผเจจเจฟเฉฐเจ— เจชเฉเจฐเจฆเจพเจจ เจ•เจฐเจฆเจพ เจนเฉˆเฅค LMDB เจตเจฟเฉฑเจš, เจนเจฐเฉ‡เจ• เจ“เจชเจจ เจŸเฉเจฐเจพเจ‚เจœเฉˆเจ•เจธเจผเจจ เจฆเฉ‡ เจจเจพเจฒ เจ‡เฉฑเจ• เจ…เจช-เจŸเฉ‚-เจกเฉ‡เจŸ เจŸเฉเจฐเฉ€ เจฐเฉ‚เจŸ เจœเฉเฉœเจฟเจ† เจนเฉ‹เจ‡เจ† เจนเฉˆเฅค เจœเจฟเฉฐเจจเจพ เจšเจฟเจฐ เจฒเฉˆเจฃ-เจฆเฉ‡เจฃ เจชเฉ‚เจฐเจพ เจจเจนเฉ€เจ‚ เจนเฉเฉฐเจฆเจพ, เจ‡เจธ เจจเจพเจฒ เจœเฉเฉœเฉ‡ เจŸเฉเจฐเฉ€ เจฆเฉ‡ เจชเฉฐเจจเจฟเจ†เจ‚ เจจเฉ‚เฉฐ เจ•เจฆเฉ‡ เจตเฉ€ เจฌเจฆเจฒเจฟเจ† เจจเจนเฉ€เจ‚ เจœเจพเจตเฉ‡เจ—เจพ เจœเจพเจ‚ เจกเฉ‡เจŸเจพ เจฆเฉ‡ เจจเจตเฉ‡เจ‚ เจธเฉฐเจธเจ•เจฐเจฃเจพเจ‚ เจฒเจˆ เจฆเฉเจฌเจพเจฐเจพ เจจเจนเฉ€เจ‚ เจตเจฐเจคเจฟเจ† เจœเจพเจตเฉ‡เจ—เจพเฅค เจ‡เจธ เจคเจฐเฉเจนเจพเจ‚, เจคเฉเจธเฉ€เจ‚ เจ‰เจฆเฉ‹เจ‚ เจคเฉฑเจ• เจ•เฉฐเจฎ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹ เจœเจฆเฉ‹เจ‚ เจคเฉฑเจ• เจคเฉเจธเฉ€เจ‚ เจ‰เจธ เจกเฉ‡เจŸเจพ เจธเฉˆเฉฑเจŸ เจฆเฉ‡ เจจเจพเจฒ เจธเจนเฉ€ เจคเจฐเฉเจนเจพเจ‚ เจ•เฉฐเจฎ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹ เจœเฉ‹ เจฒเฉˆเจฃ-เจฆเฉ‡เจฃ เจฆเฉ‡ เจ–เฉเฉฑเจฒเฉเจนเจฃ เจฆเจพ เจธเจฎเจพเจ‚, เจญเจพเจตเฉ‡เจ‚ เจ‡เจธ เจธเจฎเฉ‡เจ‚ เจธเจŸเฉ‹เจฐเฉ‡เจœ เจธเจฐเจ—เจฐเจฎเฉ€ เจจเจพเจฒ เจ…เฉฑเจชเจกเฉ‡เจŸ เจนเฉเฉฐเจฆเฉ€ เจฐเจนเจฟเฉฐเจฆเฉ€ เจนเฉˆเฅค เจ‡เจน เจฎเจฒเจŸเฉ€เจตเจฐเจœเจผเจจเจฟเฉฐเจ— เจฆเจพ เจธเจพเจฐ เจนเฉˆ, เจœเฉ‹ LMDB เจจเฉ‚เฉฐ เจธเจพเจกเฉ‡ เจชเจฟเจ†เจฐเจฟเจ†เจ‚ เจฒเจˆ เจ‡เฉฑเจ• เจ†เจฆเจฐเจธเจผ เจกเฉ‡เจŸเจพ เจธเจฐเฉ‹เจค เจฌเจฃเจพเจ‰เจ‚เจฆเจพ เจนเฉˆ UICollectionView. เจ‡เฉฑเจ• เจฒเฉˆเจฃ-เจฆเฉ‡เจฃ เจจเฉ‚เฉฐ เจ–เฉ‹เจฒเฉเจนเจฃ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ, เจคเฉเจนเจพเจจเฉ‚เฉฐ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจฆเฉ‡ เจฎเฉˆเจฎเฉ‹เจฐเฉ€ เจซเฉเฉฑเจŸเจชเฉเจฐเจฟเฉฐเจŸ เจจเฉ‚เฉฐ เจตเจงเจพเจ‰เจฃ เจฆเฉ€ เจœเจผเจฐเฉ‚เจฐเจค เจจเจนเฉ€เจ‚ เจนเฉˆ, เจ•เฉเจ เจตเฉ€ เจจเจพ เจฐเจนเจฟ เจœเจพเจฃ เจคเฉ‹เจ‚ เจกเจฐเจฆเฉ‡ เจนเฉ‹เจ, เจฎเฉŒเจœเฉ‚เจฆเจพ เจกเฉ‡เจŸเจพ เจจเฉ‚เฉฐ เจ•เฉเจ เจ‡เจจ-เจฎเฉˆเจฎเฉ‹เจฐเฉ€ เจขเจพเจ‚เจšเฉ‡ เจตเจฟเฉฑเจš เจคเฉ‡เจœเจผเฉ€ เจจเจพเจฒ เจชเฉฐเจช เจ•เจฐเจจเจพ. เจ‡เจน เจตเจฟเจธเจผเฉ‡เจธเจผเจคเจพ LMDB เจจเฉ‚เฉฐ เจ‰เจธเฉ‡ SQLite เจคเฉ‹เจ‚ เจตเฉฑเจ– เจ•เจฐเจฆเฉ€ เจนเฉˆ, เจœเฉ‹ เจ•เจฟ เจ…เจœเจฟเจนเฉ‡ เจ•เฉเฉฑเจฒ เจ…เจฒเฉฑเจ—-เจฅเจฒเฉฑเจ— เจนเฉ‹เจฃ เจฆเจพ เจฎเจพเจฃ เจจเจนเฉ€เจ‚ เจ•เจฐ เจธเจ•เจฆเจพเฅค เจฌเจพเจ…เจฆ เจตเจฟเฉฑเจš เจฆเฉ‹ เจŸเฉเจฐเจพเจ‚เจœเฉˆเจ•เจธเจผเจจเจพเจ‚ เจจเฉ‚เฉฐ เจ–เฉ‹เจฒเฉเจนเจฃ เจ…เจคเฉ‡ เจ‰เจนเจจเจพเจ‚ เจตเจฟเฉฑเจšเฉ‹เจ‚ เจ‡เฉฑเจ• เจฆเฉ‡ เจ…เฉฐเจฆเจฐ เจ‡เฉฑเจ• เจจเจฟเจธเจผเจšเจฟเจค เจฐเจฟเจ•เจพเจฐเจก เจจเฉ‚เฉฐ เจฎเจฟเจŸเจพเจ‰เจฃ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ, เจ‰เจนเฉ€ เจฐเจฟเจ•เจพเจฐเจก เจนเฉเจฃ เจฌเจพเจ•เฉ€ เจฌเจšเฉ‡ เจฆเฉ‚เจœเฉ‡ เจตเจฟเฉฑเจš เจชเฉเจฐเจพเจชเจค เจจเจนเฉ€เจ‚ เจ•เฉ€เจคเจพ เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆเฅค

เจธเจฟเฉฑเจ•เฉ‡ เจฆเจพ เจ‰เจฒเจŸ เจชเจพเจธเฉ‡ เจตเจฐเจšเฉเจ…เจฒ เจฎเฉˆเจฎเฉ‹เจฐเฉ€ เจฆเฉ€ เจธเฉฐเจญเจพเจตเฉ€ เจคเฉŒเจฐ 'เจคเฉ‡ เจœเจผเจฟเจ†เจฆเจพ เจ–เจชเจค เจนเฉˆเฅค เจธเจฒเจพเจˆเจก เจฆเจฐเจธเจพเจ‰เจ‚เจฆเฉ€ เจนเฉˆ เจ•เจฟ เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจฆเจพ เจขเจพเจ‚เจšเจพ เจ•เจฟเจนเฉ‹ เจœเจฟเจนเจพ เจฆเจฟเจ–เจพเจˆ เจฆเฉ‡เจตเฉ‡เจ—เจพ เจœเฉ‡เจ•เจฐ เจ‡เจน เจกเจพเจŸเจพเจฌเฉ‡เจธ เจฆเฉ‡ เจตเฉฑเจ–-เจตเฉฑเจ– เจธเฉฐเจธเจ•เจฐเจฃเจพเจ‚ เจจเฉ‚เฉฐ เจฆเฉ‡เจ–เจฆเฉ‡ เจนเฉ‹เจ 3 เจ“เจชเจจ เจฐเฉ€เจก เจŸเฉเจฐเจพเจ‚เจœเฉˆเจ•เจธเจผเจจเจพเจ‚ เจฆเฉ‡ เจจเจพเจฒ เจ‡เฉฑเจ•เฉ‹ เจธเจฎเฉ‡เจ‚ เจตเจฟเฉฑเจš เจธเฉ‹เจงเจฟเจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆเฅค เจ•เจฟเจ‰เจ‚เจ•เจฟ LMDB เจ…เจธเจฒ เจŸเฉเจฐเจพเจ‚เจœเฉˆเจ•เจธเจผเจจเจพเจ‚ เจจเจพเจฒ เจœเฉเฉœเฉ‡ เจœเฉœเฉเจนเจพเจ‚ เจคเฉ‹เจ‚ เจชเจนเฉเฉฐเจšเจฏเฉ‹เจ— เจจเฉ‹เจกเจพเจ‚ เจฆเฉ€ เจฎเฉเฉœ เจตเจฐเจคเฉ‹เจ‚ เจจเจนเฉ€เจ‚ เจ•เจฐ เจธเจ•เจฆเจพ เจนเฉˆ, เจ‡เจธ เจฒเจˆ เจธเจŸเฉ‹เจฐเฉ‡เจœ เจ•เฉ‹เจฒ เจฎเฉˆเจฎเฉ‹เจฐเฉ€ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจนเฉ‹เจฐ เจšเฉŒเจฅเจพ เจฐเฉ‚เจŸ เจจเจฟเจฐเจงเจพเจฐเจค เจ•เจฐเจจ เจ…เจคเฉ‡ เจ‡เจธเจฆเฉ‡ เจนเฉ‡เจ เจพเจ‚ เจธเฉ‹เจงเฉ‡ เจนเฉ‹เจ เจชเฉฐเจจเจฟเจ†เจ‚ เจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจตเจพเจฐ เจซเจฟเจฐ เจ•เจฒเฉ‹เจจ เจ•เจฐเจจ เจคเฉ‹เจ‚ เจ‡เจฒเจพเจตเจพ เจ•เฉ‹เจˆ เจตเจฟเจ•เจฒเจช เจจเจนเฉ€เจ‚ เจนเฉˆเฅค

เจ†เจˆเจ“เจเจธ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจเจพเจ‚ เจตเจฟเฉฑเจš เจฎเฉเฉฑเจ–-เจฎเฉเฉฑเจฒ เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ LMDB เจฆเฉ€ เจšเจฎเจ• เจ…เจคเฉ‡ เจ—เจฐเฉ€เจฌเฉ€

เจ‡เฉฑเจฅเฉ‡ เจฎเฉˆเจฎเฉ‹เจฐเฉ€-เจฎเฉˆเจชเจก เจซเจพเจˆเจฒเจพเจ‚ เจฆเฉ‡ เจญเจพเจ— เจจเฉ‚เฉฐ เจฏเจพเจฆ เจ•เจฐเจจเจพ เจฌเฉ‡เจฒเฉ‹เฉœเจพ เจจเจนเฉ€เจ‚ เจนเฉ‹เจตเฉ‡เจ—เจพเฅค เจ…เจœเจฟเจนเจพ เจฒเจ—เจฆเจพ เจนเฉˆ เจ•เจฟ เจตเจฐเจšเฉเจ…เจฒ เจฎเฉˆเจฎเฉ‹เจฐเฉ€ เจฆเฉ€ เจตเจพเจงเฉ‚ เจ–เจชเจค เจธเจพเจจเฉ‚เฉฐ เจฌเจนเฉเจค เจœเจผเจฟเจ†เจฆเจพ เจชเจฐเฉ‡เจธเจผเจพเจจ เจจเจนเฉ€เจ‚ เจ•เจฐเจจเฉ€ เจšเจพเจนเฉ€เจฆเฉ€, เจ•เจฟเจ‰เจ‚เจ•เจฟ เจ‡เจน เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจฆเฉ€ เจฎเฉˆเจฎเฉ‹เจฐเฉ€ เจซเฉเฉฑเจŸเจชเฉเจฐเจฟเฉฐเจŸ เจตเจฟเฉฑเจš เจฏเฉ‹เจ—เจฆเจพเจจ เจจเจนเฉ€เจ‚ เจชเจพเจ‰เจ‚เจฆเฉ€ เจนเฉˆเฅค เจนเจพเจฒเจพเจ‚เจ•เจฟ, เจ‰เจธเฉ‡ เจธเจฎเฉ‡เจ‚, เจ‡เจน เจจเฉ‹เจŸ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจธเฉ€ เจ•เจฟ iOS เจ‡เจธ เจจเฉ‚เฉฐ เจจเจฟเจฐเจงเจพเจฐเจค เจ•เจฐเจจ เจตเจฟเฉฑเจš เจฌเจนเฉเจค เจ•เจ เฉ‹เจฐ เจนเฉˆ, เจ…เจคเฉ‡ เจ…เจธเฉ€เจ‚ เจฎเจพเจธเจŸเจฐ เจฆเฉ‡ เจฎเฉ‹เจขเฉ‡ เจคเฉ‹เจ‚ เจธเจฐเจตเจฐ เจœเจพเจ‚ เจกเฉˆเจธเจ•เจŸเฉŒเจช 'เจคเฉ‡ 1 เจŸเฉ‡เจฐเจพเจฌเจพเจˆเจŸ LMDB เจ–เฉ‡เจคเจฐ เจชเฉเจฐเจฆเจพเจจ เจจเจนเฉ€เจ‚ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเจพเจ‚ เจ…เจคเฉ‡ เจ‡เจธ เจตเจฟเจธเจผเฉ‡เจธเจผเจคเจพ เจฌเจพเจฐเฉ‡ เจฌเจฟเจฒเจ•เฉเจฒ เจตเฉ€ เจจเจนเฉ€เจ‚ เจธเฉ‹เจš เจธเจ•เจฆเฉ‡ เจนเจพเจ‚เฅค เจœเจฆเฉ‹เจ‚ เจธเฉฐเจญเจต เจนเฉ‹เจตเฉ‡, เจคเฉเจนเจพเจจเฉ‚เฉฐ เจฒเฉˆเจฃ-เจฆเฉ‡เจฃ เจฆเฉ‡ เจœเฉ€เจตเจจ เจ•เจพเจฒ เจจเฉ‚เฉฐ เจœเจฟเฉฐเจจเจพ เจธเฉฐเจญเจต เจนเฉ‹ เจธเจ•เฉ‡ เจ›เฉ‹เจŸเจพ เจฐเฉฑเจ–เจฃ เจฆเฉ€ เจ•เฉ‹เจธเจผเจฟเจธเจผ เจ•เจฐเจจเฉ€ เจšเจพเจนเฉ€เจฆเฉ€ เจนเฉˆเฅค

4. เจ•เฉเฉฐเจœเฉ€-เจฎเฉเฉฑเจฒ API เจฆเฉ‡ เจธเจฟเจ–เจฐ 'เจคเฉ‡ เจ‡เฉฑเจ• เจกเจพเจŸเจพ เจธเจ•เฉ€เจฎเจพ เจกเจฟเจœเจผเจพเจˆเจจ เจ•เจฐเจจเจพ

เจ†เจ‰ LMDB เจฆเฉเจ†เจฐเจพ เจชเฉเจฐเจฆเจพเจจ เจ•เฉ€เจคเฉ‡ เจ—เจ เจฎเฉ‚เจฒ เจเจฌเจธเจŸเจฐเฉˆเจ•เจธเจผเจจเจพเจ‚ เจจเฉ‚เฉฐ เจฆเฉ‡เจ– เจ•เฉ‡ API เจจเฉ‚เฉฐ เจชเจพเจฐเจธ เจ•เจฐเจจเจพ เจธเจผเฉเจฐเฉ‚ เจ•เจฐเฉ€เจ: เจตเจพเจคเจพเจตเจฐเจฃ เจ…เจคเฉ‡ เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ, เจ•เฉเฉฐเจœเฉ€เจ†เจ‚ เจ…เจคเฉ‡ เจฎเฉเฉฑเจฒ, เจฒเฉˆเจฃ-เจฆเฉ‡เจฃ เจ…เจคเฉ‡ เจ•เจฐเจธเจฐเฅค

เจ•เฉ‹เจก เจธเฉ‚เจšเฉ€เจ†เจ‚ เจฌเจพเจฐเฉ‡ เจ‡เฉฑเจ• เจจเฉ‹เจŸ

LMDB เจœเจจเจคเจ• API เจตเจฟเฉฑเจš เจธเจพเจฐเฉ‡ เจซเฉฐเจ•เจธเจผเจจ เจ‡เฉฑเจ• เจ—เจฒเจคเฉ€ เจ•เฉ‹เจก เจฆเฉ‡ เจฐเฉ‚เจช เจตเจฟเฉฑเจš เจ‰เจนเจจเจพเจ‚ เจฆเฉ‡ เจ•เฉฐเจฎ เจฆเจพ เจจเจคเฉ€เจœเจพ เจตเจพเจชเจธ เจ•เจฐเจฆเฉ‡ เจนเจจ, เจชเจฐ เจธเจพเจฐเฉ€เจ†เจ‚ เจ…เจ—เจฒเฉ€เจ†เจ‚ เจธเฉ‚เจšเฉ€เจ†เจ‚ เจตเจฟเฉฑเจš เจธเฉฐเจ–เฉ‡เจชเจคเจพ เจฒเจˆ เจ‡เจธเจฆเฉ€ เจœเจพเจ‚เจš เจจเฉ‚เฉฐ เจ›เฉฑเจก เจฆเจฟเฉฑเจคเจพ เจ—เจฟเจ† เจนเฉˆเฅค เจ…เจญเจฟเจ†เจธ เจตเจฟเฉฑเจš, เจ…เจธเฉ€เจ‚ เจฐเจฟเจชเฉ‹เจœเจผเจŸเจฐเฉ€ เจจเจพเจฒ เจ‡เฉฐเจŸเจฐเฉˆเจ•เจŸ เจ•เจฐเจจ เจฒเจˆ เจ†เจชเจฃเฉ‡ เจ–เฉเจฆ เจฆเฉ‡ เจ•เฉ‹เจก เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เฉ€เจคเฉ€ เจนเฉˆเฅค เจ•เจพเจ‚เจŸเจพ C++ เจฐเฉˆเจชเจฐ lmdbxx, เจœเจฟเจธ เจตเจฟเฉฑเจš เจคเจฐเฉเฉฑเจŸเฉ€เจ†เจ‚ C++ เจ…เจชเจตเจพเจฆเจพเจ‚ เจฆเฉ‡ เจฐเฉ‚เจช เจตเจฟเฉฑเจš เจธเจพเจนเจฎเจฃเฉ‡ เจ†เจ‰เจ‚เจฆเฉ€เจ†เจ‚ เจนเจจเฅค

LMDB เจจเฉ‚เฉฐ เจ‡เฉฑเจ• iOS เจœเจพเจ‚ macOS เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจจเจพเจฒ เจœเฉ‹เฉœเจจ เจฆเฉ‡ เจธเจญ เจคเฉ‹เจ‚ เจคเฉ‡เจœเจผ เจคเจฐเฉ€เจ•เฉ‡ เจตเจœเฉ‹เจ‚, เจฎเฉˆเจ‚ เจ†เจชเจฃเจพ CocoaPod เจชเฉ‡เจธเจผ เจ•เจฐเจฆเจพ เจนเจพเจ‚ 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 เจ•เจฒเจพเจ‰เจก เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจตเจฟเฉฑเจš, เจ…เจธเฉ€เจ‚ เจธเจฟเจฐเจซ เจฆเฉ‹ เจชเฉˆเจฐเจพเจฎเฉ€เจŸเจฐเจพเจ‚ เจฒเจˆ เจกเจฟเจซเฉŒเจฒเจŸ เจฎเฉเฉฑเจฒ เจฌเจฆเจฒเฉ‡ เจนเจจเฅค

เจชเจนเจฟเจฒเจพ เจตเจฐเจšเฉเจ…เจฒ เจเจกเจฐเฉˆเฉฑเจธ เจธเจชเฉ‡เจธ เจฆเจพ เจ†เจ•เจพเจฐ เจนเฉˆ เจœเจฟเจธ เจจเจพเจฒ เจธเจŸเฉ‹เจฐเฉ‡เจœ เจซเจพเจˆเจฒ เจฎเฉˆเจช เจ•เฉ€เจคเฉ€ เจ—เจˆ เจนเฉˆเฅค เจฌเจฆเจ•เจฟเจธเจฎเจคเฉ€ เจจเจพเจฒ, เจ‰เจธเฉ‡ เจกเจฟเจตเจพเจˆเจธ 'เจคเฉ‡ เจตเฉ€, เจ–เจพเจธ เจฎเฉเฉฑเจฒ เจฐเจจ เจคเฉ‹เจ‚ เจฐเจจ เจคเฉฑเจ• เจฎเจนเฉฑเจคเจตเจชเฉ‚เจฐเจจ เจคเฉŒเจฐ 'เจคเฉ‡ เจฌเจฆเจฒ เจธเจ•เจฆเจพ เจนเฉˆเฅค เจ†เจˆเจ“เจเจธ เจฆเฉ€ เจ‡เจธ เจตเจฟเจธเจผเฉ‡เจธเจผเจคเจพ เจจเฉ‚เฉฐ เจงเจฟเจ†เจจ เจตเจฟเฉฑเจš เจฐเฉฑเจ–เจฃ เจฒเจˆ, เจ…เจธเฉ€เจ‚ เจ—เจคเฉ€เจธเจผเฉ€เจฒ เจคเฉŒเจฐ 'เจคเฉ‡ เจธเจŸเฉ‹เจฐเฉ‡เจœ เจฆเฉ€ เจตเฉฑเจง เจคเฉ‹เจ‚ เจตเฉฑเจง เจฎเจพเจคเจฐเจพ เจฆเฉ€ เจšเฉ‹เจฃ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚เฅค เจ‡เฉฑเจ• เจ–เจพเจธ เจฎเฉเฉฑเจฒ เจคเฉ‹เจ‚ เจธเจผเฉเจฐเฉ‚ เจ•เจฐเจ•เฉ‡, เจ‡เจน เจซเฉฐเจ•เจธเจผเจจ เจคเฉฑเจ• เจฒเจ—เจพเจคเจพเจฐ เจ…เฉฑเจงเจพ เจนเฉ‹ เจœเจพเจ‚เจฆเจพ เจนเฉˆ mdb_env_open เจคเฉ‹เจ‚ เจ‡เจฒเจพเจตเจพ เจ•เฉ‹เจˆ เจจเจคเฉ€เจœเจพ เจตเจพเจชเจธ เจจเจนเฉ€เจ‚ เจ•เจฐเฉ‡เจ—เจพ ENOMEM. เจธเจฟเจงเจพเจ‚เจค เจตเจฟเฉฑเจš, เจ‡เฉฑเจ• เจ‰เจฒเจŸ เจคเจฐเฉ€เจ•เจพ เจนเฉˆ - เจชเจนเจฟเจฒเจพเจ‚ เจ‡เฉฐเจœเจฃ เจจเฉ‚เฉฐ เจ˜เฉฑเจŸเฉ‹ เจ˜เฉฑเจŸ เจฎเฉˆเจฎเฉ‹เจฐเฉ€ เจจเจฟเจฐเจงเจพเจฐเจค เจ•เจฐเฉ‹, เจ…เจคเฉ‡ เจซเจฟเจฐ, เจœเจฆเฉ‹เจ‚ เจ—เจฒเจคเฉ€เจ†เจ‚ เจชเฉเจฐเจพเจชเจค เจนเฉเฉฐเจฆเฉ€เจ†เจ‚ เจนเจจ MDB_MAP_FULL, เจ‡เจธ เจจเฉ‚เฉฐ เจตเจงเจพเจ“เฅค เจนเจพเจฒเจพเจ‚เจ•เจฟ, เจ‡เจน เจฌเจนเฉเจค เจœเจผเจฟเจ†เจฆเจพ เจ•เฉฐเจกเฉ‡เจฆเจพเจฐ เจนเฉˆ. เจ•เจพเจฐเจจ เจ‡เจน เจนเฉˆ เจ•เจฟ เจซเฉฐเจ•เจธเจผเจจ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจนเฉ‹เจ เจฎเฉˆเจฎเฉ‹เจฐเฉ€ (เจฐเฉ€เจฎเฉˆเจช) เจจเฉ‚เฉฐ เจฎเฉเฉœ เจจเจฟเจฐเจงเจพเจฐเจค เจ•เจฐเจจ เจฆเฉ€ เจตเจฟเจงเฉ€ เจนเฉˆ mdb_env_set_map_size เจ‡เฉฐเจœเจฃ เจคเฉ‹เจ‚ เจชเจนเจฟเจฒเจพเจ‚ เจชเฉเจฐเจพเจชเจค เจ•เฉ€เจคเฉ€เจ†เจ‚ เจธเจพเจฐเฉ€เจ†เจ‚ เจ‡เจ•เจพเจˆเจ†เจ‚ (เจ•เจฐเจธเจฐ, เจฒเฉˆเจฃ-เจฆเฉ‡เจฃ, เจ•เฉเฉฐเจœเฉ€เจ†เจ‚ เจ…เจคเฉ‡ เจฎเฉเฉฑเจฒ) เจจเฉ‚เฉฐ เจ…เจฏเฉ‹เจ— เจฌเจฃเจพเจ‰เจ‚เจฆเจพ เจนเฉˆเฅค เจ•เฉ‹เจก เจตเจฟเฉฑเจš เจ˜เจŸเจจเจพเจตเจพเจ‚ เจฆเฉ‡ เจ…เจœเจฟเจนเฉ‡ เจฎเฉ‹เฉœ เจฒเจˆ เจฒเฉ‡เจ–เจพ เจฆเฉ‡เจฃเจพ เจ‡เจธเจฆเฉ€ เจฎเจนเฉฑเจคเจตเจชเฉ‚เจฐเจฃ เจชเฉ‡เจšเฉ€เจฆเจ—เฉ€ เจตเฉฑเจฒ เจฒเฉˆ เจœเจพเจตเฉ‡เจ—เจพเฅค เจœเฉ‡, เจซเจฟเจฐ เจตเฉ€, เจตเจฐเจšเฉเจ…เจฒ เจฎเฉˆเจฎเฉ‹เจฐเฉ€ เจคเฉเจนเจพเจกเฉ‡ เจฒเจˆ เจฌเจนเฉเจค เจชเจฟเจ†เจฐเฉ€ เจนเฉˆ, เจคเจพเจ‚ เจ‡เจน เจซเฉ‹เจฐเจ• เจจเฉ‚เฉฐ เจฆเฉ‡เจ–เจฃ เจฆเจพ เจ‡เฉฑเจ• เจ•เจพเจฐเจจ เจนเฉ‹ เจธเจ•เจฆเจพ เจนเฉˆ เจœเฉ‹ เจฌเจนเฉเจค เจ…เฉฑเจ—เฉ‡ เจšเจฒเจพ เจ—เจฟเจ† เจนเฉˆ. MDBX, เจœเจฟเฉฑเจฅเฉ‡ เจ˜เฉ‹เจธเจผเจฟเจค เจตเจฟเจธเจผเฉ‡เจธเจผเจคเจพเจตเจพเจ‚ เจตเจฟเฉฑเจš "เจ†เจŸเฉ‹เจฎเฉˆเจŸเจฟเจ• เจ†เจจ-เจฆ-เจซเจฒเจพเจˆ เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจ†เจ•เจพเจฐ เจตเจฟเจตเจธเจฅเจพ" เจนเฉˆเฅค

เจฆเฉ‚เจœเจพ เจชเฉˆเจฐเจพเจฎเฉ€เจŸเจฐ, เจœเจฟเจธเจฆเจพ เจฎเฉ‚เจฒ เจฎเฉเฉฑเจฒ เจธเจพเจกเฉ‡ เจ…เจจเฉเจ•เฉ‚เจฒ เจจเจนเฉ€เจ‚ เจธเฉ€, เจฅเจฐเจฟเฉฑเจก เจธเฉเจฐเฉฑเจ–เจฟเจ† เจจเฉ‚เฉฐ เจฏเจ•เฉ€เจจเฉ€ เจฌเจฃเจพเจ‰เจฃ เจฆเฉ‡ เจฎเจ•เฉˆเจจเจฟเจ•เจธ เจจเฉ‚เฉฐ เจจเจฟเจฏเฉฐเจคเฉเจฐเจฟเจค เจ•เจฐเจฆเจพ เจนเฉˆเฅค เจฌเจฆเจ•เจฟเจธเจฎเจคเฉ€ เจจเจพเจฒ, เจ˜เฉฑเจŸเฉ‹-เจ˜เฉฑเจŸ เจ†เจˆเจ“เจเจธ 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เจฎเฉเฉฑเจ– เจธเจผเจฌเจฆ: เจชเจฐเจฎเจพเจฃเฉ‚, เจ‡เจ•เจธเจพเจฐเจคเจพ, เจ…เจฒเฉฑเจ—-เจฅเจฒเฉฑเจ—เจคเจพ เจ…เจคเฉ‡ เจญเจฐเฉ‹เจธเฉ‡เจฏเฉ‹เจ—เจคเจพเฅค เจฎเฉˆเจ‚ เจฎเจฆเจฆ เจจเจนเฉ€เจ‚ เจ•เจฐ เจธเจ•เจฆเจพ เจชเจฐ เจจเฉ‹เจŸ เจ•เจฐเฉ‹ เจ•เจฟ เจฎเฉˆเจ•เฉ‹เจธ เจ…เจคเฉ‡ เจ†เจˆเจ“เจเจธ 'เจคเฉ‡ เจŸเจฟเจ•เจพเจŠเจคเจพ เจฆเฉ‡ เจฎเจพเจฎเจฒเฉ‡ เจตเจฟเฉฑเจš 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 เจชเจฐเจฟเจตเจฐเจคเจจ เจจเจพเจฒ เจœเฉเฉœเฉ‡ เจธเจฎเฉ‡เจ‚ เจฆเฉ€ เจฒเจพเจ—เจค เจฆเฉ‹เจตเฉ‡เจ‚ เจฎเจฟเจฒเจฆเฉ€เจ†เจ‚ เจนเจจเฅค เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ เจ…เจธเจฅเจพเจˆ เจŸเฉ‡เจฌเจฒ เจฒเจˆ, เจ‡เจน เจ‡เฉฑเจ• เจนเฉ‹เจฐ เจตเฉ€ เจฎเจนเจฟเฉฐเจ—เจพ เจ…เจจเฉฐเจฆ เจนเฉˆ, เจœเฉ‹ เจธเจฟเจฐเจซ เจ—เฉˆเจฐ-เจฎเจพเจฎเฉ‚เจฒเฉ€ เจฎเจพเจฎเจฒเจฟเจ†เจ‚ เจตเจฟเฉฑเจš เจธเจฎเจเจฆเจพ เจนเฉˆ.

เจฎเจฒเจŸเฉ€เจตเจฐเจธเจผเจจเจฟเฉฐเจ— LMDB เจ‡เฉฑเจ• เจฌเจนเฉเจค เจนเฉ€ เจธเจผเจพเจจเจฆเจพเจฐ เจคเจฐเฉ€เจ•เฉ‡ เจจเจพเจฒ เจ‡เฉฑเจ• เจธเจฅเจฟเจฐ เจกเฉ‡เจŸเจพ เจธเจฐเฉ‹เจค เจจเฉ‚เฉฐ เจฌเจฃเจพเจˆ เจฐเฉฑเจ–เจฃ เจฆเฉ€ เจธเจฎเฉฑเจธเจฟเจ† เจจเฉ‚เฉฐ เจนเฉฑเจฒ เจ•เจฐเจฆเจพ เจนเฉˆเฅค เจ‡เจน เจธเจฟเจฐเจซ เจ‡เฉฑเจ• เจŸเฉเจฐเจพเจ‚เจœเฉˆเจ•เจธเจผเจจ เจ…เจคเฉ‡ เจตเฉ‹เจ‡เจฒเจพ เจจเฉ‚เฉฐ เจ–เฉ‹เจฒเฉเจนเจฃ เจฒเจˆ เจ•เจพเจซเฉ€ เจนเฉˆ - เจœเจฆเฉ‹เจ‚ เจคเฉฑเจ• เจ…เจธเฉ€เจ‚ เจ‡เจธเจจเฉ‚เฉฐ เจชเฉ‚เจฐเจพ เจจเจนเฉ€เจ‚ เจ•เจฐเจฆเฉ‡, เจกเฉ‡เจŸเจพ เจธเฉˆเฉฑเจŸ เจจเฉ‚เฉฐ เจธเจฅเจฟเจฐ เจ•เจฐเจจ เจฆเฉ€ เจ—เจพเจฐเฉฐเจŸเฉ€ เจฆเจฟเฉฑเจคเฉ€ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆ. เจ‡เจธเจฆเฉ€ เจ…เฉฑเจชเจกเฉ‡เจŸ เจฆเจฐ เจฆเจพ เจคเจฐเจ• เจนเฉเจฃ เจชเฉ‚เจฐเฉ€ เจคเจฐเฉเจนเจพเจ‚ เจชเฉเจฐเจธเจคเฉเจคเฉ€ เจฒเฉ‡เจ…เจฐ เจฆเฉ‡ เจนเฉฑเจฅ เจตเจฟเฉฑเจš เจนเฉˆ, เจœเจฟเจธ เจตเจฟเฉฑเจš เจฎเจนเฉฑเจคเจตเจชเฉ‚เจฐเจจ เจธเจฐเฉ‹เจคเจพเจ‚ เจฆเจพ เจ•เฉ‹เจˆ เจ“เจตเจฐเจนเฉˆเฉฑเจก เจจเจนเฉ€เจ‚ เจนเฉˆเฅค

เจ•เจฐเจธเจฐ

เจ•เจฐเจธเจฐ เจ‡เฉฑเจ• เจฌเฉ€-เจŸเฉเจฐเฉ€ เจจเฉ‚เฉฐ เจชเจพเจฐ เจ•เจฐเจฆเฉ‡ เจนเฉ‹เจ เจ•เฉเฉฐเจœเฉ€-เจฎเฉเฉฑเจฒ เจฆเฉ‡ เจœเฉ‹เฉœเจฟเจ†เจ‚ เจ‰เฉฑเจคเฉ‡ เจ•เฉเจฐเจฎเจฌเฉฑเจง เจฆเฉเจนเจฐเจพเจ… เจฒเจˆ เจ‡เฉฑเจ• เจตเจฟเจงเฉ€ เจชเฉเจฐเจฆเจพเจจ เจ•เจฐเจฆเฉ‡ เจนเจจเฅค เจ‰เจนเจจเจพเจ‚ เจฆเฉ‡ เจฌเจฟเจจเจพเจ‚, เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจตเจฟเฉฑเจš เจŸเฉ‡เจฌเจฒเจพเจ‚ เจจเฉ‚เฉฐ เจชเฉเจฐเจญเจพเจตเจธเจผเจพเจฒเฉ€ เจขเฉฐเจ— เจจเจพเจฒ เจฎเจพเจกเจฒ เจฌเจฃเจพเจ‰เจฃเจพ เจ…เจธเฉฐเจญเจต เจนเฉ‹เจตเฉ‡เจ—เจพ, เจœเจฟเจธ เจจเฉ‚เฉฐ เจ…เจธเฉ€เจ‚ เจนเฉเจฃ เจฌเจฆเจฒเจฆเฉ‡ เจนเจพเจ‚.

4.2 เจŸเฉ‡เจฌเจฒ เจฎเจพเจกเจฒเจฟเฉฐเจ—

เจ•เฉเฉฐเจœเฉ€ เจ†เจฐเจกเจฐเจฟเฉฐเจ— เจตเจฟเจธเจผเฉ‡เจธเจผเจคเจพ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจ‰เฉฑเจš-เจชเฉฑเจงเจฐเฉ€ เจเจฌเจธเจŸเจฐเฉˆเจ•เจธเจผเจจ เจฌเจฃเจพเจ‰เจฃ เจฆเฉ€ เจ†เจ—เจฟเจ† เจฆเจฟเฉฐเจฆเฉ€ เจนเฉˆ เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ เจฌเฉเจจเจฟเจ†เจฆเฉ€ เจเจฌเจธเจŸเจฐเฉˆเจ•เจธเจผเจจเจพเจ‚ เจฆเฉ‡ เจธเจฟเจ–เจฐ 'เจคเฉ‡ เจ‡เฉฑเจ• เจธเจพเจฐเจฃเฉ€เฅค เจ†เจ‰ เจ•เจฒเจพเจ‰เจก เจ•เจฒเจพเจ‡เฉฐเจŸ เจฆเฉ€ เจฎเฉเฉฑเจ– เจธเจพเจฐเจฃเฉ€ เจฆเฉ€ เจ‰เจฆเจพเจนเจฐเจฃ 'เจคเฉ‡ เจ‡เจธ เจชเฉเจฐเจ•เจฟเจฐเจฟเจ† 'เจคเฉ‡ เจตเจฟเจšเจพเจฐ เจ•เจฐเฉ€เจ, เจœเจฟเจธ เจตเจฟเฉฑเจš เจ‰เจชเจญเฉ‹เจ—เจคเจพ เจฆเฉ€เจ†เจ‚ เจธเจพเจฐเฉ€เจ†เจ‚ เจซเจพเจˆเจฒเจพเจ‚ เจ…เจคเฉ‡ เจซเฉ‹เจฒเจกเจฐเจพเจ‚ เจฌเจพเจฐเฉ‡ เจœเจพเจฃเจ•เจพเจฐเฉ€ เจ•เฉˆเจธเจผ เจ•เฉ€เจคเฉ€ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆ.

เจธเจพเจฐเจฃเฉ€ เจธเจ•เฉ€เจฎเจพ

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

เจนเฉ‡เจ เจพเจ‚ เจฆเจฟเฉฑเจคเฉ€ เจคเจธเจตเฉ€เจฐ เจฆเจฟเจ–เจพเจ‰เจ‚เจฆเฉ€ เจนเฉˆ เจ•เจฟ, เจ•เจพเจฐเจœ เจฆเฉ‡ เจ†เจงเจพเจฐ 'เจคเฉ‡, เจฌเจพเจˆเจŸเจพเจ‚ เจฆเฉ€ เจ‡เฉฑเจ• เจเจฐเฉ‡ เจตเจœเฉ‹เจ‚ เจ•เฉเฉฐเจœเฉ€เจ†เจ‚ เจฆเฉ€ เจชเฉเจฐเจคเฉ€เจจเจฟเจงเจคเจพ เจ•เจฟเจตเฉ‡เจ‚ เจฆเจฟเจ–เจพเจˆ เจฆเฉ‡ เจธเจ•เจฆเฉ€ เจนเฉˆเฅค เจชเจนเจฟเจฒเจพเจ‚, เจฎเฉ‚เจฒ เจกเจพเจ‡เจฐเฉˆเจ•เจŸเจฐเฉ€ เจชเจ›เจพเจฃเจ•เจฐเจคเจพ (เจฒเจพเจฒ) เจตเจพเจฒเฉ‡ เจฌเจพเจˆเจŸ เจฐเฉฑเจ–เฉ‡ เจœเจพเจ‚เจฆเฉ‡ เจนเจจ, เจซเจฟเจฐ เจ•เจฟเจธเจฎ (เจนเจฐเฉ‡) เจฆเฉ‡ เจจเจพเจฒ, เจ…เจคเฉ‡ เจชเจนเจฟเจฒเจพเจ‚ เจนเฉ€ เจจเจพเจฎ (เจจเฉ€เจฒเฉ‡) เจฆเฉ‡ เจจเจพเจฒ เจชเฉ‚เจ› เจตเจฟเฉฑเจšเฅค เจกเจฟเจซเจพเจฒเจŸ LMDB เจคเฉเจฒเจจเจพเจ•เจพเจฐ เจฆเฉเจ†เจฐเจพ เจธเจผเจฌเจฆ-เจ•เฉ‹เจธเจผเจฟเจ• เจ•เฉเจฐเจฎ เจตเจฟเฉฑเจš เจ•เฉเจฐเจฎเจฌเฉฑเจง เจ•เฉ€เจคเฉ‡ เจœเจพเจ‚เจฆเฉ‡ เจนเจจ, เจ‰เจนเจจเจพเจ‚ เจจเฉ‚เฉฐ เจ‡เจธ เจตเจฟเฉฑเจš เจ•เฉเจฐเจฎเจฌเฉฑเจง เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆเฅค เจฒเฉ‹เฉœเฉ€เจ‚เจฆเจพ เจคเจฐเฉ€เจ•เจพ. เจ‰เจธเฉ‡ เจฒเจพเจฒ เจ…เจ—เฉ‡เจคเจฐ เจจเจพเจฒ เจ•เฉเจฐเจฎเจตเจพเจฐ เจ•เฉเฉฐเจœเฉ€เจ†เจ‚ เจจเฉ‚เฉฐ เจŸเฉเจฐเฉˆเจตเจฐ เจ•เจฐเจจเจพ เจธเจพเจจเฉ‚เฉฐ เจ‰เจนเจจเจพเจ‚ เจจเจพเจฒ เจธเฉฐเจฌเฉฐเจงเจฟเจค เจฎเฉเฉฑเจฒเจพเจ‚ เจจเฉ‚เฉฐ เจ‰เจธ เจ•เฉเจฐเจฎ เจตเจฟเฉฑเจš เจชเฉเจฐเจฆเจพเจจ เจ•เจฐเจฆเจพ เจนเฉˆ เจœเจฟเจธ เจตเจฟเฉฑเจš เจ‰เจนเจจเจพเจ‚ เจจเฉ‚เฉฐ เจ‰เจชเจญเฉ‹เจ—เจคเจพ เจ‡เฉฐเจŸเจฐเจซเฉ‡เจธ (เจธเฉฑเจœเฉ‡) เจตเจฟเฉฑเจš เจชเฉเจฐเจฆเจฐเจธเจผเจฟเจค เจ•เฉ€เจคเจพ เจœเจพเจฃเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆ, เจฌเจฟเจจเจพเจ‚ เจ•เจฟเจธเฉ‡ เจตเจพเจงเฉ‚ เจชเฉ‹เจธเจŸ-เจชเฉเจฐเฉ‹เจธเฉˆเจธเจฟเฉฐเจ— เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆเฅค

เจ†เจˆเจ“เจเจธ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจเจพเจ‚ เจตเจฟเฉฑเจš เจฎเฉเฉฑเจ–-เจฎเฉเฉฑเจฒ เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ 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 เจฆเฉ‡ เจฎเจพเจชเจฆเฉฐเจกเจพเจ‚ เจฆเฉเจ†เจฐเจพ เจ‡เฉฑเจ• เจธเจผเจพเจจเจฆเจพเจฐ เจธเจฅเจฟเจคเฉ€ เจชเฉเจฐเจพเจชเจค เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹ - เจจเฉˆเจŸเจตเจฐเจ• เจคเฉ‹เจ‚ เจกเจฟเจธเจ• เจคเฉฑเจ• เจกเฉ‡เจŸเจพ เจฆเฉ‡ เจจเจพเจฒ เจ•เฉฐเจฎ เจ•เจฐเจจ เจฒเจˆ เจธเจฟเจฐเจซ เจธเจŸเฉˆเจ• เจฎเฉˆเจฎเฉ‹เจฐเฉ€ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเฉ‹!

เจฌเจพเจˆเจจเจฐเฉ€ เจคเฉเจฒเจจเจพเจ•เจพเจฐ เจจเจพเจฒ เจ•เฉเฉฐเจœเฉ€เจ†เจ‚ เจฆเจพ เจ†เจฐเจกเจฐ เจ•เจฐเจจเจพ

เจ•เฉเฉฐเจœเฉ€ เจ•เฉเจฐเจฎ เจธเจฌเฉฐเจง เจ‡เฉฑเจ• เจตเจฟเจธเจผเฉ‡เจธเจผ เจซเฉฐเจ•เจธเจผเจจ เจฆเฉเจ†เจฐเจพ เจฆเจฟเฉฑเจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆ เจœเจฟเจธเจจเฉ‚เฉฐ เจคเฉเจฒเจจเจพเจ•เจพเจฐ เจ•เจฟเจนเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆเฅค เจ•เจฟเจ‰เจ‚เจ•เจฟ เจ‡เฉฐเจœเจฃ เจ‰เจนเจจเจพเจ‚ เจตเจฟเฉฑเจš เจธเจผเจพเจฎเจฒ เจฌเจพเจˆเจŸเจพเจ‚ เจฆเฉ‡ เจ…เจฐเจฅ เจตเจฟเจ—เจฟเจ†เจจ เจฌเจพเจฐเฉ‡ เจ•เฉเจ เจจเจนเฉ€เจ‚ เจœเจพเจฃเจฆเจพ เจนเฉˆ, เจ‡เจธเจฒเจˆ เจกเจฟเจซเฉŒเจฒเจŸ เจคเฉเจฒเจจเจพเจ•เจพเจฐ เจ•เฉ‹เจฒ เจ‰เจนเจจเจพเจ‚ เจฆเฉ€ เจฌเจพเจˆเจŸ-เจฌเจพเจˆ-เจฌเจพเจˆเจŸ เจคเฉเจฒเจจเจพ เจฆเจพ เจธเจนเจพเจฐเจพ เจฒเฉˆเจ‚เจฆเฉ‡ เจนเฉ‹เจ, เจธเจผเจฌเจฆเจ•เฉ‹เจธเจผ เจ•เฉเจฐเจฎ เจตเจฟเฉฑเจš เจ•เฉเฉฐเจœเฉ€เจ†เจ‚ เจฆเจพ เจชเฉเจฐเจฌเฉฐเจง เจ•เจฐเจจ เจคเฉ‹เจ‚ เจ‡เจฒเจพเจตเจพ เจ•เฉ‹เจˆ เจตเจฟเจ•เจฒเจช เจจเจนเฉ€เจ‚ เจนเฉˆเฅค เจขเจพเจ‚เจšเจฟเจ†เจ‚ เจจเฉ‚เฉฐ เจตเจฟเจตเจธเจฅเจฟเจค เจ•เจฐเจจ เจฒเจˆ เจ‡เจธเจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจเจพ เจ‡เฉฑเจ• เจจเฉฑเจ•เจพเจธเจผเฉ€ เจตเจพเจฒเฉ€ เจ•เฉเจนเจพเฉœเฉ€ เจจเจพเจฒ เจธเจผเฉ‡เจต เจ•เจฐเจจ เจฆเฉ‡ เจธเจฎเจพเจจ เจนเฉˆเฅค เจนเจพเจฒเจพเจ‚เจ•เจฟ, เจธเจงเจพเจฐเจจ เจฎเจพเจฎเจฒเจฟเจ†เจ‚ เจตเจฟเฉฑเจš, เจฎเฉˆเจจเฉ‚เฉฐ เจ‡เจน เจคเจฐเฉ€เจ•เจพ เจธเจตเฉ€เจ•เจพเจฐเจฏเฉ‹เจ— เจฒเฉฑเจ—เจฆเจพ เจนเฉˆ. เจตเจฟเจ•เจฒเจช เจฆเจพ เจนเฉ‡เจ เจพเจ‚ เจตเจฐเจฃเจจ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆ, เจชเจฐ เจ‡เฉฑเจฅเฉ‡ เจฎเฉˆเจ‚ เจฐเจธเจคเฉ‡ เจตเจฟเฉฑเจš เจ–เจฟเฉฐเจกเฉ‡ เจนเฉ‹เจ เจ•เฉเจ เจฐเฉˆเจ• เจจเฉ‹เจŸ เจ•เจฐเจพเจ‚เจ—เจพเฅค

เจงเจฟเจ†เจจ เจตเจฟเฉฑเจš เจฐเฉฑเจ–เจฃ เจตเจพเจฒเฉ€ เจชเจนเจฟเจฒเฉ€ เจ—เฉฑเจฒ เจ‡เจน เจนเฉˆ เจ•เจฟ เจชเฉเจฐเจพเจšเฉ€เจจ เจกเฉ‡เจŸเจพ เจ•เจฟเจธเจฎเจพเจ‚ เจฆเฉ€ เจฎเฉˆเจฎเฉ‹เจฐเฉ€ เจชเฉเจฐเจคเฉ€เจจเจฟเจงเจคเจพ เจนเฉˆเฅค เจ‡เจธ เจฒเจˆ, เจธเจพเจฐเฉ‡ เจเจชเจฒ เจกเจฟเจตเจพเจˆเจธเจพเจ‚ 'เจคเฉ‡, เจชเฉ‚เจฐเจจ เจ…เฉฐเจ• เจตเฉ‡เจฐเฉ€เจเจฌเจฒ เจซเจพเจฐเจฎเฉˆเจŸ เจตเจฟเฉฑเจš เจธเจŸเฉ‹เจฐ เจ•เฉ€เจคเฉ‡ เจœเจพเจ‚เจฆเฉ‡ เจนเจจ เจฒเจฟเจŸเจฒ เจเจ‚เจกเจฟเจ…เจจ. เจ‡เจธเจฆเจพ เจฎเจคเจฒเจฌ เจนเฉˆ เจ•เจฟ เจ˜เฉฑเจŸ เจคเฉ‹เจ‚ เจ˜เฉฑเจŸ เจฎเจนเฉฑเจคเจตเจชเฉ‚เจฐเจจ เจฌเจพเจˆเจŸ เจ–เฉฑเจฌเฉ‡ เจชเจพเจธเฉ‡ เจนเฉ‹เจตเฉ‡เจ—เฉ€, เจ…เจคเฉ‡ เจคเฉเจธเฉ€เจ‚ เจ‰เจนเจจเจพเจ‚ เจฆเฉ€ เจฌเจพเจˆเจŸ-เจฌเจพเจˆ-เจฌเจพเจˆเจŸ เจคเฉเจฒเจจเจพ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจชเฉ‚เจฐเจจ เจ…เฉฐเจ•เจพเจ‚ เจจเฉ‚เฉฐ เจ•เฉเจฐเจฎเจฌเฉฑเจง เจจเจนเฉ€เจ‚ เจ•เจฐ เจธเจ•เฉ‹เจ—เฉ‡เฅค เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ, 0 เจคเฉ‹เจ‚ 511 เจคเฉฑเจ• เจธเฉฐเจ–เจฟเจ†เจตเจพเจ‚ เจฆเฉ‡ เจธเฉˆเฉฑเจŸ เจจเจพเจฒ เจ…เจœเจฟเจนเจพ เจ•เจฐเจจ เจฆเฉ€ เจ•เฉ‹เจธเจผเจฟเจธเจผ เจ•เจฐเจจ เจจเจพเจฒ เจนเฉ‡เจ เจพเจ‚ เจฆเจฟเฉฑเจคเฉ‡ เจจเจคเฉ€เจœเฉ‡ เจนเฉ‹เจฃเจ—เฉ‡เฅค

// value (hex dump)
000 (0000)
256 (0001)
001 (0100)
257 (0101)
...
254 (fe00)
510 (fe01)
255 (ff00)
511 (ff01)

เจ‡เจธ เจธเจฎเฉฑเจธเจฟเจ† เจจเฉ‚เฉฐ เจนเฉฑเจฒ เจ•เจฐเจจ เจฒเจˆ, เจชเฉ‚เจฐเจจ เจ…เฉฐเจ•เจพเจ‚ เจจเฉ‚เฉฐ เจฌเจพเจˆเจŸ เจคเฉเจฒเจจเจพเจ•เจพเจฐ เจฒเจˆ เจขเฉเจ•เจตเฉ‡เจ‚ เจซเจพเจฐเจฎเฉˆเจŸ เจตเจฟเฉฑเจš เจ•เฉเฉฐเจœเฉ€ เจตเจฟเฉฑเจš เจธเจŸเฉ‹เจฐ เจ•เฉ€เจคเจพ เจœเจพเจฃเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆเฅค เจชเจฐเจฟเจตเจพเจฐ เจฆเฉ‡ เจซเฉฐเจ•เจธเจผเจจ เจœเจผเจฐเฉ‚เจฐเฉ€ เจคเจฌเจฆเฉ€เจฒเฉ€ เจจเฉ‚เฉฐ เจชเฉ‚เจฐเจพ เจ•เจฐเจจ เจตเจฟเฉฑเจš เจฎเจฆเจฆ เจ•เจฐเจจเจ—เฉ‡เฅค hton* (เจตเจฟเจธเจผเฉ‡เจธเจผ เจฐเฉ‚เจช เจคเฉ‹เจ‚ htons เจ‰เจฆเจพเจนเจฐเจจ เจคเฉ‹เจ‚ เจกเจฌเจฒ-เจฌเจพเจˆเจŸ เจจเฉฐเจฌเจฐเจพเจ‚ เจฒเจˆ)เฅค

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

เจงเจฟเจ†เจจ เจตเจฟเฉฑเจš เจฐเฉฑเจ–เจฃ เจตเจพเจฒเฉ€ เจฆเฉ‚เจœเฉ€ เจ—เฉฑเจฒ เจนเฉˆ เจ…เจจเฉเจ•เฉ‚เจฒเจคเจพ เจฆเฉ‡ เจธเจฟเจงเจพเจ‚เจค struct เจ–เฉ‡เจคเจฐ เจ•เฉฐเจชเจพเจˆเจฒเจฐ. เจ‰เจนเจจเจพเจ‚ เจฆเฉ‡ เจ•เจพเจฐเจจ, เจ•เฉ‚เฉœเฉ‡ เจฆเฉ‡ เจฎเฉเฉฑเจฒเจพเจ‚ เจตเจพเจฒเฉ‡ เจฌเจพเจˆเจŸเจพเจ‚ เจจเฉ‚เฉฐ เจ–เฉ‡เจคเจฐเจพเจ‚ เจฆเฉ‡ เจตเจฟเจšเจ•เจพเจฐ เจฎเฉˆเจฎเฉ‹เจฐเฉ€ เจตเจฟเฉฑเจš เจฌเจฃเจพเจ‡เจ† เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆ, เจœเฉ‹ เจฌเฉ‡เจธเจผเจ•, เจฌเจพเจˆเจŸ เจ›เจพเจ‚เจŸเฉ€ เจจเฉ‚เฉฐ เจคเฉ‹เฉœเจฆเจพ เจนเฉˆ. เจ•เฉ‚เฉœเฉ‡ เจจเฉ‚เฉฐ เจ–เจคเจฎ เจ•เจฐเจจ เจฒเจˆ, เจคเฉเจนเจพเจจเฉ‚เฉฐ เจœเจพเจ‚ เจคเจพเจ‚ เจซเฉ€เจฒเจกเจพเจ‚ เจจเฉ‚เฉฐ เจธเจ–เจคเฉ€ เจจเจพเจฒ เจชเจฐเจฟเจญเจพเจธเจผเจฟเจค เจ•เฉเจฐเจฎ เจตเจฟเฉฑเจš เจ˜เฉ‹เจธเจผเจฟเจค เจ•เจฐเจจเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆ, เจ…เจฒเจพเจˆเจจเจฎเฉˆเจ‚เจŸ เจจเจฟเจฏเจฎเจพเจ‚ เจจเฉ‚เฉฐ เจงเจฟเจ†เจจ เจตเจฟเฉฑเจš เจฐเฉฑเจ–เจฆเฉ‡ เจนเฉ‹เจ, เจœเจพเจ‚ เจขเจพเจ‚เจšเฉ‡ เจฆเฉ€ เจ˜เฉ‹เจธเจผเจฃเจพ เจตเจฟเฉฑเจš เจตเจฟเจธเจผเฉ‡เจธเจผเจคเจพ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจเฉ€ เจšเจพเจนเฉ€เจฆเฉ€ เจนเฉˆเฅค 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โ€‹
};

เจนเจพเจฒเจพเจ‚เจ•เจฟ, เจ•เจˆ เจตเจพเจฐ เจ…เจœเจฟเจนเจพ เจนเฉเฉฐเจฆเจพ เจนเฉˆ เจœเจฆเฉ‹เจ‚ เจชเฉเจฐเจฆเจฐเจธเจผเจจ เจฎเจพเจ‡เจจเฉ‡ เจฐเฉฑเจ–เจฆเจพ เจนเฉˆเฅค เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ, เจœเจฆเฉ‹เจ‚ เจ‰เจชเจญเฉ‹เจ—เจคเจพ เจ•เจฒเจพเจ‰เจก เจฆเฉ‡ เจซเจพเจˆเจฒ เจขเจพเจ‚เจšเฉ‡ เจฌเจพเจฐเฉ‡ เจฎเฉˆเจŸเจพ-เจœเจพเจฃเจ•เจพเจฐเฉ€ เจจเฉ‚เฉฐ เจธเฉเจฐเฉฑเจ–เจฟเจ…เจค เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚, เจ…เจธเฉ€เจ‚ เจ‰เจธเฉ‡ เจ†เจฌเจœเฉˆเจ•เจŸ เจฎเฉˆเจฎเฉ‹เจฐเฉ€ เจกเฉฐเจช เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚เฅค เจ‰เจนเจจเจพเจ‚ เจฆเฉ€ เจฒเฉœเฉ€เจฌเฉฑเจง เจชเฉเจฐเจคเฉ€เจจเจฟเจงเจคเจพ เจจเฉ‚เฉฐ เจคเจฟเจ†เจฐ เจ•เจฐเจจ เจฆเฉ‡ เจ•เฉฐเจฎ เจฆเฉ€ เจตเจฟเจธเจผเฉ‡เจธเจผเจคเจพ เจ‡เจน เจคเฉฑเจฅ เจนเฉˆ เจ•เจฟ เจ‡เฉฑเจ• เจกเจพเจ‡เจฐเฉˆเจ•เจŸเจฐเฉ€ เจฆเฉ‡ เจคเฉฑเจค เจ‡เฉฑเจ• เจ•เจฒเจพเจธ เจฒเฉœเฉ€ เจฆเฉเจ†เจฐเจพ เจฎเจพเจกเจฒ เจ•เฉ€เจคเฉ‡ เจ—เจ เจนเจจเฅค

เจ†เจˆเจ“เจเจธ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจเจพเจ‚ เจตเจฟเฉฑเจš เจฎเฉเฉฑเจ–-เจฎเฉเฉฑเจฒ เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ LMDB เจฆเฉ€ เจšเจฎเจ• เจ…เจคเฉ‡ เจ—เจฐเฉ€เจฌเฉ€

C เจญเจพเจธเจผเจพ เจตเจฟเฉฑเจš เจ‡เจธเจจเฉ‚เฉฐ เจฒเจพเจ—เฉ‚ เจ•เจฐเจจ เจฒเจˆ, เจตเจพเจฐเจธเจพเจ‚ เจฆเฉ‡ เจ–เจพเจธ เจ–เฉ‡เจคเจฐเจพเจ‚ เจจเฉ‚เฉฐ เจตเฉฑเจ–-เจตเฉฑเจ– เจขเจพเจ‚เจšเฉ‡ เจตเจฟเฉฑเจš เจฒเจฟเจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆ, เจ…เจคเฉ‡ เจ‰เจนเจจเจพเจ‚ เจฆเฉ‡ เจ…เจงเจพเจฐ เจฆเฉ‡ เจจเจพเจฒ เจ‰เจนเจจเจพเจ‚ เจฆเจพ เจธเจฌเฉฐเจง เจฏเฉ‚เจจเฉ€เจ…เจจ เจ•เจฟเจธเจฎ เจฆเฉ‡ เจ‡เฉฑเจ• เจ–เฉ‡เจคเจฐ เจฆเฉเจ†เจฐเจพ เจจเจฟเจฐเจงเจพเจฐเจค เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆเฅค เจฏเฉ‚เจจเฉ€เจ…เจจ เจฆเฉ€ เจ…เจธเจฒ เจธเจฎเฉฑเจ—เจฐเฉ€ เจจเฉ‚เฉฐ เจ•เจฟเจธเจฎ เจฆเฉ‡ เจคเจ•เจจเฉ€เจ•เฉ€ เจ—เฉเจฃ เจฆเฉเจ†เจฐเจพ เจจเจฟเจฐเจฆเจฟเจธเจผเจŸ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆ.

typedef struct NodeValue {โ€‹
    EntityId localId;โ€‹
    EntityType type;โ€‹
    union {โ€‹
        FileInfo file;โ€‹
        DirectoryInfo directory;โ€‹
    } info;โ€‹
    uint8_t nameLength;โ€‹
    uint8_t nameBuffer[256];โ€‹
} NodeValue;โ€‹

เจฐเจฟเจ•เจพเจฐเจก เจœเฉ‹เฉœเจจเจพ เจ…เจคเฉ‡ เจ…เฉฑเจชเจกเฉ‡เจŸ เจ•เจฐเจจเจพ

เจฒเฉœเฉ€เจฌเฉฑเจง เจ•เฉเฉฐเจœเฉ€ เจ…เจคเฉ‡ เจฎเฉเฉฑเจฒ เจธเจŸเฉ‹เจฐ เจตเจฟเฉฑเจš เจœเฉ‹เฉœเจฟเจ† เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆเฅค เจ‡เจธเจฆเฉ‡ เจฒเจˆ, เจซเฉฐเจ•เจธเจผเจจ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เฉ€เจคเฉ€ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆ mdb_put.

// key ะธ value ะธะผะตัŽั‚ ั‚ะธะฟ MDB_valโ€‹
mdb_put(..., &key, &value, MDB_NOOVERWRITE);

เจธเฉฐเจฐเจšเจจเจพ เจชเฉœเจพเจ… 'เจคเฉ‡, เจฐเจฟเจชเฉ‹เจœเจผเจŸเจฐเฉ€ เจจเฉ‚เฉฐ เจ‡เฉฑเจ•เฉ‹ เจ•เฉเฉฐเจœเฉ€ เจจเจพเจฒ เจ•เจˆ เจฐเจฟเจ•เจพเจฐเจกเจพเจ‚ เจจเฉ‚เฉฐ เจธเจŸเฉ‹เจฐ เจ•เจฐเจจ เจฆเฉ€ เจ‡เจœเจพเจœเจผเจค เจœเจพเจ‚ เจฎเจจเจพเจนเฉ€ เจ•เฉ€เจคเฉ€ เจœเจพ เจธเจ•เจฆเฉ€ เจนเฉˆเฅค เจœเฉ‡เจ•เจฐ เจ•เฉเฉฐเจœเฉ€เจ†เจ‚ เจฆเฉ€ เจกเฉเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจฎเจจเจพเจนเฉ€ เจนเฉˆ, เจคเจพเจ‚ เจ‡เฉฑเจ• เจฐเจฟเจ•เจพเจฐเจก เจชเจพเจ‰เจฃ เจตเฉ‡เจฒเฉ‡, เจคเฉเจธเฉ€เจ‚ เจ‡เจน เจจเจฟเจฐเจงเจพเจฐเจค เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹ เจ•เจฟ เจชเจนเจฟเจฒเจพเจ‚ เจคเฉ‹เจ‚ เจฎเฉŒเจœเฉ‚เจฆ เจฐเจฟเจ•เจพเจฐเจก เจจเฉ‚เฉฐ เจ…เฉฑเจชเจกเฉ‡เจŸ เจ•เจฐเจจ เจฆเฉ€ เจ‡เจœเจพเจœเจผเจค เจนเฉˆ เจœเจพเจ‚ เจจเจนเฉ€เจ‚เฅค เจœเฉ‡เจ•เจฐ เจเจ—เฉœเจพ เจธเจฟเจฐเจซ เจ•เฉ‹เจก เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจ—เจฒเจคเฉ€ เจฆเฉ‡ เจจเจคเฉ€เจœเฉ‡ เจตเจœเฉ‹เจ‚ เจนเฉ‹ เจธเจ•เจฆเจพ เจนเฉˆ, เจคเจพเจ‚ เจคเฉเจธเฉ€เจ‚ เจเฉฐเจกเฉ‡ เจจเฉ‚เฉฐ เจจเจฟเจธเจผเจšเจฟเจค เจ•เจฐเจ•เฉ‡ เจ‡เจธเจฆเฉ‡ เจตเจฟเจฐเฉเฉฑเจง เจฌเฉ€เจฎเจพ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹ NOOVERWRITE.

เจฐเฉ€เจกเจฟเฉฐเจ— เจฐเจฟเจ•เจพเจฐเจกเจธ

LMDB เจตเจฟเฉฑเจš เจฐเจฟเจ•เจพเจฐเจก เจชเฉœเฉเจนเจจ เจฒเจˆ เจซเฉฐเจ•เจธเจผเจจ เจนเฉˆ mdb_get. เจœเฉ‡เจ•เจฐ เจ•เฉเฉฐเจœเฉ€-เจฎเฉเฉฑเจฒ เจฆเฉ‡ เจœเฉ‹เฉœเฉ‡ เจจเฉ‚เฉฐ เจชเจนเจฟเจฒเจพเจ‚ เจกเฉฐเจช เจ•เฉ€เจคเฉ‡ เจขเจพเจ‚เจšเฉ‡ เจฆเฉเจ†เจฐเจพ เจฆเจฐเจธเจพเจ‡เจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆ, เจคเจพเจ‚ เจ‡เจน เจตเจฟเจงเฉ€ เจ‡เจธ เจคเจฐเฉเจนเจพเจ‚ เจฆเจฟเจ–เจพเจˆ เจฆเจฟเฉฐเจฆเฉ€ เจนเฉˆเฅค

NodeValue * const readNode(..., NodeKey * const key) {โ€‹
    MDB_val rawKey = serialize(key);โ€‹
    MDB_val rawValue;โ€‹
    mdb_get(..., &rawKey, &rawValue);โ€‹
    return (NodeValue * const)rawValue.mv_data;โ€‹
}

เจชเฉ‡เจธเจผ เจ•เฉ€เจคเฉ€ เจธเฉ‚เจšเฉ€ เจฆเจฐเจธเจพเจ‰เจ‚เจฆเฉ€ เจนเฉˆ เจ•เจฟ เจ•เจฟเจตเฉ‡เจ‚ เจขเจพเจ‚เจšเจฟเจ†เจ‚ เจฆเฉ‡ เจกเฉฐเจช เจฐเจพเจนเฉ€เจ‚ เจธเฉ€เจฐเฉ€เจ…เจฒเจพเจˆเจœเจผเฉ‡เจธเจผเจจ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจจเจพ เจธเจฟเจฐเจซเจผ เจฒเจฟเจ–เจฃ เจตเฉ‡เจฒเฉ‡, เจชเจฐ เจกเฉ‡เจŸเจพ เจชเฉœเฉเจนเจฆเฉ‡ เจธเจฎเฉ‡เจ‚ เจ—เจคเฉ€เจธเจผเฉ€เจฒ เจตเฉฐเจก เจคเฉ‹เจ‚ เจ›เฉเจŸเจ•เจพเจฐเจพ เจชเจพเจ‰เจฃ เจฆเฉ€ เจ†เจ—เจฟเจ† เจฆเจฟเฉฐเจฆเฉ€ เจนเฉˆเฅค เจซเฉฐเจ•เจธเจผเจจ เจคเฉ‹เจ‚ เจฒเจฟเจ† เจ—เจฟเจ† mdb_get เจชเฉเจ†เจ‡เฉฐเจŸเจฐ เจฌเจฟเจฒเจ•เฉเจฒ เจตเจฐเจšเฉเจ…เจฒ เจฎเฉˆเจฎเฉ‹เจฐเฉ€ เจเจกเจฐเฉˆเฉฑเจธ 'เจคเฉ‡ เจตเฉ‡เจ–เจฆเจพ เจนเฉˆ เจœเจฟเฉฑเจฅเฉ‡ เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจ†เจฌเจœเฉˆเจ•เจŸ เจฆเฉ€ เจฌเจพเจˆเจŸ เจชเฉเจฐเจคเฉ€เจจเจฟเจงเจคเจพ เจจเฉ‚เฉฐ เจธเจŸเฉ‹เจฐ เจ•เจฐเจฆเจพ เจนเฉˆเฅค เจตเจพเจธเจคเจต เจตเจฟเฉฑเจš, เจธเจพเจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจ•เจฟเจธเจฎ เจฆเจพ ORM เจฎเจฟเจฒเจฆเจพ เจนเฉˆ, เจœเฉ‹ เจ•เจฟ เจกเจพเจŸเจพ เจชเฉœเฉเจนเจจ เจฆเฉ€ เจฌเจนเฉเจค เจคเฉ‡เจœเจผ เจ—เจคเฉ€ เจชเฉเจฐเจฆเจพเจจ เจ•เจฐเจฆเจพ เจนเฉˆเฅค เจชเจนเฉเฉฐเจš เจฆเฉ€ เจธเจพเจฐเฉ€ เจธเฉเฉฐเจฆเจฐเจคเจพ เจฆเฉ‡ เจจเจพเจฒ, เจ‡เจธ เจจเจพเจฒ เจœเฉเฉœเฉ€เจ†เจ‚ เจ•เจˆ เจตเจฟเจธเจผเฉ‡เจธเจผเจคเจพเจตเจพเจ‚ เจจเฉ‚เฉฐ เจฏเจพเจฆ เจฐเฉฑเจ–เจฃเจพ เจœเจผเจฐเฉ‚เจฐเฉ€ เจนเฉˆ.

  1. เจธเจฟเจฐเจซเจผ เจชเฉœเฉเจนเจจ เจฒเจˆ เจฒเฉˆเจฃ-เจฆเฉ‡เจฃ เจฒเจˆ, เจ‡เฉฑเจ• เจฎเฉเฉฑเจฒ เจขเจพเจ‚เจšเฉ‡ เจฒเจˆ เจ‡เฉฑเจ• เจชเฉเจ†เจ‡เฉฐเจŸเจฐ เจธเจฟเจฐเจซเจผ เจ‰เจฆเฉ‹เจ‚ เจคเฉฑเจ• เจตเฉˆเจง เจฐเจนเจฟเจฃ เจฆเฉ€ เจ—เจฐเฉฐเจŸเฉ€ เจนเฉˆ เจœเจฆเฉ‹เจ‚ เจคเฉฑเจ• เจŸเฉเจฐเจพเจ‚เจœเฉˆเจ•เจธเจผเจจ เจฌเฉฐเจฆ เจจเจนเฉ€เจ‚ เจนเฉเฉฐเจฆเจพเฅค เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ เจชเจนเจฟเจฒเจพเจ‚ เจจเฉ‹เจŸ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆ, เจฌเฉ€-เจŸเฉเจฐเฉ€ เจฆเฉ‡ เจชเฉฐเจจเฉ‡ เจœเจฟเจจเฉเจนเจพเจ‚ 'เจคเฉ‡ เจตเจธเจคเฉ‚ เจฐเจนเจฟเฉฐเจฆเฉ€ เจนเฉˆ, เจ•เจพเจชเฉ€-เจ†เจจ-เจฐเจพเจˆเจŸ เจธเจฟเจงเจพเจ‚เจค เจฒเจˆ เจงเฉฐเจจเจตเจพเจฆ, เจ‰เจฆเฉ‹เจ‚ เจคเฉฑเจ• เจ•เฉ‹เจˆ เจฌเจฆเจฒเจพเจ… เจจเจนเฉ€เจ‚ เจฐเจนเจฟเฉฐเจฆเจพ เจœเจฆเฉ‹เจ‚ เจคเฉฑเจ• เจ˜เฉฑเจŸเฉ‹-เจ˜เฉฑเจŸ เจ‡เฉฑเจ• เจฒเฉˆเจฃ-เจฆเฉ‡เจฃ เจ‰เจจเฉเจนเจพเจ‚ เจฆเจพ เจนเจตเจพเจฒเจพ เจฆเจฟเฉฐเจฆเจพ เจนเฉˆเฅค เจ‡เจธ เจฆเฉ‡ เจจเจพเจฒ เจนเฉ€, เจœเจฟเจตเฉ‡เจ‚ เจนเฉ€ เจ‰เจนเจจเจพเจ‚ เจจเจพเจฒ เจœเฉเฉœเจฟเจ† เจ†เจ–เจฐเฉ€ เจŸเฉเจฐเจพเจ‚เจœเฉˆเจ•เจธเจผเจจ เจชเฉ‚เจฐเจพ เจนเฉ‹ เจœเจพเจ‚เจฆเจพ เจนเฉˆ, เจชเฉฐเจจเจฟเจ†เจ‚ เจจเฉ‚เฉฐ เจจเจตเฉ‡เจ‚ เจกเฉ‡เจŸเจพ เจฒเจˆ เจฆเฉเจฌเจพเจฐเจพ เจตเจฐเจคเจฟเจ† เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆ. เจœเฉ‡เจ•เจฐ เจตเจธเจคเฉ‚เจ†เจ‚ เจจเฉ‚เฉฐ เจ‰เจธ เจฒเฉˆเจฃ-เจฆเฉ‡เจฃ เจคเฉ‹เจ‚ เจฌเจšเจฃ เจฒเจˆ เจœเจผเจฐเฉ‚เจฐเฉ€ เจนเฉˆ เจœเจฟเจธ เจจเฉ‡ เจ‰เจนเจจเจพเจ‚ เจจเฉ‚เฉฐ เจฌเจฃเจพเจ‡เจ† เจนเฉˆ, เจคเจพเจ‚ เจ‰เจนเจจเจพเจ‚ เจจเฉ‚เฉฐ เจ…เจœเฉ‡ เจตเฉ€ เจ•เจพเจชเฉ€ เจ•เจฐเจจเจพ เจชเจตเฉ‡เจ—เจพเฅค
  2. เจฐเฉ€เจกเจฐเจพเจˆเจŸ เจŸเฉเจฐเจพเจ‚เจœเฉˆเจ•เจธเจผเจจ เจฒเจˆ, เจจเจคเฉ€เจœเฉ‡ เจตเจœเฉ‹เจ‚ เจฌเจฃเจคเจฐ-เจฎเฉเฉฑเจฒ เจฆเจพ เจชเฉเจ†เจ‡เฉฐเจŸเจฐ เจธเจฟเจฐเจซ เจชเจนเจฟเจฒเฉ€ เจธเฉ‹เจง เจชเฉเจฐเจ•เจฟเจฐเจฟเจ† (เจกเจพเจŸเจพ เจฒเจฟเจ–เจฃเจพ เจœเจพเจ‚ เจฎเจฟเจŸเจพเจ‰เจฃเจพ) เจคเฉฑเจ• เจตเฉˆเจง เจนเฉ‹เจตเฉ‡เจ—เจพเฅค
  3. เจญเจพเจตเฉ‡เจ‚ เจขเจพเจ‚เจšเจพ NodeValue เจชเฉ‚เจฐเฉ€ เจคเจฐเฉเจนเจพเจ‚ เจจเจพเจฒ เจจเจนเฉ€เจ‚, เจชเจฐ เจ•เฉฑเจŸเจฟเจ† เจนเฉ‹เจ‡เจ† (เจตเฉ‡เจ–เฉ‹ เจ‰เจชเจญเจพเจ— "เจฌเจพเจนเจฐเฉ€ เจคเฉเจฒเจจเจพเจ•เจพเจฐ เจฆเฉเจ†เจฐเจพ เจ•เฉเฉฐเจœเฉ€เจ†เจ‚ เจฆเจพ เจ†เจฐเจกเจฐ เจ•เจฐเจจเจพ"), เจชเฉเจ†เจ‡เฉฐเจŸเจฐ เจฆเฉเจ†เจฐเจพ, เจคเฉเจธเฉ€เจ‚ เจ†เจธเจพเจจเฉ€ เจจเจพเจฒ เจ‡เจธเจฆเฉ‡ เจ–เฉ‡เจคเจฐเจพเจ‚ เจคเฉฑเจ• เจชเจนเฉเฉฐเจš เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹เฅค เจฎเฉเฉฑเจ– เจ—เฉฑเจฒ เจ‡เจน เจนเฉˆ เจ•เจฟ เจ‡เจธ เจจเฉ‚เฉฐ เจ…เจฃเจกเจฟเฉฑเจ  เจ•เจฐเจจเจพ เจจเจนเฉ€เจ‚ เจนเฉˆ!
  4. เจ•เจฟเจธเฉ‡ เจตเฉ€ เจธเจฅเจฟเจคเฉ€ เจตเจฟเฉฑเจš เจคเฉเจธเฉ€เจ‚ เจชเฉเจฐเจพเจชเจค เจชเฉเจ†เจ‡เฉฐเจŸเจฐ เจฆเฉเจ†เจฐเจพ เจขเจพเจ‚เจšเฉ‡ เจจเฉ‚เฉฐ เจธเฉฐเจธเจผเฉ‹เจงเจฟเจค เจจเจนเฉ€เจ‚ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹เฅค เจธเจพเจฐเฉ€เจ†เจ‚ เจคเจฌเจฆเฉ€เจฒเฉ€เจ†เจ‚ เจตเจฟเจงเฉ€ เจฐเจพเจนเฉ€เจ‚ เจนเฉ€ เจ•เฉ€เจคเฉ€เจ†เจ‚ เจœเจพเจฃเฉ€เจ†เจ‚ เจšเจพเจนเฉ€เจฆเฉ€เจ†เจ‚ เจนเจจ mdb_put. เจนเจพเจฒเจพเจ‚เจ•เจฟ, เจ…เจœเจฟเจนเจพ เจ•เจฐเจจ เจฆเฉ€ เจชเฉ‚เจฐเฉ€ เจ‡เฉฑเจ›เจพ เจฆเฉ‡ เจจเจพเจฒ, เจ‡เจน เจ•เฉฐเจฎ เจจเจนเฉ€เจ‚ เจ•เจฐเฉ‡เจ—เจพ, เจ•เจฟเจ‰เจ‚เจ•เจฟ เจฎเฉˆเจฎเฉ‹เจฐเฉ€ เจ–เฉ‡เจคเจฐ เจœเจฟเฉฑเจฅเฉ‡ เจ‡เจน เจขเจพเจ‚เจšเจพ เจธเจฅเจฟเจค เจนเฉˆ, เจธเจฟเจฐเจซเจผ เจฐเฉ€เจกเจ“เจจเจฒเฉ€ เจฎเฉ‹เจก เจตเจฟเฉฑเจš เจฎเฉˆเจช เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆเฅค
  5. เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ, เจซเฉฐเจ•เจธเจผเจจ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจตเฉฑเจง เจคเฉ‹เจ‚ เจตเฉฑเจง เจธเจŸเฉ‹เจฐเฉ‡เจœ เจ†เจ•เจพเจฐ เจจเฉ‚เฉฐ เจตเจงเจพเจ‰เจฃ เจฒเจˆ เจ‡เฉฑเจ• เจชเฉเจฐเจ•เจฟเจฐเจฟเจ† เจฆเฉ‡ เจเจกเจฐเฉˆเฉฑเจธ เจธเจชเฉ‡เจธ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจซเจพเจˆเจฒ เจจเฉ‚เฉฐ เจฐเฉ€เจฎเฉˆเจช เจ•เจฐเฉ‹ mdb_env_set_map_size เจ†เจฎ เจคเฉŒเจฐ 'เจคเฉ‡ เจธเจพเจฐเฉ‡ เจฒเฉˆเจฃ-เจฆเฉ‡เจฃ เจ…เจคเฉ‡ เจธเฉฐเจฌเฉฐเจงเจฟเจค เจ‡เจ•เจพเจˆเจ†เจ‚ เจจเฉ‚เฉฐ เจชเฉ‚เจฐเฉ€ เจคเจฐเฉเจนเจพเจ‚ เจ…เจฏเฉ‹เจ— เจฌเจฃเจพเจ‰เจ‚เจฆเจพ เจนเฉˆ เจ…เจคเฉ‡ เจ–เจพเจธ เจคเฉŒเจฐ 'เจคเฉ‡ เจตเจธเจคเฉ‚เจ†เจ‚ เจจเฉ‚เฉฐ เจชเฉœเฉเจนเจจ เจฒเจˆ เจชเฉเจ†เจ‡เฉฐเจŸเจฐ เจฆเจฟเฉฐเจฆเจพ เจนเฉˆเฅค

เจ…เฉฐเจค เจตเจฟเฉฑเจš, เจ‡เฉฑเจ• เจนเฉ‹เจฐ เจตเจฟเจธเจผเฉ‡เจธเจผเจคเจพ เจ‡เฉฐเจจเฉ€ เจงเฉ‹เจ–เฉ‡เจฌเจพเจœเจผ เจนเฉˆ เจ•เจฟ เจ‡เจธเจฆเฉ‡ เจคเฉฑเจค เจฆเจพ เจ–เฉเจฒเจพเจธเจพ เจ•เฉ‡เจตเจฒ เจ‡เฉฑเจ• เจนเฉ‹เจฐ เจฌเจฟเฉฐเจฆเฉ‚ เจตเจฟเฉฑเจš เจซเจฟเฉฑเจŸ เจจเจนเฉ€เจ‚ เจฌเฉˆเจ เจฆเจพเฅค เจฌเฉ€-เจŸเฉเจฐเฉ€ เจฆเฉ‡ เจ…เจงเจฟเจ†เจ‡ เจตเจฟเฉฑเจš, เจฎเฉˆเจ‚ เจฎเฉˆเจฎเฉ‹เจฐเฉ€ เจตเจฟเฉฑเจš เจ‡เจธเจฆเฉ‡ เจชเฉฐเจจเจฟเจ†เจ‚ เจฆเฉ‡ เจธเฉฐเจ—เจ เจจ เจฆเจพ เจ‡เฉฑเจ• เจšเจฟเฉฑเจคเจฐ เจฆเจฟเฉฑเจคเจพ เจนเฉˆเฅค เจ‡เจธ เจคเฉ‹เจ‚ เจ‡เจน เจชเจคเจพ เจšเจฒเจฆเจพ เจนเฉˆ เจ•เจฟ เจธเฉ€เจฐเฉ€เจ…เจฒเจพเจˆเจœเจผเจก เจกเฉ‡เจŸเจพ เจฆเฉ‡ เจจเจพเจฒ เจฌเจซเจฐ เจฆเฉ€ เจธเจผเฉเจฐเฉ‚เจ†เจค เจฆเจพ เจชเจคเจพ เจฌเจฟเจฒเจ•เฉเจฒ เจฎเจจเจฎเจพเจจเฉ€ เจนเฉ‹ เจธเจ•เจฆเจพ เจนเฉˆเฅค เจ‡เจธเจฆเฉ‡ เจ•เจพเจฐเจจ, เจ‰เจนเจจเจพเจ‚ เจจเฉ‚เฉฐ เจธเฉฐเจ•เฉ‡เจคเจ•, เจฌเจฃเจคเจฐ เจตเจฟเฉฑเจš เจชเฉเจฐเจพเจชเจค เจ•เฉ€เจคเจพ MDB_val เจ…เจคเฉ‡ เจ•เจฟเจธเฉ‡ เจขเจพเจ‚เจšเฉ‡ เจฆเฉ‡ เจชเฉเจ†เจ‡เฉฐเจŸเจฐ เจจเฉ‚เฉฐ เจ•เจพเจธเจŸ เจ•เจฐเจจเจพ เจ†เจฎ เจคเฉŒเจฐ 'เจคเฉ‡ เจ…เจฒเจพเจˆเจจ เจนเฉเฉฐเจฆเจพ เจนเฉˆเฅค เจ‰เจธเฉ‡ เจธเจฎเฉ‡เจ‚, เจ•เฉเจ เจšเจฟเจชเจธ เจฆเฉ‡ เจ†เจฐเจ•เฉ€เจŸเฉˆเจ•เจšเจฐ (เจ†เจˆเจ“เจเจธ เจฆเฉ‡ เจฎเจพเจฎเจฒเฉ‡ เจตเจฟเฉฑเจš, เจ‡เจน 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 เจฆเฉเจ†เจฐเจพ เจ†เจฐเจกเจฐ เจ•เฉ€เจคเจพ เจœเจพเจตเฉ‡เฅค เจ‡เจธ เจคเจฐเฉเจนเจพเจ‚, เจคเจ•เจจเฉ€เจ•เฉ€ เจคเฉŒเจฐ 'เจคเฉ‡, เจซเฉ‹เจฒเจกเจฐ เจฆเฉ€ เจธเจฎเฉฑเจ—เจฐเฉ€ เจจเฉ‚เฉฐ เจชเฉเจฐเจพเจชเจค เจ•เจฐเจจ เจฆเจพ เจ•เฉฐเจฎ เจ‡เฉฑเจ• เจฆเจฟเฉฑเจคเฉ‡ เจ…เจ—เฉ‡เจคเจฐ เจฆเฉ‡ เจจเจพเจฒ เจ•เฉเฉฐเจœเฉ€เจ†เจ‚ เจฆเฉ‡ เจธเจฎเฉ‚เจน เจฆเฉ€ เจ‰เจชเจฐเจฒเฉ€ เจธเฉ€เจฎเจพ 'เจคเฉ‡ เจ•เจฐเจธเจฐ เจจเฉ‚เฉฐ เจฐเฉฑเจ–เจฃ เจฒเจˆ เจ˜เจŸเจพ เจฆเจฟเฉฑเจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆ, เจœเจฟเจธ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ เจนเฉ‡เจ เจฒเฉ‡ เจธเฉ€เจฎเจพ เจจเฉ‚เฉฐ เจฆเฉเจนเจฐเจพเจ‡เจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆเฅค

เจ†เจˆเจ“เจเจธ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจเจพเจ‚ เจตเจฟเฉฑเจš เจฎเฉเฉฑเจ–-เจฎเฉเฉฑเจฒ เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ 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 เจŸเฉ‡เจฌเจฒ เจตเจฟเจšเจ•เจพเจฐ เจฎเจพเจกเจฒเจฟเฉฐเจ— เจธเจฌเฉฐเจง

เจ…เฉฑเจœ เจคเฉฑเจ•, เจ…เจธเฉ€เจ‚ เจ‡เฉฑเจ• เจธเจฟเฉฐเจ—เจฒ-เจŸเฉ‡เจฌเจฒ เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจฆเฉ‡ เจจเจพเจฒ เจกเจฟเจœเจผเจพเจˆเจจเจฟเฉฐเจ— เจ…เจคเฉ‡ เจ•เฉฐเจฎ เจ•เจฐเจจ เจฆเฉ‡ เจธเจพเจฐเฉ‡ เจชเจนเจฟเจฒเฉ‚เจ†เจ‚ 'เจคเฉ‡ เจตเจฟเจšเจพเจฐ เจ•เจฐเจจ เจตเจฟเฉฑเจš เจ•เจพเจฎเจฏเจพเจฌ เจฐเจนเฉ‡ เจนเจพเจ‚เฅค เจ…เจธเฉ€เจ‚ เจ•เจนเจฟ เจธเจ•เจฆเฉ‡ เจนเจพเจ‚ เจ•เจฟ เจ‡เฉฑเจ• เจธเจพเจฐเจฃเฉ€ เจ•เฉเจฐเจฎเจฌเฉฑเจง เจฐเจฟเจ•เจพเจฐเจกเจพเจ‚ เจฆเจพ เจ‡เฉฑเจ• เจธเจฎเฉ‚เจน เจนเฉˆ เจœเจฟเจธ เจตเจฟเฉฑเจš เจ‡เฉฑเจ•เฉ‹ เจ•เจฟเจธเจฎ เจฆเฉ‡ เจฎเฉเฉฑเจ–-เจฎเฉเฉฑเจฒ เจฆเฉ‡ เจœเฉ‹เฉœเฉ‡ เจนเฉเฉฐเจฆเฉ‡ เจนเจจเฅค เจœเฉ‡เจ•เจฐ เจคเฉเจธเฉ€เจ‚ เจ‡เฉฑเจ• เจšเจคเฉเจฐเจญเฉเจœ เจฆเฉ‡ เจคเฉŒเจฐ เจคเฉ‡ เจ‡เฉฑเจ• เจ•เฉเฉฐเจœเฉ€ เจ…เจคเฉ‡ เจ‡เจธเจฆเฉ‡ เจธเฉฐเจฌเฉฐเจงเจฟเจค เจฎเฉเฉฑเจฒ เจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจฌเจพเจ•เจธ เจฆเฉ‡ เจฐเฉ‚เจช เจตเจฟเฉฑเจš เจชเฉเจฐเจฆเจฐเจธเจผเจฟเจค เจ•เจฐเจฆเฉ‡ เจนเฉ‹, เจคเจพเจ‚ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจฆเจพ เจ‡เฉฑเจ• เจตเจฟเจœเจผเฉ‚เจ…เจฒ เจšเจฟเฉฑเจคเจฐ เจฎเจฟเจฒเจฆเจพ เจนเฉˆเฅค

'

เจ†เจˆเจ“เจเจธ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจเจพเจ‚ เจตเจฟเฉฑเจš เจฎเฉเฉฑเจ–-เจฎเฉเฉฑเจฒ เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ LMDB เจฆเฉ€ เจšเจฎเจ• เจ…เจคเฉ‡ เจ—เจฐเฉ€เจฌเฉ€

เจนเจพเจฒเจพเจ‚เจ•เจฟ, เจ…เจธเจฒ เจœเจผเจฟเฉฐเจฆเจ—เฉ€ เจตเจฟเฉฑเจš, เจ‡เฉฐเจจเฉ‡ เจ˜เฉฑเจŸ เจ–เฉ‚เจจ เจจเจพเจฒ เจชเฉเจฐเจพเจชเจค เจ•เจฐเจจเจพ เจธเจผเจพเจ‡เจฆ เจนเฉ€ เจธเฉฐเจญเจต เจนเฉˆ. เจ…เจ•เจธเจฐ เจ‡เฉฑเจ• เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจตเจฟเฉฑเจš เจ‡เจธเจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆ, เจชเจนเจฟเจฒเจพเจ‚, เจ•เจˆ เจŸเฉ‡เจฌเจฒ เจนเฉ‹เจฃ, เจ…เจคเฉ‡ เจฆเฉ‚เจœเจพ, เจชเฉเจฐเจพเจ‡เจฎเจฐเฉ€ เจ•เฉเฉฐเจœเฉ€ เจคเฉ‹เจ‚ เจตเฉฑเจ–เจฐเฉ‡ เจ•เฉเจฐเจฎ เจตเจฟเฉฑเจš เจ‰เจนเจจเจพเจ‚ เจตเจฟเฉฑเจš เจšเฉ‹เจฃ เจ•เจฐเจจ เจฒเจˆ. เจ‡เจน เจ†เจ–เจฐเฉ€ เจญเจพเจ— เจ‰เจนเจจเจพเจ‚ เจฆเฉ€ เจฐเจšเจจเจพ เจ…เจคเฉ‡ เจ…เฉฐเจคเจฐ-เจธเฉฐเจฌเฉฐเจง เจฆเฉ‡ เจฎเฉเฉฑเจฆเจฟเจ†เจ‚ เจจเฉ‚เฉฐ เจธเจฎเจฐเจชเจฟเจค เจนเฉˆเฅค

เจ‡เฉฐเจกเฉˆเจ•เจธ เจŸเฉ‡เจฌเจฒ

เจ•เจฒเจพเจ‰เจก เจเจช เจตเจฟเฉฑเจš เจ‡เฉฑเจ• "เจ—เฉˆเจฒเจฐเฉ€" เจธเฉˆเจ•เจธเจผเจจ เจนเฉˆเฅค เจ‡เจน เจฎเจฟเจคเฉ€ เจฆเฉเจ†เจฐเจพ เจ•เฉเจฐเจฎเจฌเฉฑเจง, เจชเฉ‚เจฐเฉ‡ เจ•เจฒเจพเจ‰เจก เจคเฉ‹เจ‚ เจฎเฉ€เจกเฉ€เจ† เจธเจฎเฉฑเจ—เจฐเฉ€ เจชเฉเจฐเจฆเจฐเจธเจผเจฟเจค เจ•เจฐเจฆเจพ เจนเฉˆเฅค เจ…เจœเจฟเจนเฉ€ เจšเฉ‹เจฃ เจฆเฉ‡ เจ…เจจเฉเจ•เฉ‚เจฒ เจฒเจพเจ—เฉ‚ เจ•เจฐเจจ เจฒเจˆ, เจฎเฉเฉฑเจ– เจธเจพเจฐเจฃเฉ€ เจฆเฉ‡ เจ…เฉฑเจ—เฉ‡, เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจจเจตเฉ€เจ‚ เจ•เจฟเจธเจฎ เจฆเฉ€เจ†เจ‚ เจ•เฉเฉฐเจœเฉ€เจ†เจ‚ เจจเจพเจฒ เจ‡เฉฑเจ• เจนเฉ‹เจฐ เจฌเจฃเจพเจ‰เจฃ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆเฅค เจ‰เจนเจจเจพเจ‚ เจตเจฟเฉฑเจš เจซเจพเจˆเจฒ เจฌเจฃเจพเจ‰เจฃ เจฆเฉ€ เจฎเจฟเจคเฉ€ เจฆเฉ‡ เจจเจพเจฒ เจ‡เฉฑเจ• เจ–เฉ‡เจคเจฐ เจธเจผเจพเจฎเจฒ เจนเฉ‹เจตเฉ‡เจ—เจพ, เจœเฉ‹ เจชเฉเจฐเจพเจ‡เจฎเจฐเฉ€ เจฒเฉœเฉ€เจฌเฉฑเจง เจฎเจพเจชเจฆเฉฐเจก เจตเจœเฉ‹เจ‚ เจ•เฉฐเจฎ เจ•เจฐเฉ‡เจ—เจพเฅค เจ•เจฟเจ‰เจ‚เจ•เจฟ เจจเจตเฉ€เจ†เจ‚ เจ•เฉเฉฐเจœเฉ€เจ†เจ‚ เจ…เฉฐเจกเจฐเจฒเจพเจˆเฉฐเจ— เจŸเฉ‡เจฌเจฒ เจฆเฉ€เจ†เจ‚ เจ•เฉเฉฐเจœเฉ€เจ†เจ‚ เจฆเฉ‡ เจธเจฎเจพเจจ เจกเฉ‡เจŸเจพ เจจเฉ‚เฉฐ เจฆเจฐเจธเจพเจ‰เจ‚เจฆเฉ€เจ†เจ‚ เจนเจจ, เจ‰เจนเจจเจพเจ‚ เจจเฉ‚เฉฐ เจธเฉ‚เจšเจ•เจพเจ‚เจ• เจ•เฉเฉฐเจœเฉ€เจ†เจ‚ เจ•เจฟเจนเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆเฅค เจ‰เจนเจจเจพเจ‚ เจจเฉ‚เฉฐ เจนเฉ‡เจ เจพเจ‚ เจฆเจฟเฉฑเจคเฉ€ เจคเจธเจตเฉ€เจฐ เจตเจฟเฉฑเจš เจธเฉฐเจคเจฐเฉ€ เจตเจฟเฉฑเจš เจ‰เจœเจพเจ—เจฐ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆเฅค

เจ†เจˆเจ“เจเจธ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจเจพเจ‚ เจตเจฟเฉฑเจš เจฎเฉเฉฑเจ–-เจฎเฉเฉฑเจฒ เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ LMDB เจฆเฉ€ เจšเจฎเจ• เจ…เจคเฉ‡ เจ—เจฐเฉ€เจฌเฉ€

เจ‡เฉฑเจ•เฉ‹ เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจฆเฉ‡ เจ…เฉฐเจฆเจฐ เจตเฉฑเจ–-เจตเฉฑเจ– เจŸเฉ‡เจฌเจฒเจพเจ‚ เจฆเฉ€เจ†เจ‚ เจ•เฉเฉฐเจœเฉ€เจ†เจ‚ เจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจฆเฉ‚เจœเฉ‡ เจคเฉ‹เจ‚ เจตเฉฑเจ– เจ•เจฐเจจ เจฒเจˆ, เจ‰เจนเจจเจพเจ‚ เจธเจพเจฐเจฟเจ†เจ‚ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจตเจพเจงเฉ‚ เจคเจ•เจจเฉ€เจ•เฉ€ เจซเฉ€เจฒเจก เจŸเฉ‡เจฌเจฒเจ†เจˆเจกเฉ€ เจธเจผเจพเจฎเจฒ เจ•เฉ€เจคเฉ€ เจ—เจˆ เจนเฉˆเฅค เจ‡เจธ เจจเฉ‚เฉฐ เจ›เจพเจ‚เจŸเจฃ เจฒเจˆ เจธเจญ เจคเฉ‹เจ‚ เจตเฉฑเจง เจคเจฐเจœเฉ€เจน เจฆเฉ‡ เจ•เฉ‡, เจ…เจธเฉ€เจ‚ เจ•เฉเฉฐเจœเฉ€เจ†เจ‚ เจจเฉ‚เฉฐ เจชเจนเจฟเจฒเจพเจ‚ เจŸเฉ‡เจฌเจฒ เจฆเฉเจ†เจฐเจพ, เจ…เจคเฉ‡ เจชเจนเจฟเจฒเจพเจ‚ เจคเฉ‹เจ‚ เจนเฉ€ เจŸเฉ‡เจฌเจฒเจพเจ‚ เจฆเฉ‡ เจ…เฉฐเจฆเจฐ - เจธเจพเจกเฉ‡ เจ†เจชเจฃเฉ‡ เจจเจฟเจฏเจฎเจพเจ‚ เจ…เจจเฉเจธเจพเจฐ เจธเจฎเฉ‚เจน เจฌเจฃเจพเจตเจพเจ‚เจ—เฉ‡เฅค

เจธเฉ‚เจšเจ•เจพเจ‚เจ• เจ•เฉเฉฐเจœเฉ€ เจชเฉเจฐเจพเจ‡เจฎเจฐเฉ€ เจ•เฉเฉฐเจœเฉ€ เจฆเฉ‡ เจฐเฉ‚เจช เจตเจฟเฉฑเจš เจ‡เฉฑเจ•เฉ‹ เจกเฉ‡เจŸเจพ เจจเฉ‚เฉฐ เจฆเจฐเจธเจพเจ‰เจ‚เจฆเฉ€ เจนเฉˆเฅค เจชเฉเจฐเจพเจ‡เจฎเจฐเฉ€ เจ•เฉเฉฐเจœเฉ€ เจฆเฉ‡ เจฎเฉเฉฑเจฒ เจตเจพเจฒเฉ‡ เจนเจฟเฉฑเจธเฉ‡ เจฆเฉ€ เจ‡เฉฑเจ• เจ•เจพเจชเฉ€ เจจเฉ‚เฉฐ เจ‡เจธเจฆเฉ‡ เจจเจพเจฒ เจœเฉ‹เฉœ เจ•เฉ‡ เจ‡เจธ เจตเจฟเจธเจผเฉ‡เจธเจผเจคเจพ เจฆเจพ เจธเจฟเฉฑเจงเจพ เจฒเจพเจ—เฉ‚ เจ•เจฐเจจเจพ เจ‡เฉฑเจ• เจตเจพเจฐ เจตเจฟเฉฑเจš เจ•เจˆ เจฆเฉเจฐเจฟเจธเจผเจŸเฉ€เจ•เฉ‹เจฃเจพเจ‚ เจคเฉ‹เจ‚ เจ‰เจช-เจ‰เจชเจฏเฉ‹เจ— เจนเฉˆ:

  1. เจธเจชเฉ‡เจธ เจฆเฉ‡ เจ•เจฌเจœเจผเฉ‡ เจตเจพเจฒเฉ‡ เจฆเฉเจฐเจฟเจธเจผเจŸเฉ€เจ•เฉ‹เจฃ เจคเฉ‹เจ‚, เจฎเฉˆเจŸเจพเจกเฉ‡เจŸเจพ เจ•เจพเจซเจผเฉ€ เจ…เจฎเฉ€เจฐ เจนเฉ‹ เจธเจ•เจฆเจพ เจนเฉˆเฅค
  2. เจชเฉเจฐเจฆเจฐเจธเจผเจจ เจฆเฉ‡ เจฆเฉเจฐเจฟเจธเจผเจŸเฉ€เจ•เฉ‹เจฃ เจคเฉ‹เจ‚, เจ•เจฟเจ‰เจ‚เจ•เจฟ เจจเฉ‹เจก เจฎเฉˆเจŸเจพเจกเฉ‡เจŸเจพ เจจเฉ‚เฉฐ เจ…เฉฑเจชเจกเฉ‡เจŸ เจ•เจฐเจฆเฉ‡ เจธเจฎเฉ‡เจ‚, เจคเฉเจนเจพเจจเฉ‚เฉฐ เจฆเฉ‹ เจ•เฉเฉฐเจœเฉ€เจ†เจ‚ เจจเฉ‚เฉฐ เจ“เจตเจฐเจฐเจพเจˆเจŸ เจ•เจฐเจจเจพ เจชเจตเฉ‡เจ—เจพเฅค
  3. เจ•เฉ‹เจก เจธเจฎเจฐเจฅเจจ เจฆเฉ‡ เจฆเฉเจฐเจฟเจธเจผเจŸเฉ€เจ•เฉ‹เจฃ เจคเฉ‹เจ‚, เจ†เจ–เจผเจฐเจ•เจพเจฐ, เจœเฉ‡ เจ…เจธเฉ€เจ‚ เจ•เจฟเจธเฉ‡ เจ‡เฉฑเจ• เจ•เฉเฉฐเจœเฉ€ เจฒเจˆ เจกเฉ‡เจŸเจพ เจจเฉ‚เฉฐ เจ…เจชเจกเฉ‡เจŸ เจ•เจฐเจจเจพ เจญเฉเฉฑเจฒ เจœเจพเจ‚เจฆเฉ‡ เจนเจพเจ‚, เจคเจพเจ‚ เจธเจพเจจเฉ‚เฉฐ เจธเจŸเฉ‹เจฐเฉ‡เจœ เจตเจฟเฉฑเจš เจกเฉ‡เจŸเจพ เจ…เจธเฉฐเจ—เจคเจคเจพ เจฆเจพ เจ‡เฉฑเจ• เจธเฉ‚เจ–เจฎ เจฌเฉฑเจ— เจฎเจฟเจฒเฉ‡เจ—เจพ.

เจ…เฉฑเจ—เฉ‡, เจ…เจธเฉ€เจ‚ เจตเจฟเจšเจพเจฐ เจ•เจฐเจพเจ‚เจ—เฉ‡ เจ•เจฟ เจ‡เจนเจจเจพเจ‚ เจ•เจฎเฉ€เจ†เจ‚ เจจเฉ‚เฉฐ เจ•เจฟเจตเฉ‡เจ‚ เจฆเฉ‚เจฐ เจ•เจฐเจจเจพ เจนเฉˆ.

เจŸเฉ‡เจฌเจฒ เจฆเฉ‡ เจตเจฟเจšเจ•เจพเจฐ เจธเจฌเฉฐเจงเจพเจ‚ เจฆเจพ เจธเฉฐเจ—เจ เจจ

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

เจ†เจˆเจ“เจเจธ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจเจพเจ‚ เจตเจฟเฉฑเจš เจฎเฉเฉฑเจ–-เจฎเฉเฉฑเจฒ เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ LMDB เจฆเฉ€ เจšเจฎเจ• เจ…เจคเฉ‡ เจ—เจฐเฉ€เจฌเฉ€

เจŸเฉ‡เจฌเจฒ เจฆเฉ‡ เจตเจฟเจšเจ•เจพเจฐ เจธเจฌเฉฐเจงเจพเจ‚ เจจเฉ‚เฉฐ เจธเฉฐเจ—เจ เจฟเจค เจ•เจฐเจจ เจฒเจˆ เจ‡เฉฑเจ• เจนเฉ‹เจฐ เจชเฉˆเจŸเจฐเจจ เจนเฉˆ "เจฌเฉ‡เจฒเฉ‹เฉœเฉ€ เจ•เฉเฉฐเจœเฉ€". เจ‡เจธเจฆเจพ เจธเจพเจฐ เจ•เฉเฉฐเจœเฉ€ เจตเจฟเฉฑเจš เจตเจพเจงเฉ‚ เจตเจฟเจธเจผเฉ‡เจธเจผเจคเจพเจตเจพเจ‚ เจœเฉ‹เฉœเจจเจพ เจนเฉˆ, เจœเฉ‹ เจ•เจฟ เจ›เจพเจ‚เจŸเจฃ เจฒเจˆ เจจเจนเฉ€เจ‚, เจชเจฐ เจธเฉฐเจฌเฉฐเจงเจฟเจค เจ•เฉเฉฐเจœเฉ€ เจจเฉ‚เฉฐ เจฎเฉเฉœ เจฌเจฃเจพเจ‰เจฃ เจฒเจˆ เจฒเฉ‹เฉœเฉ€เจ‚เจฆเฉ‡ เจนเจจเฅค Mail.ru เจ•เจฒเจพเจ‰เจก เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจตเจฟเฉฑเจš เจ‡เจธเจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจฆเฉ€เจ†เจ‚ เจ…เจธเจฒ เจ‰เจฆเจพเจนเจฐเจฃเจพเจ‚ เจนเจจ, เจนเจพเจฒเจพเจ‚เจ•เจฟ, เจ‡เจธ เจตเจฟเฉฑเจš เจกเฉ‚เฉฐเจ˜เฉ€ เจ—เฉ‹เจคเจพเจ–เฉ‹เจฐเฉ€ เจคเฉ‹เจ‚ เจฌเจšเจฃ เจฒเจˆ เจ–เจพเจธ iOS เจซเจฐเฉ‡เจฎเจตเจฐเจ• เจฆเฉ‡ เจธเฉฐเจฆเจฐเจญ เจตเจฟเฉฑเจš, เจฎเฉˆเจ‚ เจ‡เฉฑเจ• เจซเจฐเจœเจผเฉ€, เจชเจฐ เจ‡เฉฑเจ• เจนเฉ‹เจฐ เจธเจฎเจเจฃ เจฏเฉ‹เจ— เจ‰เจฆเจพเจนเจฐเจฃ เจฆเฉ‡เจตเจพเจ‚เจ—เจพเฅค

เจ•เจฒเจพเจ‰เจก เจฎเฉ‹เจฌเจพเจˆเจฒ เจ•เจฒเจพเจ‡เฉฐเจŸเจธ เจ•เฉ‹เจฒ เจ‡เฉฑเจ• เจชเฉฐเจจเจพ เจนเฉเฉฐเจฆเจพ เจนเฉˆ เจœเฉ‹ เจธเจพเจฐเฉ€เจ†เจ‚ เจซเจพเจˆเจฒเจพเจ‚ เจ…เจคเฉ‡ เจซเฉ‹เจฒเจกเจฐเจพเจ‚ เจจเฉ‚เฉฐ เจชเฉเจฐเจฆเจฐเจธเจผเจฟเจค เจ•เจฐเจฆเจพ เจนเฉˆ เจœเฉ‹ เจ‰เจชเจญเฉ‹เจ—เจคเจพ เจฆเฉเจ†เจฐเจพ เจฆเฉ‚เจœเฉ‡ เจฒเฉ‹เจ•เจพเจ‚ เจจเจพเจฒ เจธเจพเจ‚เจเฉ‡ เจ•เฉ€เจคเฉ‡ เจ—เจ เจนเจจ. เจ•เจฟเจ‰เจ‚เจ•เจฟ เจ…เจœเจฟเจนเฉ€เจ†เจ‚ เจซเจพเจˆเจฒเจพเจ‚ เจฎเฉเจ•เจพเจฌเจฒเจคเจจ เจฌเจนเฉเจค เจ˜เฉฑเจŸ เจนเจจ, เจ…เจคเฉ‡ เจ‰เจนเจจเจพเจ‚ เจจเจพเจฒ เจœเฉเฉœเฉ‡ เจชเฉเจฐเจšเจพเจฐ เจฌเจพเจฐเฉ‡ เจฌเจนเฉเจค เจธเจพเจฐเฉ€ เจ–เจพเจธ เจœเจพเจฃเจ•เจพเจฐเฉ€ เจนเฉˆ (เจœเจฟเจธ เจจเฉ‚เฉฐ เจชเจนเฉเฉฐเจš เจฆเจฟเฉฑเจคเฉ€ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆ, เจ•เจฟเจนเฉœเฉ‡ เจ…เจงเจฟเจ•เจพเจฐเจพเจ‚ เจจเจพเจฒ, เจ†เจฆเจฟ), เจ‡เจธ เจฆเฉ‡ เจฎเฉเฉฑเจฒ-เจนเจฟเฉฑเจธเฉ‡ เจจเจพเจฒ เจ‡เจธ เจจเฉ‚เฉฐ เจฌเฉ‹เจ เจ•เจฐเจจเจพ เจคเจฐเจ•เจธเฉฐเจ—เจค เจจเจนเฉ€เจ‚ เจนเฉ‹เจตเฉ‡เจ—เจพเฅค เจฎเฉเฉฑเจ– เจธเจพเจฐเจฃเฉ€ เจตเจฟเฉฑเจš เจฆเจพเจ–เจฒเจพ. เจนเจพเจฒเจพเจ‚เจ•เจฟ, เจœเฉ‡เจ•เจฐ เจคเฉเจธเฉ€เจ‚ เจ…เจœเจฟเจนเฉ€เจ†เจ‚ เจซเจพเจˆเจฒเจพเจ‚ เจจเฉ‚เฉฐ เจ”เจซเจฒเจพเจˆเจจ เจชเฉเจฐเจฆเจฐเจธเจผเจฟเจค เจ•เจฐเจจเจพ เจšเจพเจนเฉเฉฐเจฆเฉ‡ เจนเฉ‹, เจคเจพเจ‚ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ…เจœเฉ‡ เจตเฉ€ เจ‡เจธเจจเฉ‚เฉฐ เจ•เจฟเจคเฉ‡ เจธเจŸเฉ‹เจฐ เจ•เจฐเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆเฅค เจ‡เฉฑเจ• เจ•เฉเจฆเจฐเจคเฉ€ เจนเฉฑเจฒ เจนเฉˆ เจ‡เจธเจฆเฉ‡ เจฒเจˆ เจ‡เฉฑเจ• เจตเฉฑเจ–เจฐเจพ เจฎเฉ‡เจœเจผ เจฌเจฃเจพเจ‰เจฃเจพเฅค เจนเฉ‡เจ เจพเจ‚ เจฆเจฟเฉฑเจคเฉ‡ เจšเจฟเฉฑเจคเจฐ เจตเจฟเฉฑเจš, เจ‡เจธเจฆเฉ€ เจ•เฉเฉฐเจœเฉ€ เจจเฉ‚เฉฐ "P" เจจเจพเจฒ เจชเฉเจฐเฉ€เจซเจฟเจ•เจธ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆ, เจ…เจคเฉ‡ "เจชเฉเจฐเฉ‹เจชเจจเฉ‡เจฎ" เจชเจฒเฉ‡เจธเจนเฉ‹เจฒเจกเจฐ เจจเฉ‚เฉฐ เจตเจงเฉ‡เจฐเฉ‡ เจ–เจพเจธ เจฎเฉเฉฑเจฒ "เจœเจจเจคเจ• เจœเจพเจฃเจ•เจพเจฐเฉ€" เจจเจพเจฒ เจฌเจฆเจฒเจฟเจ† เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆเฅค

เจ†เจˆเจ“เจเจธ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจเจพเจ‚ เจตเจฟเฉฑเจš เจฎเฉเฉฑเจ–-เจฎเฉเฉฑเจฒ เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ LMDB เจฆเฉ€ เจšเจฎเจ• เจ…เจคเฉ‡ เจ—เจฐเฉ€เจฌเฉ€

เจธเจพเจฐเฉ‡ เจตเจฟเจฒเฉฑเจ–เจฃ เจฎเฉˆเจŸเจพเจกเฉ‡เจŸเจพ, เจœเจฟเจธ เจฒเจˆ เจจเจตเฉ€เจ‚ เจธเจพเจฐเจฃเฉ€ เจฌเจฃเจพเจˆ เจ—เจˆ เจธเฉ€, เจจเฉ‚เฉฐ เจฐเจฟเจ•เจพเจฐเจก เจฆเฉ‡ เจฎเฉเฉฑเจฒ เจตเจพเจฒเฉ‡ เจนเจฟเฉฑเจธเฉ‡ เจตเจฟเฉฑเจš เจญเฉ‡เจœเจฟเจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆเฅค เจ‰เจธเฉ‡ เจธเจฎเฉ‡เจ‚, เจฎเฉˆเจ‚ เจ‰เจนเจจเจพเจ‚ เจซเจพเจˆเจฒเจพเจ‚ เจ…เจคเฉ‡ เจซเฉ‹เจฒเจกเจฐเจพเจ‚ เจฌเจพเจฐเฉ‡ เจกเฉ‡เจŸเจพ เจจเฉ‚เฉฐ เจกเฉเจชเจฒเฉ€เจ•เฉ‡เจŸ เจจเจนเฉ€เจ‚ เจ•เจฐเจจเจพ เจšเจพเจนเฉเฉฐเจฆเจพ เจœเฉ‹ เจชเจนเจฟเจฒเจพเจ‚ เจนเฉ€ เจฎเฉเฉฑเจ– เจธเจพเจฐเจฃเฉ€ เจตเจฟเฉฑเจš เจธเจŸเฉ‹เจฐ เจ•เฉ€เจคเฉ‡ เจ—เจ เจนเจจ. เจ‡เจธเจฆเฉ€ เจฌเจœเจพเจ, "เจจเฉ‹เจก ID" เจ…เจคเฉ‡ "เจŸเจพเจˆเจฎเจธเจŸเฉˆเจ‚เจช" เจ–เฉ‡เจคเจฐเจพเจ‚ เจฆเฉ‡ เจฐเฉ‚เจช เจตเจฟเฉฑเจš "P" เจ•เฉเฉฐเจœเฉ€ เจตเจฟเฉฑเจš เจฌเฉ‡เจฒเฉ‹เฉœเจพ เจกเฉ‡เจŸเจพ เจœเฉ‹เฉœเจฟเจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆเฅค เจ‰เจนเจจเจพเจ‚ เจฆเจพ เจงเฉฐเจจเจตเจพเจฆ, เจคเฉเจธเฉ€เจ‚ เจ‡เฉฑเจ• เจ‡เฉฐเจกเฉˆเจ•เจธ เจ•เฉเฉฐเจœเฉ€ เจฌเจฃเจพ เจธเจ•เจฆเฉ‡ เจนเฉ‹, เจœเจฟเจธ เจฆเฉเจ†เจฐเจพ เจคเฉเจธเฉ€เจ‚ เจชเฉเจฐเจพเจ‡เจฎเจฐเฉ€ เจ•เฉเฉฐเจœเฉ€ เจชเฉเจฐเจพเจชเจค เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹, เจœเจฟเจธ เจฆเฉเจ†เจฐเจพ, เจ…เฉฐเจค เจตเจฟเฉฑเจš, เจคเฉเจธเฉ€เจ‚ เจจเฉ‹เจก เจฆเจพ เจฎเฉˆเจŸเจพเจกเฉ‡เจŸเจพ เจชเฉเจฐเจพเจชเจค เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹.

เจธเจฟเฉฑเจŸเจพ

เจ…เจธเฉ€เจ‚ LMDB เจฒเจพเจ—เฉ‚ เจ•เจฐเจจ เจฆเฉ‡ เจจเจคเฉ€เจœเจฟเจ†เจ‚ เจฆเจพ เจธเจ•เจพเจฐเจพเจคเจฎเจ• เจฎเฉเจฒเจพเจ‚เจ•เจฃ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚เฅค เจ‡เจธ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ, เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจซเฉเจฐเฉ€เจœเจผ เจฆเฉ€ เจ—เจฟเจฃเจคเฉ€ 30% เจ˜เจŸ เจ—เจˆ.

เจ†เจˆเจ“เจเจธ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจเจพเจ‚ เจตเจฟเฉฑเจš เจฎเฉเฉฑเจ–-เจฎเฉเฉฑเจฒ เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ LMDB เจฆเฉ€ เจšเจฎเจ• เจ…เจคเฉ‡ เจ—เจฐเฉ€เจฌเฉ€

เจ•เฉ€เจคเฉ‡ เจ—เจ เจ•เฉฐเจฎ เจฆเฉ‡ เจจเจคเฉ€เจœเจฟเจ†เจ‚ เจจเฉ‚เฉฐ เจ†เจˆเจ“เจเจธ เจŸเฉ€เจฎ เจฆเฉ‡ เจฌเจพเจนเจฐ เจ‡เฉฑเจ• เจœเจตเจพเจฌ เจฎเจฟเจฒเจฟเจ† เจนเฉˆ. เจตเจฐเจคเจฎเจพเจจ เจตเจฟเฉฑเจš, เจเจ‚เจกเจฐเฉŒเจ‡เจก เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจตเจฟเฉฑเจš เจฎเฉเฉฑเจ– "เจซเจพเจ‡เจฒเจพเจ‚" เจญเจพเจ—เจพเจ‚ เจตเจฟเฉฑเจšเฉ‹เจ‚ เจ‡เฉฑเจ• เจจเฉ‡ เจตเฉ€ LMDB เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจ เจฒเจˆ เจธเจตเจฟเจš เจ•เฉ€เจคเจพ เจนเฉˆ, เจ…เจคเฉ‡ เจนเฉ‹เจฐ เจนเจฟเฉฑเจธเฉ‡ เจฐเจธเจคเฉ‡ เจตเจฟเฉฑเจš เจนเจจเฅค C เจญเจพเจธเจผเจพ, เจœเจฟเจธ เจตเจฟเฉฑเจš เจ•เฉเฉฐเจœเฉ€-เจฎเฉเฉฑเจฒ เจธเจŸเฉ‹เจฐเฉ‡เจœเจผ เจจเฉ‚เฉฐ เจฒเจพเจ—เฉ‚ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆ, เจธเจผเฉเจฐเฉ‚ เจตเจฟเฉฑเจš C++ เจญเจพเจธเจผเจพ เจตเจฟเฉฑเจš เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจจเฉ‚เฉฐ เจ‡เจธเจฆเฉ‡ เจ†เจฒเฉ‡-เจฆเฉเจ†เจฒเฉ‡ เจฌเจพเจˆเจกเจฟเฉฐเจ— เจฌเจฃเจพเจ‰เจฃ เจฒเจˆ เจ‡เฉฑเจ• เจšเฉฐเจ—เฉ€ เจฎเจฆเจฆ เจธเฉ€เฅค เจ‰เจฆเฉ‡เจธเจผ-เจธเฉ€ เจ…เจคเฉ‡ เจ•เฉ‹เจŸเจฒเจฟเจจ เจตเจฟเฉฑเจš เจชเจฒเฉ‡เจŸเจซเจพเจฐเจฎ เจ•เฉ‹เจก เจฆเฉ‡ เจจเจพเจฒ เจจเจคเฉ€เจœเฉ‡ เจตเจœเฉ‹เจ‚ C ++ เจฒเจพเจ‡เจฌเฉเจฐเฉ‡เจฐเฉ€ เจฆเฉ‡ เจ‡เฉฑเจ• เจธเจนเจฟเจœ เจ•เฉเจจเฉˆเจ•เจธเจผเจจ เจฒเจˆ, เจ‡เฉฑเจ• เจ•เฉ‹เจก เจœเจจเจฐเฉ‡เจŸเจฐ เจตเจฐเจคเจฟเจ† เจ—เจฟเจ† เจธเฉ€ เจœเจฟเฉฐเจจเฉ€ เจกเฉเจฐเฉŒเจชเจฌเจพเจ•เจธ เจคเฉ‹เจ‚, เจชเจฐ เจ‡เจน เจ‡เจ• เจนเฉ‹เจฐ เจ•เจนเจพเจฃเฉ€ เจนเฉˆเฅค

เจธเจฐเฉ‹เจค: www.habr.com

เจ‡เฉฑเจ• เจŸเจฟเฉฑเจชเจฃเฉ€ เจœเฉ‹เฉœเฉ‹