のリリース バージョン0.10.4ライブラリ 「Libmdbx」 合計で、 160個のファイルに57以上の変更が加えられ、最大5000行が追加され、最大2500行が削除されました。 libmdbxに慣れていない場合は、これがキー値クラスのコンパクトで高性能な組み込みデータベースの実装であるライブラリのセットであることを知っておく必要があります。
歴史的に、 libmdbxは、LMDBDBMSを大幅に作り直したものです。 信頼性、機能セット、およびパフォーマンスにおいて、前任者を上回っています。 LMDBと比較して、libmdbxは、コードの品質、APIの安定性、テスト、および自動チェックに重点を置いています。 データベース構造の整合性を検証するユーティリティには、いくつかのリカバリオプションが用意されています。
技術的には、 libmdbxは、ACID、厳密な変更のシリアル化、およびコア全体の線形スケーリングによるノンブロッキング読み取りを提供します CPU。 自動圧縮、自動データベースサイズ制御、およびランククエリ推定をサポートします。 2016年以降、プロジェクトはPositive Technologiesによって資金提供され、2017年から製品に使用されています。
libmdbxの場合、 C ++ APIが提供されています。 また、Rust、Haskell、Python、NodeJS、Ruby、Go、Nimの愛好家と互換性のあるバインディングもあります。 libfptaの場合、C / C ++ヘッダーファイルの形式のAPI記述のみが公開されています。
Linux、Windows、MacOS、Android、iOS、FreeBSD、DragonFly、Solaris、OpenSolaris、OpenIndiana、NetBSD、OpenBSDおよびその他の互換性のあるシステムのサポートに加えて POSIX.1-2008。
libmdbx0.10.4の主な新機能
libmdbx0.10.4のこの新しいバージョンでは 開発者は、プレイ可能なビルドの機能を提供できるように努めました。 さらに、テストが改善され、テストスクリプトが拡張されて、データベース内のページツリーとGCコンテンツの達成可能なすべての非同形状態をチェックできるようになりました。
「noexcept」で修正されたC ++ APIでは、 「カーソル::消去()」メソッドに追加のオーバーロードを追加しました。 「std :: string」を使用してアラインメントを確保することにより、バッファーの実装が軽減されます(CLANG libstdc ++の現在)
さらに、次のことも強調されています 一連の検証を追加して段階的な検証を実行しました データベースに意図的な損傷が発生した場合の安定性を確保するため。
一方、CMakeスクリプトでは、LTO(リンク時間の最適化)に必要なコンパイラコンポーネントの検索が改善され、同時リーダーの最大数が32.767に増加し、パフォーマンスも向上していることが強調されています。 ValgrindとAddressSanitizerを使用するときに改善されました。
バグ修正について この新しいバージョンで作成されたものは、次のとおりです。
- 非常にまれな状況で、トランザクションのコミット中にループ/クラッシュが発生する可能性があるバグを修正しました。 この問題は、PositiveTechnologiesのスペシャリストが自社製品の内部テスト中に特定しました。
- 大規模なトランザクションでデータを変更すると、まれに予期しないMDBX_PROBLEMエラーが発生するダーティページスピルアルゴリズム(変更されたデータベースページの選択的削除)のリグレッションが修正されました。
- UndefinedBehaviorSanitizerとCoverityScanのマイナーな問題を修正しました。
古いバージョンのライブラリによって作成されたデータベースイメージ内にネストされたページの「P_DIRTY」をチェックする古い未使用の内部フラグを修正しました。 - MDBX_NOTLSモード(スレッドローカルストレージを使用しない)で作業しているときのWindowsでのSRWロックの再帰的な使用を修正し、システム時刻が変更された場合のbootid生成を修正し、WSL1とWSL2の検出を改善し、マウントされたPlan9データベースを開く機能を追加しました。 DrvFS。
最後に あなたがそれについてもっと知りたいなら この新バージョンについては、詳細を確認できます 次のリンクで。