Der datasqill Server und die datasqill Module speichern keine Verbindungsdaten zum datasqill Repository oder zu Umsystemen. Stattdessen verwendet sie logische Verbindungen, die zur Laufzeit mit konkreten Daten ergänzt werden.
Zu den Zugangsdaten gehören unter anderem
Der datasqill Server und die datasqill Module verwenden ein Programm, das die konkreten Verbindungsdaten zu einer logischen Verbindung liefert.
Dieses Konzept hat mehrere Vorteile
Punkt 1 sorgt, wie schon beschrieben, dafür, dass datasqill keine Zugangsdaten speichert.
Durch 2 werden logische Verbindungen auf jeder Transformationsumgebung mit anderen konkreten Verbindungsdaten versehen. Dadurch können zum Beispiel auf einer Testumgebung Testinstanzen der Umsysteme verwendet werden, während für die Produktion die produktiven Umsysteme angebunden sind. Der datasqill "Code", der im Zuge des Rollouts von System zu System ausgebracht wird, bleibt dabei durch die Verwendung von logischen Verbindungsdaten unverändert.
Kunden, die spezifische Anforderungen an die Sicherheit und die Ablage sensibler Daten haben, können 3. die Standardimplementierung durch eine eigene Lösung ersetzen. Diese kann die Zugangsdaten aus einem sicheren Speichermedium oder von einem gesicherten Server holen und für datsqill bereitstellen.
Die Namen der logischen Verbindungen beginnen mit SQTS_DB_ gefolgt von einer fortlaufenden Nummer, SQTS_DB_0, SQTS_DB_1 usw.
Die logischen Verbindungen werden in der datasqill GUI angelegt oder verändert. Für jede Transformationsumgebung finden sich die Verbindungseinstellungen im Navigationsbaum unter Settings - Connections. Nach einem Doppelklick öffnet sich ein entsprechender Reiter, in dem die Verbindungen verwaltet werden können. Mit einem Klick auf den Bleistift kann in den Edit-Modus gewechselt werden, um neue Verbindungen anzulegen oder vorhandene anzupassen:
Die Verbindung zum datasqill Repository hat immer den logischen Namen SQTS_DB_0. Sie ist unveränderlich und wird nicht in der GUI verwaltet.
Die übrigen Verbindungen werden in der GUI mit einer laufenden Nummer (Id) versehen (1, 2, ...) und haben dann entsprechende Namen (SQTS_DB_1, SQTS_DB_2, ...).
Das Programm wird mit Hilfe eines Java-Property gefunden, das beim Start des Servers oder eines Moduls als Startparameter mitgegeben wird.
Die Schnittstelle für das Programm, das die Verbindungsdaten nachschlägt, sieht wie folgt aus. Wird das Programm mit dem logischen Verbindungsnamen als Parameter aufgerufen, schreibt es die zugehörigen Verbindungsdaten auf die Standardausgabe. Diese Ausgaben enthalten folgende Spalten, die jeweils durch ein Pipe-Symbol getrennt werden:
Url|Benutzerkennung|Parameter|Passwort
zum Beispiel
jdbc:h2:tcp:localhost/datasqill;AUTOCOMMIT=false;SCHEMA=DATASQILL_REPOSITORY|datasqill_repository||XxxxxX
Als Standardeinstellung zum Nachschlagen von Verbindungsdaten wird das Programm "getkey" verwendet, das mit der datasqill Installation ausgeliefert wird. In diesem Fall sieht der Startparameter so aus:
-Dde.softquadrat.datasqill.mappertool=getkey
"getkey" verwendet eine Textdatei ".keyfile", die im Home Directory des datasqill Benutzers auf dem Server abgelegt wird.
datasqill_server http://datasqill:17491/datasqill-server/service
SQTS_DB_0 jdbc:h2:tcp:localhost/datasqill;AUTOCOMMIT=false;SCHEMA=DATASQILL_REPOSITORY|datasqill_repository||XxxxxX
SQTS_DB_1 jdbc:h2:tcp:localhost/datasqill;AUTOCOMMIT=false;SCHEMA=DATASQILL_REPOSITORY|datasqill_repository_ro||YyyyyyY
SQTS_DB_2 jdbc:postgresql://datasqill-dev/softquadrat|postgres||PppppP
SQTS_DB_3 jdbc:oracle:thin:@pddemo:1521:xe|datasqill_repository||QqqqqQ
SQTS_DB_4 jdbc:exa:n0010:8563;schema=datasqill|softquadrat||EeeeeeE
SQTS_DB_5 jdbc:sqlserver://sqlserver:1433;database=datasqill|datasqill||SsssssS
SQTS_DB_6 jdbc:mysql://mysql:3306/softquadrat|root||MmmmmmM
SQTS_DB_8 jdbc:hive2://hive:10000/default|hive|metadataDatabaseID=9|HhhhhhH
SQTS_DB_9 jdbc:postgresql://datasqill-dev/softquadrat|softquadrat||PpppppP
SQTS_DB_10 jdbc:teradata://teradata/TMODE=ANSI|datasqill||TtttttT
SQTS_DB_11 jdbc:db2://db2:50000/SAMPLE:useJDBC4ColumnNameAndLabelSemantics=false;|db2inst1|db2inst1|DdddddD
Die Zeilen in der Textdatei ".keyfile" sind folgendermaßen aufgebaut:
Ein Aufruf von "getkey" könnte dann zum Beispiel so aussehen
$ getkey SQTS_DB_0
jdbc:h2:tcp:localhost/datasqill;AUTOCOMMIT=false;SCHEMA=DATASQILL_REPOSITORY|datasqill_repository||XxxxxX
Ob eine eingerichtete Verbindung korrekt funktioniert, kann von der Konsole mit "testJdbc.sh" überprüft werden. Ein Aufruf zum Überprüfen der Verbindung SQTS_DB_1 könnte zum Beispiel so aussehen:
$ testJdbc.sh SQTS_DB_1
Successfully connected to database server
Server Product Name ....... PostgreSQL
Server Product Version .... 13.4
Driver Name ............... PostgreSQL JDBC Driver
Driver Version ............ 42.2.8
Database URL .............. jdbc:postgresql://10.0.2.2/mytestdb
Database User ............. postgres
Ein Aufruf des Testprogramms ohne Parameter liefert eine kurze Hilfe:
$ testJdbc.sh
Tests a connection from key file
Usage:
java de.softquadrat.datasqill.utils.ConnectionTest "[optional]" key (1..n))
options:
-s .... return only status for test (success, failed or unknown)
Example:
java de.softquadrat.datasqill.utils.ConnectionTest SQTS_DB_1
Opens and tests the connection with name SQTS_DB_1
java de.softquadrat.datasqill.utils.ConnectionTest-s SQTS_DB_1 SQTS_DB_2
Opens, tests and return only status for connections SQTS_DB_1 and SQTS_DB_2
You can overwrite the datasqill default mapper tool by:
-Dde.softquadrat.datasqill.mappertool=mymappertool
Otherwise the default (getkey) is used