Partilhar via


Compatibilidade com Postgres

Importante

A Lakebase Autoscaling está em Beta nas seguintes regiões: eastus2, westeurope, westus.

O Autoscaling do Lakebase é a versão mais recente do Lakebase com computação automática, escala até zero, ramificação e restauração instantânea. Para comparação de funcionalidades com o Lakebase Provisioned, veja a escolha entre versões.

Esta página descreve como o Lakebase Postgres é compatível com o Postgres padrão. Como serviço Postgres gerido, existem algumas diferenças e limitações.

Suporte a versões Postgres

Lakebase Autoscaling suporta Postgres 16 e Postgres 17.

Suporte para extensões Postgres

A Lakebase suporta várias extensões da Postgres. Para a lista completa, veja extensões Postgres.

Sessão, memória e armazenamento

Contexto da sessão

A funcionalidade Lakebase scale-to-zero fecha automaticamente as ligações ociosas após um período de inatividade.

Quando as ligações são fechadas, tudo o que está no contexto da sessão, como tabelas temporárias, instruções preparadas, bloqueios de aviso e comandos NOTIFY e LISTEN , é perdido.

Para evitar perder contextos ao nível da sessão, pode desativar o scale-to-zero. No entanto, fazer isso significa que o seu cálculo está a funcionar 24/7.

Memory

Consultas SQL e compilações de índices podem gerar grandes volumes de dados que podem não caber na memória. O tamanho do seu cálculo determina a quantidade de memória disponível.

Tabelas não registadas

Tabelas sem log são tabelas que não escrevem no log de escrita antecipada (WAL) do Postgres. Estas tabelas são armazenadas em armazenamento local de computação e não são mantidas durante reinícios de computação ou quando um cálculo escala para zero. Isto é diferente do Postgres padrão, onde as tabelas não logadas só são truncadas no caso de terminações anormais de processos. Adicionalmente, as tabelas não logadas são limitadas pelo espaço de cálculo local do disco. O Lakebase calcula que aloca 20 GiB de espaço local em disco ou 15 GiB vezes o tamanho máximo de computação (o que for maior) para ficheiros temporários usados pelo Postgres.

Tabelas temporárias

As tabelas temporárias existem apenas durante a vida útil de uma sessão (ou, opcionalmente, de uma transação). Tal como as tabelas não logadas, são armazenadas em armazenamento local de cálculo e limitadas pelo espaço de disco local.

Registos Postgres

O acesso aos registos do Postgres não é suportado.

Recolha de estatísticas

As estatísticas recolhidas pelo sistema de estatísticas cumulativas do Postgres não são guardadas quando um cálculo (onde o Postgres é executado) escala para zero. Para evitar perder estatísticas, podes desativar a funcionalidade de escala para zero. No entanto, desativar a escala a zero também significa que o teu cálculo vai correr 24/7.

Definições dos parâmetros Postgres

Como serviço Postgres gerido, muitos parâmetros da base de dados são definidos com base no tamanho do cálculo. Veja todas as definições dos parâmetros da sua base de dados utilizando:

SHOW ALL;

Você pode configurar parâmetros que tenham um user contexto no nível de sessão, banco de dados ou função. Não é possível configurar parâmetros no nível da instância.

  • Mostrar parâmetros que podem ser definidos no nível da sessão, do banco de dados ou da função.

    SELECT name
    FROM pg_settings
    WHERE context = 'user';
    
  • Defina um parâmetro para a sessão.

    SET maintenance_work_mem='1 GB';
    
  • Defina um parâmetro para todas as sessões ligadas a uma base de dados.

    ALTER DATABASE lakebase SET maintenance_work_mem='1 GB';
    
  • Defina um parâmetro para todas as sessões de um determinado usuário.

    ALTER USER "john@company.com" SET maintenance_work_mem='1 GB';
    

Codificação de bases de dados e colações

Codificação de bases de dados

Por padrão, o agrupamento C.UTF-8 é usado. C.UTF-8 suporta a gama completa de caracteres codificados UTF-8.

A codificação UTF8 (Unicode, codificação de largura variável de 8 bits) também é suportada.

Para visualizar a codificação e a compilação da sua base de dados, execute a seguinte consulta:

SELECT
    pg_database.datname AS database_name,
    pg_encoding_to_char(pg_database.encoding) AS encoding,
    pg_database.datcollate AS collation,
    pg_database.datctype AS ctype
FROM
    pg_database
WHERE
    pg_database.datname = 'your_database_name';

Observação

No Postgres, não é possível alterar a codificação ou o agrupamento de um banco de dados depois que ele for criado.

Collations

Uma colação é um objeto de esquema SQL que mapeia um nome SQL para localizações fornecidas por bibliotecas instaladas no sistema operativo.

Por padrão, o Lakebase utiliza a C.UTF-8 colação. Outro fornecedor suportado pelo Lakebase é icu, que utiliza a biblioteca externa da UCI .

A Lakebase disponibiliza uma série completa de locales ICU pré-definidos caso necessite de ordenação específica de acordo com o contexto regional ou conversões de casos.

  • Veja todos os locais predefinidos:
SELECT * FROM pg_collation;
  • Crie uma base de dados com um local pré-definido icu :
CREATE DATABASE my_arabic_db
LOCALE_PROVIDER icu
icu_locale 'ar-x-icu'
template template0;
  • Especifique uma localização para colunas individuais:
CREATE TABLE my_ru_table (
    id serial PRIMARY KEY,
    russian_text_column text COLLATE "ru-x-icu",
    description text
);

Limitações de funcionalidade

Papéis e permissões

  • Não é possível acessar o sistema operacional do host.
  • Você não pode se conectar usando o Postgres superuser.
    • Qualquer funcionalidade que exija superuser privilégios ou acesso direto ao sistema de arquivos local não é permitida.
    • O databricks_superuser substitui o papel do Postgres superuser . Para informações sobre os privilégios associados a esta função, consulte Gerir funções.

Replicação

A replicação de dados para ou a partir de uma base de dados Lakebase usando replicação lógica nativa do Postgres ainda não está disponível.

Espaços de tabela

O Lakebase não suporta tablespaces do Postgres. Tentar criar um espaço de tabela com o CREATE TABLESPACE comando resulta num erro. Isto deve-se à arquitetura cloud gerida do Lakebase, que não permite o acesso direto ao sistema de ficheiros para locais de armazenamento personalizados.

Se tiver aplicações ou scripts existentes que utilizam espaços de tabela para organizar objetos de base de dados entre diferentes dispositivos de armazenamento, deve remover ou modificar essas referências ao migrar para o Lakebase.