Quando 2 x 3 = 2 ou mais uma vez sobre virtualização de dados

Olá pessoal! Você já ouviu alguma coisa sobre o fenômeno Baader-Meinhof ? Essa é uma distorção cognitiva engraçada, que, como se viu, é bastante interessante observar por exemplo. Em 2016, um artigo de revisão sobre a tecnologia Delphix foi publicado no Habré. Como qualquer boa teoria que você consome em toneladas todos os dias para ficar sabendo, você esquece completamente cerca de 80%, sem colocá-la em prática. Também aconteceu comigo - esqueci-me rapidamente desse post e do Delphix, até cerca de um ano atrás, como resultado do meu serviço, encontrei os autores do produto e o próprio produto. Tendo a oportunidade de estudar o tópico não na teoria, mas na prática, a LANIT mergulhou nessa tecnologia tão profundamente que neste artigo eu gostaria de sistematizar o conhecimento adquirido e analisar a experiência adquirida.

Imagem cortesia dos resultados da pesquisa Yandex.

O que é o Delphix?


O Delphix é um software em execução em uma máquina virtual com o Solaris OS, ao qual você precisa conectar sistemas de armazenamento para armazenar cópias do banco de dados para funcionar corretamente. O software é entregue na forma de uma imagem pronta de uma máquina virtual (dispositivo virtual). A imagem pode ser implantada no VmWare ou na infraestrutura de nuvem da AWS / Azure. Para testes, em princípio, você pode aumentá-lo localmente em sua estação de trabalho.

Se resumido com muita força e muito breve, o Delphix virtualiza os dados e fornece bancos de dados prontos com os quais você pode trabalhar. Ele pega uma cópia do banco de dados de origem (chamada dSource) e a coloca em seu armazenamento (a partição da VM local, que está conectada ao armazenamento externo). Usando algoritmos, reduz o volume dessa cópia para 60% (dependendo dos tipos de dados, é claro). Em seguida, a partir da mesma cópia, você pode implantar esse banco de dados em outros hosts em alguns minutos. Esses bancos de dados são chamados de Banco de dados virtual - VDB. Os arquivos de banco de dados são montados para direcionar hosts via NFS e, portanto, não ocupam espaço neles. Ou seja, com 1 dSource por 500 GB e 5 VDB, o espaço total ocupado por esse gabinete no armazenamento será de cerca de 350 GB (aproximadamente).

Este é um processo de cópia única?


Após a etapa de inicialização e inicialização do banco de dados de origem no Delphix, o mecanismo Delphix mantém a sincronização constante com esse banco de dados com base na política que você escolhe, por exemplo, sincronização diária ou a cada hora ou algum tempo após as transações.
A velocidade de criação da primeira cópia do banco de dados depende diretamente da largura de banda da rede entre o banco de dados de origem e o Delphix, pois o backup é transmitido pela rede.

Após a ligação ao banco de dados de origem, o Delphix suporta o chamado TimeFlow (máquina do tempo) do banco de dados de origem, uma funcionalidade semelhante ao controle de versão. Qualquer versão do banco de dados dentro desse intervalo de tempo pode ser conectada ao banco de dados de destino. Porque Por exemplo, para investigar incidentes.

Figura 1: A capacidade de implantar o VDB a qualquer momento ...

Figura 2: ... em um instantâneo de banco de dados criado manualmente

Os VDBs estão em um nível comum, portanto, nem usuários nem administradores exigem recursos de armazenamento adicionais.

Você pode conectar rapidamente qualquer versão deste VDB ao banco de dados de destino. Os VDBs são independentes um do outro e estão no modo de leitura e gravação. Novas alterações feitas no VDB são gravadas em novos blocos na loja Delphix.

Você pode criar VDBs com base em outro VDB e atualizá-lo ou reverter conforme necessário.

Como o aplicativo reagirá a isso?


Você pode trabalhar com esses VDBs "como em um banco de dados regular". O aplicativo não notará nada. É claro que os binários DBMS já devem estar instalados nesses servidores, pois apenas os arquivos do banco de dados são clonados.

Esses VDBs são usados ​​principalmente para testes funcionais ou como caixas de proteção. Na maioria dos casos, não vale a pena direcionar a carga no VDB, porque, devido à conexão do banco de dados via NFS, a interpretação dos resultados desses testes de carga será bastante problemática. Embora se você tiver um banco de dados no baile funcione com o armazenamento por meio do NFS, provavelmente poderá.

Garantido, você pode contar com uma operação estável se estiver usando Oracle (incluindo aqueles com suporte a vários participantes e RAC), MS SQL, SAP ASE, IBM DB2, Oracle EBS, SAP HANA. Essas configurações são suportadas pelo fornecedor.

Além disso, você pode virtualizar arquivos regulares (considere qualquer banco de dados, mas com algumas limitações na funcionalidade). Por exemplo, como prova de conceito para testes internos, virtualizamos instâncias do PostgreSQL de um de nossos projetos. Não vou dizer o que aconteceu uma ou duas vezes, mas no final o esquema com o PostgreSQL funcionou, mesmo que o fornecedor atualmente não ofereça suporte oficial ao PostgreSQL.

Por que isso é necessário se funcionalidade semelhante é incorporada ao sistema de armazenamento?


Escusado será dizer que o sistema de armazenamento tem uma funcionalidade para instantâneos e thin provisioning por um longo tempo. No entanto, se um banco de dados e estandes produtivos estiverem localizados em sistemas de armazenamento de diferentes fornecedores, essa solução não funcionará. E nem todos os sistemas de armazenamento podem fazer isso.

Usando o Delphix, você pode implantar com êxito ambientes de teste em sistemas de armazenamento tecnologicamente obsoletos e desatualizados que foram descomissionados. Como resultado, reduzimos significativamente o custo de armazenamento de dados de teste.

Também é possível obter uma cópia física do banco de dados a partir deste instantâneo, por exemplo, para criar uma espera ou transferir o banco de dados para outro sistema de armazenamento.

Um componente importante é o autoatendimento. Usando a GUI do Delphix JetStream, até desenvolvedores / testadores não treinados podem reverter / atualizar as versões dos bancos de dados de seus estandes por conta própria e não atrair administradores várias vezes por semana.

Figura 3. Usando o JetStream, a figura mostra a vida útil da versão principal do VDB, criando instantâneos da versão e algumas propinas para esses instantâneos.

O Delphix suporta a sincronização contínua do VDB com um banco de dados produtivo usando arquivos de log arquivados / transacionais. Para uma implementação semelhante baseada no armazenamento, você terá que fazer ... vinte instantâneos por dia.

O Oracle Enterprise Manager também sabe como clonar bancos de dados


Sim, pode, mas apenas o Oracle DBMS é suportado nele. Portanto, ele não pode ser usado para o restante do DBMS.

A questão principal é por que ela gera lucro?


Primeiro, vamos descobrir para quem e devido a qual Delphix pode ser benéfico. O lucro é o seguinte:

  • redução do tempo gasto na aprovação de novos estandes,
  • redução do espaço de armazenamento usado para bancadas de teste,
  • a capacidade de usar sistemas de armazenamento não especializados de diferentes fornecedores,
  • redução do tempo de implantação da base no estande,
  • redução do tempo de atualização do banco de dados nos estandes.

Agora brevemente para cada item.

Redução do tempo gasto na coordenação de novos estandes. Sim, em algumas das empresas com as quais trabalhamos, o acordo para implantar um novo estande levou duas semanas. E se não houver uma quantidade necessária de recursos ou a organização se deparar com muita solidez e alta burocratização, digamos com cuidado, os termos serão chamados "a partir de um mês".

Espaço de armazenamento reduzido para bancos de teste. Segundo os fornecedores de hardware, o custo de manutenção de 1 TB de dados em armazenamento é de 800 euros por ano. Os números são aproximados, mas o pedido é. Se você tiver um banco de dados produtivo de 2 TB de tamanho e 3 bancos de teste com VDB, o volume total ocupado pelo delfix será de aproximadamente 2 TB. Esses indicadores são alcançados devido ao fato de que, para todos os bancos de dados de teste, é necessário apenas um serviço comum, que, no caso geral, ocupará um banco de dados não muito mais produtivo. Obviamente, tudo depende do número de alterações feitas nos bancos de dados de teste. Mais alterações - os armazenamentos “incham” mais devido ao armazenamento de deltas. Para imaginar isso, você pode imaginar um diagrama com instantâneos de máquinas virtuais.

O número total de possíveis bancos de dados conectados (incluindo o banco de dados de origem e bancos de dados de teste) a uma instância do Delphix é de cerca de 300.

Reduzindo o tempo para implantar a base no estande. Em vez de muitas horas de operação de rotina para rolar um backup de uma determinada versão em um suporte, você precisa pressionar 3 botões. Para aqueles que estão acostumados a trabalhar no console ou a usar uma API poderosa, há CLI e API, respectivamente.

Reduzindo o tempo para atualizar o banco de dados nos estandes. O mecanismo Delphix suporta sincronização constante com o banco de dados de origem (usando os logs de archive / transações do banco de dados), e todas as alterações desse banco de dados podem ser propagadas para VDBs conectados.

Como isso é tecnicamente implementado?


O sistema de arquivos Delphix contém blocos de dados (o nível mais baixo da imagem). Delphix cria índices de árvore B que apontam para esses blocos de dados. Além disso, o bloco raiz do índice (o mais alto) é decisivo. Este é o estado do sistema no momento t0.


Agora imagine que os blocos de dados modificados b 'e c' chegaram e o sistema passou para o estado t1.

O Delphix não tritura blocos de dados antigos, mas cria novos blocos lado a lado. Para acessá-los, é criado um novo bloco de índice raiz que aponta para os novos blocos de dados.


Graças aos índices, o sistema possui duas versões, cada uma das quais pode ser operada conectando-se ao bloco raiz correspondente do índice t0 ou t1.

Por exemplo, quando conectado ao bloco de índice t1, o sistema terá a seguinte aparência:


Quando o Delphix faz um backup de um banco de dados de origem, ele cria esses índices dentro de si. Ele aplica automaticamente backups incrementais ao original, mas não esfrega os blocos, mas os grava lado a lado e cria novos blocos raiz do índice.

Portanto, sempre é possível obter um instantâneo de banco de dados em um momento específico e implantar um VDB a partir dele.

um vídeo no YouTube explicando por Jonathan Lewis (otimizador / otimizador de alto nível e problemas de desempenho da Oracle, autor do bom livro Fundamentos do Oracle com base em custos e muitos outros livros úteis).

Quanto mais conveniente é do que uma solução personalizada (scripts, por exemplo)?


Com pessoas, tempo, dinheiro e paciência suficientes, você pode escrever qualquer coisa com scripts. No entanto, o custo de seu suporte e muitas outras nuances dependerão diretamente da complexidade de tal decisão. Uma empresa com a qual trabalhamos e somos amigos, avaliou os prós e os contras, avaliou os pontos fortes de seu departamento de TI e decidiu escrever o analógico Delphix de forma independente em scripts e ZFS. É uma opção e tanto, se você precisar de uma solução especializada para um sistema, estará confiante em suas habilidades. Sim, isso já está lá, nós gostamos de escrever scripts ...

Em algum lugar acima, sobre mascaramento, o que é?


Uma ferramenta adicional de mascaramento de dados pode ser adicionada à funcionalidade principal do Delphix. Permite criptografar dados pessoais, por exemplo, números de cartão de crédito, nomes, sobrenomes etc. Uma função muito popular entre os bancos e aqueles que cumprem todos os requisitos de 149- e 152-.

Normalmente, os desenvolvedores precisam de dados de um banco de dados produtivo quando isso acontece:

  • desenvolvendo um novo aplicativo,
  • suporte ou aprimoramento do aplicativo,
  • teste funcional em bancos de teste.

Não é bom conectar alguém diretamente a um banco de dados industrial, mas você precisa trabalhar de alguma forma e fornecer a todos que precisam dele a estrutura de dados industriais e o volume de dados industriais a oportunidade de trabalhar. Mais importante, com um "perfil" industrial de dados. Dado que os dados produtivos geralmente contêm informações confidenciais, incluindo dados pessoais, transferi-los para a área de teste ou entregá-los aos desenvolvedores geralmente é uma tarefa impossível.

Você pode escrever um artigo detalhado separado sobre isso, mas, se brevemente, a opção de mascaramento de dados oculta ou modifica dados que não podem ser movidos para fora da área controlada do circuito industrial e permite transferir dados já mascarados para ambientes de desenvolvimento e teste.

Mecanismo de mascaramento (mecanismo de mascaramento) exclui ou modifica as informações protegidas e deixa um análogo dos dados, permitindo que desenvolvedores e testadores trabalhem com dados semelhantes. O mascaramento de dados é implementado pelo componente Delphix Masking Engine.

Por que não usar o IBM Optim / Oracle Masking / análogos como mascaramento?


Obviamente, existem outras soluções que possuem funcionalidade semelhante. Por exemplo, Oracle Masking, Informatica Masking, etc. Além disso, como no próprio Delphix, você pode escrever seus próprios scripts de máscara. No entanto, uma desvantagem comum significativa é a necessidade de adquirir um grande número de licenças / softwares adicionais mais caros.

  • Para Oracle, é o licenciamento de cada servidor com mascaramento (esta é a licença do Masking and Database Gateway para bancos de dados não Oracle).
  • A Informatica possui PowerCenter ETL, Designer e Lifecycle Management. E se você deseja conectá-lo à SAP, ainda precisará pagar por isso.
  • Scripts - com scripts tudo depende da sua fé em si mesmo e da confiança em você da sua liderança.

Para não sobrecarregar o texto, deixaremos uma ilustração mais detalhada dos princípios da função de mascaramento em um artigo separado.

Se você puder dar exemplos de outras ferramentas de máscara conhecidas por você que você usou na prática e que resolvem o problema, seria ótimo ver algumas palavras suas sobre eles nos comentários.

Eu ainda quero escrever meu script de mascaramento ...


É possível usar um auto-escrito, mas é preciso entender que, com um alto grau de probabilidade, a execução de scripts em um banco de dados de teste no valor de, digamos, 5 TB, levará muito tempo. E a escrita dos algoritmos e scripts em si pode durar ainda mais.

Quando é necessário resolver rápida e garantidamente um novo problema e deve funcionar "como um relógio", mascarar "pronto para uso" para o Delphix funcionará. O script, provavelmente, terá que ser "finalizado" para uma nova tarefa (estrutura de dados, tipo de banco de dados, etc.).

O que o Delphix Masking Engine pronto para o uso pode fazer
  • Pesquisa segura - substitui os dados originais, por exemplo, "Vasya" -> "Petya". Nesse algoritmo, colisões podem ocorrer quando os dados substituídos são os mesmos.
  • Mapeamento segmentado - divide o valor em vários segmentos e substitui esses segmentos individualmente. Por exemplo, o número NM831026-04 pode ser dividido em três partes, das quais as letras NM não mascaram, o valor após a transformação é NM390572-50. Isso vale para mascarar os valores das colunas usadas como chave primária ou para colunas exclusivas.
  • Algoritmo de mapeamento - para sua operação, é necessário indicar a correspondência exata dos valores originais e substituídos. Nesse caso, não haverá colisões, porque o valor original é substituído diretamente pelo valor específico. Como exemplo, o nome "Alexey" será sempre substituído por "Nikita".
  • Algoritmo de pesquisa binária - substitui o valor de clob / blob em colunas, etc. O Delphix não sabe como substituir o valor em figuras / textos, mas você pode escolher uma imagem ou texto substituto.
  • O algoritmo de tokenização é um tipo de criptografia de dados na qual os dados de entrada são convertidos em tokens com atributos semelhantes (comprimento da string, valor digital ou de texto), mas eles não têm nenhum significado. Usando algoritmos, você pode criptografar / descriptografar esses dados. Por exemplo, você pode mascarar dados e enviá-los ao fornecedor do produto. Ele os analisará e marcará os dados incorretos (por exemplo, preenchimento incorreto) e depois os enviará de volta.
  • O algoritmo mínimo máximo é um algoritmo que calcula a média de todos os valores em uma coluna para ocultar os valores máximo e mínimo (por exemplo, salários).
  • Algoritmo de limpeza de dados - não mascara, mas padroniza os dados. Por exemplo, você pode definir regras pelas quais os valores de Ru, Rus, R são convertidos em um único formato de RU.

Ok Eu já percebi que precisamos do Delphix. Introduzir por um longo tempo? Como é o processo?


A implementação começa com um projeto piloto. Primeiro, é realizada uma entrevista com o cliente e, aqui, para uma interação completa, precisaremos de apenas um engenheiro responsável (DBA ou administrador do sistema). Temos um questionário especializado que ajuda a descobrir as características do ambiente de computação do cliente.

Também precisaremos de informações sobre sistemas que podem ser candidatos à virtualização (bancos de dados separados ou sistemas SAP / Dynamics inteiros). Juntos, determinamos os critérios de teste, os critérios de sucesso e o tempo do projeto piloto. Além disso, enquanto o cliente está preparando a infraestrutura para o piloto, recebemos uma licença de teste do fornecedor.

Nossos engenheiros acessam o site do cliente, configuram o mecanismo e conectam o banco de dados de origem a ele. Dependendo das regras internas do cliente em relação à segurança da informação, qual fonte está conectada e a disponibilidade de sua equipe técnica, a implantação e configuração inicial podem ser realizadas não por nós, mas pela equipe de TI do cliente, sob nossa supervisão ou de acordo com as instruções do fornecedor nosso conselho.

Além disso, se o cliente deseja aumentar sua equipe (e geralmente existe esse desejo), realizamos treinamento para administradores de infraestrutura e DBA. Para fins de treinamento, implantamos um ou mais bancos de dados virtuais com eles e executamos todos os scripts.

Normalmente, o piloto dura de 2 a 4 semanas, se os processos internos do cliente puderem preparar rapidamente a infraestrutura necessária. Como regra, durante esse tempo em sistemas reais, é possível testar todas as funcionalidades do software e avaliar a extensão dos benefícios resultantes.

Com base nos resultados do teste, é compilado um relatório no qual todos os processos-piloto são analisados, os números “como ele se tornou” são dados e uma conclusão é dada sobre a conveniência de um relacionamento de longo prazo. Se a administração tomar uma decisão positiva, o processo de “transição para trilhos industriais” é uma questão de várias horas, como durante o processo de pilotagem, as principais dificuldades são geralmente superadas e o "retorno" e o "efeito do projeto" começam literalmente no dia seguinte.

Existem pontos negativos? O que não gosta?


Francamente, o produto não é barato. Ele não funcionará em torrents e, para usar a solução, você deverá pagar uma taxa anual ao fornecedor. Esquema de licenciamento - para a quantidade de dados virtualizados.

O benefício máximo do uso do Delphix é alcançado quando você precisa criar um grande número de cópias de grandes volumes de diferentes fontes de banco de dados (o número de fontes de banco de dados> = 1), por exemplo, para criar um monte de suportes típicos para analistas, um serviço de teste, um serviço de suporte para detectar defeitos com produção, etc., onde você precisa de cópias de uma base de combate com dados mascarados ou cópias de uma base de teste muito grande e rapidamente e por um período relativamente curto de tempo (criou um clone, resolveu um problema, matou um clone, tornou-o novo e atualizado). etc.)

Se este for o seu caso, considere o TCO (podemos ajudar a fazê-lo corretamente) e decida se ele combina com você ou não. Caso contrário, é realmente uma ferramenta in-box muito interessante (isso é importante!) Que resolve tarefas que são bastante compreensíveis do ponto de vista técnico.


Concluindo, gostaríamos de realizar uma pequena pesquisa para entender como essa ferramenta pode ser útil para você.

Source: https://habr.com/ru/post/pt416813/


All Articles