O Hologres é compatível com PostgreSQL e oferece dois stored procedures para configurar propriedades de bancos de dados e tabelas: HG_UPDATE_DATABASE_PROPERTY e SET_TABLE_PROPERTY.
|
Função |
Descrição |
|
Defina o grupo de tabelas padrão e a contagem de shards de um banco de dados |
|
|
Configure propriedades em uma tabela, incluindo modo de armazenamento, índices, chave de distribuição e ciclo de vida |
HG_UPDATE_DATABASE_PROPERTY
Defina a propriedade default_table_group ou shard_count de um banco de dados.
Pré-requisitos
Para chamar HG_UPDATE_DATABASE_PROPERTY, você deve ser superusuário da instância ou proprietário do banco de dados.
Sintaxe
CALL HG_UPDATE_DATABASE_PROPERTY ('property', 'value');
Parâmetros
|
Parâmetro |
Descrição |
|
|
Propriedade a definir. Valores válidos: |
|
|
Defina um grupo de tabelas como padrão para o banco de dados. Requer Hologres V0.10 ou posterior. Caso sua instância esteja em uma versão anterior, atualize-a manualmente ou entre no grupo DingTalk do Hologres para contatar o suporte técnico. Para atualizar sua instância, consulte Upgrade instances. Para obter suporte, consulte Obtain online support for Hologres. |
|
|
Especifica o número de shards do grupo de tabelas padrão. Recomendamos não configurar esta propriedade. |
|
|
Valor da propriedade. |
Exemplo
Defina TG120 como o grupo de tabelas padrão:
CALL HG_UPDATE_DATABASE_PROPERTY ('default_table_group', 'TG120');
SET_TABLE_PROPERTY
Configure propriedades em uma tabela, incluindo modo de armazenamento, índices, chave de distribuição e ciclo de vida.
Para modifique o esquema de uma tabela, use ALTER TABLE . Para exclua uma tabela, use DROP TABLE .
Sintaxe
CALL SET_TABLE_PROPERTY ('table_name', 'property', 'value');
Parâmetros
table_name
Nome da tabela. O nome pode ser qualificado com esquema. Caracteres válidos: letras minúsculas, letras maiúsculas, dígitos e sublinhados (_). O nome deve começar com uma letra. Se contiver caracteres especiais, coloque-o entre aspas duplas (" "). Este parâmetro não diferencia maiúsculas de minúsculas; portanto, letras maiúsculas são tratadas como minúsculas.
property e value
A tabela a seguir lista as propriedades suportadas, suas descrições e quando cada uma pode ser configurada.
|
Propriedade |
Descrição |
Quando configure |
|
|
Modo de armazenamento da tabela. Valores válidos: armazenamento orientado a linhas, armazenamento orientado a colunas ou armazenamento híbrido de linhas e colunas. |
Somente na mesma transação de |
|
|
Colunas usadas para crie um índice clusterizado. Especifique as colunas no formato |
Somente na mesma transação de |
|
|
Colunas usadas como chave de segmento. O Hologres utiliza a chave de segmento para localizar dados durante consultas. Colunas baseadas em tempo são uma escolha comum. |
Somente na mesma transação de |
|
|
Colunas que determinam como os dados da tabela são distribuídos entre os shards. |
Somente na mesma transação de |
|
|
Colunas para criação de índice bitmap. Índices bitmap filtram dados dentro de um segmento. |
Configuração independente |
|
|
Colunas para criação de mapeamentos de dicionário. A codificação por dicionário converte comparações de strings em comparações numéricas, acelerando consultas |
Configuração independente |
|
|
Colunas TEXT ou BYTEA que utilizam Blob Storage. Valores grandes nessas colunas são armazenados separadamente, e a coluna mantém apenas uma referência a cada valor. Especifique o valor no formato
Nota
Para mais informações, consulte Blob Storage. |
Configuração independente |
|
|
Ciclo de vida dos dados da tabela em segundos. Aceita inteiros não negativos e números de ponto flutuante. Nota
A partir do Hologres V4.2, o TTL de tabelas com chave primária está sujeito a um valor mínimo imposto pelo parâmetro GUC |
Configuração independente |
Se value contiver um nome de coluna com letras maiúsculas, coloque o valor entre aspas duplas (" ").
Exemplo
O exemplo a seguir crie uma tabela ORDERS e defina suas propriedades de armazenamento em uma única transação. Propriedades configuráveis apenas durante a criação da tabela — clustering_key, segment_key e distribution_key — são definidas dentro de um bloco BEGIN...COMMIT junto com CREATE TABLE. Propriedades como bitmap_columns e dictionary_encoding_columns também podem ser definidas na mesma transação ou configuradas independentemente depois. A propriedade time_to_live_in_seconds configure os dados para expirar após 48 horas (172800 segundos).
BEGIN;
CREATE TABLE ORDERS (
O_ORDERKEY INTEGER NOT NULL,
O_CUSTKEY INTEGER NOT NULL,
O_ORDERSTATUS TEXT NOT NULL,
O_TOTALPRICE DECIMAL(15,2) NOT NULL,
O_ORDERDATE DATE NOT NULL,
O_ORDERPRIORITY TEXT NOT NULL,
O_CLERK TEXT NOT NULL,
O_SHIPPRIORITY INTEGER NOT NULL,
O_COMMENT TEXT NOT NULL
);
CALL SET_TABLE_PROPERTY ('ORDERS', 'clustering_key', 'O_ORDERKEY:asc,O_CUSTKEY:asc');
CALL SET_TABLE_PROPERTY ('ORDERS', 'segment_key', 'O_ORDERDATE');
CALL SET_TABLE_PROPERTY ('ORDERS', 'bitmap_columns', 'O_ORDERSTATUS,O_ORDERPRIORITY,O_CLERK,O_SHIPPRIORITY');
CALL SET_TABLE_PROPERTY ('ORDERS', 'dictionary_encoding_columns', 'O_ORDERSTATUS,O_ORDERPRIORITY,O_CLERK,O_SHIPPRIORITY');
CALL SET_TABLE_PROPERTY ('ORDERS', 'blob_columns', 'O_COMMENT:on');
CALL SET_TABLE_PROPERTY ('ORDERS', 'time_to_live_in_seconds', '172800');
COMMIT;