データベースとコレクション名のエンコードとデコード¶
MongoDB は、データベースやコレクション名の一部として使用できない文字に関する制限やその他の制限を課しています。これらの制限事項は、MongoDB ドキュメントの MongoDB の制限としきい値のセクション で詳しく説明しています。
STH コンポーネントによって使用されるデータベースとコレクションの名前は、サービスに割り当てられた値、サービスパス、エンティティID、エンティティ型、および属性名(選択されたデータモデルに応じて)の連結から構成され、 STH コンポーネントの潜在的なユーザが MongoDB によって課せられた制限 (STH コンポーネントによって使用されるデータベース) を継承したい場合、データベースとコレクションの名前を適合させる前にコード化メカニズムが使用されます。
次に、コード化のメカニズムについて詳しく説明します :
- データベース名 :
- エスケープ文字(
x
) と各文字の数値 Unicode コードを使用して、禁止された文字 (つまり、/``\``.``(blank space)``"``$``(null character)
) をエンコードします。 たとえば、$
文字はx0024
としてエンコードされます - すでに上記のエンコーディングを使用しているユーザー定義の文字列は、別の
x
より前にエスケープする必要があります。テキストx002a
はxx002a
としてエンコードされます - MongoDBがデータベース名に課す大文字と小文字の区別の制限を避けるために、大文字は(大文字小文字よりも一般的ではないと考えられるので)エンコードされます(つまり、
Service
->x0053ervice
) - 名前要素を連結するために使用されるセパレータは、文字グループ
xffff
です。このグループの文字がエンコードされたデータベースまたはコレクション名に表示される場合、要素のいずれかに現れる場合はxxffff
としてエンコードされるため、一意に区切り文字に対応します
- エスケープ文字(
- コレクション名:
- エスケープ文字(
x
) と各文字の数値 Unicode コードを使用して、禁止された文字(つまり、$(null character)
(empty string))をエンコードします。たとえば、$
文字はx0024
としてエンコードされます xsystem.
としてコレクション名の先頭に、テキストsystem.
をエンコードします- すでに上記のエンコーディングを使用しているユーザー定義の文字列は、別の
x
より前にエスケープする必要があります。テキストx002a
はxx002a
としてエンコードされます mongodump
/restore
やmongoexport
/import
などのツールは、コレクションの/
文字をサポートしていないため (https://jira.mongodb.org/browse/TOOLS-1163 を参照してください)、x002f
としてもエンコードされます- 名前要素を連結するために使用されるセパレータは、文字グループ
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
コマンドラインツールは、データベース名で、コレクション名で分析レポートおよび体系化またはデコード化の適用をフィルタリングすることも可能になります。