XMLからJSONへ: 設定のデータベース定義

英語版はこちら

リリース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ファイルは安全に削除できます。