Compreender modelos de arquivo de dados

Os sistemas empresariais modernos gerem volumes cada vez maiores de dados heterogéneos. Esta heterogeneidade significa que ter apenas um arquivo de dados não é a melhor abordagem. Em vez disso, geralmente é melhor armazenar diferentes tipos de dados em diferentes armazenamentos de dados, cada um focado em uma carga de trabalho ou padrão de uso específico. Para descrever soluções que utilizam uma combinação de tecnologias de arquivo de dados utiliza-se o termo persistência poliglota. Portanto, é importante entender os principais modelos de armazenamento e suas compensações.

Selecionar o arquivo de dados adequado para os seus requisitos é uma decisão de design fundamental. Existem literalmente centenas de implementações por onde escolher entre as bases de dados NoSQL e SQL. Os arquivos de dados são, frequentemente, categorizados pela forma como estruturam os dados e os tipos de operações que suportam. Este artigo descreve vários dos modelos de armazenamento mais comuns. Tenha em atenção que uma determinada tecnologia de arquivo de dados pode suportar vários modelos de armazenamento. Por exemplo, um sistema de gestão de bases de dados relacionais (RDBMS) pode também suportar o armazenamento de chaves/valores ou gráficos. Na verdade, há uma tendência geral para o chamado suporte multimodelo , onde um único sistema de banco de dados suporta vários modelos. Contudo, não deixa de ser importante compreender os vários modelos a um nível mais alto.

Nem todos os arquivos de dados de uma determinada categoria proporcionam o mesmo conjunto de funcionalidades. A maioria dos arquivos de dados proporciona funcionalidades do lado do servidor para consultar e processar dados. Por vezes, essas funcionalidades estão incorporadas no motor do armazenamento de dados. Noutros casos, as capacidades de armazenamento e processamento de dados são separadas e poderão existir várias opções para processamento e análise. Os arquivos de dados também suportam interfaces de gestão e programáticas diferentes.

Geralmente, deve começar por considerar que modelo de armazenamento é mais adequado para os seus requisitos. Depois, determine um determinado arquivo de dados dentro dessa categoria, com base em fatores como o conjunto de funcionalidades, o custo e a facilidade de gestão.

Nota

Saiba mais sobre como identificar e revisar seus requisitos de serviço de dados para adoção de nuvem no Microsoft Cloud Adoption Framework para Azure. Da mesma forma, você também pode aprender sobre como selecionar ferramentas e serviços de armazenamento.

Sistemas de gestão de bases de dados relacionais

As bases de dados relacionais organizam os dados como uma série de tabelas de duas dimensões, com linhas e colunas. A maioria dos fornecedores fornece um dialeto da linguagem de consulta estruturada (SQL) para recuperar e gerenciar dados. Normalmente, as RDBMS implementam um mecanismo consistente de forma transacional que está em conformidade com o modelo ACID (Atomicidade, Consistência, Isolamento, Durabilidade) para atualizar as informações.

Regar geral, os RDBMS suportam um modelo de esquema em escrita, em que a estrutura dos dados é definida antecipadamente e todas as operações de leitura ou escrita têm de utilizar esse esquema.

Esse modelo é muito útil quando garantias fortes de consistência são importantes — onde todas as alterações são atômicas e as transações sempre deixam os dados em um estado consistente. No entanto, um RDBMS geralmente não pode ser dimensionado horizontalmente sem fragmentar os dados de alguma forma. Além disso, os dados em um RDBMS devem ser normalizados, o que não é apropriado para todos os conjuntos de dados.

Serviços do Azure

Carga de trabalho

  • Os registos são frequentemente criados e atualizados.
  • É necessário concluir várias operações numa única transação.
  • As relações são impostas com restrições de base de dados.
  • Os índices são utilizados para otimizar o desempenho das consultas.

Tipo de dados

  • Os dados são altamente normalizados.
  • Os esquemas das bases de dados são necessários e impostos.
  • Relações de muitos para muitos entre entidades de dados na base de dados.
  • As restrições são definidas no esquema e impostas em quaisquer dados na base de dados.
  • Os dados precisam de uma integridade elevada. Os índices e as relações têm de ser mantidos com exatidão.
  • Os dados precisam de uma consistência forte. As transações funcionam de uma forma que garante que todos os dados são 100% consistentes para todos os utilizadores e processos.
  • O tamanho das entradas de dados individuais é pequeno a médio.

Exemplos

  • Gestão de inventário
  • Gestão de encomendas
  • Base de dados de relatórios
  • Contabilidade

Arquivos de chave/valor

Um armazenamento de chave/valor associa cada valor de dados a uma chave exclusiva. A maioria dos arquivos de chaves/valores suportam apenas operações de consulta simples, inserção e eliminação. Para modificar um valor (parcial ou totalmente), as aplicações têm de substituir os dados atuais pelo valor inteiro. Na maioria das implementações, ler ou escrever um valor único é uma operação atómica.

Um aplicativo pode armazenar dados arbitrários como um conjunto de valores. Qualquer informação de esquema deve ser fornecida pelo aplicativo. O armazenamento de chave/valor simplesmente recupera ou armazena o valor por chave.

Diagram of a key-value store

Os armazenamentos de chave/valor são altamente otimizados para aplicativos que executam pesquisas simples, mas são menos adequados se você precisar consultar dados em diferentes armazenamentos de chave/valor. Os armazenamentos de chave/valor também não são otimizados para consulta por valor.

Um arquivo de chaves/valores individual pode ser extremamente dimensionável, pois o arquivo de dados pode distribuir os dados facilmente para vários nós em máquinas separadas.

Serviços do Azure

Carga de trabalho

  • Os dados são acessados usando uma única chave, como um dicionário.
  • Não são precisas adesões, bloqueios ou uniões.
  • Não são utilizados mecanismos de agregação.
  • Geralmente, os índices secundários não são utilizados.

Tipo de dados

  • Cada chave está associada a um único valor.
  • Não há nenhuma imposição de esquema.
  • Não existem relações entre as entidades.

Exemplos

  • Colocação de dados em cache
  • Gestão de sessões
  • Preferência do utilizador e gestão de perfil
  • Recomendação de produtos e entrega de um anúncio

Bases de dados de documentos

Um banco de dados de documentos armazena uma coleção de documentos, onde cada documento consiste em campos nomeados e dados. Os dados podem ser valores simples ou elementos complexos, como listas e coleções filhas. Os documentos são recuperados por chaves exclusivas.

Normalmente, um documento contém os dados de uma única entidade, como um cliente ou um pedido. Um documento pode conter informações que seriam espalhadas por várias tabelas relacionais em um RDBMS. Os documentos não precisam ter a mesma estrutura. As aplicações podem armazenar diferentes dados em documentos à medida que os requisitos empresariais sofrem alterações.

Diagram of a document store

Serviço do Azure

Carga de trabalho

  • As operações de inserção e de atualização são comuns.
  • Sem erro de impedância de objeto relacional. Os documentos podem corresponder melhor às estruturas dos objetos utilizados no código da aplicação.
  • Os documentos individuais são obtidos e escritos como um único bloco.
  • Os dados precisam de um índice em vários campos.

Tipo de dados

  • Os dados podem ser geridos de uma forma desnormalizada.
  • O tamanho dos dados de documentos individuais é relativamente pequeno.
  • Cada tipo de documento pode utilizar o seu próprio esquema.
  • Os documentos podem incluir campos opcionais.
  • Os dados dos documentos são semiestruturados, o que significa que os tipos de dados de cada campo não estão estritamente definidos.

Exemplos

  • Catálogo de produtos
  • Content management (Gestão de conteúdos)
  • Gestão de inventário

Bases de dados de grafos

As bases de dados de gráficos armazenam dois tipos de informações, nós e limites. As bordas especificam relações entre nós. Os nós e as bordas podem ter propriedades que fornecem informações sobre esse nó ou borda, semelhantes às colunas de uma tabela. Os limites também podem ter uma direção, a qual indica a natureza da relação.

Os bancos de dados gráficos podem executar consultas de forma eficiente na rede de nós e bordas e analisar as relações entre entidades. O diagrama a seguir mostra o banco de dados de pessoal de uma organização estruturado como um gráfico. As entidades são funcionários e departamentos, e as bordas indicam as relações de relatório e os departamentos em que os funcionários trabalham.

Diagram of a document database

Essa estrutura facilita a realização de consultas como "Encontrar todos os funcionários que se reportam direta ou indiretamente a Sarah" ou "Quem trabalha no mesmo departamento que John?" Para gráficos grandes com muitas entidades e relacionamentos, você pode executar análises muito complexas muito rapidamente. Muitas bases de dados de gráficos disponibilizam uma linguagem de consultas que pode utilizar para atravessar uma rede de relações de forma eficiente.

Serviços do Azure

Carga de trabalho

  • Relações complexas entre itens de dados envolvendo muitos saltos entre itens de dados relacionados.
  • A relação entre os itens de dados é dinâmica e altera ao longo do tempo.
  • As relações entre os objetos são de primeira classe, não precisarem de chaves externas nem de adesões para atravessar.

Tipo de dados

  • Nós e relacionamentos.
  • Os nós são semelhantes às linhas de tabela ou aos documentos JSON.
  • As relações são tão importantes quanto os nós e são expostas diretamente na linguagem de consulta.
  • Os objetos compostos, tal como uma pessoa com vários números de telefone, tendem a ser dividido em nós separados, mais pequenos, combinados com relações transversáveis

Exemplos

  • Organogramas
  • Gráficos de redes sociais
  • Deteção de fraudes
  • Motores de recomendações

Análise de dados

Os arquivos de análise de dados oferecem soluções paralelas massivas para ingerir, armazenar e analisar dados. Os dados são distribuídos em vários servidores para maximizar a escalabilidade. Grandes formatos de arquivo de dados, como arquivos delimitadores (CSV), parquet e ORC são amplamente utilizados na análise de dados. Os dados históricos normalmente são armazenados em armazenamentos de dados, como o armazenamento de blob ou o Azure Data Lake Storage Gen2, que são acessados pelo Azure Synapse, Databricks ou HDInsight como tabelas externas. Um cenário típico usando dados armazenados como arquivos parquet para desempenho é descrito no artigo Usar tabelas externas com Synapse SQL.

Serviços do Azure

Carga de trabalho

  • Análise de dados
  • BI empresarial

Tipo de dados

  • Dados históricos de várias origens.
  • Normalmente desnormalizado num esquema “estrela” ou “floco de neve”, é composto por tabelas de factos e dimensões.
  • Normalmente carregados com novos dados de forma agendada.
  • Muitas vezes, as tabelas de dimensões incluem várias versões do histórico de uma entidade, mencionadas como uma dimensão de variação lenta.

Exemplos

  • Armazém de dados empresarial

Bases de dados de família de colunas

As bases de dados de família de colunas organizam os dados em linhas e colunas. Na sua forma mais simples, estas bases de dados podem parecer muito semelhantes às bases de dados relacionais, pelo menos em termos conceptuais. O verdadeiro poder das bases de dados de família de colunas está na abordagem desnormalizada à estruturação de dados dispersos.

Pode encarar as bases de dados de família de colunas como contendo dados em tabela com linhas e colunas, mas em que as colunas são divididas em grupos chamados famílias de colunas. Cada família de colunas contém um conjunto de colunas que estão logicamente relacionados entre si e são, tipicamente, obtidas ou manipuladas como uma unidade. Outros dados que são acedidos separadamente podem ser armazenados em famílias de colunas separadas. Dentro de uma família de colunas, podem ser adicionadas colunas novas dinamicamente e as linhas podem ser dispersas (ou seja, uma linha não tem de ter um valor para cada coluna).

O diagrama seguinte mostra um exemplo com duas famílias de colunas, Identity e Contact Info. Os dados de uma única entidade têm a mesma chave de linha em cada família de colunas. Esta estrutura, em que as linhas de um determinado objeto numa família de colunas podem variar dinamicamente, constitui uma vantagem importante da abordagem de família de colunas e faz com que esta forma de arquivo de dados seja altamente adequada para o armazenamento de dados estruturados e voláteis.

Diagram of a column-family database

Ao contrário dos arquivos de chaves/valores ou das bases de dados de documentos, a maioria das bases de dados de família de colunas armazenam dados por ordem de chave e não por meio do cálculo de um hash. Muitas implementações permitem-lhe criar índices em colunas específicas numa família de colunas. Com os índices, pode obter dados pelo valor das colunas, em vez de pela chave das linhas.

As operações de leitura e escrita de uma linha são geralmente atómicas com uma família de colunas individual, apesar de algumas implementações disponibilizarem a atomicidade ao nível de toda a linha, abrangendo múltiplas famílias de colunas.

Serviços do Azure

Carga de trabalho

  • A maioria das bases de dados de famílias de colunas realizam operações de escrita extremamente rápidas.
  • As operações de atualização e de eliminação são raras.
  • Criada para fornecer um débito elevado e acesso de baixa latência.
  • Suporta um acesso de consulta fácil para um determinado conjunto de campos num registo muito maior.
  • Escalável em massa.

Tipo de dados

  • Os dados são armazenados em tabelas constituídas por uma coluna de chaves e uma ou mais famílias de colunas.
  • Colunas específicas podem variar de acordo com linhas individuais.
  • As células individuais são acedidas através dos comandos get e put
  • Várias linhas são devolvidas com um comando de análise.

Exemplos

  • Recomendações
  • Personalização
  • Dados de sensores
  • Telemetria
  • Mensagens
  • Análise de redes sociais
  • Análise Web
  • Monitorização da atividade
  • Meteorologia e outros dados de séries temporais

Bases de dados de motores de busca

Uma base de dados de motor de busca permite que as aplicações pesquisem informações mantidas em armazenamentos de dados externos. Um banco de dados de mecanismo de pesquisa pode indexar grandes volumes de dados e fornecer acesso quase em tempo real a esses índices.

Os índices podem ser multidimensionais e suportar pesquisas de texto livre em grandes volumes de dados de texto. A indexação pode ser feita com um modelo de extração, acionado pela base de dados do motor de busca, ou com um modelo de push, iniciado por um código da aplicação externa.

A pesquisa pode ser exata ou difusa. As pesquisas difusas localizam documentos que correspondem a um conjunto de termos e calculam o nível de correspondência entre os mesmos. Alguns motores de busca também suportam análise linguística que pode devolver correspondências com base em sinónimos, expansões de género (por exemplo, corresponder dogs a pets) e de lematização (correspondência de palavras com a mesma raiz).

Serviço do Azure

Carga de trabalho

  • Índices de dados de várias fontes e serviços.
  • As consultas são ad-hoc e podem ser complexas.
  • É preciso uma pesquisa de texto completo.
  • São precisas consultas personalizadas ad-hoc.

Tipo de dados

  • Texto semiestruturado ou não estruturado
  • Texto com referência a dados estruturados

Exemplos

  • Catálogo de produtos
  • Pesquisa do site
  • Registo

Bases de dados de séries temporais

Os dados de séries temporais são um conjunto de valores organizados por tempo. As bases de dados de séries cronológicas normalmente recolhem grandes quantidades de dados em tempo real a partir de um grande número de fontes. As atualizações são raras e eliminações são, muitas vezes, feitas em operações em massa. Apesar de os registos escritos numa base de dados de série temporal serem geralmente pequenos, o número de registos é, muitas vezes, grande, pelo que o tamanho total dos dados pode aumentar rapidamente.

Serviço do Azure

Carga de trabalho

  • Geralmente, os registos são acrescentados sequencialmente por ordem cronológica.
  • Uma proporção esmagadora das operações (95-99%) são escritas.
  • As atualizações são raras.
  • As eliminações ocorrem em massa e são realizadas para blocos ou registos contíguos.
  • Os dados são lidos sequencialmente em ordem de tempo crescente ou decrescente, muitas vezes em paralelo.

Tipo de dados

  • Um carimbo de data/hora é usado como chave primária e mecanismo de classificação.
  • As tags podem definir informações adicionais sobre o tipo, origem e outras informações sobre a entrada.

Exemplos

  • Monitorização e telemetria dos eventos.
  • Sensor ou outros dados de IoT.

Armazenamento de objetos

O armazenamento de objetos está otimizado para armazenar e obter objetos binários grandes (imagens, ficheiros, fluxos de áudio e vídeo, objetos e documentos de dados de aplicações grandes e imagens de discos de máquinas virtuais). Grandes arquivos de dados também são popularmente usados neste modelo, por exemplo, arquivo delimitador (CSV), parquet e ORC. Os repositórios de objetos podem gerenciar quantidades extremamente grandes de dados não estruturados.

Serviço do Azure

Carga de trabalho

  • Identificado por chave.
  • Normalmente, o conteúdo é um ativo, como um delimitador, uma imagem ou um arquivo de vídeo.
  • O conteúdo deve ser durável e externo a qualquer camada de aplicativo.

Tipo de dados

  • O tamanho dos dados é grande.
  • O valor é opaco.

Exemplos

  • Imagens, vídeos, documentos do Office, PDFs
  • HTML estático, JSON, CSS
  • Ficheiros de registo e auditoria
  • Cópias de segurança de bases de dados

Ficheiros partilhados

Por vezes, utilizar ficheiros simples pode ser a forma mais eficaz de armazenar e obter informações. A utilização de partilhas de ficheiros permite aceder aos ficheiros numa rede. Contanto que haja mecanismos de segurança e de controlo de acesso simultâneo adequados, a partilha de dados desta forma pode permitir aos serviços distribuídos oferecer acesso a dados altamente dimensionável para realizar operações básicas e de nível inferior, como pedidos de leitura e escrita simples.

Serviço do Azure

Carga de trabalho

  • Migração de aplicações existentes que interagem com o sistema de ficheiros.
  • Precisa da interface de SMB.

Tipo de dados

  • Ficheiros num conjunto de pastas hierárquico.
  • Acessível com bibliotecas de E/S padrão.

Exemplos

  • Ficheiros legados
  • Conteúdo partilhado acessível entre várias VMs ou instâncias de aplicações

Auxiliado com essa compreensão de diferentes modelos de armazenamento de dados, a próxima etapa é avaliar sua carga de trabalho e aplicativo e decidir qual armazenamento de dados atenderá às suas necessidades específicas. Use a árvore de decisão de armazenamento de dados para ajudar nesse processo.

Próximos passos