リリース27.0から、Invantive UniversalSQLはデータベース定義をsettings*.xmlではなくsettings*.jsonから読み取ります。既存のXMLファイルは自動的に移行されます。
XML形式のサポートは、Invantive UniversalSQLリリース28.0(2028年初め予定)から利用できなくなります。
なぜ
XML形式は2009年に遡りますが、形式変更によって解決される2つの問題があります。
- ツールの問題: 設定を読み取ったり生成したりするのにXPathやXSLTが必要です。しかし、多くのプログラミング言語は追加のライブラリなしでJSONをパースできます。顧客ごと、または環境ごとの設定ファイルの生成は、XMLテンプレートではなくテキストテンプレートの問題となります。
- 古い要素: XML形式はデータベース接続の概念に関して多くの歴史的な負担を抱えています。多くの要素がサポートされなくなったり、関連がなくなっています。JSON形式は現在の概念を利用するので、読み取ったものがそのままの意味を持ちます。
フォーマット
settings*.json形式はXML形式に非常に似ています。主な変更点は以下です:
<connection>がdatabase(単数形)またはdatabases(複数形)と呼ばれます。<database>がdataContainer(単数形)またはdataContainers(複数形)と呼ばれます。
例:
{ "version": "5"
, "groups":
[ { "name": "ACME"
, "sortingOrder": 100
, "databases":
[ { "name": "acme-eol"
, "shortDescription": "Exact Online"
, "sortingOrder": 10
, "authentication": "Default"
, "dataContainers":
[ { "kind": "dataContainer"
, "provider": "ExactOnlineAll"
, "alias": "eol"
, "order": 10
, "connectionString": "..."
}
]
}
]
}
]
}
コメントと最後のカンマはファイルを読み込む際に無視されます。製品がsettings*jsonファイルを再度書き込む場合、コメントと最後のカンマは消えます。
移行
移行はできるだけ簡単に行えるようにしています。
リリース27.0の製品が同名の.jsonファイルが存在しないsettings*.xmlファイルを初めて読み込む時、そのファイルの横に同一の内容のJSONファイルを作成します。XMLファイル自体は変更されません。古いプロパティは無視されます。
自動探索によって作成されるファイル(settings-discovery*.xml)は移行されません。なぜなら、これらは特定のメジャーリリースに紐付けられているためです。
使用される形式はどれですか?
| バージョン | 振る舞い |
|---|---|
| 26.0以前 | settings*.xmlが使用される; settings*.jsonファイルは無視される。 |
| 26.1 (27.0のベータ) | settings*.jsonが使用される; 同名のsettings*.xmlは無視され、JSONバリアントを作成するために使用される。 |
| 27.0 | settings*.jsonが使用される; 同名のsettings*.xmlは無視され、JSONバリアントを作成するために使用される。 |
| 28.0 | settings*.jsonが使用される; XML形式はサポートされず、JSONバリアントを生成するために使われません。 |
環境がリリース27.0以降のみを使用する場合、JSON形式のファイルがある場合は、すべてのsettings*.xmlファイルは安全に削除できます。