Po piatich rokoch vývoja bol zverejnený druhý kandidát na vydanie libmdbx 1.0

K dispozícii для тестирования второй кандидат в релизы библиотеки libmdbx с реализацией высокопроизводительной, компактной встраиваемой базой данных класса ключ-значение. Текущая версия (0.5) является техническим релизом, отмечает завершение каких-либо доработок и переход к фазе публичного финального тестирования и стабилизации, с последующем формированием первого полноценного релиза библиотеки. Код libmdbx distribuovaný под лицензией OpenLDAP Public License.

Библиотека MDBX является существенно переработанным ответвлением от LMDB — transakčné vstavané DBMS triedy „kľúč – hodnota“ založené na strom B+ bez proaktívne protokolovanie, которая позволяет многопоточным процессам конкурентно и эффективно работать с локально-разделяемой (не сетевой) БД. В свою очередь MDBX быстрее и надёжнее LMDB, и при этом сохраняет все ключевые возможности своего прародителя, такие как ACID и неблокирующее чтение с линейным масштабированием по ядрам CPU.

Najdôležitejšie rozdiely medzi MDBX a LMDB:

  • V zásade sa väčšia pozornosť venuje kvalite kódu, testovaniu a automatickým kontrolám.
  • Výrazne väčšia kontrola počas prevádzky, od kontroly parametrov až po interný audit databázových štruktúr.
  • Automatická kompaktifikácia a automatická správa veľkosti databázy.
  • Formát jednej databázy pre 32-bitové a 64-bitové zostavy.
  • Odhad objemov vzoriek podľa rozsahov (odhad dotazu na rozsah).
  • Podpora kľúčov dvakrát väčších ako palacinky a užívateľsky voliteľná veľkosť stránky databázy.

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

  • Реализована поддержка macOS и платформ «второго эшелона»: FreeBSD, Solaris, DragonFly BSD, OpenBSD, NetBSD. Поддержка AIX и HP-UX может быть добавлена при необходимости.
  • Проведена санация кода при помощи Undefined Behavior Sanitizer и Address Sanitizer, устранены все предупреждения при сборке с «-Wpedantic», все предупреждения Coverity Static Analyzer и т.д.
  • Aktualizovať Popisy API.
  • Слияние (амальгамация) исходного кода для удобства встраивания.
  • CMake podporu.
  • Podpora pre vnorené transakcie.
  • Použitie bootid na určenie, či sa OS reštartoval (špinavé zastavenie databázy).
  • Сквозной подсчёт обновлённых/старых страниц и расширенная информация о транзакциях.
  • Možnosť MDBX_ACCEDE pre pripojenie k už otvorenej databáze v kompatibilnom režime.
  • Použitie OFD blokovanie Ak je k dispozícii.
  • Horúca záloha v potrubí.
  • Специализированный оптимизированный алгоритм внутренней сортировки (до 2-3 раз быстрее «qsort()» и до 30% быстрее «std::sort()»).
  • Maximálna dĺžka kľúča bola zvýšená.
  • Automatické riadenie čítania dopredu (stratégia ukladania databázového súboru do pamäte cache).
  • Agresívnejšia a rýchlejšia automatická kompaktifikácia.
  • Optimálnejšia stratégia zlučovania stránok B+ stromu.
  • Контроль нелокальных файловых систем (NFS, Samba и т.п.) для предотвращения повреждения БД при неверном использовании.
  • Súbor testov bol rozšírený.

Vývoj „ďalšej“ verzie libmdbx bude pokračovať ako samostatný projekt MithrilDB, zatiaľ čo vývojový vektor „aktuálnej“ verzie MDBX je zameraný na zmrazenie súboru funkcií a jeho stabilizáciu. Toto rozhodnutie bolo prijaté z troch dôvodov:

  • Úplne nekompatibilné: MithrilDB vyžaduje iný (nekompatibilný) formát súboru databázy a iné (nekompatibilné) API na implementáciu všetkých plánovaných funkcií.
  • Nový zdrojový kód: Zdrojový kód MithrilDB bol licencovaný nezávisle od LMDB a samotný projekt sa plánuje publikovať pod inou licenciou (schválenou OSI лицензией Apache 2.0, а не Verejná licencia OpenLDAP).
  • Разделение позволяет избежать потенциальную путаницу, внести больше определённости и обеспечить независимость пути развития проектов.

MithrilDB, podobne ako MDBX, je tiež založený na strom B+ a bude sa tiež vyznačovať extrémne vysokým výkonom, pričom eliminuje množstvo základných nevýhod MDBX a LMDB. Predovšetkým sa odstráni problém „dlhého čítania“, ktorý sa prejavuje „nafúknutím“ databázy v dôsledku toho, že spracovanie odpadu je blokované dlhými transakciami čítania. Medzi nové funkcie MithrilDB patria:

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

Zdroj: opennet.ru

Pridať komentár