Phát hành DBMS nhúng hiệu suất cao libmdbx 0.11.3

Thư viện libmdbx 0.11.3 (MDBX) đã được phát hành cùng với việc triển khai cơ sở dữ liệu khóa-giá trị nhúng nhỏ gọn hiệu suất cao. Mã libmdbx được cấp phép theo Giấy phép Công cộng OpenLDAP. Tất cả các hệ điều hành và kiến ​​trúc hiện tại đều được hỗ trợ, cũng như Elbrus 2000 của Nga. Vào cuối năm 2021, libmdbx được sử dụng làm phụ trợ lưu trữ trong hai ứng dụng khách Ethereum nhanh nhất - Eragon và “Shark” mới, theo thông tin có sẵn information, là ứng dụng khách Ethereum có hiệu suất cao nhất.

Về mặt lịch sử, libmdbx là bản làm lại sâu của LMDB DBMS và vượt trội hơn tổ tiên của nó về độ tin cậy, bộ tính năng và hiệu suất. So với LMDB, libmdbx chú trọng nhiều đến chất lượng mã, tính ổn định của API, kiểm tra và kiểm tra tự động. Một tiện ích để kiểm tra tính toàn vẹn của cấu trúc cơ sở dữ liệu với một số khả năng khôi phục được cung cấp.

Về mặt công nghệ, libmdbx cung cấp ACID, tuần tự hóa thay đổi mạnh mẽ và các lần đọc không chặn với khả năng chia tỷ lệ tuyến tính trên các lõi CPU. Hỗ trợ tự động nén, quản lý kích thước cơ sở dữ liệu tự động và ước tính truy vấn phạm vi. Từ năm 2016, dự án đã được Positive Technologies tài trợ và được sử dụng trong các sản phẩm của mình từ năm 2017.

libmdbx cung cấp API C++ cũng như các ràng buộc ngôn ngữ được người đam mê hỗ trợ cho Rust, Haskell, Python, NodeJS, Ruby, Go và Nim.

Những đổi mới, cải tiến và sửa chữa lớn được bổ sung kể từ tin tức trước đó vào ngày 11 tháng XNUMX:

  • API C++ được coi là đã sẵn sàng để sử dụng.
  • Việc cập nhật dữ liệu GC khi thực hiện các giao dịch lớn đã được tăng tốc đáng kể, điều này đặc biệt quan trọng khi sử dụng libmdbx trong hệ sinh thái Ethereum.
  • Chữ ký nội bộ của định dạng cơ sở dữ liệu đã được thay đổi để hỗ trợ cập nhật tự động, hoàn toàn minh bạch đối với người dùng. Điều này cho phép bạn loại bỏ các thông báo dương tính giả về hỏng cơ sở dữ liệu khi sử dụng các phiên bản lỗi thời của thư viện để đọc các giao dịch được ghi lại bởi các phiên bản hiện tại.
  • Đã thêm các hàm mdbx_env_get_syncbytes(), mdbx_env_get_sync Period() và mdbx_env_get_syncbytes(). Đã thêm hỗ trợ cho hoạt động MDBX_SET_UPPERBOUND.
  • Tất cả các cảnh báo khi xây dựng với tất cả các trình biên dịch được hỗ trợ ở chế độ C++ 11/14/17/20 đã bị loại bỏ. Khả năng tương thích với các trình biên dịch cũ được đảm bảo: clang bắt đầu từ 3.9, gcc bắt đầu từ 4.8, bao gồm cả việc lắp ráp bằng cdevtoolset-9 cho CentOS/RHEL 7.
  • Đã khắc phục khả năng xung đột trang meta sau khi chuyển thủ công sang một trang meta cụ thể bằng tiện ích mdbx_chk.
  • Đã khắc phục lỗi MDBX_PROBLEM không mong muốn được trả về khi ghi đè các trang meta cũ.
  • Đã sửa lỗi trả về MDBX_NOTFOUND trong trường hợp khớp không chính xác khi xử lý yêu cầu MDBX_GET_BOTH.
  • Đã sửa lỗi biên dịch trên Linux do không có tệp tiêu đề mô tả giao diện với kernel.
  • Đã khắc phục xung đột giữa cờ nội bộ MDBX_SHRINK_ALLOWED và tùy chọn MDBX_ACCEDE.
  • Một số kiểm tra xác nhận không cần thiết đã bị loại bỏ.
  • Đã sửa lỗi trả về MDBX_RESULT_TRUE không mong muốn từ hàm mdbx_env_set_option().
  • Tổng cộng, hơn 90 thay đổi đã được thực hiện đối với 25 tệp, ~1300 dòng đã được thêm vào, ~600 dòng đã bị xóa.

Nguồn: opennet.ru

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