បេក្ខជនចេញផ្សាយទីពីរសម្រាប់ libmdbx v1.0 បន្ទាប់ពីរយៈពេលប្រាំឆ្នាំនៃការអភិវឌ្ឍន៍។

បណ្ណាល័យ libmdbx является существенно переработанным потомком LMDB — предельно высокопроизводительной, компактной встраиваемой базой данных класса ключ-значение.
Текущая версия v0.5 является техническим релизом, отмечает завершение каких-либо доработок и переход к фазе публичного финального тестирования и стабилизации, с последующем формированием первого полноценного релиза библиотеки.

LMDB является достаточно известной транзакционной встраиваемой СУБД класса «ключ-значение» на основе ដើមឈើ B+ ដោយគ្មាន ការកត់ត្រាសកម្ម, которая позволяет рою многопоточных процессов конкурентно и предельно эффективно работать с локально-разделяемой (не сетевой) БД. В свою очередь MDBX быстрее и надежнее LMDB, при этом libmdbx сохраняет все ключевые возможности своего прародителя, такие как ទឹកអាស៊ីដ и неблокирующее чтение с линейным масштабированием по ядрам CPU, а также добавляет несколько новых.

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

  • ជាមូលដ្ឋាន ការយកចិត្តទុកដាក់បន្ថែមទៀតគឺត្រូវបានបង់ទៅលើគុណភាពកូដ ការធ្វើតេស្ត និងការត្រួតពិនិត្យដោយស្វ័យប្រវត្តិ។
  • ការត្រួតពិនិត្យកាន់តែច្រើនគួរឱ្យកត់សម្គាល់ក្នុងអំឡុងពេលប្រតិបត្តិការ ពីការត្រួតពិនិត្យប៉ារ៉ាម៉ែត្ររហូតដល់សវនកម្មផ្ទៃក្នុងនៃរចនាសម្ព័ន្ធមូលដ្ឋានទិន្នន័យ។
  • ការបង្រួមដោយស្វ័យប្រវត្តិ និងការគ្រប់គ្រងទំហំមូលដ្ឋានទិន្នន័យដោយស្វ័យប្រវត្តិ។
  • ទ្រង់ទ្រាយមូលដ្ឋានទិន្នន័យតែមួយសម្រាប់សន្និបាត 32 ប៊ីត និង 64 ប៊ីត។
  • Оценка объема выборок по диапазонам (range query estimation).
  • ការគាំទ្រសម្រាប់គ្រាប់ចុចធំជាងនំផេនខេកពីរដង និងទំហំទំព័រមូលដ្ឋានទិន្នន័យដែលអាចជ្រើសរើសបានដោយអ្នកប្រើប្រាស់។

Выпущенный релиз-кандидат 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 и т. д.
  • ធ្វើបច្ចុប្បន្នភាព ការពិពណ៌នា API.
  • Амальгамация исходного кода для удобства встраивания.
  • ការគាំទ្រ CMake ។
  • ការគាំទ្រសម្រាប់ប្រតិបត្តិការដែលជាប់គាំង។
  • ការប្រើ bootid ដើម្បីកំណត់ថាតើ OS បានចាប់ផ្ដើមឡើងវិញឬអត់ (ការបញ្ឈប់មូលដ្ឋានទិន្នន័យកខ្វក់)។
  • Сквозной подсчет обновлённых/старых страниц и расширенная информация о транзакциях.
  • ជម្រើស MDBX_ACCEDE សម្រាប់ភ្ជាប់ទៅមូលដ្ឋានទិន្នន័យដែលបានបើករួចហើយនៅក្នុងរបៀបដែលត្រូវគ្នា។
  • ប្រើ ការទប់ស្កាត់ OFD នៅពេលមាន។
  • ការបម្រុងទុកក្តៅនៅក្នុងបំពង់។
  • Специализированный оптимизированный алгоритм внутренней сортировки (до 2-3 раз быстрее qsort() и до 30% быстрее std::sort()).
  • ប្រវែងគន្លឹះអតិបរមាត្រូវបានកើនឡើង។
  • ការគ្រប់គ្រងដោយស្វ័យប្រវត្តិនៃការអានខាងមុខ (យុទ្ធសាស្រ្តរក្សាទុកឯកសារមូលដ្ឋានទិន្នន័យនៅក្នុងអង្គចងចាំ) ។
  • ការបង្រួមដោយស្វ័យប្រវត្តិកាន់តែខ្លាំងក្លា និងលឿនជាងមុន។
  • យុទ្ធសាស្ត្រដ៏ល្អប្រសើរសម្រាប់ការរួមបញ្ចូលគ្នានូវទំព័រមែកធាង B+។
  • Контроль не-локальных файловых систем (NFS, Samba и т.п.) для предотвращения повреждения БД при неверном использовании.
  • សំណុំនៃការធ្វើតេស្តត្រូវបានពង្រីក។

ការអភិវឌ្ឍន៍កំណែ "បន្ទាប់" នៃ libmdbx នឹងបន្តជាគម្រោងដាច់ដោយឡែកមួយ។ MithrilDBខណៈពេលដែលវ៉ិចទ័រអភិវឌ្ឍន៍នៃកំណែ "បច្ចុប្បន្ន" នៃ MDBX មានគោលបំណងបង្កកសំណុំលក្ខណៈពិសេស និងធ្វើឱ្យវាមានស្ថេរភាព។ ការ​សម្រេច​ចិត្ត​នេះ​ត្រូវ​បាន​ធ្វើ​ឡើង​ដោយ​ហេតុផល​បី​យ៉ាង៖

  • មិនឆបគ្នាទាំងស្រុង៖ MithrilDB ទាមទារទម្រង់ឯកសារមូលដ្ឋានទិន្នន័យខុសគ្នា (មិនឆបគ្នា) និង API ផ្សេង (មិនឆបគ្នា) ដើម្បីអនុវត្តមុខងារដែលបានគ្រោងទុកទាំងអស់។
  • កូដប្រភពថ្មី៖ កូដប្រភព MithrilDB ត្រូវបានផ្តល់អាជ្ញាប័ណ្ណដោយឯករាជ្យពី LMDB ហើយគម្រោងខ្លួនវាត្រូវបានគ្រោងនឹងបោះពុម្ពក្រោមអាជ្ញាប័ណ្ណផ្សេង (អនុម័តដោយ ឬ IF អាជ្ញាប័ណ្ណ Apache 2.0និងមិន OpenLDAP Foundation).
  • Разделение позволяет избежать потенциальную путаницу, внести больше определенности и обеспечить независимость пути развития проектов.

MithrilDB ដូចជា MDBX ក៏ផ្អែកលើ ដើមឈើ B+ ហើយ​នឹង​មាន​មុខងារ​ខ្ពស់​ខ្លាំង​ផង​ដែរ ខណៈ​ពេល​ដែល​ការ​លុប​បំបាត់​គុណវិបត្តិ​ជា​មូលដ្ឋាន​មួយ​ចំនួន​នៃ MDBX និង LMDB ។ ជាពិសេសបញ្ហានៃ "ការអានយូរ" ដែលបង្ហាញខ្លួនឯងថាជា "ហើម" នៃមូលដ្ឋានទិន្នន័យដោយសារតែការពិតដែលថាដំណើរការសំរាមត្រូវបានរារាំងដោយប្រតិបត្តិការអានយូរនឹងត្រូវបានលុបចោល។ លក្ខណៈពិសេស MithrilDB ថ្មីរួមមាន:

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

ប្រភព: linux.org.ru

បន្ថែមមតិយោបល់