Overview
アーカイブ ルールを指定することで、標準コレクション内のデータをアーカイブするように構成できます。標準コレクションのアーカイブ ルールは、次のいずれかになります。
保持期間とペアになった日付フィールドで、Atlas がクラスターからアーカイブ(Date Match)にデータを移動するタイミングを決定します。
アーカイブするドキュメントを選択するカスタムJSONクエリ(Custom Criteria)。
Atlas クラスターをオンライン アーカイブ用に構成するには、次の手順に従います。
コレクションの名前空間とアーカイブするデータを選択するための基準を指定して、アーカイブ ルールを作成します。
(任意)アーカイブ データをパーティション分割するよくクエリされるフィールドを指定します。
クラスターで Online Archive を構成すると、Atlas はアーカイブ専用とアーカイブ用の 2 つのフェデレーティッドデータベースインスタンスをクラスター上に作成します。
すべてのオンライン アーカイブに適用される制限については、「制限」を参照してください。
前提条件
Atlas Online アーカイブを構成する前に、Atlas クラスターが正常であることを確認してください。1 つのノードがダウンしている場合、クラスターが完全に機能するまでアーカイブは PENDING ステータスのままになります。
必要なアクセス権
Atlas Online Archive を作成するには、プロジェクトに対するProject Data Access Admin以上のアクセス権が必要です。
アーカイブが利用可能かどうかを確認するには、プロジェクトに対するProject Read Only以上のアクセス権が必要です。
Atlas CLI 経由での構成
Atlas CLI を使用してクラスターのオンラインアーカイブを作成するには、次のコマンドを実行します。
atlas clusters onlineArchives create [options]
Atlas CLI を使用して特定のオンライン アーカイブが使用可能になるかどうかを確認するには、次のコマンドを実行します。
atlas clusters onlineArchives watch <archiveId> [options]
前のコマンドの構文とパラメーターについて詳しくは、Atlas CLIドキュメントの Atlas clusters onlineArchives create and Atlas clusters onlineArchives watch を参照してください。
Atlas Administration APIを使用した構成
API からオンライン アーカイブを構成するには、オンラインアーカイブエンドポイントにPOSTリクエストを送信します。
注意
DATE条件を使用する場合は、パーティション キーの一部としてdateフィールドを指定する必要があります。
同じデータベースとコレクションに対して同じアーカイブ ルールを持つ Active オンライン アーカイブがクラスターにすでにある場合、操作は失敗します。ただし、既存のオンライン アーカイブが Paused または Deleted 状態にある場合は、新しいオンライン アーカイブが作成され、そのステータスは Active に設定されます。構文とオプションの詳細については、API を参照してください。
ユーザー インターフェースによる構成
Atlas UIで 標準コレクション用のオンライン アーカイブを構成するには次の手順に従います。
Atlas で、プロジェクトの [Clusters] ページに移動します。
まだ表示されていない場合は、希望するプロジェクトを含む組織を選択しますナビゲーション バーのOrganizationsメニュー
まだ表示されていない場合は、ナビゲーション バーのProjectsメニューから目的のプロジェクトを選択します。
サイドバーで、 Database見出しの下のClustersをクリックします。
[ Clusters (クラスター) ] ページが表示されます。
次の情報を提供して Archiving Rule を作成します。
Namespaceフィールドに、データベース名、ドット(
.)セパレーター、コレクション名(<database>.<collection>)を含むコレクション名前空間を指定します。オンライン アーカイブが作成された後は、名前空間を変更できません。
最適なパフォーマンスを確保するには、コレクションの Dateフィールドにインデックスを作成します。
アーカイブされたデータを保存するクラウドプロバイダーのリージョンを選択します。
重要: 別のリージョンを選択するとデータ転送コストが高くなる可能性があるため、可能であればクラスターと同じリージョンを選択することをお勧めします。
Atlas では、クラスターが配置されているクラウドプロバイダーに基づいて、クラウドプロバイダーのリージョンが表示されます。 マルチクラウド クラスターの場合、Atlas には最も優先順位の高いプロバイダーのクラウドプロバイダー リージョンが表示されます。 Atlas は を表示しますクラスターが配置されているリージョンに近い、または完全に一致するリージョンの横にある。
Atlasに配置されたAmazon Web Services クラスターの場合は、次のいずれかのリージョンを選択できます。
Data Federation のリージョンAmazon Web ServicesリージョンAtlas リージョン米国バージニア州北部
us-east-1US_EAST_1米国ワシントン州
us-west-2US_WEST_2サンパウロ(ブラジル)
sa-east-1SA_EAST_1アイルランド
eu-west-1EU_WEST_1London, England, UK
eu-west-2EU_WEST_2フランクフルト(ドイツ)
eu-central-1EU_CENTRAL_1Tokyo, Japan
ap-northeast-1AP_NORTHEAST_1韓国(ソウル)
ap-northeast-2AP_NORTHEAST_2ムバイ(インド)
ap-south-1AP_SOUTH_1香港
ap-southeast-1AP_SOUTHEAST_1オーストラリア、シドニー
ap-southeast-2AP_SOUTHEAST_2カナダ・ケベック州・モントリオール
ca-central-1CA_CENTRAL_1Azureに配置された Atlas クラスターの場合、別のクラウドプロバイダーを使用しているクラスター上に他のオンラインアーカイブがない場合にのみ、 Azureリージョンを選択できます。 クラスター上の既存の Online Archive がアーカイブ データの保存にAmazon Web ServicesまたはGoogle Cloud Platformを使用している場合は、そのクラスター上の新しい Online Archive に対してAmazon Web ServicesまたはGoogle Cloud Platformのリージョンのみを選択できます。
重要: Azureに配置されたクラスターの場合、 Amazon Web ServicesまたはGoogle Cloud Platformを使用する既存のオンラインアーカイブがあり、それらを削除する場合は、 Azureを使用する新しいオンラインアーカイブを作成する前に 5 日間待つ必要があります。この 5 日間に新しい Online アーカイブを作成しようとすると、最初に選択したクラウドプロバイダーがデフォルトでデフォルト。
Azureに配置された Atlas クラスターの場合は、次のいずれかのリージョンを選択できます。
Data Federation のリージョンAzure リージョンAtlas リージョンVirginia, USA
eastus2US_EAST_2サンパウロ(ブラジル)
brazilsouthBRAZIL_SOUTHオランダ語
westeuropeEUROPE_WESTAtlasGoogle Cloud Platformに配置された クラスターの場合、別のクラウドプロバイダーを使用しているクラスター上で他のオンラインアーカイブがない場合にのみ、Google Cloud Platform リージョンを選択できます。クラスター上の既存の Online Archive がアーカイブ データの保存にAmazon Web ServicesまたはAzureを使用している場合は、そのクラスター上の新しい Online Archive にはAmazon Web ServicesまたはAzureリージョンのみを選択できます。
重要: Google Cloud Platformに配置されたクラスターの場合、Amazon Web ServicesまたはAzureを使用する既存のオンラインアーカイブがあり、それらを削除する場合は、Google Cloud Platformを使用する新しいオンラインアーカイブを作成する前に 5 日間待つ必要があります。この 5 日間に新しい Online アーカイブを作成しようとすると、最初に選択したクラウドプロバイダーがデフォルトでデフォルト。
Atlasに配置されたGoogle Cloud Platform クラスターの場合は、次のいずれかのリージョンを選択できます。
Data Federation のリージョンGoogle Cloud リージョンAtlas リージョンIowa, USA
us-central1IOWA_USAベルギー
europe-west1BELGIUM_EU重要: Atlas でオンラインアーカイブが作成された後は、ストレージリージョンを変更することはできません。
Date Match タブまたは Custom Criteriaタブでアーカイブするドキュメントを選択するための基準を指定します。
日付フィールドと日数の組み合わせを使用して コレクションからドキュメントを選択するには、次のようにします。
コレクション内のドキュメントからすでにインデックス付きの日付フィールドを指定します。 ネストされたフィールドを指定するには、ドット表記 を使用します。
Atlas クラスターにデータを保持する日数を指定します。
指定された日付フィールドの日付形式を選択します。日付は、 ISO-8601 形式の日付、 UNIXエポック形式のタイムスタンプ、または ObjectId として表現できます。UNIXエポック タイムスタンプは、ナノ秒、ミリ秒、または 秒単位で表現できます。
次のいずれかの形式を選択する場合、指定される日付フィールドの値はBSON 型
longである必要があります。EPOCH_SECONDSEPOCH_MILLISEPOCH_NANOSECONDS
重要: オンラインアーカイブが作成された後は、日付フィールドを変更できません。
カスタム フィルターを使用してコレクションからドキュメントを選択するには、実行する有効なJSONフィルターを指定します。 Atlas は、指定されたカスタム フィルターをdb.collection.find(filter) コマンドを使用します。 空のドキュメント引数(
{})を使用してすべてのドキュメントを返すことはできません。 $expr などの MongoDB Atlas 演算子 を使用して、次の例に示すようにすべての集計演算子を利用できます。重要: 次の例では、すべてのドキュメントに日時値を持つ
bucket_end_dateフィールドが含まれていることを前提としています。次の例では、Atlas はbucket_end_dateフィールドを含まないすべてのドキュメントと、bucket_end_dateが日時値ではないすべてのドキュメントをアーカイブします。例
このカスタム フィルターの例では、現在の日付がドキュメントの
bucket_end_dateフィールドの日付を超えた場合、Atlas は現在の日付から 30 日(ミリ秒単位)を差し引き、その日数、時間数、分数が過ぎるとデータをアーカイブします。{ "$expr": { "$lte": [ "$bucket_end_date", { "$subtract": [ "$$NOW", 2592000000 ] } ] } } このカスタム フィルターの例では、現在の日付が
objectId内の日付を超えると、Atlas は現在の日付から 30 日(ミリ秒単位)を減算し、その日数、時間数、分数が過ぎるとデータをアーカイブします。{ "$expr": { "$lte": [ {"$toDate": "$_id"}, { "$subtract": [ "$$NOW", 2592000000 ] } ] } } カスタム フィルターで$exprを使用すると、Atlas クラスターがデータをアーカイブするためにインデックスを使用できなくなる可能性があります。
次のカスタム フィルターの例では、フィールドを複数含む複雑な条件を示しています。
{{{ "$and":[ {"$expr":{"$lte":["$createdAt",{"$subtract":["$$NOW",43200000]}]}}, {"status":{"$ne":"active"}} ] }}} 重要
Atlas は最初のアーカイブ実行中にインデックス十分性クエリを実行して、アーカイブ処理の効率を判断します。返されたドキュメント数に対するスキャンされたドキュメント数の比率が 10 以上の場合、そのクエリ結果では
Index Sufficiency Warningを発行します。この警告は、効率的なアーカイブ プロセスに対してインデックスが不十分であることを示しています。日付ベースのアーカイブの場合は、日付フィールドにインデックス必要があります。式を使用するカスタム条件の場合、Atlas はクエリに対して値を評価する前に、まず値を変換する場合があります。インデックスの十分性に関するクエリは、十分なインデックスが検出されると実行を停止します。コレクションのインデックスが後で削除され、アーカイブプロセスが低速化する場合、Atlas は
Index Sufficiency Warningを発行しません。
オンライン アーカイブにデータを保存する日数と、Atlas がアーカイブ ジョブを実行する時間枠を指定します。
(任意) Data Retention Periodを指定します。
デフォルトでは、Atlas はアーカイブ データを削除しません。 ただし、 Data Retention Periodを指定した場合、アーカイブ データを保持するには、
7~9125日(25 年間)を指定できます。 Atlas は、ここで指定した日数の経過後にアーカイブ データを削除します。 このデータ有効期限ルールは、 Data Retention Period24設定すると有効化されます。警告: Atlas がデータを削除すると、データを復元することはできません。
(任意) Schedule Archiving Windowを指定します。
デフォルトでは、Atlas は定期的にクエリを実行してデータをアーカイブします。 ただし、 Schedule Archiving Windowを切り替えて、Atlas でデータをアーカイブする時間枠を明示的にスケジュールできます。 次の項目を指定できます。
頻度。 ジョブは毎日、特定の日に実行するか、毎月特定の日付に実行するかを選択できます。 毎月 29 日、30 日、または 31 日にデータ アーカイブ ジョブをスケジュールする場合、これらの日付がない月(たとえば 2 月)、Atlas はアーカイブ ジョブを実行しません。
時間枠(単位は時間)。 Atlas がデータ アーカイブ ジョブを実行する期間を選択します。 少なくとも 2 時間を指定する必要があります。 実行中のジョブが指定された時間枠内に完了しない場合、Atlas そのジョブが完了するまで実行を続けます。
コレクション内で最も頻繁にクエリされる 2 つのフィールドを指定して、オンライン アーカイブにパーティションを作成します。
重要:アーカイブには少なくとも 1 つの パーティションフィールドが必要です。
コレクションから最も頻繁にクエリされるフィールドをそれぞれ フィールドとSecond most commonly queried field Third most commonly queried fieldフィールドに入力します。ネストされたフィールドを指定するには、ドット表記を使用します。 ドット表記を使用して指定するネストされたフィールドの前後に引用符( "" )を含めないでください。
警告
パーティション分割にはピリオド( . )を含むフィールド名は指定できません。
指定されたフィールドは、アーカイブ データのパーティション分割に使用されます。 パーティションはフォルダーに似ています。 日付フィールドは、 Date Match条件のデフォルトでパーティションの最初の位置にあります。 頻繁にクエリを実行する場合は、別のフィールドをパーティションの最初の位置に移動できます。
パスにリストされるフィールドの順序は重要です。指定されたパス内のデータは、最初に最初のフィールドの値によって分割され、次に 2 番目のフィールドの値によって分割されます。Atlas は、パーティションを使用して指定されたフィールドに対するクエリをサポートします。
たとえば、 sample_mflixデータベース内のmoviesコレクションに対してオンライン アーカイブを構成しているとします。 アーカイブされたフィールドが 3 番目の位置に移動したreleased日付フィールドで、最初のクエリされたフィールドがtitleで、2 番目のクエリされたフィールドがplotの場合、パーティションは次のようになります。
/title/plot/released
Atlas では、最初にtitleフィールド、次にplotフィールド、次にreleasedフィールドのパーティションが作成されます。 Atlas は、次のフィールドのクエリにパーティションを使用します。
titleフィールドtitleフィールドとplotフィールドtitleフィールドとplotフィールドとreleasedフィールド
Atlas はパーティションを使用して、title および released フィールドに対するクエリをサポートすることもできます。ただし、この場合、クエリが title および plot フィールドのみに対するものである場合と比べて、Atlas はクエリのサポートにおいて効率的ではありません。オンライン アーカイブを効率的にクエリするには、定義されているすべてのパーティション フィールドを定義されている順序で含めます。すべてのパーティション フィールドを順序にクエリすると、特定のパーティションがターゲットになり、スキャンされるデータ量が最小限に抑えられます。title および released に対するクエリで plot が省略されるため、Atlas はこのクエリをサポートするにあたり、released パーティションよりも title パーティションをより効率的に使用します。
Atlas はパーティショニング戦略を使用して、ここで指定されていないフィールドに対するクエリを効率的にサポートすることはできません。 また、Atlas ではパーティションを使用して、 titleフィールドのない次のフィールドを含むクエリをサポートできません。
plotフィールドreleasedフィールド、またはplotフィールドとreleasedフィールド。
ドキュメント内の最も頻繁にクエリされるフィールドをそれぞれ フィールドとMost commonly queried field Second most commonly queried fieldフィールドに入力します。ネストされたフィールドを指定するには、ドット表記を使用します。 ドット表記を使用して指定するネストされたフィールドの前後に引用符( "" )を含めないでください。
指定されたフィールドは、アーカイブされたデータを分割するために使用されます。パーティションはフォルダに似ています。パスにリストされるフィールドの順序は重要です。指定されたパス内のデータは、最初に最初のフィールドの値で分割され、次に2番目のフィールドの値で分割されます。Atlas は、パーティションを使用して指定されたフィールドに対するクエリをサポートします。
たとえば、 sample_mflixデータベース内のmoviesコレクションに対してオンライン アーカイブを構成しているとします。 最もクエリされたフィールドがgenresフィールドで、2 番目のクエリ フィールドがtitleの場合、パーティションは次のようになります。
/genres/title
Atlas は最初にgenresフィールド用のパーティションを作成し、次にtitleフィールド用のパーティションを作成します。 Atlas は、次のフィールドのクエリにパーティションを使用します。
genresフィールドgenresフィールドとtitleフィールド。
Atlas は、パーティションを使用して title フィールドのみに対するクエリをサポートすることもできます。ただし、この場合、Atlas は、クエリが genres フィールドのみに対するか、 genres および title フィールドに対する場合と比較して、クエリのサポートにおいて効率が低下します。オンライン アーカイブを効果的にクエリするには、定義されている順序で定義されているすべてのパーティション フィールドを含めます。すべてのパーティション フィールドを順序にクエリすると、特定のパーティションがターゲットになり、スキャンされるデータ量が最小限に抑えられます。title に対するクエリでは genres が省略されるため、Atlas は genres パーティションを使用してこのクエリをサポートしません。また、Atlas は、パーティションを使用して title フィールドの後に genres フィールドに対するクエリをサポートする場合の効率が低下します。
Atlas は、ここで指定されていないフィールドに対するクエリをサポートするためにパーティションを使用することはできません。
Amazon Web Servicesでサポートされている文字のみを含むフィールドを選択します。回避する文字の詳細については、 オブジェクトキー名の作成 を参照してください。Atlas はスキップし、サポートされていない文字を含むドキュメントをアーカイブしません。
多形データを含まないフィールドを選択します。 Atlas は、コレクションから 10 個のドキュメントをサンプリングして、パーティション フィールドのデータ型を決定します。 ドキュメント内の指定されたフィールド値が同じコレクション内の他のドキュメントの値と一致しない場合、Atlas はドキュメントをアーカイブしません。
頻繁にクエリを実行するフィールドを選択し、最初の位置では最も頻繁にクエリが実行されるフィールドから、最後の位置では最もクエリが少ないフィールドの順に並べ替えます。 たとえば、日付フィールドを頻繁にクエリする場合は、日付フィールドを最初の位置のままにします。 ただし、別のフィールドを頻繁にクエリする場合は、そのフィールドを最初の位置に含める必要があります。
重要: 年 6 月 2023 日より前に作成された Atlas Online Archive の場合、 MongoDB はAtlas Online Archive のクエリフィールドとして、濃度の高い string 型フィールドを推奨しません。濃度の高い string 型フィールドの場合、Atlas は多数のパーティションを作成します。これは、2023 年 6 月 日以降に作成された Atlas Online Archive には適用されません。詳しくは、MongoDBブログの記事をお読みください。
Atlas は次のパーティション属性タイプをサポートしています。
datedoubleintlongobjectIdstringboolean
サポートされているパーティション属性のタイプの詳細については、「パーティション属性のタイプ 」を参照してください。
重要: explain コマンドを使用して、クエリを満たすために使用されたデータパーティションに関する情報を返すことができます。詳しくは、explain を参照してください。
パーティションを使用するとクエリのパフォーマンスは向上しますが、これらのフィールドを含まないクエリでは、アーカイブされたすべてのドキュメントのコレクション全体をスキャンする必要があり、時間がかかり、コストが増加します。 パーティションによって Atlas Data Federation でクエリ パフォーマンスが向上する方法の詳細については、「 S3 のデータ構造 」を参照してください。
オンライン アーカイブの設定をレビューして確認するには、Next をクリックします。
次のアーカイブ ルールの設定を確認できます。
データベースとコレクションの名前
クラウドプロバイダーとクラウドプロバイダーのリージョンの名前
日付フィールドの名前( Date Matchのみ)
Atlas クラスターにデータを保持する日数( Date Matchのみ)
アーカイブ データを削除する日数
データをアーカイブする頻度と時間枠
アーカイブするデータを識別するために使用するカスタムクエリ( Custom Criteriaのみ)
パーティション フィールド
必要に応じてこれらの設定を編集するには、 Backをクリックします。
表示されたクエリをコピーして、mongosh shell で実行し、定義したルールの条件に一致するドキュメントを確認します。
クエリに対して explain を実行して、インデックスを使用しているかどうかを確認できます。フィールドにインデックスが作成されていない場合は、次の手順に進みインデックスを作成します。フィールドにすでにインデックスが作成されている場合は、最後の手順に進みます。
(任意)mongosh に表示されたクエリをコピーして実行し、必要なインデックスを作成します。これにより、データが最適なパフォーマンスでインデックス化されます。
アーカイブ ルールを確認して確認します。
Begin ArchivingConfirm an online archive[ タブで をクリックします。
Begin ArchivingウィンドウでConfirmをクリックします。
警告:ドキュメントがアーカイブ用のキューに入れられると、ドキュメントを編集できなくなります。アーカイブされたデータを本番環境の Atlas クラスターに戻すには、オンラインアーカイブから特定のドキュメントを復元する を参照してください。