Van XML naar JSON: databasedefinities in settings*

Go to English version

Vanaf release 27.0 leest Invantive UniversalSQL databasedefinities uit settings*.json in plaats van uit settings*.xml. Bestaande XML-bestanden worden automatisch gemigreerd.

Ondersteuning voor het XML-formaat is niet langer beschikbaar vanaf Invantive UniversalSQL-release 28.0 (de release staat gepland voor begin 2028).

Waarom

Het XML-formaat dateert uit 2009 en kent twee problemen die door een formaatwijziging worden opgelost.

  • Tooling: het lezen of genereren van instellingen vereist XPath en/of XSLT. De meeste programmeertalen kunnen JSON echter zonder extra bibliotheken parseren. Het genereren van een instellingenbestand per klant of per omgeving wordt zo een kwestie van tekstsjablonen in plaats van XML-sjablonen.
  • Verouderde elementen: het XML-formaat draagt veel historische bagage met zich mee wat betreft de concepten rond databaseverbindingen. Veel elementen worden niet langer ondersteund of zijn niet meer relevant. Het JSON-formaat maakt gebruik van de huidige concepten, dus wat je leest is precies wat de term betekent.

Formaat

Het settings*.json-formaat lijkt sterk op het XML-formaat. De belangrijkste wijzigingen zijn:

  • <connection> wordt database (enkelvoud) of databases (meervoud) genoemd.
  • <database> wordt dataContainer (enkelvoud) of dataContainers (meervoud) genoemd.

Bijvoorbeeld:

{ "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": "..."
            }
          ]
        }
      ]
    }
  ]
}

Opmerkingen en afsluitende komma’s worden overgeslagen wanneer een bestand wordt gelezen. Opmerkingen en afsluitende komma’s verdwijnen als een product het settings*json-bestand opnieuw mocht schrijven.

Migratie

Er is getracht de migratie zo eenvoudig mogelijk te maken.

De eerste keer dat een product uit release 27.0 een settings*.xml-bestand leest waarvoor geen .json-bestand met dezelfde naam bestaat, maakt het naast dat bestand een functioneel identiek JSON-bestand aan. Het XML-bestand blijft ongewijzigd. Verouderde eigenschappen worden genegeerd.

Bestanden die door de automatische ontdekkingstocht worden aangemaakt (settings-discovery*.xml) worden nooit gemigreerd omdat ze gekoppeld zijn aan een specifieke major release.

Welk Formaat wordt Gebruikt?

Versie Gedrag
26.0 en eerder settings*.xml wordt gebruikt; een settings*.json-bestand wordt genegeerd.
26.1 (BETA van 27.0) settings*.json wordt gebruikt; een settings*.xml met dezelfde naam wordt genegeerd en gebruikt om de JSON-variant te maken.
27.0 settings*.json wordt gebruikt; een settings*.xml met dezelfde naam wordt genegeerd en gebruikt om de JSON-variant te maken.
28.0 settings*.json wordt gebruikt; het XML-formaat wordt niet langer ondersteund of gebruikt om de JSON-variant te genereren.

Wanneer een omgeving uitsluitend release 27.0 of nieuwer gebruikt, kunnen alle settings*.xml-bestanden veilig worden verwijderd als het bestand in JSON-formaat aanwezig is.