צווייטע libmdbx v1.0 מעלדונג קאַנדידאַט נאָך פינף יאָר פון אַנטוויקלונג.

ביבליאָטעק libmdbx является существенно переработанным потомком LMDB — предельно высокопроизводительной, компактной встраиваемой базой данных класса ключ-значение.
Текущая версия v0.5 является техническим релизом, отмечает завершение каких-либо доработок и переход к фазе публичного финального тестирования и стабилизации, с последующем формированием первого полноценного релиза библиотеки.

LMDB является достаточно известной транзакционной встраиваемой СУБД класса «ключ-значение» на основе בוים ב+ אָן פּראָאַקטיווע לאָגינג, которая позволяет рою многопоточных процессов конкурентно и предельно эффективно работать с локально-разделяемой (не сетевой) БД. В свою очередь 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 и т. д.
  • דערהייַנטיקן אַפּי דיסקריפּשאַנז.
  • Амальгамация исходного кода для удобства встраивания.
  • קמאַקע שטיצן.
  • שטיצן פֿאַר נעסטעד טראַנזאַקשאַנז.
  • ניצן באָאָטיד צו באַשליסן צי די אַס איז רעבאָאָטעד (גראָב דאַטאַבייס האַלטן).
  • Сквозной подсчет обновлённых/старых страниц и расширенная информация о транзакциях.
  • אָפּציע MDBX_ACCEDE פֿאַר קאַנעקטינג צו אַ שוין אָפֿן דאַטאַבייס אין קאַמפּאַטאַבאַל מאָדע.
  • נוצן OFD בלאַקינג ווען בנימצא.
  • הייס באַקאַפּ אין רער.
  • Специализированный оптимизированный алгоритм внутренней сортировки (до 2-3 раз быстрее qsort() и до 30% быстрее std::sort()).
  • די מאַקסימום שליסל לענג איז געוואקסן.
  • אָטאַמאַטיק קאָנטראָל פון לייענען פאָרויס (דייטאַבייס טעקע קאַטשינג סטראַטעגיע אין זכּרון).
  • מער אַגרעסיוו און פאַסטער אַוטאָ קאַמפּאַקטאַפאַקיישאַן.
  • א מער אָפּטימאַל סטראַטעגיע פֿאַר מערדזשינג B + בוים בלעטער.
  • Контроль не-локальных файловых систем (NFS, Samba и т.п.) для предотвращения повреждения БД при неверном использовании.
  • דער גאַנג פון טעסץ איז יקספּאַנדיד.

אַנטוויקלונג פון דער "ווייַטער" ווערסיע פון ​​ליבמדבקס וועט פאָרזעצן ווי אַ באַזונדער פּרויעקט מיטהרידב, בשעת די אַנטוויקלונג וועקטאָר פון די "קראַנט" ווערסיע פון ​​MDBX איז אַימעד צו פאַרפרוירן די שטריך שטעלן און סטייבאַלייזינג עס. דער באַשלוס איז געמאכט פֿאַר דרייַ סיבות:

  • גאָר ינקאַמפּאַטאַבאַל: מיטהרילדב ריקווייערז אַ אַנדערש (ינקאַמפּאַטאַבאַל) דאַטאַבייס טעקע פֿאָרמאַט און אַ אַנדערש (ינקאַמפּאַטאַבאַל) אַפּי צו ינסטרומענט אַלע פּלאַננעד פֿעיִקייטן.
  • נייַ מקור קאָד: די MithrildB מקור קאָד איז געמאכט לייסאַנסט פרייַ פון LMDB, און די פּרויעקט זיך איז פּלאַננעד צו זיין ארויס אונטער אַ אַנדערש דערלויבעניש (באוויליקט דורך אָדער אויב דערלויבעניש אַפּאַטשי 2.0און נישט OpenLDAP Foundation).
  • Разделение позволяет избежать потенциальную путаницу, внести больше определенности и обеспечить независимость пути развития проектов.

מיטהרידב, ווי MDBX, איז אויך באזירט אויף בוים ב+ און וועט אויך האָבן גאָר הויך פאָרשטעלונג, בשעת ילימאַנייטינג אַ נומער פון פונדאַמענטאַל דיסאַדוואַנטידזשיז פון MDBX און LMDB. אין באַזונדער, די פּראָבלעם פון "לאַנג לייענען", וואָס מאַנאַפעסט זיך ווי "געשווילעכץ" פון די דאַטאַבייס רעכט צו דעם פאַקט אַז מיסט פּראַסעסינג איז אפגעשטעלט דורך לאַנג לייענען טראַנזאַקשאַנז, וועט זיין ילימאַנייטאַד. ניו MithrilDB פֿעיִקייטן אַרייַננעמען:

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

מקור: linux.org.ru

לייגן אַ באַמערקונג