In the previous article on Things to consider while configuring Snowflake Account - part I, we understood two important factors i.e Data retention and timezone. In this article, we will see security, cost savings, and connection performance. Let's start.
A] Security -
The security requirement for Snowflake has two parts.
a) Storage integration
We should not create external stages without storage integration. A Storage integration is secure means of creating connectivity between snowflake and cloud. storage provider. We need to set the below properties to `true ' so that we can prevent the exposure of access tokens or secret keys to snowflake users, the properties are
- REQUIRE_STORAGE_INTEGRATION_FOR_STAGE_CREATION
- REQUIRE_STORAGE_INTEGRATION_FOR_STAGE_OPERATION
b) Network Policies.
It is important to prevent access from unwanted networks to the snowflake account. The network policies help to define a list of valid network locations for user connection.
We can configure account level and user-level network policies.
NETWORK_POLICY is a parameter associated with network policies.
B] Connection Performance
In order achieve better connection performance we need to set CLIENT_METADATA_REQUEST_USE_CONNECTION_CTX to value `TRUE'. This helps to reduce the amount of information used for JDBC and ODBC connections.
C] Cost Savings.
Cost of Snowflake implementation is dependent upon two factors 1) Users 2) Warehouses
1) User: In the snowflake account there are system users and human users. Set different configurations for each of these. Below are helpful parameters for users -
- LOCK_TIMEOUT
- STATEMENT_TIMEOUT_IN_SECONDS
- STATEMENT_QUEUED_TIMEOUT_IN_SECONDS
2) Warehouse: The optimum use of Snowflake warehouses can be achieved by resource monitoring, setting the appropriate warehouse size, and setting proper cluster count
The mentioned below are parameters of Warehouse
- RESOURCE MONITOR
- AUTO_SUSPEND
- WAREHOUSE_ SIZE
- MIN_CLUSTER_COUNT
Learn more about snowflake here-