page272
360
•
Presentation role: Used to implement client-specific data sets and
data sharing capability; references curated data products.
•
Consumer role: There may be many consumer roles according to
end-user requirements. These roles are for directly connected users
and reference specific presentation objects.
A multitenant environment will have bespoke application roles for each tenant.
You should be mindful of tooling, which purports to simplify RBAC. I strongly
caution against those tools that implement a role per user and that insist all RBAC is
defined in their tooling for management. These issues can arise:
•
Role proliferation will cause performance issues when resolving
object entitlement.
•
Over-enthusiastic application of data masking policies will result in
slow metadata operations.
•
Vendor lock-in will occur where a product exclusively encapsulates
RBAC management.
We recommend roles are kept to a minimum with few nested layers and that data
masking policies are applied sparingly.
Just because a feature is available does not mean the feature should be used
ubiquitously.
Declare Constraints
Snowflake allows referential integrity to be declared but not enforced. With the exclusion
of hybrid tables, the only constraint enforced is
NOT NULL
. You can find more information
at
https://docs.snowflake.com/en/sql-reference/constraints-overview.
The presence of unenforced constraints may influence query optimizer processing
and greatly assist self-discovery by third-party tooling. I therefore recommend that
constraints are declared wherever possible.
ChapTer 10
OpTimizing perfOrmanCe