Compartilhamento declarativo em Native Apps: Limitações¶
O compartilhamento declarativo é um recurso dos Snowflake Native Apps que permite que os provedores rapidamente definam e compartilhem objetos em vários bancos de dados usando um arquivo de configuração YAML simples. Embora esse recurso simplifique significativamente os fluxos de trabalho de compartilhamento de dados, ele tem limitações que os provedores devem entender antes de implementar.
Tipos de objetos suportados¶
O compartilhamento declarativo oferece suporte a estes tipos de objetos:
Notebooks
Tables, including:
Tabelas dinâmicas
Tabelas Apache Iceberg
Exibições, incluindo:
Exibições semânticas
Stored procedures
User-defined functions (UDFs)
O compartilhamento declarativo em Native Apps não oferece suporte para outros tipos de objetos.
Limitações de notebooks¶
- Read-only for consumers
Os consumidores não podem editar os notebooks do provedor no local nem cloná-los.
- Network access
Os notebooks não podem acessar pontos de extremidade externos ou dados de consumidores ao serem executados em contas de clientes.
- Specialized libraries
Não há garantia de que bibliotecas geoespaciais e outras de terceiros funcionarão nos notebooks sem adaptações.
- External dependencies
Os aplicativos de compartilhamento declarativo têm suporte limitado para bibliotecas externas (canal Snowflake Anaconda e arquivos Python em estágio de código).
- Execução não interativa
Notebooks que fazem parte de aplicativos nativos não podem ser executados de forma não interativa por planilhas ou SQL Comandos.
Segurança e controle de acesso¶
- Role definition
Todas as funções de aplicativo referenciadas no conteúdo compartilhado devem ser predefinidas no campo
rolesdo manifesto.- Object-level roles
As funções de objeto devem ser subconjuntos de suas funções do esquema pai.
- Missing role validation
A validação do manifesto retornará um erro se as funções referenciadas na configuração de compartilhamento não existirem.
- Minimum privileges
A função de provedor que confirma o arquivo
shared_content.yamldeve ter pelo menos os mesmos privilégios que os concedidos aos consumidores para os objetos compartilhados.- No REFERENCE_USAGE required
Ao contrário do compartilhamento de dados tradicional, os provedores não precisam conceder privilégios de REFERENCE_USAGE para o pacote de aplicativo.
Migração e compatibilidade¶
- Declarative Sharing migration
Migration support for switching from data shares to Declarative Sharing in the Native App framework is unavailable.
Restrições de configuração e nomeação¶
- No wildcards
Os nomes dos objetos devem ser especificados de forma explícita; não há suporte para a correspondência por curinga ou expressão regular.
- Name collision prevention
Dois objetos compartilhados não podem ter o mesmo DOMAIN e nome.
- Schema mapping
Não há suporte para o mapeamento de esquema. Não é permitido sobrepor nomes de esquemas de vários bancos de dados.
- Esquemas para objetos de dados e lógicos
Você deve usar esquemas separados para objetos de dados (tabelas e exibições) e objetos lógicos (UDFs e procedimentos armazenados). Por exemplo, você pode usar um esquema chamado
DATA_SCHEMApara tabelas e exibições, e um esquema chamadoLOGIC_SCHEMApara UDFs.
Monitoring¶
- Auditoria
Declarative Native Apps não fornecem recursos de monitoramento (como trilhas de auditoria) para permitir que o provedor receba informações do consumidor sobre como os dados compartilhados estão sendo usados. Se um consumidor tiver requisitos de conformidade ou regulatórios que exijam auditoria, ele deverá trabalhar com o provedor para implementar suas próprias soluções de monitoramento.