Escolhendo um armazenamento de dados analíticos no AzureChoosing an analytical data store in 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.In a big data architecture, there is often a need for an analytical data store that serves processed data in a structured format that can be queried using analytical tools. 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.Analytical data stores that support querying of both hot-path and cold-path data are collectively referred to as the serving layer, or data serving storage.

A camada de serviço lida com os dados processados dos caminhos quente e frio.The serving layer deals with processed data from both the hot path and cold path. 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.In the lambda architecture, the serving layer is subdivided into a speed serving layer, which stores data that has been processed incrementally, and a batch serving layer, which contains the batch-processed output. A camada de serviço exige suporte forte para leituras aleatórias com baixa latência.The serving layer requires strong support for random reads with low latency. 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.Data storage for the speed layer should also support random writes, because batch loading data into this store would introduce undesired delays. 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.On the other hand, data storage for the batch layer does not need to support random writes, but batch writes instead.

Não há uma única opção de gerenciamento de dados que seja a melhor para todas as tarefas de armazenamento de dados.There is no single best data management choice for all data storage tasks. Soluções de gerenciamento de dados diferentes são otimizadas para tarefas diferentes.Different data management solutions are optimized for different tasks. 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.Most real-world cloud apps and big data processes have a variety of data storage requirements and often use a combination of data storage solutions.

Quais são as opções disponíveis ao escolher um armazenamento de dados analíticos?What are your options when choosing an analytical data store?

Há várias opções de armazenamento de serviço de dados no Azure, dependendo de suas necessidades:There are several options for data serving storage in Azure, depending on your needs:

Essas opções fornecem vários modelos de banco de dados que são otimizados para diferentes tipos de tarefas:These options provide various database models that are optimized for different types of tasks:

  • Bancos de dados de chave/valor armazenam um único objeto serializado para cada valor de chave.Key/value databases hold a single serialized object for each key value. 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.They're good for storing large volumes of data where you want to get one item for a given key value and you don't have to query based on other properties of the item.
  • Bancos de dados de documentos são bancos de dados de chave/valor nos quais os valores são documentos.Document databases are key/value databases in which the values are documents. Um "documento" neste contexto é uma coleção de campos nomeados e valores.A "document" in this context is a collection of named fields and values. Normalmente, o banco de dados armazena os dados em um formato como XML, YAML, JSON ou BSON, mas é possível usar um texto sem formatação.The database typically stores the data in a format such as XML, YAML, JSON, or BSON, but may use plain text. Os bancos de dados de documentos podem consultar em campos não chave e definir índices secundários para tornar a consulta mais eficiente.Document databases can query on non-key fields and define secondary indexes to make querying more efficient. 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.This makes a document database more suitable for applications that need to retrieve data based on criteria more complex than the value of the document key. Por exemplo, você pode consultar em campos como ID do produto (product ID), ID do cliente ou nome do cliente.For example, you could query on fields such as product ID, customer ID, or customer name.
  • Os bancos de dados de família de colunas são armazenamentos de dados de chave/valor que estruturam o armazenamento de dados em coleções de colunas relacionadas chamadas famílias de colunas.Column-family databases are key/value data stores that structure data storage into collections of related columns called column families. Por exemplo, um banco de dados de censo pode ter um grupo de colunas para o nome de uma pessoa (nome, sobrenome), um grupo para o endereço da pessoa e um grupo para as informações de perfil da pessoa (data de nascimento, gênero).For example, a census database might have one group of columns for a person's name (first, middle, last), one group for the person's address, and one group for the person's profile information (data of birth, gender). O banco de dados pode armazenar cada família de colunas em uma partição separada, enquanto mantém todos os dados de uma pessoa relacionados à mesma chave.The database can store each column family in a separate partition, while keeping all of the data for one person related to the same key. Um aplicativo pode ler uma única família de colunas sem ler todos os dados de uma entidade.An application can read a single column family without reading through all of the data for an entity.
  • Os bancos de dados de gráficos armazenam informações como uma coleção de objetos e relações.Graph databases store information as a collection of objects and relationships. 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.A graph database can efficiently perform queries that traverse the network of objects and the relationships between them. 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".For example, the objects might be employees in a human resources database, and you might want to facilitate queries such as "find all employees who directly or indirectly work for Scott."

Principais critérios de seleçãoKey selection criteria

Para restringir as opções, comece respondendo a estas perguntas:To narrow the choices, start by answering these questions:

  • Você precisa de um armazenamento de serviço que pode atuar como um caminho quente para os dados?Do you need serving storage that can serve as a hot path for your data? Em caso afirmativo, restrinja as opções àquelas que são otimizadas para uma camada de serviço de velocidade.If yes, narrow your options to those that are optimized for a speed serving layer.

  • 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?Do you need massively parallel processing (MPP) support, where queries are automatically distributed across several processes or nodes? Em caso afirmativo, selecione uma opção que dá suporte à expansão da consulta.If yes, select an option that supports query scale out.

  • Você prefere usar um armazenamento de dados relacionais?Do you prefer to use a relational data store? Nesse caso, restrinja as opções àquelas com um modelo de banco de dados relacional.If so, narrow your options to those with a relational database model. 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.However, note that some non-relational stores support SQL syntax for querying, and tools such as PolyBase can be used to query non-relational data stores.

Matriz de funcionalidadesCapability matrix

As tabelas a seguir resumem as principais diferenças em funcionalidades.The following tables summarize the key differences in capabilities.

Funcionalidades geraisGeneral capabilities

RecursoCapability Banco de Dados SQLSQL Database Sinapse-azulAzure Synapse HBase/Phoenix no HDInsightHBase/Phoenix on HDInsight Hive LLAP no HDInsightHive LLAP on HDInsight Azure Analysis ServicesAzure Analysis Services Cosmos DBCosmos DB
É um serviço gerenciadoIs managed service SimYes SimYes Sim 1Yes 1 Sim 1Yes 1 SimYes SimYes
Modelo de banco de dados primárioPrimary database model Relacional (formato de coluna ao usar índices columnstore)Relational (columnar format when using columnstore indexes) Tabelas relacionais com armazenamento de colunaRelational tables with columnar storage Repositório de coluna grandeWide column store Hive/em memóriaHive/In-Memory Modelos de tabela/semântica MOLAPTabular/MOLAP semantic models Repositório de documentos, gráfico, repositório de chave-valor, repositório de coluna grandeDocument store, graph, key-value store, wide column store
Suporte à linguagem SQLSQL language support SimYes SimYes Sim (usando o driver JDBC Phoenix)Yes (using Phoenix JDBC driver) SimYes NãoNo SimYes
Otimizado para a camada de serviço de velocidadeOptimized for speed serving layer Sim 2Yes 2 NãoNo SimYes SimYes NãoNo SimYes

[1] Com configuração manual e dimensionamento.[1] With manual configuration and scaling.

[2] Usando tabelas com otimização de memória e hash ou índices não clusterizados.[2] Using memory-optimized tables and hash or nonclustered indexes.

Funcionalidades de escalabilidadeScalability capabilities

RecursoCapability Banco de Dados SQLSQL Database Sinapse-azulAzure Synapse HBase/Phoenix no HDInsightHBase/Phoenix on HDInsight Hive LLAP no HDInsightHive LLAP on HDInsight Azure Analysis ServicesAzure Analysis Services Cosmos DBCosmos DB
Servidores regionais redundantes para alta disponibilidadeRedundant regional servers for high availability SimYes SimYes SimYes NãoNo NãoNo SimYes
Dá suporte à expansão da consultaSupports query scale out NãoNo SimYes SimYes SimYes SimYes SimYes
Escalabilidade dinâmica (escalar verticalmente)Dynamic scalability (scale up) SimYes SimYes NãoNo NãoNo SimYes SimYes
Dá suporte ao cache em memória de dadosSupports in-memory caching of data SimYes SimYes NãoNo SimYes SimYes NãoNo

Funcionalidades de segurançaSecurity capabilities

RecursoCapability Banco de Dados SQLSQL Database Sinapse-azulAzure Synapse HBase/Phoenix no HDInsightHBase/Phoenix on HDInsight Hive LLAP no HDInsightHive LLAP on HDInsight Azure Analysis ServicesAzure Analysis Services Cosmos DBCosmos DB
AutenticaçãoAuthentication SQL/Azure AD (Azure Active Directory)SQL / Azure Active Directory (Azure AD) SQL/Azure ADSQL / Azure AD local/Azure AD 1local / Azure AD 1 local/Azure AD 1local / Azure AD 1 AD do AzureAzure AD usuários do banco de dados/Azure AD por meio do Controle de Acesso (IAM)database users / Azure AD via access control (IAM)
Criptografia de dados em repousoData encryption at rest Sim 2Yes 2 Sim 2Yes 2 Sim 1Yes 1 Sim 1Yes 1 SimYes SimYes
Segurança em nível de linhaRow-level security SimYes Sim 3Yes 3 Sim 1Yes 1 Sim 1Yes 1 Sim (por meio da segurança no nível do objeto no modelo)Yes (through object-level security in model) NãoNo
Dá suporte a firewallsSupports firewalls SimYes SimYes Sim 4Yes 4 Sim 4Yes 4 SimYes SimYes
Mascaramento de dados dinâmicosDynamic data masking SimYes SimYes Sim 1Yes 1 SimYes NãoNo NãoNo

[1] Exige o uso de um cluster HDInsight ingressado no domínio.[1] Requires using a domain-joined HDInsight cluster.

[2] Exige o uso de TDE (Transparent Data Encryption) para criptografar e descriptografar os dados em repouso.[2] Requires using transparent data encryption (TDE) to encrypt and decrypt your data at rest.

[3] Apenas filtros predicados.[3] Filter predicates only. Consulte a segurança do nível de linhaSee Row-Level Security

[4] Quando usado dentro de uma Rede Virtual Azure.[4] When used within an Azure Virtual Network. Consulte Estender o Azure HDInsight usando uma Rede Virtual do Azure.See Extend Azure HDInsight using an Azure Virtual Network.