このトピックでは、ApsaraDB for MongoDB がサポートする MongoDB のバージョンとストレージエンジン、およびそれらの関係について説明します。この情報は、ニーズに最適なインスタンスを選択するのに役立ちます。
サポートされているバージョン
ApsaraDB for MongoDB は、次のバージョンをサポートしています。
インスタンスの実行中にデータベースのバージョンを手動でアップグレードできます。ただし、アップグレード後にデータベースのバージョンをダウングレードすることはできません。詳細については、「インスタンスのメジャーバージョンのアップグレード」をご参照ください。
MongoDB 3.2
MongoDB 3.2 は提供終了となりました。詳細については、[お知らせ] ApsaraDB for MongoDB はバージョン 3.2 を提供終了し、2 月 4 日にバージョン 4.2 をリリースしましたをご参照ください。
ストレージエンジン
ストレージエンジン | シナリオ | 説明 |
WiredTiger | デフォルトのストレージエンジンです。ほとんどのビジネスシナリオに適しています。 | B-tree 構造に基づいてデータを編成します。MongoDB の以前の MMAPv1 ストレージエンジンと比較して、WiredTiger はパフォーマンスを大幅に向上させます。また、データ圧縮もサポートしており、ストレージコストを削減します。 |
MongoDB のバージョンとストレージエンジンの関係
ストレージエンジン | バージョン 4.4 以降 | バージョン 4.2 | バージョン 4.0 | バージョン 3.4 (提供終了) |
WiredTiger |
|
|
|
|
MongoDB 8.0
MongoDB 8.0 では、アップグレードされた TCMalloc、最適化されたレプリケーションパフォーマンス、最適化された再シャーディングパフォーマンスなどの新機能が導入されています。また、シャーディング、ロギング、集約、セキュリティも強化および最適化されています。
アップグレードされた TCMalloc
アップグレードされた TCMalloc は、各スレッドのキャッシュの代わりに各 CPU のキャッシュを使用してメモリの断片化を減らし、高負荷のワークロードに対するデータベースの適応性を高めます。アップグレードされた TCMalloc は、1 秒ごとにメモリをオペレーティングシステムに解放しようとするバックグラウンドスレッドも作成します。
レプリケーションパフォーマンス
MongoDB 8.0 以降、
writeConcernがmajorityに設定されている場合、MongoDB は変更が適用されるのを待たずに、oplog がレプリカセットのほとんどのメンバーに書き込まれた後に oplog を返します。これにより、majorityモードでの書き込みパフォーマンスが向上します。セカンダリノードは、oplog の各バッチを並行して書き込み、適用します。Writer スレッドがプライマリノードから新しい oplog エントリを読み取り、ローカル oplog に書き込むと、Applier スレッドはこれらの変更をローカルデータベースに非同期で適用します。これにより、セカンダリノードのレプリケーションスループットが向上します。
再シャーディングパフォーマンス
MongoDB 8.0 は `forceRedistribution` オプションをサポートしており、同じシャーディングキーを使用してコレクションを再シャーディングし、データを新しいシャードに再配布できます。このプロセスは、範囲によってチャンクを移行するよりもはるかに高速です。このオプションを `zones` オプションと組み合わせて使用して、データを特定のリージョンに移行することもできます。
シャーディング
ハッシュシャーディングは、デフォルトでシャードごとに 1 つのチャンクを作成します (MongoDB 8.0 より前は、デフォルトで 2 つのチャンクが作成されます)。
dbhashコマンドはシャードで実行できます。findAndModifyおよびdeleteOneコマンドは、部分的なシャードキーをクエリ述語として使用できます。updateOneコマンドをupsertをtrueに設定してシャードコレクションで使用する場合、クエリ述語ですべてのシャードキーを除外できます。unshardCollectionコマンドまたはsh.unshardCollection()メソッドを使用して、既存のコレクションのシャーディング操作をキャンセルできます。これにより、コレクション内のすべてのドキュメントが特定のシャードまたはデータ量が最も少ないシャードに移動します。moveCollectionコマンドを使用して、プライマリシャードに制限されることなく、シャード化されていないコレクションを特定のシャードに移動できます。ただし、時系列コレクションとクエリアブル暗号化コレクションは移動できず、コレクションの書き込みブロックは約 2 秒間続きます。次のデータベースコマンドと mongosh ヘルパー関数がサポートされています。
コマンド
mongosh ヘルパー関数
説明
moveCollection
sh.moveCollection()
シャード化されていないコレクションを特定のシャードに移動します。
unshardCollection
sh.unshardCollection()
既存のシャードコレクションのシャーディング操作をキャンセルし、コレクションデータを特定のシャードに移動します。
abortMoveCollection
sh.abortMoveCollection()
進行中の
moveCollection操作を停止します。abortUnshardCollection
sh.abortUnshardCollection()
進行中の
unshardCollection操作を停止します。なし
sh.shardAndDistributeCollection()
コレクションをシャード化し、既存のシャードキーでデータをすぐに再配布します。
データ移行を高速化します。このヘルパー関数は、
shardCollectionとreshardCollectionを組み合わせた場合と同じ結果になります。
ロギング
workingMillisフィールドがスロークエリログに追加され、実際の操作に必要な時間が表示されるようになりました。操作の合計レイテンシーを示す
durationMillisオプションとは異なり、workingMillisにはロック待ちやトラフィックスロットリングなどの要因によって消費される時間は含まれません。集約
binData 変換
$convert オペレーターを使用して、次の変換を実行できます。
文字列値を binData 値に変換します。
binData 値を文字列値に変換します。
さらに、$toUUID 式は、文字列値を UUID 値に変換するための簡略化された構文を提供します。
$queryStats
$queryStats ステージは、記録されたクエリの統計を返し、変更ストリームでの追跡とレポートメトリックを最適化します。
セキュリティ
クエリアブル暗号化
MongoDB 8.0 は、
$lt、$lte、$gt、および$gteを使用して、暗号化されたフィールドに対する範囲クエリをサポートします。入力キュー
MongoDB 8.0 では、エントランスアクセス制御用の新しいキュー (
ingressAdmissionControllerTicketPoolSize) が導入され、ネットワークからデータベースに送信された操作がエントランスキューに入ることを示します。エントランスキューはデフォルトでは制限されていません。キューイングのリクエストを許可するために、最大キュー値をカスタマイズできます。
その他の最適化
新しい Query Shape が導入されました。以前のクエリシェイプは、プランキャッシュクエリシェイプと呼ばれます。クエリオプティマイザーは、クエリ設定を追加の入力情報として使用し、最終的なクエリプランの選択に影響を与えます。
setQuerySettings にはクエリ設定が含まれます。
インデックスの選択を指定します。MongoDB 8.0 では、
planCacheSetFilterを使用してindex filterを設定することはできません。トラフィックスロットリング設定を指定します。
rejectオプションを使用して、特定の Query Shape の拒否を設定できます。
removeQuerySettingsはクエリ設定を削除するために使用されます。$querySettingsはクエリ設定を表示するために使用されます。
explain()コマンドには、クエリプランの最適化に費やされた時間がミリ秒単位でqueryPlanner.optimizationTimeMillisに含まれます。新しい
defaultMaxTimeMSパラメーターは、単一の読み取り操作が完了するまでのデフォルトの時間制限をミリ秒単位で指定します。適用可能な操作:
findaggregate($mergeおよび$outステージを除く)countdistinctdbHash
クライアントが
maxTimeMSを指定した場合、この操作に対してdefaultMaxTimeMSは効果がなくなります。
新しい
bulkWriteコマンドは、単一のリクエストで複数のコレクションに対して複数の挿入、更新、削除操作を実行できます。updateOneはsortオプションによるソートをサポートします。TTL インデックスは固定サイズコレクションに作成できます。
非トランザクションの一括挿入は、個別の oplog を生成しなくなり、単一の oplog でバッチ処理されます。挿入されたすべてのドキュメントは、変更ストリームイベントで同じ
clusterTimeを持ちます。これにより、一括挿入のパフォーマンスが向上し、セカンダリノードから複数の oplog を再生することによって発生する可能性のあるレプリケーションの遅延を回避します。同じデータベース内の異なるコレクションに対して、同時 DDL 操作を実行できます。
コレクションを変更する
reshardCollectionなどの DDL 操作がシャードクラスターで実行されると、シャードの追加または削除はブロックされます。これらの操作は、DDL 操作の後にのみ実行できます。インデックス構築は、より高速なエラー報告とより強力なディザスタリカバリ機能で改善されています。
操作
MongoDB 8.0
MongoDB 8.0 より前
エラー検出後にインデックス構築を停止する状況
コレクションスキャンフェーズ中に検出されたインデックスエラー (重複キーエラーを除く) はすぐに返され、その後インデックス構築が停止します。
MongoDB 8.0 は、インデックスエラーの診断を迅速に実行するのに役立ちます。たとえば、互換性のないインデックス値のフォーマットが見つかった場合、このエラーはすぐに返されます。
MongoDB 8.0 より前では、コレクションスキャンフェーズ中に検出されたインデックスエラーは、インデックス構築の最後に行われるコミットフェーズで返されます。
MongoDB 8.0 と比較して、以前のバージョンでは、エラーがインデックス構築の最後のコミットフェーズで返されるため、インデックス構築エラーが返されるまでに時間がかかる場合があります。
回復力のあるデプロイメント
デプロイメントの回復力が強化されています。インデックス構築エラーが発生した場合、セカンダリメンバーはプライマリメンバーにインデックス構築の停止を要求でき、クラッシュしません。
インデックス構築の停止要求が常に可能であるとは限りません。メンバーがすでにインデックスのコミットに投票している場合、セカンダリメンバーはインデックス構築の停止を要求できず、クラッシュします。この状況は、MongoDB 7.0 以前のバージョンと同様です。
インデックス構築エラーにより、セカンダリメンバーがクラッシュする可能性があります。
ディスク領域
インデックス構築のためのディスク領域管理が最適化されています。利用可能なディスク領域が
indexBuildMinAvailableDiskSpaceMBパラメーターで指定された最小値より少ない場合、インデックス構築は自動的に停止することがあります。メンバーがインデックスのコミットに投票した場合、インデックス構築は停止しません。
利用可能なディスク領域が不十分な場合も、インデックス構築は停止します。
MongoDB 7.0
MongoDB 7.0 では、クエリアブル暗号化、シャード化メタデータ整合性検証、サンプリングされたクエリとシャーディングキー分析 (analyzeShardKey)、および AutoMerger などの新機能が導入されています。また、シャーディング、時系列コレクション、集約、セキュリティも強化および最適化されています。
クエリアブル暗号化
MongoDB 6.0 では、クエリアブル暗号化機能はプレビュー段階です。MongoDB 7.0 では、この機能は一般提供されています。詳細については、「クエリアブル暗号化」をご参照ください。
シャード化メタデータ整合性検証
MongoDB 7.0 では、checkMetadataConsistency コマンドが追加され、異なるシャード間でメタデータの不整合をチェックできます。このチェックを定期的な運用保守 (O&M) に追加することで、潜在的な不整合リスクを早期に特定できます。詳細については、「checkMetadataConsistency」をご参照ください。
サンプリングされたクエリとシャーディングキー分析
サンプリングされたクエリの結果に基づいて、コレクションのシャーディングキーが適切かどうかを分析できます。これにより、スキーマとシャーディングキーの設計が改善され、シャーディングアーキテクチャをより効果的に使用できます。詳細については、「analyShardKey」および「configureQueryAnalyzer」をご参照ください。
AutoMerger
MongoDB 7.0 では、バランサーに AutoMerger という新機能が導入されました。データやインデックスが不均等に分散している場合、過剰なシャードが存在する場合、またはデータが移行された場合に、AutoMerger はチャンクをマージしてデータ分布を均等化し、データベースのパフォーマンスを向上させます。デフォルトでは、AutoMerger は MongoDB 7.0 で有効になっています。バランサーの作業中のウィンドウを設定して AutoMerger を有効にすることもできます。
シャーディング
rangeDeleterHighPriorityパラメーターを使用して、孤立ドキュメントの削除を高い優先度で行うかどうかを指定できます。デフォルトでは、このパラメーターは false に設定されており、MongoDB は孤立ドキュメントの削除よりもビジネス関連の削除操作を優先することを示します。MongoDB 7.0 では、カタログキャッシュの更新によってブロックされた操作に関する統計情報を含む
operationsBlockedByRefreshドキュメントが削除されました。これは、operationsBlockedByRefresh カウンターが、カタログの更新アクティビティによってブロックされていない操作であっても、コレクションのルーティング情報を使用するすべての操作に対して mongos ノードで増加するためです。再シャーディングに関連する監視メトリックが追加されました。
maxSizeオプションは、addShard コマンドではサポートされなくなりました。config.settingsコレクションのチャンクサイズが調整されると、新しい値が 1 から 1,024 の妥当な範囲内にあることを確認するための有効性チェックが実行されます。MongoDB 6.0.3 以降、バランサーポリシーにいくつかの調整が加えられています。
バランサーは、チャンクの数ではなく、シャード間のデータ量の差に基づいてデータを均等に分散します。
パーティショニングは、チャンクごとではなく範囲ごとに行われます。
自動分割は、データがシャード間で移行される場合にのみ有効になります。
時系列コレクション
以前のバージョンで時系列コレクションに DELETE コマンドを使用する際に課せられていた制限は削除されました。現在の DELETE コマンドの唯一の制限は、コマンドを複数ドキュメントのトランザクションで使用できないことです。
時系列コレクションは COMPACT コマンドでサポートされています。
集約
MongoDB 7.0 では、ビット単位の計算とパーセンタイルをサポートするために、次のオペレーターが追加されました。
オペレーター
説明
$bitAndINT または LONG 型の数値に対するビット単位の AND 演算の結果を返します。
$bitNotINT または LONG 型の数値に対するビット単位の反転演算の結果を返します。
$bitOrINT または LONG 型の数値に対するビット単位の OR 演算の結果を返します。
$bitXorINT または LONG 型の数値に対するビット単位の XOR 演算の結果を返します。
$median50 パーセンタイルに相当する近似中央値を返します。
$percentile指定されたパーセンタイルを返します。
セキュリティ
Key Management Interoperability Protocol (KMIP) V1.0 および V1.1 がサポートされています。
OpenSSL 3.0 および OpenSSL FIPS がサポートされています。
その他の最適化
catalogCacheIndexLookupDurationMillisなどのフィールドがスロークエリログに追加されました。詳細については、「Logging Slow Operations」をご参照ください。ストレージエンジンのトランザクションの同時実行性は動的に調整できます。調整前のデフォルトの同時実行性は 128 です。MongoDB 7.0 以降、トランザクションの同時実行性は自動的に調整されます。詳細については、「Concurrent Storage Engine Transactions (Read and Write Tickets)」をご参照ください。
クエリサンプリングに関連するフィールドが currentOp コマンドに追加されました。詳細については、「currentOp Metrics」をご参照ください。
複合ワイルドカードインデックスがサポートされています。詳細については、「Compound Wildcard Indexes」をご参照ください。
$changeStreamSplitLargeEventオペレーターが追加され、16 MB を超える大きな変更イベントを分割できるようになりました。詳細については、「Large Change Stream Events」をご参照ください。スロットベースのクエリ実行エンジンのパフォーマンスが最適化されました。
チャンク移行に関連するメトリックが追加されました。詳細については、「New Sharding Statistics for Chunk Migrations」をご参照ください。
USER_ROLESシステム変数を使用して、現在のユーザーのロールを取得できます。analyzeShardKey、balancer、およびqueryAnalyzersに関連するグローバルパラメーターが追加されました。serverStatus の返される結果に、より多くのフィールドが追加されました。詳細については、「serverStatus Output Change」をご参照ください。
MongoDB 6.0
MongoDB 6.0 では、クエリアブル暗号化や Cluster-to-Cluster Sync などの機能が導入されています。MongoDB 6.0 では、時系列コレクション、変更ストリーム、集約、クエリ、弾力性、セキュリティも最適化されています。
クエリアブル暗号化
クエリアブル暗号化を使用すると、クライアント側で機密データを暗号化し、データベースサーバーに完全にランダム化された暗号化データとして保存し、暗号化されたデータに対して表現力豊かなクエリを実行できます。
クエリアブル暗号化では、クライアントのみが機密データのプレーンテキストを表示できます。クエリがサーバーに到達すると、Key Management Service (KMS) から取得した暗号鍵が含まれます。サーバーは暗号文に対してクエリを処理し、暗号化された応答を返します。最後に、クライアントはキーを使用して応答を復号化し、プレーンテキストで表示します。
Cluster-to-Cluster Sync
Cluster-to-Cluster Sync では、新しい mongosync ツールが導入され、ハイブリッド、Atlas、オンプレミス、エッジ環境など、あらゆる環境で 2 つの MongoDB インスタンス間の継続的かつ一方向のデータ同期をサポートします。また、同期プロセス全体をリアルタイムで制御および監視し、必要に応じて同期を開始、停止、再開、さらには逆再生することもできます。
時系列コレクション
MongoDB 6.0 では、インデックス作成、クエリ、ソートの点で時系列コレクションが強化されています。
読み取りパフォーマンスを向上させるために、セカンダリインデックスと複合インデックスが導入されています。
時空間データ用の地理空間インデックスが導入されています。これにより、時系列データに地理情報が追加され、距離や場所を含むシナリオでの分析に役立ちます。
シナリオ例:夏のコールドチェーン輸送車両の温度変化の追跡、特定のルートでの貨物船の燃料消費量の監視。
時系列データの
last pointクエリが最適化されています。最後のデータポイントをクエリするためにコレクション全体をスキャンする必要はなくなりました。時系列データのソートが最適化されています。時間フィールドとメタデータフィールドのクラスター化インデックスとセカンダリインデックスを使用して、ソート操作がより効率的に完了します。
変更ストリーム
このリリースでは、次の新機能と最適化が導入されています。
変更の変更前イメージ (pre-image) の表示をサポートします。
説明MongoDB 6.0 より前のバージョンでは、変更後イメージ (post-image) の表示のみがサポートされていました。MongoDB 6.0 以降では、変更前イメージと変更後イメージの両方を表示できます。変更前イメージと変更後イメージの詳細については、「Change Streams with Document Pre- and Post-Images」をご参照ください。
create、createIndexes、modify、shardCollectionなどの DDL 文をサポートします。詳細については、「Change Events」をご参照ください。変更イベントに
wallTimeフィールドが追加されました。タイムスタンプは、$toDate、$tsSeconds、tsIncrementなどの複数の変換および表示オペレーターをサポートし、ビジネスでの利用を容易にします。
集約
このリリースには、次の新機能と最適化が含まれています。
シャードクラスターインスタンスは
$lookupと$graphLookupをサポートします。$lookupでの JOIN のサポートが向上しました。$graphLookupでのグラフ探索のサポートが向上しました。$lookupのパフォーマンスが向上し、一部のシナリオでは最大で 100 倍向上しました。
説明$lookupと$graphLookupの詳細については、「$lookup (aggregation)」および「$graphLookup (aggregation)」をご参照ください。クエリ
MongoDB 6.0 では、
$maxN、$topN、$minN、$bottomN、$lastN、$sortArrayなどのオペレーターが追加されています。これらのオペレーターにより、より多くの計算をビジネスレイヤーからデータベースにオフロードでき、ビジネスレイヤーがより軽量になります。説明オペレーターの詳細については、「Aggregation Pipeline Operators」をご参照ください。
弾力性
次の新機能と最適化が利用可能になりました。
データチャンクのデフォルトサイズが 64 MB から 128 MB に増加しました。これにより、データ移行の頻度が減り、ネットワーキングおよびルーティングレイヤーのオーバーヘッドが減少します。
configureCollectionBalancingコマンドをサポートします。このコマンドは、次の機能をサポートします。異なるシャードテーブルに異なるチャンクサイズを設定できます。
例:非常に大きなシャードテーブルの場合、チャンクサイズを 256 MB に設定できます。シャード間でより均等に分散させたい比較的小さなシャードテーブルの場合、チャンクサイズを 64 MB または 32 MB に設定できます。
コレクションを積極的にデフラグできます。
compactコマンドと比較して、configureCollectionBalancingコマンドはより優れたデフラグサービスを提供し、ディスク領域の使用量を効果的に削減します。
説明configureCollectionBalancingコマンドの詳細については、「configureCollectionBalancing」をご参照ください。セキュリティ
MongoDB 6.0 では、クライアント側のフィールドレベル暗号化 (CSFLE) 機能が最適化されています。CSFLE は、Key Management Interoperability Protocol (KMIP) に準拠する任意のキー管理プロバイダーをサポートするようになりました。これは、KeyFile に基づくローカルキー管理に加えて、MongoDB が KMIP を使用してサードパーティのキー管理デバイスと統合できることを意味し、ユーザーに強化されたセキュリティを提供します。
説明CSFLE 機能は、特にデータ移行シナリオにおいて、機密データの管理に広く使用されています。
MongoDB 5.0
新しいリリースサイクルにより、新機能がより迅速にユーザーに提供されます。
ネイティブ時系列プラットフォーム
取り込み、保存、クエリからリアルタイム分析、可視化、データの経年劣化に伴うオンラインアーカイブや自動有効期限切れまで、時系列データのライフサイクル全体をネイティブにサポートすることで、時系列アプリケーションの構築と実行がより迅速かつコスト効率よく行えるようになります。MongoDB 5.0 のリリースにより、MongoDB は汎用アプリケーションデータプラットフォームを拡張し、開発者が時系列データをより簡単に扱えるようにし、IoT (モノのインターネット)、金融分析、物流などの分野での応用シナリオをさらに広げました。
ライブ再シャーディング
ビジネスの実行中やデータの増加に応じて、データベースのダウンタイムやデータコレクション内での複雑な移行なしに、コレクションのシャーディングキーをオンデマンドで変更できます。これを行うには、MongoDB Shell で reshardCollection コマンドを実行し、再シャーディングしたいデータベースとコレクションを選択し、新しいシャーディングキーを指定します。
reshardCollection: "<database>.<collection>", key: <shardkey>説明<database>:再シャーディングするデータベースの名前。
<collection>:再シャーディングするコレクションの名前。
<shardkey>:シャーディングキーの名前。
reshardCollection コマンドを呼び出すと、MongoDB は既存のコレクションをクローンし、既存のコレクションからのすべての oplog エントリを新しいコレクションに適用し、すべての oplog エントリが適用された後、自動的に新しいコレクションに切り替えます。古いコレクションはバックグラウンドで削除されます。
バージョン管理 API
バージョン管理 API により、MongoDB は各リリースでデータベースに新機能や改善を柔軟に追加でき、新しいバージョンは以前のバージョンと互換性があります。API を変更する必要がある場合は、API の新しいバージョンを追加し、既存のバージョン管理 API と同じサーバーで同時に実行できます。MongoDB のリリースが加速するにつれて、バージョン管理 API を使用すると、最新の MongoDB 機能をより迅速かつ簡単に使用できます。
バージョン管理 API は、アプリケーションで最も一般的に使用されるコマンドとパラメーターのセットを定義しており、データベースが年次メジャーリリースであろうと四半期ごとのラピッドリリースであろうと、これらは変更されません。アプリケーションのライフサイクルをデータベースのライフサイクルから切り離すことで、ドライバーを MongoDB API の特定のバージョンに固定できます。これにより、データベースがアップグレードおよび改善されても、コードを変更することなくアプリケーションを何年も実行し続けることができます。
デフォルトの Majority Write Concern
MongoDB 5.0 以降、デフォルトの write concern レベルは `majority` です。書き込み操作は、書き込みがプライマリノードに適用され、レプリカノードの大多数のログに永続化された場合にのみコミットされ、成功応答が返されます。これにより、初期設定でより強力なデータ信頼性が保証されます。
長時間実行スナップショットクエリ
長時間実行スナップショットクエリは、アプリケーションの汎用性と回復力を向上させます。この機能を使用して、デフォルトで 5 分間 (調整可能) のクエリを実行しながら、リアルタイムのトランザクションデータベースと一致するスナップショット分離を維持できます。また、セカンダリノードでスナップショットクエリを実行することもでき、これにより、単一のクラスターで異なるワークロードを実行し、異なるシャードにわたってそれらをスケーリングできます。
新しい MongoDB Shell
より良いユーザーエクスペリエンスを提供するために、MongoDB 5.0 では MongoDB Shell (mongosh) が根本から再設計されました。モダンなコマンドラインエクスペリエンス、強化されたユーザビリティ機能、強力なスクリプト環境を提供します。新しい MongoDB Shell は、MongoDB プラットフォームのデフォルトシェルです。構文のハイライト、インテリジェントな自動補完、コンテキストヘルプ、役立つエラーメッセージを導入し、直感的でインタラクティブなエクスペリエンスを創出します。
バージョンリリースの調整
MongoDB 5.0 以降、MongoDB のリリースはメジャーリリースとラピッドリリースに分かれています。ラピッドリリースは、ダウンロードおよびテスト用の開発バージョンとして提供されますが、本番環境での使用は推奨されません。
MongoDB 4.4
このバージョンは、以前のバージョンのユーザーの主な問題点に対処しています。
非表示インデックス
既存のインデックスを非表示にして、後続のクエリで使用されないようにすることができます。これにより、対象の非効率なインデックスを削除してもビジネスパフォーマンスに変動が生じるかどうかを観察できます。影響がない場合は、非効率なインデックスを安全に削除できます。
再定義可能なシャードキー
1 つ以上のサフィックスフィールドを追加して、チャンク上の既存のドキュメントの分布を改善できます。これにより、すべてのアクセスが単一のシャードに集中するのを避け、サーバーの負荷を分散させます。
複合ハッシュシャードキー
複合インデックスで単一のハッシュフィールドを指定でき、ビジネスロジックを大幅に簡素化します。
ヘッジ読み取り
シャードクラスターインスタンスの場合、読み取りリクエストをシャードの 2 つのレプリカセットメンバーに同時に送信できます。最も速く応答したメンバーからの結果がクライアントに返され、リクエストのレイテンシーが短縮されます。
ストリーミングレプリケーション
プライマリデータベースからの oplog エントリは、セカンダリデータベースに積極的にストリーミングされます。以前のバージョンのポーリング方式と比較して、これにより往復レイテンシがほぼ半分節約され、プライマリ-セカンダリ間のレプリケーションパフォーマンスが向上します。
同時インデックス作成
プライマリデータベースとセカンダリデータベースでのインデックス作成は同期的です。これにより、インデックス作成のレイテンシーが大幅に短縮され、セカンダリデータベースが最新のデータに迅速にアクセスできるようになります。
ミラーリング読み取り
プライマリノードは、読み取りトラフィックの一定の割合をセカンダリデータベースに複製して実行します。これにより、セカンダリノードが読み取りトラフィックの一部を処理し、ビジネスアクセスのレイテンシーが短縮されます。
再開可能な初期同期
再開可能な初期同期は、プライマリデータベースとセカンダリデータベース間の完全同期中に再開可能な転送機能を提供します。これにより、ネットワークの切断によって完全同期プロセスが最初から再開されるのを防ぎます。
時間ベースの oplog 保持
時間ベースの oplog 保持は、oplog エントリの保持期間をカスタマイズして、プライマリデータベースでクリアされるのを防ぎ、完全同期がトリガーされるのを回避します。
Union
MongoDB 4.4 には、SQL の
union allと同様の機能を実装し、MongoDB のクエリ機能を強化する $unionWith ステージが追加されました。カスタム集約式
MongoDB 4.4 では、カスタム集約式を実装するために $accumulator と $function が追加され、インターフェイスの統一性とユーザーエクスペリエンスが向上しています。
MongoDB 4.4 の新機能の詳細については、「MongoDB 4.4 の機能概要」をご参照ください。
MongoDB 4.2
MongoDB 4.2 は、2 フェーズコミット方式を使用して、シャードクラスターにおけるトランザクションの原子性、一貫性、分離性、耐久性 (ACID) プロパティを保証し、適用可能なビジネスシナリオを大幅に拡大します。
分散トランザクション
分散トランザクションは、2 フェーズコミット方式を使用して、シャードクラスターにおけるトランザクションの ACID プロパティを保証します。これにより、MongoDB のビジネスシナリオが大幅に拡大し、NoSQL から NewSQL への飛躍を示します。
再試行可能な読み取り
再試行可能な読み取りは、弱いネットワーク環境で自動再試行機能を提供します。これにより、ビジネス側の論理的な複雑さが軽減され、業務継続性が保証されます。
ワイルドカードインデックス
事前に定義されていないフィールドに対して、ワイルドカードインデックスを作成して、ドキュメント下の複数の特徴フィールドをカバーできます。これにより、管理が便利で柔軟に使用できます。
フィールドレベル暗号化
フィールドレベル暗号化は、ドライバーレベルでサポートされています。アカウント名、パスワード、価格、電話番号などの特定の機密情報を個別に暗号化できます。これにより、データベース全体の暗号化を回避し、ビジネスの柔軟性とセキュリティを向上させます。
マテリアライズドビュー
マテリアライズドビューは、計算結果をキャッシュして、繰り返しの計算を避け、操作効率を向上させ、論理的な複雑さを軽減できます。
MongoDB 4.0
MongoDB 4.0 は、トランザクションに依存し、NoSQL 機能を使用する金融などのシナリオにより適しています。
クロスドキュメントトランザクションのサポート
MongoDB 4.0 は、クロスドキュメントトランザクションをサポートする初の NoSQL クラウドデータベースです。ドキュメントモデルの速度、柔軟性、機能性と ACID 保証を組み合わせています。
40% 高速な移行速度
同時読み取りと書き込みにより、新しく追加されたシャードノードは、ビジネスワークロードを処理するためにデータ移行をより速く完了できます。
大幅に拡張された読み取りパフォーマンス
トランザクション機能により、セカンダリノードはログ同期のために読み取りリクエストをブロックしなくなりました。Alibaba Cloud はまた、すべてのバージョンでマルチノード拡張機能をサポートしており、ビジネスの読み取り能力を大幅に向上させることができます。
MongoDB 3.4 (提供終了)
MongoDB 3.4 は、バージョン 3.2 と比較して、パフォーマンスとセキュリティにおいてさまざまな改善を提供します。
MongoDB 3.2 は提供終了となりました。詳細については、「[お知らせ] ApsaraDB for MongoDB はバージョン 3.2 を提供終了し、2 月 4 日にバージョン 4.2 をリリースしました」をご参照ください。
より高速なプライマリ-セカンダリ同期
すべてのインデックスは、データ同期中に構築されます。以前のバージョンでは _id インデックスのみが構築されていました。また、データ同期フェーズ中、セカンダリノードは継続的に新しい oplog 情報を読み取り、セカンダリノードのローカルデータベースに一時データ用の十分なストレージ領域があることを確認します。
より効率的な負荷分散
バージョン 3.2 以前では、シャードクラスターの負荷分散は Mongos ノードによって処理されていました。複数の Mongos ノードが分散ロックを競合していました。ロックを正常に取得した Mongos ノードが負荷分散タスクを実行し、シャードノード間でチャンクを移行していました。バージョン 3.4 では、負荷分散は ConfigServer のプライマリノードによって処理されるようになり、負荷分散の同時実行性と効率の両方が大幅に向上しました。
より豊富な集約操作
バージョン 3.4 では、データ分析機能を強化するためにいくつかの集約オペレーターが導入されています。たとえば、
bucketはデータの分類を簡素化し、$graphLookupはバージョン 3.2 の$lookupオペレーターよりも複雑な関係操作をサポートし、$addFieldsは特定のフィールドを合計して結果を新しいフィールドとして保存するなど、より高度なドキュメント操作を可能にします。シャーディングゾーンのサポート
シャードクラスターにゾーンの概念が導入され、主にタグ対応シャーディングメカニズムを置き換えます。特定のデータを 1 つ以上の指定されたシャードノードに割り当てることができます。この機能は、シャードクラスターのデータセンター間でのデプロイメントを大幅に容易にします。
Collation のサポート
以前のバージョンでは、ドキュメントに保存された文字列は、言語や大文字小文字に関係なく、常にバイト単位で比較されていました。Collation の導入により、文字列の内容はロケールに従って解釈および比較できるようになりました。大文字小文字を区別しない比較もサポートされています。
読み取り専用ビューのサポート
バージョン 3.4 では、読み取り専用ビューのサポートが追加されました。特定のクエリ条件を満たすコレクション内のデータを特別なコレクションに仮想化し、ユーザーはそれに対してさらなるクエリ操作を実行できます。