keboola / php-db-import

MIT License
4 stars 0 forks source link

Connection create - use database and warehouse #52

Closed ErikZigo closed 5 years ago

ErikZigo commented 5 years ago

Fixes https://github.com/keboola/php-db-import/issues/51

Halama commented 5 years ago

jak je to rychlý nezpomalí se to tím? Posílalo to doteď samostatně ty query nebo to nějak dalo v rámci toho spojení? Protože pokud to teď najednou bude volat dvě query navíc tak to půjde znát.

tomasfejfar commented 5 years ago

Ale ty dvě query by to mělo dělat jen při spojení. To by nemělo být moc často. Zpomalí se tím asi nejvíc DWHM testy, kde se v rámci testu spojuje a odpojuje spojení několikát, aby se přehodili useři.

ErikZigo commented 5 years ago

Koukal jsem se do query history a pokud jsou ty parametry soucasti DSN stringu, tak interne to v DB dotazy nezavola.

Problem je v tom, ze kdyz zadas do DSN nesmyslnou databazi/warehouse tak ti to stejne vytvori DB spojeni a nic nezahlasi.

Priklad ktery muze nastat.

Pripadne to muzu hodit na Snowflake support, jestli je to bug, nebo ocekavane chovani.

https://docs.snowflake.net/manuals/user-guide/odbc-parameters.html#optional-connection-parameters

Halama commented 5 years ago

Tu performance jsem řešil hlavně tam kde se snflk komunikuje kbc napřímo v rámci requestu. Hlavně tedy data preview. Tam dvě query navíce klidně můžou jít znát v té odezvě.

A když to nabízejí nastavit takhle v rámci DSN tak bych toho využíval. Jestli to nezařve tak to prosím ověř na supportu jak si navrhoval.

Pokud je to feature tak bych to spíš v té aplikaci kde to potřebuješ ohlídat řešil bokem.

ErikZigo commented 5 years ago

Díval jsem se na jejich další knihovny a očividně to řeší různě https://github.com/snowflakedb

Další jsem nezkoumal. Škoda že na githubu nemají i to ODBC.

Jejich validace funguje na principu že login request do snowflaku vrací mimojiné:

{
  "sessionInfo": {
    "databaseName": null,
    "schemaName": null,
    "warehouseName": "NEJAKY_WAREHOUSE",
    "roleName": "MOJE_ROLE"
  }
}

A oni to tam porovnávají zadané parametry a to co vrátí login request. Nemusí potom volat USER WAREHOUSE|DATABASE.

Napíšu jim na support. Tohle teda megovat nebudeme.