# LMDB

# What is LMDB

LMDB ๋Š” Sysmas Lightning Memory-mapped DataBase ์ค€๋ง์ด๋ฉฐ Synas OpenLDAP Project๋ฅผ ์œ„ํ•ด ๊ฐœ๋ฐœ ํ•œ ๋งค์šฐ ๋น ๋ฅธ ๋ฉ”๋ชจ๋ฆฌ๊ธ‰ ํšจ์œจ์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์ด๋‹ค.

# ๊ธฐ๋Šฅ

  • ์ •๋ ฌ๋œ ๋งต ์ธํ„ฐํŽ˜์ด์Šค โ†’ ๋ฒ”์œ„ ๊ฒ€์ƒ‰ ์ง€์›

  • MVCC๋ฅผ ์‚ฌ์šฉํ•œ ํŠธ๋žœ์žญ์…˜ ๊ธฐ๋Šฅ, ACID ๊ฐœ๋… ๊ฐ€๋Šฅ

  • ์ฝ๊ธฐ/์“ฐ๊ธฐ ํŠธ๋žœ์žญ์…˜ โ†’ ์ฝ๊ธฐ๋Š” ์“ฐ๊ธฐ๋ฅผ ๋ธ”๋กํ•˜์ง€ ์•Š๊ณ , ์“ฐ๊ธฐ๋Š” ์ฝ๊ธฐ๋ฅผ ๋ธ”๋กํ•˜์ง€ ์•Š๋Š”๋‹ค

  • Fully serialized ์“ฐ๊ธฐ ๊ธฐ๋Šฅ โ†’ ์“ฐ๊ธฐ๋Š” ๊ต์ฐฉ์ƒํƒœ ๋ฐœ์ƒํ•˜์ง€ ์•Š์Œ

  • Extremely cheap read(๋งค์šฐ ์ €๋ ดํ•œ) ์ฝ๊ธฐ ํŠธ๋žœ์žญ์…˜ โ†’ ๋ธ”๋ฝ์ด ๋˜๋Š” ํ˜ธ์ถœ์ด๋‚˜ ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น ์—†์ด ์‹คํ–‰ ๊ฐ€๋Šฅ

  • ๋‹ค์ค‘ ์Šค๋ ˆ๋“œ, ๋‹ค์ค‘ ํ”„๋กœ์„ธ์Šค ๋™์‹œ ์ง€์›

  • ๋ฉ”๋ชจ๋ฆฌ๋งคํ•‘์œผ๋กœ, ๊ฒ€์ƒ‰์ด๋‚˜ ๋ฐ˜๋ณต ์ž‘์—…์— Zero-Copy ๊ฐ€๋Šฅ

  • ์œ ์ง€๋ณด์ˆ˜ ํ•„์š” ์—†์Œ

  • ์ถฉ๋Œ ๋ฐฉ์ง€ โ†’ No ๋กœ๊ทธ, No ์ถฉ๋Œ ๋ณต๊ตฌ ํ”„๋กœ์‹œ์ ธ

  • ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ์ˆ˜์ค€ ์บ์‹ฑ ๋ถˆํ•„์š” โ†’ LMDB๋Š” ์šด์˜ ์ฒด์ œ์˜ ๋ฒ„ํผ ์บ์‹œ๋ฅผ ์™„์ „ํžˆ ํ™œ์šฉํ•จ

  • 32K ํฌ๊ธฐ์˜ Object ํŒŒ์ผ, C์ฝ”๋“œ๋กœ 6์ฒœ๋ผ์ธ(KLOC)

# Reference

# What is

  • https://www.symas.com/lmdb
  • https://lmdb.readthedocs.io/en/release/#
  • https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=tosemfaos&logNo=220919092977

# Download

  • https://git.openldap.org/openldap/openldap/-/tree/mdb.master/libraries/liblmdb
  • https://github.com/LMDB/lmdb/tree/mdb.master/libraries/liblmdb

# Benchmarks

  • https://www.symas.com/symas-lmdb-tech-info#Benchmarks
  • https://github.com/lmdbjava/benchmarks/blob/master/results/20160710/README.md
  • https://github.com/LMDB/dbbench
  • https://github.com/ktmud/multilevel-bench#results
  • https://www.gushiciku.cn/pl/2cBB