FerretDB の最初の安定リリース、PostgreSQL DBMS に基づく MongoDB 実装

FerretDB 1.0 プロジェクトのリリースが公開されました。これにより、アプリケーション コードを変更せずに、ドキュメント指向 DBMS MongoDB を PostgreSQL に置き換えることができます。 FerretDB は、MongoDB への呼び出しを PostgreSQL への SQL クエリに変換するプロキシ サーバーとして実装されており、PostgreSQL を実際のストレージとして使用できるようになります。 バージョン 1.0 は、一般に使用できる最初の安定リリースとしてマークされています。 コードは Go で書かれており、Apache 2.0 ライセンスに基づいて配布されています。

FerretDB の主な対象者は、アプリケーションで MongoDB の高度な機能を使用しないが、完全にオープンなソフトウェア スタックの使用を希望するユーザーです。 開発の現在の段階では、FerretDB は、一般的なアプリケーションで最も一般的に使用される MongoDB 機能のサブセットをサポートしています。 FerretDB を実装する必要性は、MongoDB の非フリー SSPL ライセンスへの移行に関連して生じる可能性があります。このライセンスは AGPLv3 ライセンスに基づいていますが、SSPL ライセンスに基づいて提供するという差別的な要件が含まれているため、オープンではありません。アプリケーション コード自体だけでなく、クラウド サービスの提供に関与するすべてのコンポーネントのソース コードも含まれます。

MongoDB は、キー/値データを操作する高速でスケーラブルなシステムと、機能的でクエリが簡単なリレーショナル DBMS の間のニッチを占めます。 MongoDB は、JSON のような形式でのドキュメントの保存をサポートし、クエリを生成するためのかなり柔軟な言語を備え、保存されたさまざまな属性のインデックスを作成でき、大きなバイナリ オブジェクトのストレージを効率的に提供し、データベースにデータを変更および追加するための操作のログをサポートします。 Map/Reduce パラダイムに従って動作し、レプリケーションとフォールト トレラント構成の構築をサポートします。

FerretDB 1.0 の変更点には次のようなものがあります。

  • XNUMX つ以上のインデックスを作成し、コレクションに削除するための createIndexes および dropIndexes コマンドが実装されました。
  • getMore コマンドは、find や aggregate など、カーソルを返すコマンドの実行から得られた結果の新しい部分を表示するために実装されました。
  • グループ値の合計を計算する $sum 集計演算子のサポートが追加されました。
  • 集計時にドキュメントの数を制限しスキップするための $limit 演算子と $skip 演算子のサポートが追加されました。
  • 集計時にドキュメントをカウントするための $count 演算子のサポートが追加されました。
  • 受信ドキュメント内の配列フィールドを解析し、配列要素ごとに個別のドキュメントを含むリストを形成するための $unwind 演算子のサポートが追加されました。
  • コレクションとデータベースの統計とデータ サイズを取得するための collStats、dbStats、dataSize コマンドの部分的なサポートが追加されました。

出所: オープンネット.ru

コメントを追加します