Snowflake是否支持类Linux符号链接的数据源重指向功能?
Absolutely, Snowflake has a feature that’s essentially the equivalent of Linux symbolic links for your data objects — Synonyms! This is exactly what you need to keep the original data source names while routing traffic to your new underlying tables, and it solves the performance concern you have with views. Let’s break this down:
1. Synonyms: The Perfect "Symlink" Alternative
Synonyms in Snowflake are lightweight aliases that point directly to another database object (like a table, view, or even a stored procedure). They don’t introduce any performance overhead because when you query the synonym, Snowflake immediately routes the request to the target object — it’s just a name redirect, no extra query parsing or execution steps.
To set this up, you’d run a command like:
-- Replace original source name with a synonym pointing to the new table CREATE OR REPLACE SYNONYM <your_existing_schema>.<original_table_name> FOR <new_schema>.<new_table_name>;
For example, if your consumers currently use PROD_DB.USER_DATA.USER_PROFILES, and your new table is PROD_DB.NEW_USER_DATA.USER_PROFILES_V2, you’d create:
CREATE OR REPLACE SYNONYM PROD_DB.USER_DATA.USER_PROFILES FOR PROD_DB.NEW_USER_DATA.USER_PROFILES_V2;
All your existing consumers can keep using PROD_DB.USER_DATA.USER_PROFILES exactly as before, but they’ll be pulling data from the new table behind the scenes.
2. Why Views Fall Short for Large Datasets
While you could use a view to wrap the new table (e.g., CREATE VIEW original_table AS SELECT * FROM new_table), views have a key limitation here: they’re stored query definitions. Even for simple SELECT * views, Snowflake still needs to resolve the view definition at query time. For billion-scale datasets, this isn’t a massive hit, but synonyms are cleaner and eliminate any potential (even minor) overhead. Plus, synonyms are easier to maintain — if you need to switch to yet another table later, you just re-create the synonym instead of altering the view.
3. Cross-Account/Region Scenario? Use Database Links + Synonyms
If your new data source is in a different Snowflake account or region, you can combine Database Links with synonyms to achieve the same effect. First create a link to the target account/region, then point your synonym to the linked object:
-- Create a database link to the target account CREATE DATABASE LINK new_data_link TO DATABASE new_target_db ACCOUNT = 'target_account_identifier' REGION = 'aws_us_west_2'; -- Adjust to your cloud/region -- Create synonym pointing to the linked table CREATE OR REPLACE SYNONYM PROD_DB.USER_DATA.USER_PROFILES FOR new_data_link.NEW_USER_DATA.USER_PROFILES_V2;
This way, consumers still use the original name, but the request is routed across accounts/regions seamlessly.
Wrap-Up
Synonyms are the exact solution you’re looking for here — they act like symbolic links, preserve your existing naming, and maintain full performance even for massive datasets. No more worrying about view overhead, and your consumers won’t need to change any of their code.
内容的提问来源于stack exchange,提问作者davidm

