このトピックでは、ApsaraDB for MongoDBでサポートされているMongoDBのバージョンとストレージエンジン、およびMongoDBのバージョンとストレージエンジンの関係について説明します。 これにより、ニーズに最適なインスタンスを選択できます。
サポートされているMongoDBバージョン
次のMongoDBバージョンは、ApsaraDB for MongoDBでサポートされています。
インスタンスの実行中に、MongoDBバージョンを手動でアップグレードできます。 ただし、MongoDBバージョンをダウングレードすることはできません。 詳細については、「ApsaraDB For MongoDBインスタンスのメジャーバージョンのアップグレード」をご参照ください。
MongoDB 3.2
MongoDB 3.2は段階的に廃止されました。 詳細については、次をご参照ください: [お知らせ] ApsaraDB for MongoDBは、MongoDB 3.2を段階的に廃止し、MongoDB 4.2を2月4日からリリースしました。
ストレージエンジン
ストレージエンジン | シナリオ | 説明 |
WiredTiger | これはデフォルトのストレージエンジンであり、ほとんどのビジネスシナリオに適用できます。 | データはBツリー構造である。 以前のMMAPv1ストレージエンジンと比較して、WiredTigerはパフォーマンスを大幅に向上させ、データ圧縮をサポートしながらストレージコストを削減します。 |
MongoDBのバージョンとストレージエンジンの関係
ストレージエンジン | MongoDB 4.4以降 | MongoDB 4.2 | MongoDB 4.0 | MongoDB 3.4 |
WiredTiger |
|
|
|
|
MongoDB 7.0
MongoDB 7.0には、クエリ可能な暗号化、シャードメタデータ整合性チェック、サンプルクエリ、シャードキー分析 (analyzeShardKey) 、AutoMergerなどの機能がバンドルされています。 MongoDB 7.0は、シャーディング、時系列コレクション、集計、およびデータベースセキュリティも最適化します。
クエリ可能な暗号化
MongoDB 6.0では、クエリ可能な暗号化機能はプレビュー中です。 MongoDB 7.0では、この機能は一般的に使用できます。 詳細については、「Queryable Encryption」をご参照ください。
Shardメタデータ整合性チェック
checkMetadataConsistencyコマンドがMongoDB 7.0に追加され、異なるシャード間のメタデータの不整合をチェックします。 このチェック項目を毎日のO&Mに含めて、できるだけ早い機会に潜在的な不一致を特定できます。 詳細については、「checkMetadataConsistency」をご参照ください。
サンプリングされたクエリとシャードキー分析
サンプリングされたクエリの結果に基づいて、コレクションのシャードキーが適切かどうかを分析できます。 これにより、コレクションのスキーマとシャードキーを効率的に設計し、シャーディングアーキテクチャの使用に関する情報に基づいた意思決定を行うことができます。 詳細については、「analyShardKey」および「configureQueryAnalyzer」をご参照ください。
AutoMerger
MongoDB 7.0には、バランサー用のAutoMergerという新機能が導入されています。 データまたはインデックスが不均等に分散されている場合、過剰なシャードが存在する場合、またはデータが移行される場合、AutoMergerはチャンクをマージしてデータ分散のバランスを取り、データベースのパフォーマンスを向上させます。 デフォルトでは、AutoMergerはMongoDB 7.0で有効になっています。 balancerのアクティブウィンドウを設定してAutoMergerを有効にすることもできます。
シャーディング
rangeDeleterHighPriority
パラメーターを使用して、オーファンドキュメントの削除の優先度が高いかどうかを指定できます。 デフォルトでは、このパラメーターはfalseに設定されています。これは、MongoDBが孤立ドキュメントの削除よりもビジネス関連の削除操作を優先することを示しています。MongoDB 7.0は、カタログキャッシュ更新によってブロックされた操作に関する統計を含む
operationsBlockedByRefresh
ドキュメントを削除します。 これは、操作がカタログ更新アクティビティによってブロックされていなくても、コレクションルーティング情報を使用するすべての操作のmongosノードでoperationsBlockedByRefreshカウンターが増加するためです。リシャーディングに関連するモニタリングメトリックが追加されます。
addShardコマンドでは、
maxSize
オプションはサポートされなくなりました。config.settings
コレクションのチャンクサイズを調整すると、有効性チェックが実行され、新しい値が1〜1,024の妥当な範囲内に収まるようになります。MongoDB 6.0.3以降、バランサーポリシーにいくつかの調整が行われます。
バランサーは、シャード間のチャンク数ではなく、データ量の違いに基づいてデータを均等に分散します。
分割は、チャンクではなく範囲によって実行されます。
自動分割は、データがシャード間で移行された場合にのみ有効です。
時系列コレクション
時系列コレクションに対するDELETEコマンドの使用に関して以前のバージョンで課された制限は削除されます。 現在のDELETEコマンドの唯一の制限は、コマンドを複数ドキュメントトランザクションで使用できないことです。
COMPACTコマンドでは、時系列コレクションがサポートされます。
集約
ビット計算を実行し、パーセンタイルをサポートするために、次の演算子がMongoDB 7.0に追加されます。
演算子
説明
$bitAnd
INT型またはLONG型の数値に対するビット単位のAND演算の結果を返します。
$bitNot
INT型またはLONG型の数値に対するビット単位の逆演算の結果を返します。
$bitOr
INT型またはLONG型の数値に対するビット単位のOR演算の結果を返します。
$bitXor
INT型またはLONG型の数値に対するビット単位のXOR演算の結果を返します。
$中央値
50パーセンタイルに相当するおおよその中央値を返します。
$パーセンタイル
指定されたパーセンタイルを返します。
セキュリティ
キー管理相互運用性プロトコル (KMIP) V1.0およびV1.1がサポートされています。
OpenSSL 3.0とOpenSSL FIPSがサポートされています。
その他
catalogCacheIndexLookupDurationMillis
などのフィールドがスロークエリログに追加されます。 詳細については、「ログの低速操作」をご参照ください。ストレージエンジンのトランザクション並行性は、動的に調整することができる。 調整前のデフォルトの同時実行は128です。 MongoDB 7.0から、トランザクションの同時実行が自動的に調整されます。 詳細については、「同時実行のストレージエンジントランザクション (読み取りおよび書き込みチケット) 」をご参照ください。
currentOpコマンドには、クエリのサンプリングに関連するフィールドが追加されます。 詳細については、「currentOp Metrics」をご参照ください。
複合ワイルドカードインデックスがサポートされています。 詳細については、「複合ワイルドカードインデックス」をご参照ください。
$changeStreamSplitLargeEvent
演算子が追加され、サイズが16 MBを超える大きな変更イベントを分割できるようになりました。 詳細については、「大規模な変更ストリームイベント」をご参照ください。スロットベースのクエリ実行エンジンのパフォーマンスが最適化されます。
チャンク移行に関連するメトリックが追加されます。 詳細については、「チャンク移行の新しいシャーディング統計」をご参照ください。
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) から取得した暗号化キーを含むクエリがサーバーに送信されると、サーバーはクエリを処理し、暗号文で応答を返します。 そして、クライアントは、暗号鍵を用いてレスポンスを復号し、平文で表示する。
クラスター間同期
MongoDB 6.0に導入されたmongosyncツールは、ApsaraDB for MongoDBインスタンス間の継続的かつ単方向のデータ同期をサポートします。 mongosyncツールを使用すると、同期タスクをリアルタイムで管理および監視できます。 同期タスクを開始、停止、再開、または逆にすることができます。
時系列コレクション
時系列コレクションは、インデックス作成、クエリ、およびソートの点で強化されています。
セカンダリおよび複合インデックスを時系列コレクションで使用して、読み取りパフォーマンスを向上させることができます。
時系列データに地理空間インデックスを追加して、距離と位置を含むシナリオをサポートできます。
たとえば、冷蔵トラックの温度変化を追跡し、特定のルートで貨物船の燃料消費量を監視できます。
時系列データに対する
最後のポイント
のクエリが最適化されます。 最後のデータポイントを取得するためにコレクション全体をスキャンする必要がなくなりました。タイムスタンプを使用し、メタデータフィールドにクラスタ化インデックスとセカンダリインデックスを作成することで、時系列データをより効率的にソートできます。
ストリームの変更
MongoDB 6.0は、次の新機能と最適化を提供します。
プレイメージを見ることができます。
説明MongoDB 6.0以前は、投稿画像のみを表示できます。 MongoDB 6.0から、プレイメージも表示できます。 プレイメージとポストイメージの詳細については、「ドキュメントのプレイメージとポストイメージによるストリームの変更」をご参照ください。
create
、createIndexes
、modify
、shardCollection
などのDDLステートメントがサポートされています。 詳細については、「イベントの変更」をご参照ください。wallTime
フィールドは、イベントを変更するために追加されます。 フィールドで使用されるタイムスタンプは、消費を容易にするために、$toDate
、$tsSeconds
、tsIncrement
などの複数の変換演算子をサポートしています。
集約
MongoDB 6.0は、次の新機能と最適化を提供します。
$lookup
と$graphLookup
はシャードクラスターインスタンスでサポートされています。結合のための
$lookup
のサポートが改善されました。グラフトラバーサル用の
$graphLookup
のサポートがサポートされています。$lookup
のパフォーマンスの最大数百倍の改善がアーカイブされます。
説明$lookup
と$graphLookup
の詳細については、「 $lookup (aggregation) 」と「 $graphLookup (aggregation) 」をご参照ください。クエリ
$maxN
、$topN
、$minN
、$bottomN
、$lastN
、$sortArray
などの演算子が追加されます。 オペレーターを使用すると、コンピューティングにデータベースを使用して、ビジネスアプリケーションの負担を軽減できます。説明演算子の詳細については、「集計パイプライン演算子」をご参照ください。
柔軟性
MongoDB 6.0は、次の新機能と最適化を提供します。
データチャンクのデフォルトサイズは、64 MBから128 MBに更新されます。 これにより、データ移行の頻度が減り、ネットワークとルーティングのオーバーヘッドが減ります。
configureCollectionBalancing
コマンドがサポートされています。 このコマンドは、次の機能をサポートします。異なるシャードテーブルに対して異なるチャンクサイズをサポートします。
たとえば、超大規模なシャードテーブルの場合はチャンクサイズを256 MBに設定し、均等なデータ分散を必要とする小規模なシャードテーブルの場合はチャンクサイズを64 MBまたは32 MBに設定できます。
アクティブなコレクションの最適化をサポートします。
compact
コマンドと比較して、configureCollectionBalancing
コマンドはディスク領域の使用量を削減するためにデフラグサービスを最適化します。
説明configureCollectionBalancing
コマンドの詳細については、「configureCollectionBalancing」をご参照ください。セキュリティ
MongoDB 6.0は、クライアント側フィールドレベル暗号化 (CSFLE) 機能を最適化します。 最適化後、CSFLE機能は、KMIP (Key Management Interoperability Protocol) に準拠したキープロバイダーで使用できます。 つまり、MongoDBは、ローカルのKeyfileベースのキー管理サービスに加えて、KMIPを使用してサードパーティのキー管理デバイスもサポートします。 これにより、セキュリティが強化される。
説明CSFLE機能は、機密データの管理、特にデータ移行シナリオで広く使用されています。
MongoDB 5.0
MongoDB 5.0は、以前よりも高速に新機能を提供する新しいリリースサイクルを示しています。
ネイティブ時系列プラットフォーム
MongoDB 5.0は、取り込み、ストレージ、クエリ、リアルタイム分析、視覚化から、データが古くなったときのオンラインアーカイブまたは自動有効期限まで、時系列データのライフサイクル全体をネイティブにサポートします。 これにより、時系列アプリケーションの構築と実行が合理化され、コストが削減されます。 V5.0では、MongoDBはユニバーサルアプリケーションデータプラットフォームを拡張し、開発者が時系列データを簡単に処理できるようにしました。 これにより、プラットフォームのアプリケーションシナリオがIoT、財務分析、ロジスティクスなどの分野にさらに拡張されます。
ライブresharding
ワークロードの拡大または進化に応じて、コレクションのシャードキーをオンデマンドで変更できます。 このプロセスでは、データベースのダウンタイムやデータセット内の複雑な移行は必要ありません。 MongoDB ShellでrehardCollectionコマンドを実行して、reshardするデータベースとコレクションを選択し、新しいシャードキーを指定できます。
reshardCollection: "<database>.<collection>", key: <shardkey>
説明<database>: リシャードするデータベースの名前。
<collection>: リシャードするコレクションの名前。
<shardkey>: シャードキーの名前。
MongoDBでreshardCollectionコマンドを実行すると、既存のコレクションが複製され、既存のコレクション内のすべてのoplogが新しいコレクションに適用されます。 すべてのoplogを適用した後、MongoDBは新しいコレクションに切り替え、既存のコレクションを削除します。
バージョン対応API
Versioned API機能を使用すると、完全な下位互換性を備えた各バージョンのデータベースに新しい機能を追加できます。 APIを変更すると、既存のバージョンのAPIと同時に、同じサーバー上で新しいバージョンのAPIを実行できます。 新しいMongoDBバージョンがより速いペースでリリースされると、Versioned API機能により、最新バージョンの機能に簡単にアクセスできます。
バージョンAPI機能は、アプリケーションで最も一般的に使用される一連のコマンドとパラメーターを定義します。 これらのコマンドは、年次メジャーリリースや四半期ごとのラピッドリリースを含むすべてのデータベースリリースで変更されません。 その結果、アプリケーションライフサイクルはデータベースライフサイクルから切り離され、ドライバーを特定のバージョンのMongoDB APIに固定することができます。 これにより、データベースをアップグレードした後でも、コードを変更することなく、アプリケーションを数年間実行し続けることができます。
デフォルトの過半数の書き込みに関する懸念。
MongoDB 5.0以降、書き込み懸念のデフォルトレベルは過半数です。 書き込み操作がコミットされ、書き込み操作がプライマリノードに適用され、大多数のセカンダリノードのログに永続化された場合にのみ、書き込み成功応答がアプリケーションに返されます。 これにより、MongoDB 5.0はすぐにデータの耐久性を保証します。
実行時間の長いスナップショットクエリ
実行時間の長いスナップショットクエリにより、アプリケーションの汎用性と柔軟性が向上します。 この関数を使用して、デフォルト時間5分でクエリを実行したり、クエリの実行時間を調整したりできます。 さらに、この機能は、リアルタイムトランザクションデータベースとの一貫したスナップショット分離を維持し、セカンダリノードでスナップショットクエリを実行できます。 これにより、単一のクラスターでさまざまなワークロードを実行し、ワークロードをさまざまなシャードにスケールできます。
新しいMongoDBシェル
ユーザーエクスペリエンスを向上させるために、MongoDBシェルは、最新のコマンドラインエクスペリエンス、強化されたユーザビリティ機能、および強力なスクリプト環境を提供するようにゼロから再設計されました。 新しいMongoDBシェルがMongoDBのデフォルトシェルになりました。 新しいMongoDB Shellは、構文の強調表示、インテリジェントなオートコンプリート、コンテキストヘルプ、便利なエラーメッセージを導入して、視覚化されたインタラクティブなエクスペリエンスを作成します。
バージョンリリース調整
MongoDB 5.0から、MongoDBは2つの異なるリリースシリーズ (Rapid ReleasesとMajor Releases) としてリリースされます。 迅速なリリースは、評価と開発の目的で利用できます。 運用環境ではRapid Releasesを使用しないことを推奨します。
MongoDB 4.4
MongoDB 4.4は、以前のバージョンの最も明白な問題を克服します。
隠しインデックス
既存のインデックスは、後続のクエリで使用されないように非表示にします。 指定された非効率的なインデックスの削除がパフォーマンスを損なうかどうかを確認できます。 そうでない場合は、非効率なインデックスを削除できます。
精製可能なシャードキー
1つ以上のサフィックスフィールドは、チャンク上の既存のドキュメントの分散を改善するために追加される。 これにより、単一のシャードへの同時アクセスが防止され、サーバーの負荷が軽減されます。
化合物ハッシュシャードキー
ビジネスロジックを単純化するために、複合インデックスで単一のハッシュフィールドを指定できます。
ヘッジリード
シャードクラスタインスタンスの場合、読み取り要求は同じシャードの2つのレプリカに同時に送信できます。 最初に受け取った結果は、クライアントを回復するために使用されます。 これにより、リクエストの待ち時間が短縮されます。
ストリーミングレプリケーション
一次データベースのoplogは、二次ノードに能動的に送信される。 セカンダリノードがポーリングされる以前のバージョンと比較して、この方法は、ラウンドトリップ時間のほぼ半分を節約し、プライマリノードとセカンダリノード間のデータレプリケーションのパフォーマンスを向上させます。
同時インデックス作成
一次および二次ノードの索引付けプロセスは同期される。 これにより、インデックス作成プロセスにおいてプライマリノードおよびセカンダリノードによって生成されるレイテンシが大幅に削減され、セカンダリノードが最新のデータにタイムリーにアクセスできることが保証されます。
ミラー読み取り
プライマリノードは、読み取りトラフィックの一部を処理のためにセカンダリノードに同期させます。 セカンダリノードは読み取りトラフィックを処理するため、アクセス遅延を減らすことができます。
再開可能な初期同期
ApsaraDB for MongoDBは、プライマリノードとセカンダリノード間の完全同期中の再開可能なアップロードをサポートします。 これにより、ネットワークが切断された場合に同期が開始されません。
時間ベースのOplog保持
oplogsの保持期間をカスタマイズできます。 oplogがクリアされると、プライマリノードからの完全な同期が必要になります。
Union
MongoDBのクエリパフォーマンスを向上させるために、$unionWithステージが追加されました。 この段階は、SQLの
UNION ALL
ステートメントに似ています。カスタム集計式
$accumulatorおよび $function演算子を追加して、カスタム集計式を実装し、インターフェイスの一貫性とユーザーエクスペリエンスを向上させます。
MongoDB 4.4の新機能の詳細については、「MongoDB 4.4の機能」をご参照ください。
MongoDB 4.2
MongoDB 4.2は、2フェーズコミットメソッドを使用して、シャードクラスタインスタンスのトランザクションの原子性、一貫性、分離、耐久性 (ACID) プロパティを確保します。 これにより、ビジネスシナリオが大幅に拡大します。
分散トランザクション
2フェーズコミットメソッドは、シャードクラスタインスタンスのトランザクションのACIDプロパティを保証し、ビジネスシナリオを拡張し、NoSQLからNewSQLへの飛躍を実現します。
繰り返し読み取り
繰り返し可能な読み取り機能は、低品質のネットワーク環境で自動再試行機能を提供します。 これにより、サービス側のロジックの複雑さが軽減され、ビジネスの継続性が保証されます。
ワイルドカードインデックス
非決定性フィールドのワイルドカードインデックスを作成して、ドキュメント内の複数のフィーチャフィールドを上書きし、柔軟な管理と使用を実現できます。
フィールドレベルの暗号化
フィールドレベルの暗号化はドライバー層でサポートされており、アカウント、パスワード、価格、携帯電話番号などの指定された機密情報を個別に暗号化するために使用できます。 フィールドレベルの暗号化を使用すると、データベース全体の暗号化なしでビジネスをより柔軟かつ安全にすることができます。
具体化されたビュー
最新のマテリアライズドビューは、コンピューティング結果をキャッシュして、コンピューティングをより効率的かつロジックの複雑さを軽減できます。
MongoDB 4.0
MongoDB 4.0 は、トランザクションに依存し、NoSQL 機能を使用する金融およびその他のシナリオに適しています。
クロスドキュメントトランザクション
ドキュメント間トランザクションをサポートする最初のNoSQLデータベースとして、MongoDB 4.0は、ドキュメントモデルの速度、柔軟性、機能、およびACID保証を組み合わせたものです。
移行速度が40% 増加
同時の読み取りおよび書き込み操作により、新しいシャードノードはデータを高速に移行し、サービスの負荷を負担できます。
読み取りパフォーマンスが大幅に向上
トランザクション機能により、ログ同期によりセカンダリノードが読み取り要求をブロックしなくなります。 マルチノードスケーリング機能はすべてのバージョンでサポートされており、読み取り機能が大幅に向上します。
MongoDB 3.4
MongoDB 3.2 と比較して、MongoDB 3.4 はパフォーマンスとセキュリティの面で改善されています。
MongoDB 3.2は段階的に廃止されました。 詳細については、次をご参照ください: [お知らせ] ApsaraDB for MongoDBは、MongoDB 3.2を段階的に廃止し、MongoDB 4.2を2月4日からリリースしました。
プライマリノードとセカンダリノード間の高速同期
すべてのインデックスは、データの同期時に作成されます (以前のバージョンでは_idインデックスのみが作成されます) 。 データ同期中、セカンダリノードは新しいoplog情報を継続的に読み取り、セカンダリノードのローカルデータベースが一時データを格納するのに十分なスペースを確保します。
より効率的なロードバランシング
以前のバージョンでは、mongosノードはシャードクラスターインスタンスの負荷分散を担当していました。 複数のmongosノードが分散ロックを競合します。 ロックを取得したノードは、負荷分散タスクを実行し、シャードノード間でチャンクを移行します。 MongoDB 3.4では、プライマリConfigserverノードが負荷分散を担当します。 これにより、負荷分散の同時実行性と効率が大幅に向上します。
その他の集計操作
多くの集計演算子がMongoDB 3.4に追加され、より強力なデータ分析機能を提供します。 たとえば、
bucket
は便利にデータを分類できます。$grahpLookup
は、MongoDB 3.2の$lookup
よりも複雑なリレーショナル操作をサポートします。$addFields
は、いくつかのフィールドを合計し、計算結果を新しいフィールドとして保存するなど、より多様なドキュメント操作をサポートします。Shardingゾーンをサポート
ゾーンの概念は、現在のタグ認識シャーディングメカニズムを置き換えるために、シャードクラスタインスタンスに導入されます。 ゾーン機能は、1つ以上の指定されたシャードノードにデータを割り当てることができます。 この機能により、データセンター全体にシャードクラスターインスタンスを便利にデプロイできます。
対応照合
以前のバージョンでは、ドキュメントに格納された文字列は、中国語、英語、大文字、小文字に関係なく、常にバイト単位で比較されます。 照合順序が導入された後、文字列の内容は、使用されたロケールに基づいて解釈または比較できます。 大文字と小文字を区別しない比較もサポートされています。
読み取り専用ビュー
MongoDB 3.4は読み取り専用ビューをサポートしています。 MongoDB 3.4は、クエリ条件を満たすデータを、さらにクエリを実行できる特別なコレクションに仮想化します。