datasqill stellt einen Jdbc-Proxy zur Verfügung, der frei verwendet werden kann.
Der Proxy kann zwischen eine Java Appliaktion und einen beliebigen 3rd Party Jdbc-Treiber geschaltet werden. Anwendungsfälle für einen solchen Proxy sind Messung von Laufzeiten, Logging von Jdbc-Aufrufen oder Vereinheitlichung des Verhaltens von Jdbc-Treibern und Kapselung von spezifischen Eigenheiten dieser Treiber.
Besonderheiten:
Der Proxytreiber liefert statt eines gewöhnlichen CLOB eine DsProxyClob Implementierung.
Sofern man nicht DsProxy Methoden nutzt bei der Verwendung vom CLOB (sondern native), kann man mit getPhysicalClob den nativen CLOB erhalten.
Die folgenden Java system properties können gesetzt werden:
de.datasqill.dsproxy.pool.maxOpenConnections default 30 : maximum 30 open connections at the same time de.datasqill.dsproxy.pool.maxConnectionAgeInMinutes default 60 : 1 hour de.datasqill.dsproxy.pool.maxWaitForConnectionInMillis default -1 : wait forever de.datasqill.dsproxy.printSQL false : set to true if every sql execeuted sql statement shall be printed to stdout
printOpenObjectsOnClose
wenn man im datasqill Connection String
dboptionlist={printOpenObjectsOnClose=summary}
setzt, dann wird die Anzahl der nicht geschlossenen Datenbankobjekte pro Objekttyp im Log ausgegeben.
In datasqill werden einige Datentypen benötigt. Leider sind nicht alle in den Zieldatenbanken gleich verfügbar.
Um datasqill zu installieren und datasqill gegen eine Datenbank als Repository laufen zu lassen, bietet der Proxy Treiber die Möglichkeit, Datentypen entsprechend der Zieldatenbank zu konvertieren.
Hierbei gibt es Unterschiede bei den folgenden Datentypen:
Zusätzlich werden auch andere Teile des Statements ersetzt:
Es sind also gezielte Eingriffe in das SQL, damit datasqill entsprechend der Repository Datenbank agiert.
Dazu setzt man MapDataType in den Connectionproperties. Aus Kompatibilitätsgründen ist es derzeit immer auf "datasqill" gesetzt und man muss es explizit auf "off" setzen um dieses Feature abzuschalten.
wenn man im datasqill Connection String
dboptionlist={MapDataType=datasqill}
setzt, dann ist es angeschaltet.
mit
dboptionlist={MapDataType=off}
kann man es abschalten.
Snowflake hat einige Properties, die man mit übergeben kann. Insbesondere für die Authentifizierung benötigt man folgende:
Die folgenden zusätzlichen Connectionparameter können gesetzt werden.
Hierbei gibt man sie im letzten Block im keyfile Eintrag vor dem Kennwort an:
SQTS_DB_XX jdbc:dsproxy:snowflake://<host>/?useArrowResultFormat=false||dboptionlist={user=datasqill,warehouse=<WH>,db=<Database>,schema=<Schema>,authenticator=SNOWFLAKE_JWT,private_key_file=<PATH OF Public Key>,loginTimeout=10,disablePlatformDetection=true,printOpenObjectsOnClose=summary,bulkTempDir=/tmp,bulkStageDir=@stage.migration,printTimings=true}|