JDBC-Proxy

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 geö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.

Connection Pooling

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

Debugging

printOpenObjectsOnClose

wenn man im datasqill Connection String

dboptionlist={printOpenObjectsOnClose=summary}

setzt, dann wird die Anzahl der nicht geschlossenen Datenbankobjekte pro Objekttyp im Log ausgegeben.

Snowflake

Snowflake hat einige Properties, die man mit übergeben kann. Insbesondere für die Authentifizierung benötigt man folgende:

  • user=
  • warehouse=
  • db=
  • schema=
  • authenticator=SNOWFLAKE_JWT
  • private_key_file=
  • loginTimeout=10
  • disablePlatformDetection=true

Die folgenden zusätzlichen Connectionparameter können gesetzt werden.

  • bulkTempDir: Wo werden Zwischenfiles abgelegt (default is /tmp)
  • bulkStageDir: Wo werden die Dateien in snowflake hochgeladen (default is @stage.stage)
  • printOpenObjectsOnClose: Wenn auf true, dann werden alle geparsten SQL Befehle auf die Konsole ausgegeben
  • printTimings: Wenn auf true, werden an verschiedenen Stellen Zeitstempel ausgegeben

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}|