Ứng cử viên phát hành libmdbx v1.0 thứ hai sau XNUMX năm phát triển.

Thư viện libmdbx является существенно переработанным потомком LMDB — предельно высокопроизводительной, компактной встраиваемой базой данных класса ключ-значение.
Текущая версия v0.5 является техническим релизом, отмечает завершение каких-либо доработок и переход к фазе публичного финального тестирования и стабилизации, с последующем формированием первого полноценного релиза библиотеки.

LMĐB является достаточно известной транзакционной встраиваемой СУБД класса «ключ-значение» на основе cây B+ mà không ghi nhật ký chủ động, которая позволяет рою многопоточных процессов конкурентно и предельно эффективно работать с локально-разделяемой (не сетевой) БД. В свою очередь MDBX быстрее и надежнее LMDB, при этом libmdbx сохраняет все ключевые возможности своего прародителя, такие как ACID и неблокирующее чтение с линейным масштабированием по ядрам CPU, а также добавляет несколько новых.

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

  • Về cơ bản, người ta chú ý nhiều hơn đến chất lượng mã, kiểm tra và kiểm tra tự động.
  • Kiểm soát nhiều hơn đáng kể trong quá trình vận hành, từ kiểm tra tham số đến kiểm tra nội bộ cấu trúc cơ sở dữ liệu.
  • Tự động nén và quản lý kích thước cơ sở dữ liệu tự động.
  • Một định dạng cơ sở dữ liệu duy nhất cho các cụm 32 bit và 64 bit.
  • Оценка объема выборок по диапазонам (range query estimation).
  • Hỗ trợ các khóa lớn gấp đôi bánh kếp và kích thước trang cơ sở dữ liệu do người dùng lựa chọn.

Выпущенный релиз-кандидат 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 и т. д.
  • Cập nhật Mô tả API.
  • Амальгамация исходного кода для удобства встраивания.
  • Hỗ trợ CMake.
  • Hỗ trợ cho các giao dịch lồng nhau.
  • Sử dụng bootid để xác định xem hệ điều hành đã khởi động lại chưa (dừng cơ sở dữ liệu bẩn).
  • Сквозной подсчет обновлённых/старых страниц и расширенная информация о транзакциях.
  • Tùy chọn MDBX_ACCEDE để kết nối với cơ sở dữ liệu đã mở ở chế độ tương thích.
  • Sử dụng chặn OFD khi có sẵn.
  • Dự phòng nóng trong đường ống.
  • Специализированный оптимизированный алгоритм внутренней сортировки (до 2-3 раз быстрее qsort() и до 30% быстрее std::sort()).
  • Độ dài khóa tối đa đã được tăng lên.
  • Tự động kiểm soát việc đọc trước (chiến lược lưu trữ tệp cơ sở dữ liệu trong bộ nhớ).
  • Tự động thu gọn mạnh mẽ hơn và nhanh hơn.
  • Một chiến lược tối ưu hơn để hợp nhất các trang cây B+.
  • Контроль не-локальных файловых систем (NFS, Samba и т.п.) для предотвращения повреждения БД при неверном использовании.
  • Bộ bài kiểm tra đã được mở rộng.

Việc phát triển phiên bản "tiếp theo" của libmdbx sẽ tiếp tục như một dự án riêng biệt MithrilDB, trong khi vectơ phát triển của phiên bản MDBX “hiện tại” nhằm mục đích đóng băng bộ tính năng và ổn định nó. Quyết định này được đưa ra vì ba lý do:

  • Hoàn toàn không tương thích: MithrilDB yêu cầu định dạng tệp cơ sở dữ liệu khác (không tương thích) và API khác (không tương thích) để triển khai tất cả các tính năng theo kế hoạch.
  • Mã nguồn mới: Mã nguồn MithrilDB đã được cấp phép độc lập với LMDB và bản thân dự án dự kiến ​​sẽ được xuất bản theo một giấy phép khác (được phê duyệt bởi HOẶC NẾU giấy phép Apache 2.0, А не OpenLDAP Foundation).
  • Разделение позволяет избежать потенциальную путаницу, внести больше определенности и обеспечить независимость пути развития проектов.

MithrilDB, giống như MDBX, cũng dựa trên cây B+ và cũng sẽ có hiệu suất cực cao, đồng thời loại bỏ một số nhược điểm cơ bản của MDBX và LMDB. Đặc biệt, vấn đề “đọc dài” sẽ được loại bỏ, biểu hiện là “sự sưng tấy” của cơ sở dữ liệu do quá trình xử lý rác bị chặn bởi các giao dịch đọc dài. Các tính năng mới của MithrilDB bao gồm:

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

Nguồn: linux.org.ru

Thêm một lời nhận xét