Таван жил хөгжүүлсний дараа libmdbx v1.0-ийн хоёр дахь хувилбар.

номын сан libmdbx нь LMDB-ийн ихээхэн шинэчлэгдсэн үр удам бөгөөд маш өндөр гүйцэтгэлтэй, авсаархан суулгагдсан түлхүүр утгын мэдээллийн сан юм.
Одоогийн v0.5 хувилбар нь техникийн хувилбар бөгөөд аливаа сайжруулалт дууссан, нийтийн эцсийн туршилт, тогтворжуулалтын үе шат руу шилжиж, номын сангийн анхны бүрэн хувилбарыг бий болгосныг харуулж байна.

LMDB дээр суурилсан нэлээн алдартай гүйлгээний суулгагдсан түлхүүр-утга DBMS юм мод B+ ямар ч идэвхтэй мод бэлтгэх, энэ нь олон урсгалтай процессуудыг орон нутгийн хуваалцсан (сүлжээний биш) мэдээллийн баазтай өрсөлдөхүйц, маш үр дүнтэй ажиллах боломжийг олгодог. Хариуд нь MDBX нь LMDB-ээс илүү хурдан бөгөөд найдвартай байдаг бол libmdbx нь өвөг дээдсийнхээ бүх гол шинж чанаруудыг хадгалдаг. ХҮЧИЛ болон блоклохгүй процессорын цөмд шугаман масштабаар уншдаг, мөн хэд хэдэн шинээр нэмдэг.

LMDB-тэй харьцуулахад libmdbx-ийн ялгаа, сайжруулалтын талаархи тайлбарыг тусдаа өгүүлэлд оруулах нь зүйтэй (Habré болон Medium дээр нийтлэхээр төлөвлөж байна). Энд хамгийн чухал бөгөөд анхаарал татахуйц зүйлийг дурдах нь зүйтэй юм.

  • Үндсэндээ кодын чанар, туршилт, автомат шалгалтанд илүү анхаарал хандуулдаг.
  • Ашиглалтын явцад параметрүүдийг шалгахаас эхлээд мэдээллийн сангийн бүтцийн дотоод аудит хүртэл мэдэгдэхүйц илүү хяналт.
  • Автомат нягтаршил, мэдээллийн сангийн хэмжээг автоматаар удирдах.
  • 32 ба 64 битийн угсралтад зориулсан мэдээллийн сангийн нэг формат.
  • Түүврийн хэмжээг мужаар тооцох (мужийн асуулгын тооцоо).
  • Хуушуураас хоёр дахин том товчлуурууд болон хэрэглэгчийн сонгох боломжтой мэдээллийн сангийн хуудасны хэмжээг дэмждэг.

libmdbx хувилбарын нэр дэвшигч нь 2019 оны 2-р сард MDBX болон MithrilDB төслүүдийг салгах шийдвэрийн (доороос харна уу) үр дүн юм. Үүний зэрэгцээ libmdbx (онцгой) техникийн өрийг арилгаж, номын санг тогтворжуулахаар шийдсэн. Үнэн хэрэгтээ, тогтоосон чиглэлд анх тооцож, төлөвлөж байснаас 3-XNUMX дахин их зүйлийг хийсэн.

  • Mac OS болон хоёрдугаар түвшний платформуудад зориулсан дэмжлэгийг хэрэгжүүлсэн: FreeBSD, Solaris, DragonFly BSD, OpenBSD, NetBSD. Шаардлагатай бол AIX болон HP-UX дэмжлэгийг нэмж болно.
  • Энэхүү кодыг тодорхойгүй зан үйлийн ариутгагч болон хаягийн ариутгагчийг ашиглан ариутгасан бөгөөд -Wpedantic-тэй барилга барих үеийн бүх анхааруулга, Coverity статик анализаторын бүх анхааруулга зэргийг устгасан.
  • Шинэчлэх API тайлбар.
  • Суулгахад хялбар болгох үүднээс эх кодыг нэгтгэх.
  • CMake дэмжлэг.
  • Оруулсан гүйлгээг дэмжих.
  • Үйлдлийн систем дахин ачаалагдсан эсэхийг тодорхойлохын тулд bootid ашиглан (бохир мэдээллийн сангийн зогсолт).
  • Шинэчлэгдсэн/хуучин хуудсууд болон өргөтгөсөн гүйлгээний мэдээллийг төгсгөл хүртэл тоолох.
  • Тохиромжтой горимд аль хэдийн нээлттэй мэдээллийн санд холбогдох MDBX_ACCEDE сонголт.
  • Ашиглах OFD блоклох боломжтой үед.
  • Хоолойд халуун нөөцлөлт.
  • Мэргэшсэн оновчтой дотоод эрэмбэлэх алгоритм (qsort()-аас 2-3 дахин, std::sort()-аас 30% хүртэл хурдан).
  • Түлхүүрийн дээд уртыг нэмэгдүүлсэн.
  • Урьдчилан унших автомат удирдлага (санах ой дахь өгөгдлийн сангийн файлыг кэшлэх стратеги).
  • Илүү түрэмгий, хурдан автомат нягтаршил.
  • B + модны хуудсыг нэгтгэх илүү оновчтой стратеги.
  • Хэрэв буруу ашиглавал мэдээллийн санд гэмтэл учруулахаас сэргийлэхийн тулд орон нутгийн бус файлын системийг (NFS, Samba гэх мэт) хянах.
  • Туршилтын багцыг өргөжүүлсэн.

libmdbx-ийн "дараагийн" хувилбарыг хөгжүүлэх нь тусдаа төсөл хэлбэрээр үргэлжлэх болно MithrilDB, харин MDBX-ийн "одоогийн" хувилбарын хөгжүүлэлтийн вектор нь функцийн багцыг царцаах, тогтворжуулахад чиглэгддэг. Энэхүү шийдвэрийг гурван шалтгааны улмаас гаргасан.

  • Бүрэн нийцгүй: MithrilDB нь төлөвлөсөн бүх функцийг хэрэгжүүлэхийн тулд өөр (тохиромжгүй) өгөгдлийн сангийн файлын формат болон өөр (тохиромжгүй) API шаарддаг.
  • Шинэ эх код: MithrilDB эх кодыг LMDB-ээс хараат бус лицензтэй болгосон бөгөөд төсөл нь өөрөө өөр лицензийн дагуу хэвлэгдэхээр төлөвлөж байна (зөвшөөрсөн Эсвэл Тусгай зөвшөөрөл Apache 2.0, үгүй ​​ээ OpenLDAP сан).
  • Тусгаарлах нь болзошгүй будлианаас зайлсхийж, илүү тодорхой байдлыг хангаж, төслүүдийг урагшлах бие даасан замыг баталгаажуулдаг.

MDBX шиг MithrilDB нь мөн дээр суурилсан мод B+ Мөн MDBX болон LMDB-ийн хэд хэдэн үндсэн сул талуудыг арилгахын зэрэгцээ маш өндөр гүйцэтгэлтэй байх болно. Тэр дундаа удаан уншсан гүйлгээгээр хог боловсруулах үйл ажиллагаа гацаж, мэдээллийн санд “хавдардаг” асуудал арилна. MithrilDB-ийн шинэ онцлогууд нь:

  • HDD, SSD, тогтворгүй санах ой зэрэг хэд хэдэн төрлийн бус зөөвөрлөгч дээр мэдээллийн санг байрлуулахад дэмжлэг үзүүлэх.
  • "үнэ цэнэтэй" ба "бага үнэ цэнэтэй", "халуун", "дулаан" болон "хүйтэн" мэдээллийн оновчтой стратеги.
  • Мэдээллийн сангийн бүрэн бүтэн байдлыг хянахын тулд Merkle модыг ашиглах.
  • WAL-г нэмэлтээр ашиглах ба бичихэд эрчимтэй хувилбаруудад илүү өндөр гүйцэтгэл, өгөгдлийн бүрэн бүтэн байдлын баталгаа.
  • Диск дээрх өгөгдлийн залхууг засах.

Эх сурвалж: linux.org.ru

сэтгэгдэл нэмэх