ಐದು ವರ್ಷಗಳ ಅಭಿವೃದ್ಧಿಯ ನಂತರ ಎರಡನೇ 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 ಬೆಂಬಲ.
  • ನೆಸ್ಟೆಡ್ ವಹಿವಾಟುಗಳಿಗೆ ಬೆಂಬಲ.
  • OS ರೀಬೂಟ್ ಆಗಿದೆಯೇ ಎಂಬುದನ್ನು ನಿರ್ಧರಿಸಲು bootid ಅನ್ನು ಬಳಸುವುದು (ಡರ್ಟಿ ಡೇಟಾಬೇಸ್ ಸ್ಟಾಪ್).
  • Сквозной подсчет обновлённых/старых страниц и расширенная информация о транзакциях.
  • ಹೊಂದಾಣಿಕೆಯ ಮೋಡ್‌ನಲ್ಲಿ ಈಗಾಗಲೇ ತೆರೆದಿರುವ ಡೇಟಾಬೇಸ್‌ಗೆ ಸಂಪರ್ಕಿಸಲು MDBX_ACCEDE ಆಯ್ಕೆ.
  • ಬಳಸಿ OFD ನಿರ್ಬಂಧಿಸುವುದು ಲಭ್ಯವಿರುವಾಗ.
  • ಪೈಪ್ನಲ್ಲಿ ಬಿಸಿ ಬ್ಯಾಕಪ್.
  • Специализированный оптимизированный алгоритм внутренней сортировки (до 2-3 раз быстрее qsort() и до 30% быстрее std::sort()).
  • ಗರಿಷ್ಠ ಕೀ ಉದ್ದವನ್ನು ಹೆಚ್ಚಿಸಲಾಗಿದೆ.
  • ಮುಂದೆ ಓದುವಿಕೆಯ ಸ್ವಯಂಚಾಲಿತ ನಿಯಂತ್ರಣ (ಮೆಮೊರಿಯಲ್ಲಿ ಡೇಟಾಬೇಸ್ ಫೈಲ್ ಕ್ಯಾಶಿಂಗ್ ತಂತ್ರ).
  • ಹೆಚ್ಚು ಆಕ್ರಮಣಕಾರಿ ಮತ್ತು ವೇಗವಾದ ಸ್ವಯಂ ಸಂಕುಚಿತಗೊಳಿಸುವಿಕೆ.
  • B+ ಟ್ರೀ ಪುಟಗಳನ್ನು ವಿಲೀನಗೊಳಿಸಲು ಹೆಚ್ಚು ಸೂಕ್ತವಾದ ತಂತ್ರ.
  • Контроль не-локальных файловых систем (NFS, Samba и т.п.) для предотвращения повреждения БД при неверном использовании.
  • ಪರೀಕ್ಷೆಗಳ ಸೆಟ್ ಅನ್ನು ವಿಸ್ತರಿಸಲಾಗಿದೆ.

libmdbx ನ "ಮುಂದಿನ" ಆವೃತ್ತಿಯ ಅಭಿವೃದ್ಧಿಯು ಪ್ರತ್ಯೇಕ ಯೋಜನೆಯಾಗಿ ಮುಂದುವರಿಯುತ್ತದೆ ಮಿಥ್ರಿಲ್ ಡಿಬಿ, MDBX ನ "ಪ್ರಸ್ತುತ" ಆವೃತ್ತಿಯ ಅಭಿವೃದ್ಧಿ ವೆಕ್ಟರ್ ವೈಶಿಷ್ಟ್ಯದ ಸೆಟ್ ಅನ್ನು ಫ್ರೀಜ್ ಮಾಡುವ ಮತ್ತು ಅದನ್ನು ಸ್ಥಿರಗೊಳಿಸುವ ಗುರಿಯನ್ನು ಹೊಂದಿದೆ. ಈ ನಿರ್ಧಾರವನ್ನು ಮೂರು ಕಾರಣಗಳಿಗಾಗಿ ಮಾಡಲಾಗಿದೆ:

  • ಸಂಪೂರ್ಣವಾಗಿ ಹೊಂದಿಕೆಯಾಗುವುದಿಲ್ಲ: ಎಲ್ಲಾ ಯೋಜಿತ ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಲು MithrilDB ಗೆ ವಿಭಿನ್ನ (ಹೊಂದಾಣಿಕೆಯಾಗದ) ಡೇಟಾಬೇಸ್ ಫೈಲ್ ಫಾರ್ಮ್ಯಾಟ್ ಮತ್ತು ವಿಭಿನ್ನ (ಹೊಂದಾಣಿಕೆಯಾಗದ) API ಅಗತ್ಯವಿದೆ.
  • ಹೊಸ ಮೂಲ ಕೋಡ್: MithrilDB ಮೂಲ ಕೋಡ್ ಅನ್ನು LMDB ನಿಂದ ಸ್ವತಂತ್ರವಾಗಿ ಪರವಾನಗಿ ಮಾಡಲಾಗಿದೆ ಮತ್ತು ಯೋಜನೆಯನ್ನು ಸ್ವತಃ ಬೇರೆ ಪರವಾನಗಿ ಅಡಿಯಲ್ಲಿ ಪ್ರಕಟಿಸಲು ಯೋಜಿಸಲಾಗಿದೆ (ಅನುಮೋದಿಸಲಾಗಿದೆ ಅಥವಾ IF ಪರವಾನಗಿ ಅಪಾಚೆ 2.0ಮತ್ತು ಅಲ್ಲ OpenLDAP Foundation).
  • Разделение позволяет избежать потенциальную путаницу, внести больше определенности и обеспечить независимость пути развития проектов.

MDBX ನಂತಹ MithrilDB ಸಹ ಆಧರಿಸಿದೆ ಮರ B+ ಮತ್ತು MDBX ಮತ್ತು LMDB ಯ ಹಲವಾರು ಮೂಲಭೂತ ಅನನುಕೂಲಗಳನ್ನು ತೆಗೆದುಹಾಕುವಾಗ ಅತ್ಯಂತ ಹೆಚ್ಚಿನ ಕಾರ್ಯಕ್ಷಮತೆಯನ್ನು ಸಹ ಹೊಂದಿದೆ. ನಿರ್ದಿಷ್ಟವಾಗಿ ಹೇಳುವುದಾದರೆ, ಕಸದ ಸಂಸ್ಕರಣೆಯನ್ನು ದೀರ್ಘ ಓದುವ ವಹಿವಾಟುಗಳಿಂದ ನಿರ್ಬಂಧಿಸಲಾಗಿದೆ ಎಂಬ ಕಾರಣದಿಂದಾಗಿ ಡೇಟಾಬೇಸ್ನ "ಊತ" ಎಂದು ಸ್ವತಃ ಸ್ಪಷ್ಟವಾಗಿ ಗೋಚರಿಸುವ "ದೀರ್ಘ ಓದುವಿಕೆ" ಸಮಸ್ಯೆಯು ನಿವಾರಣೆಯಾಗುತ್ತದೆ. ಹೊಸ MithrilDB ವೈಶಿಷ್ಟ್ಯಗಳು ಸೇರಿವೆ:

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

ಮೂಲ: linux.org.ru

ಕಾಮೆಂಟ್ ಅನ್ನು ಸೇರಿಸಿ