Fazer streaming de dados de bancos de dados do SQL Server

Para manter as análises e os bancos de dados downstream sincronizados, use o Datastream para replicar dados históricos e mudanças em andamento de um banco de dados do SQL Server.

Para origens do SQL Server no Datastream, consulte o comportamento de replicação e os métodos de captura de dados alterados (CDC), as versões e edições compatíveis e as limitações conhecidas.

Comportamento

O Datastream rastreia as alterações na linguagem de manipulação de dados (DML) usando um dos seguintes métodos de CDC:

Alterar tabelas

O método de CDC de tabelas de alteração permite que os usuários retenham registros por um tempo menor e, assim, economizem espaço de armazenamento, mas oferece suporte a uma capacidade menor em comparação com o método de registros de transações. O método tem menos limitações do que os registros de transações. Por exemplo, ele elimina o risco de truncamento de registros que leva à falha permanente de streams e oferece suporte à replicação de tabelas criptografadas. Para mais informações, consulte Limitações conhecidas.

Ao usar esse método de CDC, as alterações na origem são rastreadas usando tabelas de alterações dedicadas. Os registros de transações ainda são usados, mas de forma limitada, e você não precisa retê-los por períodos mais longos. À medida que os eventos de DML são aplicados às tabelas de origem, as alterações são replicadas nas tabelas de alterações correspondentes. As tabelas de alteração têm a mesma estrutura que as tabelas de origem, mas com colunas extras para incluir os metadados das alterações. Somente as transações confirmadas são adicionadas às tabelas de alterações, junto com o número de sequência do registro (LSN, na sigla em inglês) da operação de confirmação.

Como o Datastream lida com mudanças de DDL no esquema de origem

Quando você usa o método CDC de tabelas de alteração, instâncias de captura são criadas para cada tabela de alteração. Cada instância de captura está associada a uma lista de colunas que ela captura e rastreia. Por padrão, quando uma alteração na linguagem de definição de dados (DDL) ocorre na origem após a criação da instância de captura, a instância ignora a alteração. No entanto, é possível configurar o stream do SQL Server para replicar colunas adicionadas ao esquema de origem após a criação do stream e da instância de captura.

Antes de começar
  • Verifique se o usuário do Datastream tem a permissão db_owner atribuída.

Replicar colunas adicionadas ao esquema de origem

Para que o Datastream ofereça suporte à replicação de colunas adicionadas ao esquema de origem depois que um stream foi criado, adicione o rótulo enable_ddl_support_for_ct ao stream:

  1. Acesse a página Streams no console do Google Cloud .

    Acessar a página "Mural"

  2. Clique no stream do SQL Server que você quer editar.

  3. Na página Detalhes dos streams, clique em Pausar.

  4. Clique em Editar > Editar configurações do fluxo.

  5. Clique em Adicionar rótulo.

  6. No campo Chave, digite enable_ddl_support_for_ct.

  7. No campo Value, digite true.

  8. Clique em Salvar.

  9. Clique em Iniciar para retomar a transmissão.

O Datastream verifica a tabela cdc.ddl_history em busca de novas DDLs a cada cinco minutos. Se uma nova coluna for adicionada a uma tabela incluída na configuração do stream, o Datastream vai verificar se a tabela tem duas instâncias de captura:

  • Se não houver, o Datastream vai criar uma nova instância de captura, ler os dados da instância de captura original até o momento em que a DDL ocorreu e, em seguida, começar a ler a partir da nova instância de captura.

  • Se isso acontecer, uma entrada de registro será adicionada informando que a alteração de DDL não pode ser processada porque o número máximo de instâncias de captura foi atingido.

Registros de transações

Ao usar esse método de CDC, o Datastream lê as alterações na origem diretamente dos registros de transações. Esse método requer menos recursos e permite uma recuperação de dados mais rápida, mas tem mais limitações.

Para evitar a perda de dados, é importante que os registros não sejam truncados antes que o Datastream os leia. Por outro lado, se você mantiver os arquivos de registro por muito tempo, eles vão ocupar espaço de armazenamento, o que pode fazer com que a instância do banco de dados entre no modo somente leitura.

Para garantir que o leitor de CDC tenha tempo suficiente para ler os registros e, ao mesmo tempo, permitir que o truncamento de registros libere espaço de armazenamento, é necessário aplicar outras etapas de configuração, como alterar os intervalos de sondagem e configurar uma proteção de truncamento. Essas etapas oferecem uma camada extra de proteção para garantir que o Datastream possa ler os dados mesmo se houver inatividade no Datastream ou um problema de conectividade entre o banco de dados de origem e o Datastream.

Para instruções detalhadas sobre como aplicar essas medidas adicionais, consulte a página Configurar um banco de dados de origem do SQL Server e selecione o tipo de banco de dados.

Versões

O Datastream é compatível com as seguintes versões e edições de bancos de dados do SQL Server:

  • Autogerenciado (no local ou hospedado na nuvem) usando as seguintes versões:
    • Enterprise: 2008 e versões mais recentes
    • Standard: 2016 SP1 e posterior
    • Desenvolvedor: 2008 e mais recente
  • Amazon RDS para SQL Server
  • Banco de dados SQL do Azure (nível S3 e superior).

  • Cloud SQL para SQL Server

O Datastream não é compatível com as seguintes versões de bancos de dados do SQL Server:

  • SQL Server Standard Edition da versão 2008 à 2014
  • SQL Server Express
  • SQL Server Web

Limitações conhecidas

As limitações conhecidas do uso do banco de dados do SQL Server como origem incluem:

  • Os streams são limitados a 10.000 tabelas.
  • Uma tabela com mais de 500 milhões de linhas não pode ser preenchida, a menos que as seguintes condições sejam atendidas:
    1. A tabela tem um índice exclusivo.
    2. Nenhuma das colunas de índice é anulável.
    3. Todas as colunas do índice são incluídas no stream.
  • Bancos de dados com durabilidade atrasada ou recuperação acelerada de banco de dados (ADR, na sigla em inglês) ativada não são compatíveis.
  • Não é possível fazer streaming de mudanças em tabelas do sistema.
  • A autenticação do Windows Active Directory (AD) não é compatível.
  • O Datastream é compatível com todas as ordenações do SQL Server, exceto aquelas com a página de código 0. Para verificar a página de código de uma ordenação específica, execute a seguinte consulta na instância do SQL Server:

    SELECT *, CAST(COLLATIONPROPERTY(name, 'CodePage') AS INT) FROM sys.fn_helpcollations() WHERE name = COLLATION_NAME;
    
  • Os seguintes tipos de dados não são compatíveis e não são replicados para o destino:

    • SQL_VARIANT
    • HIERARCHYID
  • O Datastream replica tipos de dados definidos pelo usuário, mas é o tipo de dados base do qual você deriva o tipo definido pelo usuário que é armazenado no destino. Por exemplo, se você definir um tipo de dados USERNAME com base no tipo de dados VARCHAR(50), os dados serão armazenados no destino como VARCHAR(50).

  • O Datastream não é compatível com CDC para colunas de objetos grandes (TEXT, NTEXT, XML, IMAGE, GEOMETRY, GEOGRAPHY) e colunas de comprimento variável máximo (VARCHAR(MAX), VARBINARY(MAX), NVARCHAR(MAX)) em tabelas sem um índice exclusivo.

    Se as colunas de objetos grandes não forem incluídas no stream, a CDC será compatível.

  • Não é possível replicar as seguintes alterações de esquema de origem ao usar o método CDC de alteração de tabelas, o que pode causar corrupção de dados ou falha no processamento de eventos:

    • Remoção de colunas: os dados nessas colunas são substituídos por valores NULL.
    • Renomear colunas: não é possível fazer isso no SQL Server quando o CDC está ativado.
    • Modificação de tipos de dados: o job de captura do CDC do SQL Server propaga apenas as seguintes alterações de tipo de dados:

      • Alterar o tamanho máximo de strings: por exemplo, mudar o tipo de dados VARCHAR(50) para VARCHAR(100). A coluna STRING do BigQuery não tem um tamanho fixo e aceita a string mais longa.
      • Aumentar o intervalo de valores inteiros: por exemplo, mudar o tipo de dados INT para BIGINT. O tipo de dados INT64 do BigQuery acomoda o novo tipo sem exigir uma alteração de esquema.
      • Alterar a precisão e a escala de valores numéricos: por exemplo, mudar o tipo de dados DECIMAL(10, 2) para DECIMAL(18, 4). O tipo NUMERIC do BigQuery tem uma grande precisão fixa (38) e escala (9), e essa alteração é aceita.

      Para outras modificações de tipo de dados, o Datastream tenta inserir os dados no destino e gera um erro se eles forem rejeitados.

  • O Datastream não oferece suporte à replicação de tabelas que incluem colunas com mascaramento de dados. Os dados são replicados sem mascaramento.

  • O Datastream não é compatível com a replicação de alterações aplicadas ao banco de dados usando o pacote de aplicativos de camada de dados (DACPAC, na sigla em inglês).

  • O Datastream não replica as mudanças feitas usando as instruções WRITETEXT ou UPDATETEXT.

  • Se você usar o rótulo enable_ddl_support_for_ct para replicar colunas adicionadas ao esquema de origem, não será possível ter vários streams anexados à mesma tabela de origem do SQL Server. Como o SQL Server aceita no máximo duas instâncias de captura por tabela, as mudanças de esquema podem causar disputas em que o Datastream tenta criar instâncias de captura, o que pode causar falhas nos streams.

  • O Datastream não oferece suporte à replicação de colunas calculadas, a menos que a coluna esteja marcada como PERSISTED.

  • O Datastream não é compatível com os tipos de compactação PAGE, COLUMNSTORE ou COLUMNSTORE ARCHIVE.

Outras limitações ao usar o método de registros de transação

Se você usar o método CDC de registros de transações, as seguintes limitações adicionais serão aplicadas:

  • A criptografia transparente de dados (TDE) não é compatível.
  • A criptografia no nível da coluna não é compatível. Os dados nessas colunas são substituídos por valores NULL.
  • Ao usar o método CDC de registros de transações, o Datastream não oferece suporte à replicação de colunas adicionadas ao esquema de origem após a criação de um stream. As novas colunas não são replicadas no destino.
  • O Datastream não é compatível com a instrução ROLLBACK TO SAVEPOINT. Esses eventos de reversão são ignorados e não são replicados para o destino.
  • O Datastream não é compatível com CDC para linhas maiores que 8 KB nos seguintes tipos de tabelas:
    • Tabelas sem um índice exclusivo
    • Tabelas que contêm apenas um índice exclusivo não clusterizado com uma ou mais colunas de comprimento variável (VARCHAR, VARBINARY, NVARCHAR, GEOMETRY, GEOGRAPHY)
  • O Datastream não é compatível com CDC para colunas de objetos grandes (TEXT, NTEXT, XML, IMAGE, GEOMETRY, GEOGRAPHY) nos seguintes tipos de tabelas:

    • Tabelas sem um índice exclusivo
    • Tabelas que contêm apenas um índice exclusivo não clusterizado com uma ou mais colunas de comprimento variável (VARCHAR, VARBINARY, NVARCHAR, GEOMETRY, GEOGRAPHY)

    Se as colunas de objetos grandes não forem incluídas no stream, a CDC só será compatível com essas tabelas se elas tiverem índices válidos.

  • Ao usar o método de registros de transações, o Datastream consulta o banco de dados de origem para buscar valores ausentes em um momento específico em um processo de pesquisa ativo chamado de suplementação. A suplementação se aplica aos tipos de dados XML, TEXT, NTEXT, IMAGE, GEOMETRY e GEOGRAPHY, além de tipos de comprimento variável, como VARCHAR(MAX) ou VARBINARY, quando as linhas excedem o limite de página de 8 KB. Como o Datastream complementa essas colunas consultando o banco de dados, as alterações intermediárias podem não ser capturadas em cenários que envolvem atualizações rápidas e consecutivas ou uma exclusão rápida após uma inserção. As operações DELETE não acionam a suplementação. Essa limitação é particularmente relevante ao usar o modo de gravação somente anexação, que espera que todas as mudanças intermediárias sejam capturadas.

A seguir