Verbindungsdaten

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.

connections

Zu den Zugangsdaten gehören unter anderem

  • Jdbc Urls
  • Jdbc Parameter
  • Web Service Urls
  • Web Service Parameter
  • Benutzerkennungen
  • Passwörter

Der datasqill Server und die datasqill Module verwenden ein Programm, das die konkreten Verbindungsdaten zu einer logischen Verbindung liefert.

Dieses Konzept hat mehrere Vorteile

  1. es werden keine Zugangsdaten im datasqill Repository gespeichert,
  2. die Verbindungsdaten werden für jede Transformationsumgebung definiert und
  3. das Programm kann durch eigene Implementierungen individuell ersetzt werden.

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.

Logische Verbindungen

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:

credentials

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, ...).

Aufruf und Schnittstelle

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

Standardprogramm "getkey"

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:

  1. logischer Verbindungsname z.B. SQTS_DB_0
  2. White spaces
  3. Url z.B. jdbc:h2:tcp:localhost/datasqill;AUTOCOMMIT=false;SCHEMA=DATASQILL_REPOSITORY
  4. Pipe-Symbol "|"
  5. User Id z.B. datasqill_repository
  6. Pipe-Symbol "|"
  7. Verbindungsparameter
  8. Pipe-Symbol "|"
  9. Passwort z.B. XxxxxX

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

Überprüfung

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