O armazenamento em camadas do MaxCompute inclui armazenamento padrão, armazenamento de baixa frequência e armazenamento de longo prazo. Por padrão, o MaxCompute armazena os dados no armazenamento padrão. Com base na frequência de acesso aos dados, é possível alterar o tipo de armazenamento de tabelas ou partições específicas para armazenamento de baixa frequência ou de longo prazo. Essa prática, conhecida como separação de dados quentes e frios, ajuda a reduzir as taxas de armazenamento.
Tipos de armazenamento em camadas
Tipo | Descrição |
armazenamento padrão | O tipo de armazenamento padrão. Adequado para dados acessados com frequência que exigem operações constantes de leitura e gravação. |
armazenamento de baixa frequência | Adequado para dados acessados com pouca frequência. Ajuda a reduzir de forma eficaz as taxas de armazenamento. Nota
|
armazenamento de longo prazo |
Faturamento
Para mais informações sobre o faturamento de armazenamento, consulte {{XREF_0}}.
-
Ao usar o armazenamento de baixa frequência ou de longo prazo, considere o volume e a frequência de acesso aos dados. O acesso em grande volume ou frequente pode custar mais do que o uso do armazenamento padrão.
O custo de executar uma varredura completa em uma tabela ou partição no armazenamento de baixa frequência uma vez por mês equivale ao custo de mantê-la no armazenamento padrão.
O custo de executar uma varredura completa em uma tabela ou partição no armazenamento de longo prazo uma vez a cada seis meses equivale ao custo de mantê-la no armazenamento padrão.
Faça login no Billing Management console. Na página , é possível visualizar as taxas para diferentes tipos de armazenamento. Os itens faturáveis para armazenamento padrão, de baixa frequência e de longo prazo são denominados Storage, Tiered Storage-Low-Frequency e Long-Term Storage, respectivamente. Para instruções detalhadas, consulte {{XREF_1}}.
Notas de uso
Disponibilidade por região: China (Hangzhou), China (Shanghai), China (Beijing), China (Zhangjiakou), China (Ulanqab), China (Shenzhen), China (Chengdu), China (Hong Kong), China (Shanghai) Finance, China (Beijing) Finance, China (Shenzhen) Finance, Singapore, Malaysia (Kuala Lumpur), Indonesia (Jakarta), Japan (Tokyo), Germany (Frankfurt) e US (Silicon Valley).
Atualmente, os dados em armazenamento de baixa frequência e de longo prazo não podem ser acessados diretamente pelo Hologres. Além disso, quando o Hologres lê diretamente do MaxCompute, o
last_access_timeda tabela ou partição do MaxCompute não é atualizado. Portanto, ao definir uma regra de ciclo de vida de armazenamento em camadas que usa a condiçãolast_access_time, algumas tabelas ou partições lidas continuamente apenas pelo Hologres também podem corresponder à regra.
Configurar tipos de armazenamento
É possível fazer a transição de dados entre diferentes tipos de armazenamento. Modificar o tipo de armazenamento não afeta o acesso aos dados.
A tabela a seguir descreve as transições de tipo de armazenamento.
Transição | Descrição |
armazenamento padrão -> armazenamento de baixa frequência | Transições manuais e automáticas são suportadas. Nenhuma taxa de acesso de I/O é cobrada. O "Last Modified Time" e o "Last Access Time" da tabela ou partição não são atualizados. |
armazenamento padrão -> armazenamento de longo prazo | |
armazenamento de baixa frequência -> armazenamento de longo prazo | Transições manuais e automáticas são suportadas. Transições manuais geram uma taxa de acesso de I/O, enquanto as automáticas não. O "Last Modified Time" e o "Last Access Time" da tabela ou partição não são atualizados. |
armazenamento de baixa frequência -> armazenamento padrão | Apenas transições manuais são suportadas. Uma taxa de acesso de I/O é cobrada. O "Last Modified Time" e o "Last Access Time" da tabela ou partição são atualizados. |
armazenamento de longo prazo -> armazenamento de baixa frequência | |
armazenamento de longo prazo -> armazenamento padrão |
Configuração manual
Você pode definir manualmente o tipo de armazenamento de uma tabela não particionada ou de uma partição para armazenamento de baixa frequência ou de longo prazo. A alteração entra em vigor imediatamente.
Formato do comando
CREATE ROW ACCESS POLICY policy03
ON storage_table
TO USER (user_y) --You can also grant permissions to a role using TO ROLE rolename, and then assign the role to the user.
FILTER USING (true); -- The constant 'true' means the user can access all data in the table.
Parâmetros
TABLE_NAME: Obrigatório. O nome da tabela cujo tipo de armazenamento você deseja modificar, ou o nome da tabela particionada que contém a partição de destino.
PARTITION_SPEC: Obrigatório se você estiver modificando o tipo de armazenamento de uma partição.
-
TBLPROPERTIES|PARTITIONPROPERTIES: Especifica se o tipo de armazenamento de uma tabela ou de uma partição será modificado.
TBLPROPERTIES: Modifica o tipo de armazenamento de uma tabela.
PARTITIONPROPERTIES: Modifica o tipo de armazenamento de uma partição.
-
storagetier: Obrigatório. O tipo de armazenamento em camadas. Valores válidos:
standard: armazenamento padrão. Apenas as taxas de armazenamento são cobradas.
lowfrequency: armazenamento de baixa frequência. São cobradas as taxas de armazenamento e as taxas de acesso a dados para armazenamento de baixa frequência.
longterm: armazenamento de longo prazo. São cobradas as taxas de armazenamento e as taxas de acesso a dados para armazenamento de longo prazo.
Você pode definir o tipo de armazenamento em camadas apenas para partições dentro de uma tabela particionada. Não é possível definir o tipo de armazenamento em camadas para uma tabela particionada inteira.
Exemplos
-
Exemplo 1: Definir o tipo de armazenamento de uma tabela não particionada para armazenamento de baixa frequência.
CREATE ROW ACCESS POLICY policy03 ON storage_table TO USER (user_y) --You can also grant permissions to a role using TO ROLE rolename, and then assign the role to the user. FILTER USING (true); -- The constant 'true' means the user can access all data in the table.Visualize as propriedades da tabela. Você pode verificar o campo
StorageTierpara confirmar o tipo de armazenamento atual.CREATE ROW ACCESS POLICY policy03 ON storage_table TO USER (user_y) --You can also grant permissions to a role using TO ROLE rolename, and then assign the role to the user. FILTER USING (true); -- The constant 'true' means the user can access all data in the table. -
Exemplo 2: Definir o tipo de armazenamento de uma partição na tabela particionada {{XREF_2}} para armazenamento de baixa frequência.
CREATE ROW ACCESS POLICY policy03 ON storage_table TO USER (user_y) --You can also grant permissions to a role using TO ROLE rolename, and then assign the role to the user. FILTER USING (true); -- The constant 'true' means the user can access all data in the table.Você pode verificar o campo
StorageTiernas propriedades da partição para determinar o tipo de armazenamento atual.CREATE ROW ACCESS POLICY policy03 ON storage_table TO USER (user_y) --You can also grant permissions to a role using TO ROLE rolename, and then assign the role to the user. FILTER USING (true); -- The constant 'true' means the user can access all data in the table.
Configuração automatizada
Você pode configurar regras de ciclo de vida para armazenamento em camadas no nível de projeto ou tabela particionada para automatizar as transições de tipo de armazenamento.
-
Configuração no nível do projeto:
Uma regra no nível do projeto serve como padrão para todas as tabelas não particionadas e para partições em tabelas que não possuem regras específicas. Tabelas e partições correspondentes sofrem transição automaticamente.
-
Configuração no nível da tabela particionada:
Uma regra definida para uma tabela particionada específica tem precedência sobre qualquer regra no nível do projeto. Quando qualquer partição nessa tabela atende aos critérios da regra, a partição é automaticamente transferida para o tipo de armazenamento correspondente.
Principais limitações
Não é possível configurar regras em um nível mais granular:
Não é possível definir uma regra independente para uma única tabela não particionada. Ela herda a regra no nível do projeto.
Não é possível definir uma regra independente para uma partição específica dentro de uma tabela particionada. Ela herda a regra de sua tabela particionada pai.
Execução da regra
Se uma tabela ou partição atender aos critérios de ciclo de vida para armazenamento de longo prazo (longterm) e de baixa frequência (lowfrequency), ela será convertida para
longtermcom prioridade.Se uma tabela ou partição atender primeiro à regra de ciclo de vida
lowfrequency, ela será convertida paralowfrequency. Se posteriormente atender à regralongterm, será convertida paralongterm. Nesse caso, a conversão delowfrequencyparalongtermnão gera uma taxa de acesso delowfrequency. Para detalhes de faturamento, consulte {{XREF_3}}.A plataforma verifica a conformidade com as regras duas vezes por dia. Portanto, pode haver um atraso entre o momento em que uma tabela ou partição atende às condições e o momento em que a transição ocorre.
Formato do comando
-
Definir uma regra de ciclo de vida no nível do projeto
CREATE ROW ACCESS POLICY policy03 ON storage_table TO USER (user_y) --You can also grant permissions to a role using TO ROLE rolename, and then assign the role to the user. FILTER USING (true); -- The constant 'true' means the user can access all data in the table.Você também pode configurar isso no console do MaxCompute:
Faça login no MaxCompute console e selecione uma região no canto superior esquerdo.
No painel de navegação à esquerda, escolha .
Na página Projects, clique em Manage na coluna Actions do projeto de destino.
Na página Project Settings, clique na aba Parameter Configuration.
Na seção Lifecycle Configuration, clique em Edit.
-
Configure os parâmetros Last Access Configuration Policy e Last Modified Configuration Policy.
Last Access Configuration Policy: Corresponde ao parâmetro
DaysAfterLastAccessGreaterThan.Last Modified Configuration Policy: Corresponde ao parâmetro
DaysAfterLastModificationGreaterThan.
-
Definir uma regra de ciclo de vida para uma tabela particionada
-
Definir durante a criação da tabela:
CREATE ROW ACCESS POLICY policy03 ON storage_table TO USER (user_y) --You can also grant permissions to a role using TO ROLE rolename, and then assign the role to the user. FILTER USING (true); -- The constant 'true' means the user can access all data in the table. -
Modificar uma tabela existente:
CREATE ROW ACCESS POLICY policy03 ON storage_table TO USER (user_y) --You can also grant permissions to a role using TO ROLE rolename, and then assign the role to the user. FILTER USING (true); -- The constant 'true' means the user can access all data in the table.
-
-
Visualizar a configuração de ciclo de vida de armazenamento em camadas de uma tabela particionada
CREATE ROW ACCESS POLICY policy03 ON storage_table TO USER (user_y) --You can also grant permissions to a role using TO ROLE rolename, and then assign the role to the user. FILTER USING (true); -- The constant 'true' means the user can access all data in the table.
Parâmetros
A tabela a seguir descreve os principais parâmetros. Para obter informações sobre outros parâmetros, consulte {{XREF_4}}.
lifecycle_config_json_string:
-
Ao definir uma regra de ciclo de vida no nível do projeto, a definição é a seguinte.
CREATE ROW ACCESS POLICY policy03 ON storage_table TO USER (user_y) --You can also grant permissions to a role using TO ROLE rolename, and then assign the role to the user. FILTER USING (true); -- The constant 'true' means the user can access all data in the table. -
Ao definir uma regra de ciclo de vida para uma tabela particionada, a definição é a seguinte.
CREATE ROW ACCESS POLICY policy03 ON storage_table TO USER (user_y) --You can also grant permissions to a role using TO ROLE rolename, and then assign the role to the user. FILTER USING (true); -- The constant 'true' means the user can access all data in the table. TierToLowFrequency: Identificador para armazenamento de baixa frequência.
TierToLongterm: Identificador para armazenamento de longo prazo.
DaysAfterLastModificationGreaterThan: O número de dias após o horário da última modificação (LastModifiedTime) antes que os dados sejam transferidos automaticamente.
-
DaysAfterLastAccessGreaterThan: O número de dias após o horário do último acesso (LastAccessTime) antes que os dados sejam transferidos automaticamente. Se o LastAccessTime de uma tabela ou partição estiver vazio, aplicam-se as seguintes regras:
Para tabelas ou partições criadas antes de 1º de outubro de 2023, o horário é calculado por padrão com base no fuso horário UTC+0, como
2023.10.01 00:00:00.Para tabelas ou partições criadas em ou após 1º de outubro de 2023, se os dados nunca tiverem sido acessados, o cálculo é baseado no horário de criação (CreateTime).
Exemplos
-
Exemplo 1: Definir uma regra de ciclo de vida no nível do projeto.
CREATE ROW ACCESS POLICY policy03 ON storage_table TO USER (user_y) --You can also grant permissions to a role using TO ROLE rolename, and then assign the role to the user. FILTER USING (true); -- The constant 'true' means the user can access all data in the table. -
Exemplo 2: Remover uma configuração de ciclo de vida no nível do projeto.
CREATE ROW ACCESS POLICY policy03 ON storage_table TO USER (user_y) --You can also grant permissions to a role using TO ROLE rolename, and then assign the role to the user. FILTER USING (true); -- The constant 'true' means the user can access all data in the table. -
Exemplo 3: Definir uma regra de ciclo de vida para uma tabela particionada.
CREATE ROW ACCESS POLICY policy03 ON storage_table TO USER (user_y) --You can also grant permissions to a role using TO ROLE rolename, and then assign the role to the user. FILTER USING (true); -- The constant 'true' means the user can access all data in the table. -
Exemplo 4: Remover a configuração de ciclo de vida de armazenamento em camadas de uma tabela particionada.
CREATE ROW ACCESS POLICY policy03 ON storage_table TO USER (user_y) --You can also grant permissions to a role using TO ROLE rolename, and then assign the role to the user. FILTER USING (true); -- The constant 'true' means the user can access all data in the table.
Controle de acesso no nível da tabela
Depois que uma tabela ou partição é movida para o armazenamento de baixa frequência ou de longo prazo, o acesso aos seus dados gera uma taxa de acesso a dados.
Por padrão, qualquer usuário com permissão SELECT em uma tabela pode acessar seus dados, independentemente do tipo de armazenamento. O MaxCompute fornece controles de acesso no nível da tabela separados para armazenamento de baixa frequência e de longo prazo. Quando esse recurso está ativado, a permissão SELECT concede acesso apenas aos dados do armazenamento padrão. O acesso a dados em armazenamento de baixa frequência ou de longo prazo requer permissões adicionais e explícitas para esses tipos de armazenamento. Isso ajuda a evitar o acesso não intencional a dados frios e previne estouro de custos inesperado.
Em comparação com a filtragem de dados de partição com controle de acesso no nível de linha, que filtra silenciosamente as partições não autorizadas, este método faz com que uma consulta falhe imediatamente se tentar acessar uma partição fria sem permissão. Isso evita que os resultados do cálculo sejam inesperadamente imprecisos devido à falta de dados.
Modelo de permissão
Chave global: Este recurso pode ser ativado ou desativado no nível do locatário (tenant) e fica desativado por padrão. Quando desativado, o comportamento corresponde ao modelo existente, em que a permissão SELECT é suficiente para acessar dados em todos os tipos de armazenamento.
Granularidade da permissão: As permissões são controladas no nível da tabela. Ao conceder permissões em uma tabela particionada, elas se aplicam a todas as partições dentro dessa tabela.
Política de autorização: Após a ativação da chave, o acesso a dados em armazenamento de baixa frequência ou de longo prazo requer tanto a permissão SELECT na tabela quanto a permissão de acesso correspondente para o tipo de armazenamento. O acesso aos dados do armazenamento padrão não é afetado.
|
Objeto |
Ações |
Descrição |
Método de autorização |
|
Tabela |
ReadLowFrequencyStorage |
Permite a leitura de dados de uma tabela ou partição em armazenamento de baixa frequência ( |
ACL, Policy |
|
Tabela |
ReadLongtermStorage |
Permite a leitura de dados de uma tabela ou partição em armazenamento de longo prazo ( |
ACL, Policy |
Combinações de permissões
A tabela a seguir mostra os resultados de acesso para um usuário com permissão SELECT em uma tabela após a ativação da chave de controle de acesso.
|
Permissões existentes |
Armazenamento padrão |
Armazenamento de baixa frequência |
Armazenamento de longo prazo |
|
SELECT |
Permitido |
Negado |
Negado |
|
SELECT + ReadLowFrequencyStorage |
Permitido |
Permitido |
Negado |
|
SELECT + ReadLongtermStorage |
Permitido |
Negado |
Permitido |
|
SELECT + ReadLowFrequencyStorage + ReadLongtermStorage |
Permitido |
Permitido |
Permitido |
Limitações
A chave é de nível de locatário (tenant). Uma vez ativada, ela afeta todos os projetos e todas as tabelas e partições que já estão em armazenamento de baixa frequência ou de longo prazo dentro do locatário. Antes de ativar a chave, revise e conceda as permissões necessárias para os jobs existentes para evitar interrupções no serviço.
Table Owners, Project Owners, Schema Owners e usuários com a função Super_Administrator ou Admin têm as permissões necessárias por padrão e não precisam receber permissões adicionais. Eles também podem conceder essas permissões a outros usuários ou funções.
Essas permissões controlam apenas a leitura de dados frios. Para transferir uma tabela ou partição do armazenamento de baixa frequência ou de longo prazo de volta para o armazenamento padrão, o usuário ainda precisa da permissão ALTER na tabela.
Para projetos que têm a sintaxe Schema ativada (modelo de três níveis), você deve ativar a sintaxe de três níveis no nível da sessão antes de executar operações de autorização e consulta:
SET odps.namespace.schema=true;.
Procedimento
Pré-requisitos
A chave de controle de acesso no nível do locatário para armazenamento em camadas está ativada. Para fazer isso, siga estas etapas:
Faça login no MaxCompute console e selecione uma região no canto superior esquerdo.
No painel de navegação à esquerda, escolha .
Na aba Tenant Property, ative a chave Tenant-level Schema Syntax.
Note: Após ativar a chave, os usuários com apenas a permissão SELECT não poderão mais acessar dados em armazenamento de baixa frequência ou de longo prazo. Conceda as permissões necessárias com antecedência para evitar a falha de jobs existentes.
Etapa 1: Verificar o tipo de armazenamento
O campo StorageTier nas propriedades da tabela ou partição especifica o tipo de armazenamento atual. Apenas os dados armazenados nas camadas de baixa frequência (lowfrequency) ou de longo prazo (longterm) estão sujeitos a restrições de permissão.
CREATE ROW ACCESS POLICY policy03
ON storage_table
TO USER (user_y) --You can also grant permissions to a role using TO ROLE rolename, and then assign the role to the user.
FILTER USING (true); -- The constant 'true' means the user can access all data in the table.
Etapa 2: Conceder permissões de acesso
Método 1: Autorização ACL
Use este método para autorização precisa em uma única tabela. Você pode conceder permissões a um usuário ou a uma função.
-
Formato do comando
CREATE ROW ACCESS POLICY policy03 ON storage_table TO USER (user_y) --You can also grant permissions to a role using TO ROLE rolename, and then assign the role to the user. FILTER USING (true); -- The constant 'true' means the user can access all data in the table. -
Parâmetros
Parâmetro
Obrigatório
Descrição
table_name
Sim
O nome da tabela a ser autorizada. Para uma tabela particionada, a concessão de permissão no nível da tabela se aplica a todas as suas partições.
user_name
Escolha um
O usuário autorizado é um usuário de função RAM no formato
RAM$<AccountName>:role/<RamRoleName>, que deve estar entre aspas simples oubackticks.role_name
Escolha um
A função à qual as permissões são concedidas. A função deve ser criada e atribuída ao usuário de destino antecipadamente.
-
Exemplos
CREATE ROW ACCESS POLICY policy03 ON storage_table TO USER (user_y) --You can also grant permissions to a role using TO ROLE rolename, and then assign the role to the user. FILTER USING (true); -- The constant 'true' means the user can access all data in the table.
Método 2: Autorização por política
Use este método para autorização em massa. Ele suporta a correspondência de várias tabelas usando curingas ou expressões regulares e só pode conceder permissões a funções.
-
Configurar pelo console
Faça login no MaxCompute console e selecione uma região no canto superior esquerdo.
No painel de navegação à esquerda, escolha .
Na página Projects, clique em Manage na coluna Actions do projeto de destino.
Na página Project Settings, clique na aba Role Permissions e modifique a autorização para a função de destino.
-
Defina Authorization Model como Policy, insira o conteúdo da política no campo Document e envie.
Exemplo de política: Concede a uma função a permissão para ler os dados de armazenamento de baixa frequência de todas as tabelas que começam com
storage_table_lowfreq.CREATE ROW ACCESS POLICY policy03 ON storage_table TO USER (user_y) --You can also grant permissions to a role using TO ROLE rolename, and then assign the role to the user. FILTER USING (true); -- The constant 'true' means the user can access all data in the table.
-
Configurar usando comandos SQL
CREATE ROW ACCESS POLICY policy03 ON storage_table TO USER (user_y) --You can also grant permissions to a role using TO ROLE rolename, and then assign the role to the user. FILTER USING (true); -- The constant 'true' means the user can access all data in the table.
Etapa 3: Verificar permissões
Use a conta autorizada para executar os seguintes comandos e verificar se as permissões entraram em vigor e, em seguida, acesse os dados de destino para confirmar.
CREATE ROW ACCESS POLICY policy03
ON storage_table
TO USER (user_y) --You can also grant permissions to a role using TO ROLE rolename, and then assign the role to the user.
FILTER USING (true); -- The constant 'true' means the user can access all data in the table.
Se a autorização estiver efetiva, a consulta retornará resultados. Caso contrário, um erro será relatado com a seguinte mensagem:
CREATE ROW ACCESS POLICY policy03
ON storage_table
TO USER (user_y) --You can also grant permissions to a role using TO ROLE rolename, and then assign the role to the user.
FILTER USING (true); -- The constant 'true' means the user can access all data in the table.
FAQ
Restaurar o comportamento de acesso anterior
Para restaurar o comportamento original, basta desativar a chave de controle de acesso ao armazenamento em camadas no nível do locatário. Após desativá-la, os usuários com permissão SELECT poderão acessar dados em todos os tipos de armazenamento. Quaisquer permissões já concedidas não serão afetadas.
Filtragem de dados de partição
O acesso a dados configurados para armazenamento de baixa frequência ou de longo prazo gera uma taxa de acesso. Você pode usar o recurso {{XREF_5}} junto com a função GET_PARTITION_META para controlar as permissões de dados em armazenamento de baixa frequência ou de longo prazo e gerenciar o acesso a esses dados.
GET_PARTITION_META
GET_PARTITION_META é uma função especial que só pode ser usada com controle de acesso no nível de linha. Ela não pode ser usada em consultas SQL padrão.
Sintaxe
CREATE ROW ACCESS POLICY policy03
ON storage_table
TO USER (user_y) --You can also grant permissions to a role using TO ROLE rolename, and then assign the role to the user.
FILTER USING (true); -- The constant 'true' means the user can access all data in the table.
Parâmetros
|
Parâmetro |
Descrição |
|
tableName |
O nome da tabela, que deve ser uma tabela particionada. O valor é do tipo String e suporta o formato |
|
pt_col |
Cada parâmetro de pt_col1 a pt_col_n corresponde a um nível de partição da tabela particionada. Cada parâmetro deve ser uma referência de coluna. |
Valor de retorno
Retorna uma Struct do tipo struct<storagetier:string>. A struct contém um único campo String que descreve o tipo de armazenamento da partição correspondente.
Notas de uso
Ao adicionar uma política no nível de linha a uma tabela, considere o comportamento de acesso de usuários diferentes daqueles que estão sendo controlados. Se a tabela já estiver sendo acessada por outros usuários, você deve definir políticas explícitas para eles para evitar problemas de filtragem de dados causados por negação de acesso não intencional. Para mais informações, consulte {{XREF_6}}.
Por padrão, as tabelas do MaxCompute podem ser acessadas não apenas por SQL, mas também por engines externos como Spark e Flink. No entanto, atualmente apenas a engine SQL do MaxCompute suporta a função GET_PARTITION_META. Portanto, se você usar GET_PARTITION_META em uma política de controle de acesso no nível de linha, apenas a engine SQL do MaxCompute poderá ler a tabela. Outras engines não conseguirão acessar a tabela.
Além de atender aos requisitos de permissão no nível de linha, um usuário também deve ter a permissão SELECT nos dados para acessá-los.
-
As condições de filtro dentro do GET_PARTITION_META podem levar a diferentes efeitos de poda de partição (partition pruning) em diferentes cenários.
-
As condições de filtro se aplicam apenas aos campos de partição de uma tabela particionada. Por exemplo, você pode permitir o acesso ao armazenamento padrão e exigir que o valor da partição de primeiro nível seja
2024.CREATE ROW ACCESS POLICY policy03 ON storage_table TO USER (user_y) --You can also grant permissions to a role using TO ROLE rolename, and then assign the role to the user. FILTER USING (true); -- The constant 'true' means the user can access all data in the table.Ao usar SQL para acessar
storage_tablee a cláusula WHERE não contiver uma condição de partição, o sistema suporta nativamente a poda de partição. Esse processo evita uma varredura completa na tabela, realizando acesso de somente leitura apenas nas partições necessárias emstorage_table. -
A condição de filtro inclui um valor de um campo não particionado, e uma operação AND é usada para conectar as duas condições de filtro. Por exemplo, uma condição para permitir o acesso ao armazenamento padrão é combinada com
a>100em um valor não particionado usando uma operação AND.CREATE ROW ACCESS POLICY policy03 ON storage_table TO USER (user_y) --You can also grant permissions to a role using TO ROLE rolename, and then assign the role to the user. FILTER USING (true); -- The constant 'true' means the user can access all data in the table.Ao usar SQL para acessar
storage_tablesem uma condição de partição na cláusula WHERE, a poda de partição ainda é suportada, acessando apenas as partições armazenadas comostandard. -
Os critérios de filtro incluem um valor para um campo não particionado, e os dois critérios são conectados por uma operação OR. Por exemplo, uma condição que permite o acesso ao armazenamento padrão é combinada com o valor não particionado
a>100em uma operação OR.CREATE ROW ACCESS POLICY policy03 ON storage_table TO USER (user_y) --You can also grant permissions to a role using TO ROLE rolename, and then assign the role to the user. FILTER USING (true); -- The constant 'true' means the user can access all data in the table.Ao usar SQL para acessar
storage_table, há dois cenários:Se a cláusula WHERE não contiver uma condição de partição, todas as partições serão varridas em busca de dados que satisfaçam
a>100.Se uma condição de partição for especificada na cláusula
WHERE, apenas os dados que satisfazem condições comostandardoua>100nas partições correspondentes serão varridos.
-
Exemplos
Defina a tabela particionada storage_table.
CREATE ROW ACCESS POLICY policy03
ON storage_table
TO USER (user_y) --You can also grant permissions to a role using TO ROLE rolename, and then assign the role to the user.
FILTER USING (true); -- The constant 'true' means the user can access all data in the table.
-
Exemplo 1:
Conceda a permissão
policy01ao usuário padrão para acessar dados de armazenamento padrão emstorage_table. Todos os usuários (incluindo o Project Owner) não podem acessar dados de armazenamento de baixa frequência ou de longo prazo, e um valor vazio é retornado.CREATE ROW ACCESS POLICY policy03 ON storage_table TO USER (user_y) --You can also grant permissions to a role using TO ROLE rolename, and then assign the role to the user. FILTER USING (true); -- The constant 'true' means the user can access all data in the table.O Logview Summary exibe a seguinte mensagem quando uma política de acesso no nível de linha é acionada:
A mensagem
WARNING:[1,15] row access policy is enabled on table yyy_hp_storagetier.storage_table01indica que uma política de acesso de linha foi acionada quando você consultou a tabela. -
Exemplo 2:
Conceda ao usuário
user_xa permissãopolicy02para acessar dados de armazenamento de baixa frequência e de longo prazo emstorage_table.CREATE ROW ACCESS POLICY policy03 ON storage_table TO USER (user_y) --You can also grant permissions to a role using TO ROLE rolename, and then assign the role to the user. FILTER USING (true); -- The constant 'true' means the user can access all data in the table.Dois cenários podem ocorrer:
Se a permissão
policy01estiver definida para uma tabela, todos os usuários, exceto user_x, podem acessar os dados de armazenamento padrão destorage_table, mas recebem um valor nulo para seus dados de armazenamento de baixa frequência ou de longo prazo, enquanto user_x pode acessar os dados de armazenamento de baixa frequência e de longo prazo destorage_table, mas recebe um valor nulo para seus dados de armazenamento padrão.Se a permissão
policy01não estiver configurada para a tabela, todos os usuários, exceto user_x, terão o acesso negado a quaisquer dados emstorage_tablee receberão um valor nulo. O user_x pode acessar dados em armazenamento de baixa frequência e de longo prazo, mas recebe um valor nulo ao tentar acessar dados no armazenamento padrão.
-
Exemplo 3:
A política
policy03concede ao usuáriouser_ypermissão de acesso a todos os dados emstorage_table.CREATE ROW ACCESS POLICY policy03 ON storage_table TO USER (user_y) --You can also grant permissions to a role using TO ROLE rolename, and then assign the role to the user. FILTER USING (true); -- The constant 'true' means the user can access all data in the table.Dois cenários podem ocorrer:
Se a permissão
policy01estiver definida para a tabela, todos os usuários (exceto user_y) podem acessar os dados de armazenamento padrão destorage_table, mas não podem acessar seus dados de armazenamento de baixa frequência ou de longo prazo, e um valor vazio é retornado. O usuáriouser_ypode acessar dados de todos os tipos de armazenamento emstorage_table.Se a permissão
policy01não estiver definida para a tabela, todos os usuários (exceto user_y) não poderão acessar nenhum dado armazenado emstorage_table, e um valor nulo será retornado. Apenas o usuáriouser_ypode acessar todos os dados armazenados emstorage_table.