Pular para o conteúdo principal

Compatibilidade com Postgres

info

Beta

O Lakebase Postgres (beta com escalonamento automático) é a próxima versão do Lakebase, disponível apenas para avaliação. Para cargas de trabalho de produção, utilize a versão de pré-visualização pública do Lakebase. Consulte a seção "Como escolher entre as versões" para entender qual versão é a mais adequada para você.

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

Suporte à versão do Postgres

O Lakebase autoscale Beta é compatível com Postgres 16 e Postgres 17.

Suporte a extensões do Postgres

O Lakebase oferece suporte a diversas extensões do Postgres. Para obter a lista completa, consulte Extensões do Postgres.

Sessão, memória e armazenamento

Contexto da sessão

O recurso de escalação para zero do Lakebase fecha automaticamente as conexões parado após um período de inatividade.

Quando as conexões são fechadas, tudo no contexto da sessão, como tabelas temporárias, instruções preparadas, bloqueios consultivos e os comandos NOTIFY e LISTEN , é perdido.

Para evitar a perda de contextos de nível de sessão, você pode desativar a opção "escalar para zero". No entanto, fazer isso significa que seu compute ficará em execução 24 horas por dia, 7 dias por semana.

Memória

Consultas SQL e criação de índices podem gerar grandes volumes de dados que podem não caber na memória. O tamanho do seu compute determina a quantidade de memória disponível.

Tabelas não registradas

Tabelas não registradas são tabelas que não gravam no log de transações (WAL) do Postgres. Essas tabelas são armazenadas no armazenamento local compute e não são mantidas entre reinicializações compute ou quando a escalação compute chega a zero. Isso é diferente do Postgres padrão, onde as tabelas não registradas são truncadas apenas em caso de encerramento anormal do processo. Além disso, as tabelas não registradas são limitadas pelo espaço em disco local compute . O Lakebase compute aloca 20 GiB de espaço em disco local ou 15 GiB vezes o tamanho máximo compute (o que for maior) para arquivos temporários usados pelo Postgres.

Mesas temporárias

As tabelas temporárias existem apenas durante a duração de uma sessão (ou, opcionalmente, de uma transação). Assim como as tabelas não registradas, elas são armazenadas no armazenamento local compute e limitadas pelo espaço em disco local.

logsdo Postgres

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

Coleta de estatísticas

As estatísticas coletadas pelo sistema de estatísticas cumulativas do Postgres não são salvas quando um compute (onde a execução do Postgres) chega a zero. Para evitar a perda de estatísticas, você pode desativar o recurso de escala para zero. No entanto, desativar a escalação para zero também significa que seu compute ficará em execução 24 horas por dia, 7 dias por semana.

Configurações de parâmetros do Postgres

Como um serviço de gerenciamento do Postgres, muitos parâmetros do banco de dados são definidos com base no tamanho do compute . Veja todas as configurações de parâmetros do seu banco de dados usando:

SQL
SHOW ALL;

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

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

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

    SQL
    SET maintenance_work_mem='1 GB';
  • Defina um parâmetro para todas as sessões conectadas a um banco de dados.

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

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

Codificação e agrupamentos de banco de dados

Codificação de banco de dados

Por default, a ordenação C.UTF-8 é utilizada. O C.UTF-8 suporta toda a gama de caracteres codificados em UTF-8.

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

Para view a codificação e a ordenação do seu banco de dados, execute a seguinte consulta:

SQL
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';
nota

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

Compilações

Uma ordenação é um objeto de esquema SQL que mapeia um nome SQL para as localidades fornecidas pela biblioteca instalada no sistema operacional.

Por default, o Lakebase usa a ordenação C.UTF-8 . Outro provedor suportado pelo Lakebase é icu, que usa a biblioteca externa ICU .

O Lakebase oferece uma série completa de configurações regionais predefinidas (icu) caso você precise de ordenação específica por localidade ou conversão de maiúsculas e minúsculas.

  • Ver todas as localidades predefinidas:
SQL
SELECT * FROM pg_collation;
  • Crie um banco de dados com uma localidade predefinida icu :
SQL
CREATE DATABASE my_arabic_db
LOCALE_PROVIDER icu
icu_locale 'ar-x-icu'
template template0;
  • Especifique uma localidade para cada coluna:
SQL
CREATE TABLE my_ru_table (
id serial PRIMARY KEY,
russian_text_column text COLLATE "ru-x-icu",
description text
);

Limitações de funcionalidade

Funções e permissões

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

Replicação

A replicação lógica do Postgres não é suportada no Lakebase Postgres (autoscale Beta). A replicação de dados de ou para um banco de dados Lakebase usando a replicação nativa do Postgres não está disponível.

Cancelamento de consulta do cliente

O protocolo de cancelamento do Postgres não pode ser usado para cancelar consultas em andamento.

Em vez disso, crie uma nova conexão e execute pg_cancel_backend(pid):

SQL
SELECT pg_cancel_backend(pid)
FROM pg_stat_activity
WHERE pid <> pg_backend_pid() AND
query = '{The query you want to cancel}';

Espaços de tabela

O Lakebase não suporta tablespaces do Postgres. A tentativa de criar um tablespace com o comando CREATE TABLESPACE resulta em um erro. Isso ocorre devido à arquitetura de gerenciamento cloud do Lakebase, que não permite acesso direto ao sistema de arquivos para locais de armazenamento personalizados.

Se você tiver aplicativos ou scripts existentes que usam tablespaces para organizar objetos de banco de dados em diferentes dispositivos de armazenamento, será necessário remover ou modificar essas referências ao migrar para o Lakebase.