Onye ntọhapụ nke abụọ libmdbx v1.0 ka afọ ise nke mmepe gasịrị.

ọbá akwụkwọ libmdbx является существенно переработанным потомком LMDB — предельно высокопроизводительной, компактной встраиваемой базой данных класса ключ-значение.
Текущая версия v0.5 является техническим релизом, отмечает завершение каких-либо доработок и переход к фазе публичного финального тестирования и стабилизации, с последующем формированием первого полноценного релиза библиотеки.

LMDB является достаточно известной транзакционной встраиваемой СУБД класса «ключ-значение» на основе osisi B + enweghị igbu osisi nke ọma, которая позволяет рою многопоточных процессов конкурентно и предельно эффективно работать с локально-разделяемой (не сетевой) БД. В свою очередь MDBX быстрее и надежнее LMDB, при этом libmdbx сохраняет все ключевые возможности своего прародителя, такие как Acid и неблокирующее чтение с линейным масштабированием по ядрам CPU, а также добавляет несколько новых.

Описание отличий и усовершенствований libmdbx относительно LMDB заслуживает отдельной статьи (планируется публикации на «Хабре» и «Medium»). Здесь же уместно упомянуть самые важные и заметные:

  • N'ụzọ bụ isi, a na-akwụkwu nlebara anya na njirimara koodu, nnwale na nlele akpaaka.
  • Na-achịkwa nke ọma n'oge a na-arụ ọrụ, site na ịlele paramita ruo n'ime nyocha nke ụlọ nchekwa data.
  • Nchekwa akpaaka yana njikwa nha nchekwa data akpaka.
  • Otu usoro nchekwa data maka mgbakọ 32-bit na 64-bit.
  • Оценка объема выборок по диапазонам (range query estimation).
  • Nkwado maka igodo okpukpu abụọ buru ibu dị ka pancakes na ibe nchekwa data onye ọrụ nwere ike ịhọrọ.

Выпущенный релиз-кандидат libmdbx является результатом решения (см далее) о разделении проектов MDBX и MithrilDB в августе 2019. При этом в libmdbx было решено устранить (рациональный) максимум технического долга и стабилизировать библиотеку. По-факту в обозначенном направлении сделано в 2-3 раза больше, чем оценивалось и планировалось исходно:

  • Реализована поддержка Mac OS и платформ «второго эшелона»: FreeBSD, Solaris, DragonFly BSD, OpenBSD, NetBSD. Поддержка AIX и HP -UX может быть добавлена при необходимости.
  • Проведена санация кода при помощи Undefined Behavior Sanitizer и Address Sanitizer, устранены все предупреждения при сборке с -Wpedantic, все предупреждения Coverity Static Analyzer и т. д.
  • Mmelite Nkọwa API.
  • Амальгамация исходного кода для удобства встраивания.
  • Mee nkwado.
  • Nkwado maka azụmahịa akwụ ụgwọ.
  • Iji bootid iji chọpụta ma OS agbagoro (nkwụsị nchekwa data ruru unyi).
  • Сквозной подсчет обновлённых/старых страниц и расширенная информация о транзакциях.
  • Nhọrọ MDBX_ACCDE maka ijikọ na nchekwa data mepere emepe na ọnọdụ dakọtara.
  • Jiri OFD igbochi mgbe enwere ya.
  • Ndabere na-ekpo ọkụ na ọkpọkọ.
  • Специализированный оптимизированный алгоритм внутренней сортировки (до 2-3 раз быстрее qsort() и до 30% быстрее std::sort()).
  • Agbanyela ogologo igodo kachasị.
  • Njikwa akpaaka nke ịgụ n'ihu (atụmatụ nchekwa nchekwa faịlụ na ebe nchekwa).
  • Mgbakwunye akpaaka na-eme ihe ike na ngwa ngwa.
  • Atụmatụ kachasị mma maka ijikọ ibe osisi B+.
  • Контроль не-локальных файловых систем (NFS, Samba и т.п.) для предотвращения повреждения БД при неверном использовании.
  • A gbasaala usoro ule.

Mmepe nke ụdị "na-esote" nke libmdbx ga-aga n'ihu dị ka ọrụ dị iche MithrilDB, ebe vector mmepe nke ụdị "nke dị ugbu a" nke MDBX bụ iji mee ka atụmatụ ahụ sie ike ma mee ka ọ kwụsie ike. E mere mkpebi a n'ihi ihe atọ:

  • Kpamkpam ekwekọghị: MithrilDB chọrọ ụdị faịlụ nchekwa data dị iche (anaghị ekwekọ) yana API dị iche (anaghị ekwekọ) iji mejuputa atụmatụ niile akwadoro.
  • Koodu isi mmalite ọhụrụ: Koodu isi iyi MithrilDB ka enyere ikike n'adabereghị na LMDB, yana atụmatụ a ga-ebipụta ya n'okpuru ikike dị iche (nke kwadoro ya. MA Ọ B IF Ọ B .R. ikike Apache 2.0ma ọ bụghị OpenLDAP Foundation).
  • Разделение позволяет избежать потенциальную путаницу, внести больше определенности и обеспечить независимость пути развития проектов.

MithrilDB, dị ka MDBX, dabere na osisi B + ma ga-egosipụtakwa arụmọrụ dị oke elu, ebe ọ na-ewepụ ọtụtụ ọghọm dị mkpa nke MDBX na LMDB. Karịsịa, a ga-ewepụ nsogbu nke "ogologo agụ", nke na-egosipụta onwe ya dị ka "ọzịza" nke nchekwa data n'ihi na a na-egbochi nhazi ihe mkpofu site na azụmahịa ogologo oge. Atụmatụ MithrilDB ọhụrụ gụnyere:

  • поддержка размещения БД на нескольких разнородных носителях: HDD, SSD и энергонезависимой памяти.
  • оптимальные стратегии для «ценных» и «малоценных», для «горячих», «теплых» и «холодных» данных.
  • использование Merkle tree для контроля целостности БД.
  • опциональное использование WAL и существенно более высокая производительно в сценариях с интенсивной записью и гарантиями на целостность данных.
  • ленивая догоняющая фиксация данных на дисках.

isi: linux.org.ru

Tinye a comment