すべてのプロダクト
Search
ドキュメントセンター

ApsaraDB for MongoDB:MongoDB 7.0の新機能

最終更新日:Jun 14, 2024

このトピックでは、ApsaraDB for MongoDBのMongoDB 7.0の新機能と最適化について説明します。

クイックプレビュー

ApsaraDB for MongoDB

MongoDB 7.0のその他の機能と最適化の詳細については、「MongoDB 7.0のリリースノート」をご参照ください。

クエリ可能な暗号化

MongoDB 6.0では、クエリ可能な暗号化機能はプレビュー中です。 MongoDB 7.0では、この機能は一般的に使用できます。 詳細については、「Queryable Encryption」をご参照ください。

Shardメタデータ整合性チェック

checkMetadataConsistencyコマンドがMongoDB 7.0に追加され、異なるシャード間のメタデータの不整合をチェックします。 例:

例 1:

// コマンド
db.ru nCommand( {
   checkMetadataConsistency: 1,
   checkIndexes: true
} ) 

例 2:

// mongosh
db.checkMetadataConsistency()
db.collection.checkMetadataConsistency()
sh.checkMetadataConsistency() 

このチェック項目を毎日のO&Mに含めて、できるだけ早い機会に潜在的な矛盾を特定できます。 詳細については、「checkMetadataConsistency」をご参照ください。

サンプリングされたクエリとシャードキー分析 (analyzeShardKey)

サンプリングされたクエリの結果に基づいて、コレクションのシャードキーが適切かどうかを分析できます。 これにより、コレクションのスキーマとシャードキーを効率的に設計し、シャーディングアーキテクチャの使用に関する情報に基づいた意思決定を行うことができます。 analyzeShardKeyコマンドの構文:

db.adminCommand ()
   {
     analyzeShardKey: <string> 、
     key: <shardKey> 、
     keyCharacteristics: <bool> 、
     readWriteDistribution: <bool> 、
     sampleRate: <double> 、
     sampleSize: <int>
   }
 )
説明

このコマンドは、コレクションの読み取りおよび書き込み操作をブロックしません。 ただし、ビジネスへの影響を最小限に抑えるために、secondaryまたはsecondaryPreferredの読み取り設定と組み合わせてコマンドを使用することを推奨します。 シャードクラスターでは、mongosは自動的に読み取りプリファレンスをsecondaryPreferredに設定します。

詳細については、「analyShardKey」および「configureQueryAnalyzer」をご参照ください。

AutoMerger

MongoDB 7.0には、バランサー用のAutoMergerという新機能が導入されています。 データまたはインデックスが不均等に分散されている場合、過剰なシャードが存在する場合、またはデータが移行される場合、AutoMergerはチャンクをマージしてデータ分散のバランスを取り、データベースのパフォーマンスを向上させます。 デフォルトでは、AutoMergerはMongoDB 7.0で有効になっています。 balancerのアクティブウィンドウを設定してAutoMergerを有効にすることもできます。

以前のバージョンのMongoDBで導入されたconfigureCollectionBalancingコマンドは、シャードコレクションのバランサー設定を構成するためにAutoMergerもサポートしています。

db.adminCommand ()
   {
     configureCollectionBalancing: "<db>.<collection>" 、
     chunkSize: <num> 、
     defragmentCollection: <bool> 、
     enableAutoMerger: <bool>
   }
)

mergeAllChunksOnShardコマンドを実行して、シャード内でマージできるすべてのチャンクまたは範囲をマージすることもできます。

db.adminCommand( { mergeAllChunksOnShard: "db.coll", shard: "Shard0" } )

シャーディング

AutoMergerに加えて、MongoDB 7.0は次の最適化を導入します。

  • rangeDeleterHighPriorityパラメーターを使用して、オーファンドキュメントの削除の優先度が高いかどうかを指定できます。 デフォルトでは、このパラメーターはfalseに設定されています。これは、MongoDBが孤立ドキュメントの削除よりもビジネス関連の削除操作を優先することを示しています。

  • MongoDB 7.0は、カタログキャッシュ更新によってブロックされた操作に関する統計を含むoperationsBlockedByRefreshドキュメントを削除します。 これは、操作がカタログ更新アクティビティによってブロックされていなくても、コレクションルーティング情報を使用するすべての操作のmongosノードでoperationsBlockedByRefreshカウンターが増加するためです。

  • リシャーディングに関連するモニタリングメトリックが追加されます。

  • addShardコマンドでは、maxSizeオプションはサポートされなくなりました。

  • config.settingsコレクションのチャンクサイズを調整すると、有効性チェックが実行され、新しい値が1〜1,024の妥当な範囲内に収まるようになります。

  • MongoDB 6.0.3以降、バランサーポリシーにいくつかの調整が行われます。

    • バランサーは、シャード間のチャンク数ではなく、データ量の違いに基づいてデータを均等に分散します。

    • 分割は、チャンクではなく範囲によって実行されます。

    • 自動分割は、データがシャード間で移行された場合にのみ有効です。

セキュリティ

  • キー管理相互運用性プロトコル (KMIP) V1.0およびV1.1がサポートされています。

  • OpenSSL 3.0とOpenSSL FIPSがサポートされています。

集約

ビット計算を実行し、パーセンタイルをサポートするために、次の演算子が追加されます。

演算子

説明

$bitAnd

INT型またはLONG型の数値に対するビット単位のAND演算の結果を返します。

$bitNot

INT型またはLONG型の数値に対するビット単位の逆演算の結果を返します。

$bitOr

INT型またはLONG型の数値に対するビット単位のOR演算の結果を返します。

$bitXor

INT型またはLONG型の数値に対するビット単位のXOR演算の結果を返します。

$中央値

50パーセンタイルに相当するおおよその中央値を返します。

$パーセンタイル

指定されたパーセンタイルを返します。

時系列コレクション

  • 時系列コレクションに対するDELETEコマンドの使用に関して以前のバージョンで課された制限は削除されます。 現在のDELETEコマンドの唯一の制限は、コマンドを複数ドキュメントトランザクションで使用できないことです。

  • COMPACTコマンドでは、時系列コレクションがサポートされます。

その他

  • catalogCacheIndexLookupDurationMillisなどのフィールドがスロークエリログに追加されます。 詳細については、「ログの低速操作」をご参照ください。

  • ストレージエンジンのトランザクション並行性は、動的に調整することができる。 調整前のデフォルトの同時実行は128です。 MongoDB 7.0から、トランザクションの同時実行が自動的に調整されます。 詳細については、「同時実行のストレージエンジントランザクション (読み取りおよび書き込みチケット) 」をご参照ください。

  • currentOpコマンドには、クエリのサンプリングに関連するフィールドが追加されます。 詳細については、「currentOp Metrics」をご参照ください。

  • 複合ワイルドカードインデックスがサポートされています。 詳細については、「複合ワイルドカードインデックス」をご参照ください。

  • $changeStreamSplitLargeEvent演算子が追加され、サイズが16 MBを超える大きな変更イベントを分割できるようになりました。 詳細については、「大規模な変更ストリームイベント」をご参照ください。

  • スロットベースのクエリ実行エンジンのパフォーマンスが最適化されます。

  • チャンク移行に関連するメトリックが追加されます。 詳細については、「チャンク移行の新しいシャーディング統計」をご参照ください。

  • USER_ROLESシステム変数を使用して、現在のユーザーのロールを取得できます。

  • analyzeShardKeybalancer、およびqueryAnalyzersに関連するグローバルパラメーターが追加されました。

  • serverStatusに対して返される結果に、さらに多くのフィールドが追加されます。 詳細については、「serverStatus Output Change」をご参照ください。