データベースとコレクション名のエンコードとデコード

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

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

次に、コード化のメカニズムについて詳しく説明します :

  1. データベース名 :
    1. エスケープ文字(x) と各文字の数値 Unicode コードを使用して、禁止された文字 (つまり、/``\``.``(blank space)``"``$``(null character)) をエンコードします。 たとえば、$ 文字は x0024 としてエンコードされます
    2. すでに上記のエンコーディングを使用しているユーザー定義の文字列は、別の x より前にエスケープする必要があります。テキスト x002axx002a としてエンコードされます
    3. MongoDBがデータベース名に課す大文字と小文字の区別の制限を避けるために、大文字は(大文字小文字よりも一般的ではないと考えられるので)エンコードされます(つまり、Service -> x0053ervice)
    4. 名前要素を連結するために使用されるセパレータは、文字グループ xffff です。このグループの文字がエンコードされたデータベースまたはコレクション名に表示される場合、要素のいずれかに現れる場合は xxffff としてエンコードされるため、一意に区切り文字に対応します
  2. コレクション名:
    1. エスケープ文字(x) と各文字の数値 Unicode コードを使用して、禁止された文字(つまり、$(null character)(empty string))をエンコードします。たとえば、$ 文字は x0024 としてエンコードされます
    2. xsystem. としてコレクション名の先頭に、テキスト system. をエンコードします
    3. すでに上記のエンコーディングを使用しているユーザー定義の文字列は、別の x より前にエスケープする必要があります。テキスト x002axx002a としてエンコードされます
    4. mongodump/restoremongoexport/import などのツールは、コレクションの / 文字をサポートしていないため (https://jira.mongodb.org/browse/TOOLS-1163 を参照してください)、x002fとしてもエンコードされます
    5. 名前要素を連結するために使用されるセパレータは、文字グループ xffff です。このグループの文字がエンコードされたデータベースまたはコレクション名に表示される場合、要素のいずれかに現れる場合は xxffff としてエンコードされるため、一意に区切り文字に対応します

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

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

./bin/sthDatabaseNameCodecTool

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

Usage: sthDatabaseNameCodecTool [options]

  Options:

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

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

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

sthDatabaseNameCodecTool コマンドラインツールは、データベース名で、コレクション名で分析レポートおよび体系化またはデコード化の適用をフィルタリングすることも可能になります。