Escolher um armazenamento de dados analíticos no Azure
Em uma arquitetura de Big Data, geralmente, há a necessidade de um armazenamento de dados analíticos que forneça dados processados em um formato estruturado que pode ser consultado com ferramentas analíticas. Os armazenamentos de dados analíticos que dão suporte à consulta de dados de caminho quente e frio são chamados em conjunto de camada de serviço ou armazenamento de serviço de dados.
A camada de serviço lida com os dados processados dos caminhos quente e frio. Na arquitetura lambda, a camada de serviço é subdividida em uma camada de serviço de velocidade, que armazena os dados que foram processados de forma incremental e uma camada de serviço de lote, que contém a saída processada em lotes. A camada de serviço exige suporte forte para leituras aleatórias com baixa latência. O armazenamento de dados para a camada de velocidade também deve dar suporte a gravações aleatórias, porque o carregamento em lotes dos dados nesse repositório introduzirá atrasos indesejados. Por outro lado, o armazenamento de dados da camada de lote não precisa dar suporte a gravações aleatórias, mas gravações em lotes.
Não há uma única opção de gerenciamento de dados que seja a melhor para todas as tarefas de armazenamento de dados. Soluções de gerenciamento de dados diferentes são otimizadas para tarefas diferentes. A maioria dos aplicativos de nuvem do mundo real e processos de Big Data tem uma variedade de requisitos de armazenamento de dados e geralmente usa uma combinação de soluções de armazenamento de dados.
Quais são as opções disponíveis ao escolher um armazenamento de dados analíticos?
Há várias opções de armazenamento de serviço de dados no Azure, dependendo de suas necessidades:
- Azure Synapse Analytics
- Pools do Spark do Azure Synapse
- Azure Databricks
- Azure Data Explorer
- Banco de Dados SQL do Azure
- SQL Server em VM do Azure
- HBase/Phoenix no HDInsight
- Hive LLAP no HDInsight
- Azure Analysis Services
- Azure Cosmos DB
Essas opções fornecem vários modelos de banco de dados que são otimizados para diferentes tipos de tarefas:
- Bancos de dados de chave/valor armazenam um único objeto serializado para cada valor de chave. Eles são bons para armazenar grandes volumes de dados, quando você deseja obter um item para determinado valor de chave e não precisa consultar com base em outras propriedades do item.
- Bancos de dados de documentos são bancos de dados de chave/valor nos quais os valores são documentos. Um "documento" neste contexto é uma coleção de campos nomeados e valores. Normalmente, o banco de dados armazena os dados em um formato como XML, YAML, JSON ou BSON (JSON binário), mas é possível usar um texto sem formatação. Os bancos de dados de documentos podem consultar em campos não chave e definir índices secundários para tornar a consulta mais eficiente. Isso torna um banco de dados de documentos mais adequado para aplicativos que precisam recuperar dados com base em critérios mais complexos do que o valor da chave do documento. Por exemplo, você pode consultar em campos como ID do produto (product ID), ID do cliente ou nome do cliente.
- Os bancos de dados do Repositório de colunas são repositórios de dados chave/valor que armazenam as colunas separadamente no disco. Um banco de dados do repositório de colunas é um tipo de banco de dados do repositório de colunas que armazena famílias de colunas, não apenas colunas simples. Por exemplo, um banco de dados censitário pode ter uma família de colunas para o nome de uma pessoa (primeiro, meio, último), uma família para o endereço da pessoa e uma família para as informações de perfil da pessoa (data de nascimento, sexo). O banco de dados pode armazenar as famílias de colunas em uma partição separada, mantendo todos os dados de uma pessoa relacionados à mesma chave. Um aplicativo pode ler uma única família de colunas sem ler todos os dados de uma entidade.
- Os bancos de dados de gráficos armazenam informações como uma coleção de objetos e relações. Um banco de dados de gráficos pode executar com eficiência consultas que atravessam a rede de objetos e as relações entre eles. Por exemplo, os objetos podem ser funcionários em um banco de dados de recursos humanos e talvez você deseje facilitar consultas como "encontrar todos os funcionários que trabalham direta ou indiretamente para Scott".
- Os bancos de dados de séries temporais e telemetria são uma coleção de objetos somente de anexação. Os bancos de dados de telemetria indexam dados com eficiência em uma variedade de armazenamentos de colunas e estruturas na memória, o que os torna ideais para armazenar e analisar grandes quantidades de dados de telemetria e séries temporais.
Principais critérios de seleção
Para restringir as opções, comece respondendo a estas perguntas:
Você precisa de um armazenamento de serviço que pode atuar como um caminho quente para os dados? Em caso afirmativo, restrinja as opções àquelas que são otimizadas para uma camada de serviço de velocidade.
Você precisa de suporte de MPP (Processamento Paralelo Maciço), em que as consultas são distribuídas automaticamente entre vários processos ou nós? Em caso afirmativo, selecione uma opção que dê suporte à expansão da consulta.
Você prefere usar um armazenamento de dados relacionais? Nesse caso, restrinja as opções àquelas com um modelo de banco de dados relacional. No entanto, observe que alguns armazenamentos não relacionais dão suporte à sintaxe SQL para consulta e ferramentas como o PolyBase podem ser usadas para consultar armazenamentos de dados não relacionais.
Você coleta dados de série temporal? Você usa dados somente de anexação?
Matriz de funcionalidades
As tabelas a seguir resumem as principais diferenças em funcionalidades.
Funcionalidades gerais
Recurso | Banco de Dados SQL | Pool de SQL do Azure Synapse | Pool do Spark no Azure Synapse | Azure Data Explorer | HBase/Phoenix no HDInsight | Hive LLAP no HDInsight | Azure Analysis Services | Azure Cosmos DB |
---|---|---|---|---|---|---|---|---|
É um serviço gerenciado | Sim | Sim | Sim | Sim | Sim 1 | Sim 1 | Sim | Sim |
Modelo de banco de dados primário | Relacional (formato de coluna ao usar os índices columnstore) | Tabelas relacionais com o armazenamento de colunas | Repositório de coluna grande | Relacional (armazenamento de colunas), telemetria e armazenamento de série temporal | Repositório de coluna grande | Hive/em memória | Modelos semânticos de tabela | Repositório de documentos, gráfico, repositório de chave-valor, repositório de coluna grande |
Suporte à linguagem SQL | Sim | Sim | Sim | Sim | Sim (usando o driver JDBC Phoenix) | Sim | Não | Sim |
Otimizado para a camada de serviço de velocidade | Sim 2 | Sim 3 | Sim | Sim | Sim | Sim | Não | Sim |
[1] Com configuração manual e dimensionamento.
[2] Usando tabelas com otimização de memória e hash ou índices não clusterizados.
[3] Com suporte como uma saída do Azure Stream Analytics.
Funcionalidades de escalabilidade
Recurso | Banco de Dados SQL | Pool de SQL do Azure Synapse | Pool do Spark no Azure Synapse | Azure Data Explorer | HBase/Phoenix no HDInsight | Hive LLAP no HDInsight | Azure Analysis Services | Azure Cosmos DB |
---|---|---|---|---|---|---|---|---|
Servidores regionais redundantes para alta disponibilidade | Sim | Não | Não | Sim | Sim | Não | Sim | Sim |
Dá suporte à expansão da consulta | Não | Sim | Sim | Sim | Sim | Sim | Sim | Sim |
Escalabilidade dinâmica (escalar verticalmente) | Sim | Sim | Sim | Sim | Não | Não | Sim | Sim |
Dá suporte ao cache em memória de dados | Sim | Sim | Sim | Sim | Não | Sim | Sim | Não |
Funcionalidades de segurança
Recurso | Banco de Dados SQL | Azure Synapse | Azure Data Explorer | HBase/Phoenix no HDInsight | Hive LLAP no HDInsight | Azure Analysis Services | Azure Cosmos DB |
---|---|---|---|---|---|---|---|
Autenticação | SQL/ID do Microsoft Entra | SQL/ID do Microsoft Entra | Microsoft Entra ID | local/ID do Microsoft Entra 1 | local/ID do Microsoft Entra 1 | Microsoft Entra ID | usuários de banco de dados/Microsoft Entra ID via controle de acesso (IAM (gerenciamento de identidade e acesso)) |
Criptografia de dados em repouso | Sim 2 | Sim 2 | Sim | Sim 1 | Sim 1 | Sim | Sim |
Segurança em nível de linha | Sim | Sim 3 | Sim | Sim 1 | Sim 1 | Sim | Não |
Dá suporte a firewalls | Sim | Sim | Sim | Sim 4 | Sim 4 | Sim | Sim |
Mascaramento de dados dinâmicos | Sim | Sim | Sim | Sim 1 | Sim | Não | Não |
[1] Exige o uso de um cluster HDInsight ingressado no domínio.
[2] Exige o uso de Transparent Data Encryption para criptografar e descriptografar os dados inativos.
[3] Somente predicados de filtro. Confira Segurança em Nível de Linha
[4] Quando usado em uma Rede Virtual do Azure. Para obter mais informações, consulte Estender o Azure HDInsight usando uma Rede Virtual do Azure.
Colaboradores
Esse artigo é mantido pela Microsoft. Ele foi originalmente escrito pelos colaboradores a seguir.
Autor principal:
- Zoiner Tejada | CEO e arquiteto
Próximas etapas
- Analisar s dados em um data warehouse relacional
- Criar um banco de dados individual – Banco de Dados SQL do Azure
- Crie um workspace do Azure Databricks
- Criar cluster do Apache Spark no Azure HDInsight usando o portal do Azure
- Criando um espaço de trabalho do Synapse
- Explorar os serviços de dados do Azure para análise moderna
- Explorar os serviços de banco de dados e análise do Azure
- Consultar o Azure Cosmos DB usando a API for NoSQL