データベースとコレクション名のマッピングとアンマップ

MongoDB は、データベースやコレクション名の一部として使用できない文字に関する制限やその他の制限を課しています。これらの制限事項は、MongoDB ドキュメントの MongoDB の制限としきい値 のセクションで詳しく説明しています。

STH コンポーネントによって使用されるデータベースとコレクションの名前は、サービスに割り当てられた値、サービスパス、エンティティID、エンティティ型、および属性名(選択されたデータモデルに応じて)の連結から構成され、STH コンポーネントの潜在的なユーザが MongoDB によって課せられた制限 (STH コンポーネントによって使用されるデータベース) を継承したい場合、有効になっていればデータベースとコレクションの名前を適合させる前にマッピングメカニズムが使用されます。

マッピング機構は、マッピング設定ファイル、次のスキーマまたはプロパティセットに続く JSON を含むファイルに基づいています :

  • serviceMappings : サービスマッピングの配列。配列の各要素は、次のプロパティを含むオブジェクトです :
    • originalService : マッピングされる元のサービス名
    • newService : 元のサービスをマップする必要のある最終または新しいサービス名
    • servicePathMappings : サービスパス・マッピングの配列。配列の各要素は、次のプロパティを含むオブジェクトです :
      • originalServicePath : マッピングされるべき元のサービスパス
      • newServicePath : 元のサービスパスをマップする最終または新しいサービスパス
      • entityMappings : エンティティマッピングの配列。配列の各要素は、次のプロパティを含むオブジェクトです :
        • originalEntityId : マップされる元のエンティティID
        • newEntityId : 元のエンティティIDをマップする必要のある最終または新しいエンティティID
        • originalEntityType : マッピングされる元のエンティティ型
        • newEntityType : エンティティタイプをマッピングするべき最終または新しいエンティティ型
        • attributeMappings : 属性マッピングの配列。配列の各要素は、次のプロパティを含むオブジェクトです
          • originalAttributeName : マッピングされる元の属性名
          • newAttributeName : 元のエンティティ名をマップする必要のある最終または新しいエンティティ名
          • originalAttributeType : マップされる元の属性型
          • newAttributeType : 元の属性型をマップする必要のある最終または新しい属性型

次に、マッピング設定ファイルの例を示します :

{
  "serviceMappings": [
    {
      "originalService": "testservice",
      "newService": "mappedtestservice",
      "servicePathMappings": [
        {
          "originalServicePath": "/testservicepath",
          "newServicePath": "/mappedtestservicepath",
          "entityMappings": [
            {
              "originalEntityId": "entityId",
              "newEntityId": "mappedEntityId",
              "originalEntityType": "entityType",
              "newEntityType": "mappedEntityType",
              "attributeMappings": [
                {
                  "originalAttributeName": "attrName",
                  "newAttributeName": "mappedAttrName",
                  "originalAttributeType": "attrType",
                  "newAttributeType": "mappedAttrType"
                }
              ]
            }
          ]
        }
      ]
    }
  ]
}

前述のマッピングメカニズムを使用していない以前のバージョンの STH コンポーネントのデータベースおよびコレクションからの移行プロセスを容易にするために、sthDatabaseNameMapperTool と呼ばれるコマンドラインツールを用意しました。

名前のエンコード/デコードツールを実行するには、次のコマンドを実行してください :

./bin/sthDatabaseNameMapperTool

これはコマンドのヘルプ情報を表示します :

Usage: sthDatabaseNameMapperTool [options]

  Options:

    -h, --help                         output usage information
    -V, --version                      output the version number
    -m, --map                          Shows a report regarding the result of the mapping process if applied to databases and collections of a specific STH instance (either the -m or -u options are mandatory)
    -u, --unmap                        Shows a report regarding the result of the unmapping process if applied to databases and collections of a specific STH instance (either the -e or -d options are mandatory)
    -f, --force                        Forces the mapping (-m) or unmapping (-u) process and consequently the databases will be renamed
    -b, --database <databaseName>      Limits the mapping or unmapping process to certain database
    -c, --collection <collectionName>  Limits the mapping or unmapping process to certain collection

sthDatabaseNameMapperTool コマンドラインツールを使用すると、STH コンポーネントデータベースを分析したり、マッピングやアンマッププロセスがデータベースやコレクションに対して行う名前マッピングまたはアンマップ結果に関するレポートを取得できます。

分析レポートがうまくでき、それが本当にやりたいことであると確信できたら、-f、--force オプションを設定して名前マッピングまたはアンマッププロセスを適用します。

sthDatabaseNameMapperTool コマンドラインツールは、データベース名で、コレクション名で分析レポートおよびマッピングまたはマッピング解除の申請をフィルタリングすることも可能になります。