Critérios para escolher um arquivo de dadosCriteria for choosing a data store

O Azure suporta muitos tipos de soluções de armazenamento de dados, cada uma com diferentes funcionalidades e capacidades.Azure supports many types of data storage solutions, each providing different features and capabilities. Este artigo descreve os critérios de comparação que deve utilizar ao avaliar um arquivo de dados.This article describes the comparison criteria you should use when evaluating a data store. O objetivo é ajudá-lo a determinar quais os tipos de armazenamento de dados que cumprem os requisitos da sua solução.The goal is to help you determine which data storage types can meet your solution's requirements.

Considerações geraisGeneral Considerations

Para iniciar a comparação, reúna o máximo das informações seguintes no que concerne às suas necessidades de dados.To start your comparison, gather as much of the following information as you can about your data needs. Estas informações vão ajudá-lo a determinar quais os tipos de armazenamento de dados que satisfazem as suas necessidades.This information will help you to determine which data storage types will meet your needs.

Requisitos funcionaisFunctional requirements

  • Formato de dados.Data format. Que tipo de dados pretende armazenar?What type of data are you intending to store? Os tipos comuns incluem dados transacionais, objetos JSON, telemetria, índices de pesquisa ou ficheiros simples.Common types include transactional data, JSON objects, telemetry, search indexes, or flat files.

  • Tamanho dos dados.Data size. Qual o tamanho das entidades que precisa de armazenar?How large are the entities you need to store? Estas entidades precisam de ser mantidas como um único documento ou podem ser divididas em vários documentos, tabelas, coleções, entre outros?Will these entities need to be maintained as a single document, or can they be split across multiple documents, tables, collections, and so forth?

  • Dimensionamento e estrutura.Scale and structure. Qual a quantidade global da capacidade de armazenamento que precisa?What is the overall amount of storage capacity you need? Prevê a criação de partições de dados?Do you anticipate partitioning your data?

  • Relações de dados.Data relationships. Os seus dados vão precisar de suportar relações um-para-muitos ou muitos-para-muitos?Will your data need to support one-to-many or many-to-many relationships? As próprias relações são uma parte importante dos dados?Are relationships themselves an important part of the data? Vai precisar de aderir ou de combinar dados do mesmo conjunto de dados ou de conjuntos de dados externos?Will you need to join or otherwise combine data from within the same dataset, or from external datasets?

  • Modelo de consistência.Consistency model. Até que ponto é importante que as atualizações realizadas num nó sejam apresentadas noutros nós antes de serem realizadas mais alterações?How important is it for updates made in one node to appear in other nodes, before further changes can be made? Pode aceitar a consistência eventual?Can you accept eventual consistency? Precisa de garantias ACID para as transações?Do you need ACID guarantees for transactions?

  • Flexibilidade de esquema.Schema flexibility. Que tipo de esquemas vai aplicar aos dados?What kind of schemas will you apply to your data? Vai utilizar um esquema fixo, uma abordagem de esquema de escrita ou uma abordagem de esquema de leitura?Will you use a fixed schema, a schema-on-write approach, or a schema-on-read approach?

  • Simultaneidade.Concurrency. Que tipo de mecanismo de simultaneidade quer utilizar ao atualizar e sincronizar dados?What kind of concurrency mechanism do you want to use when updating and synchronizing data? A aplicação vai realizar muitas atualizações que podem criar um potencial conflito?Will the application perform many updates that could potentially conflict. Se assim for, poderá precisar de bloqueio de registo e o controlo de simultaneidade pessimista.If so, you may require record locking and pessimistic concurrency control. Em alternativa, suporta controlos de simultaneidade otimistas?Alternatively, can you support optimistic concurrency controls? Se sim, o controlo de simultaneidade baseado num carimbo de data/hora simples é suficiente ou precisa da adição da funcionalidade de controlo de simultaneidade de várias versões?If so, is simple timestamp-based concurrency control enough, or do you need the added functionality of multi-version concurrency control?

  • Movimento de dados.Data movement. A solução tem de executar tarefas ETL para mover dados para outros arquivos ou armazéns de dados?Will your solution need to perform ETL tasks to move data to other stores or data warehouses?

  • Ciclo de vida dos dados.Data lifecycle. São dados Write-Once, Read-Many (uma só leitura, muitas leituras)?Is the data write-once, read-many? Podem ser movidos para um armazenamento esporádico ou amovível?Can it be moved into cool or cold storage?

  • Outras funcionalidades suportadas.Other supported features. Precisa de outras funcionalidades específicas, como validação do esquema, agregação, indexação, pesquisa em texto completo, MapReduce ou outras capacidades de consulta?Do you need any other specific features, such as schema validation, aggregation, indexing, full-text search, MapReduce, or other query capabilities?

Requisitos não funcionaisNon-functional requirements

  • Desempenho e escalabilidade.Performance and scalability. Quais são os seus requisitos de desempenho de dados?What are your data performance requirements? Tem requisitos específicos para as taxas de ingestão de dados e as taxas de processamento de dados?Do you have specific requirements for data ingestion rates and data processing rates? Quais são os tempos de resposta aceitáveis para consulta e agregação de dados uma vez ingeridos?What are the acceptable response times for querying and aggregation of data once ingested? Para que tamanho vai precisar de aumentar verticalmente o arquivo de dados?How large will you need the data store to scale up? A sua carga de trabalho centra-se mais na leitura ou na escrita?Is your workload more read-heavy or write-heavy?

  • Fiabilidade.Reliability. Qual o SLA global que precisa de suportar?What overall SLA do you need to support? Qual o nível de tolerância a falhas que precisa de fornecer aos consumidores de dados?What level of fault-tolerance do you need to provide for data consumers? Qual o tipo de cópia de segurança e capacidades de restauro que precisa?What kind of backup and restore capabilities do you need?

  • Replicação.Replication. Os seus dados têm de ser distribuídos entre várias réplicas ou regiões?Will your data need to be distributed among multiple replicas or regions? Que tipo de capacidades de replicação de dados precisa?What kind of data replication capabilities do you require?

  • Limites.Limits. Os limites de um arquivo de dados específico suportam os seus requisitos em matéria de dimensionamento, de número de ligações e de débito?Will the limits of a particular data store support your requirements for scale, number of connections, and throughput?

Gestão e custoManagement and cost

  • Serviço gerido.Managed service. Sempre que possível, utilize um serviço de dados geridos, exceto se precisar de capacidades específicas que só podem ser encontradas num arquivo de dados alojado na IaaS.When possible, use a managed data service, unless you require specific capabilities that can only be found in an IaaS-hosted data store.

  • Disponibilidade de região.Region availability. Para os serviços geridos, o serviço está disponível em todas as regiões do Azure?For managed services, is the service available in all Azure regions? A sua solução tem de ser alojada em regiões específicas do Azure?Does your solution need to be hosted in certain Azure regions?

  • Portabilidade.Portability. Os seus dados precisam de ser migrados para o local, para datacenters externos ou para outros ambientes de alojamento na cloud?Will your data need to migrated to on-premises, external datacenters, or other cloud hosting environments?

  • Licenciamento.Licensing. Tem preferência pelo tipo de licença: proprietário ou OSS?Do you have a preference of a proprietary versus OSS license type? Existem outras restrições externas referentes ao tipo de licença que pode utilizar?Are there any other external restrictions on what type of license you can use?

  • Custo global.Overall cost. Qual o custo global da utilização do serviço na sua solução?What is the overall cost of using the service within your solution? Quantas instâncias têm de ser executadas para suportar os requisitos de tempo de atividade e débito?How many instances will need to run, to support your uptime and throughput requirements? Considere os custos de operações neste cálculo.Consider operations costs in this calculation. Um motivo para preferir os serviços geridos é o custo operacional reduzido.One reason to prefer managed services is the reduced operational cost.

  • Eficácia de custos.Cost effectiveness. Pode dividir os dados em partições para armazená-los de uma forma mais económica?Can you partition your data, to store it more cost effectively? Por exemplo, pode mover objetos grandes de uma base de dados relacional dispendiosa para um arquivo de objetos?For example, can you move large objects out of an expensive relational database into an object store?

SegurançaSecurity

  • Segurança.Security. Qual o tipo de encriptação de que precisa?What type of encryption do you require? Precisa de encriptação para dados inativos?Do you need encryption at rest? Qual o mecanismo de autenticação que pretende utilizar para se ligar aos dados?What authentication mechanism do you want to use to connect to your data?

  • Auditoria.Auditing. Qual o tipo de registo de auditoria que precisa de gerar?What kind of audit log do you need to generate?

  • Requisitos de rede.Networking requirements. Precisa de restringir ou de gerir o acesso aos dados a partir de outros recursos de rede?Do you need to restrict or otherwise manage access to your data from other network resources? Os dados têm de estar acessíveis apenas a partir do ambiente do Azure?Does data need to be accessible only from inside the Azure environment? Os dados têm de estar acessíveis a partir de sub-redes ou endereços IP específicos?Does the data need to be accessible from specific IP addresses or subnets? Precisam de estar acessíveis a partir de aplicações ou serviços alojados no local ou noutros datacenters externos?Does it need to be accessible from applications or services hosted on-premises or in other external datacenters?

DevOpsDevOps

  • Competências.Skill set. Existem linguagens de programação, sistemas operativos ou outra tecnologia em particular que a sua equipa utilize de uma forma particularmente exímia?Are there particular programming languages, operating systems, or other technology that your team is particularly adept at using? Conhece outros com os quais a sua equipa teria dificuldades em trabalhar?Are there others that would be difficult for your team to work with?

  • Cientes: Existe um bom apoio ao cliente para as suas linguagens de desenvolvimento?Clients Is there good client support for your development languages?

As secções seguintes comparam vários modelos de arquivo de dados em termos de perfil de carga de trabalho, tipos de dados e casos de utilização de exemplo.The following sections compare various data store models in terms of workload profile, data types, and example use cases.

Sistemas de gestão de bases de dados relacionais (RDBMS)Relational database management systems (RDBMS)

Carga de trabalhoWorkload
  • A criação de novos registos e as atualizações dos dados existentes ocorrem regularmente.Both the creation of new records and updates to existing data happen regularly.
  • É necessário concluir várias operações numa única transação.Multiple operations have to be completed in a single transaction.
  • Precisa de funções de agregação para realizar uma tabulação cruzada.Requires aggregation functions to perform cross-tabulation.
  • É preciso uma integração forte com as ferramentas de relatórios.Strong integration with reporting tools is required.
  • As relações são impostas com restrições de base de dados.Relationships are enforced using database constraints.
  • Os índices são utilizados para otimizar o desempenho das consultas.Indexes are used to optimize query performance.
  • Permite o acesso a subconjuntos específicos de dados.Allows access to specific subsets of data.
Tipo de dadosData type
  • Os dados são altamente normalizados.Data is highly normalized.
  • Os esquemas das bases de dados são necessários e impostos.Database schemas are required and enforced.
  • Relações de muitos para muitos entre entidades de dados na base de dados.Many-to-many relationships between data entities in the database.
  • As restrições são definidas no esquema e impostas em quaisquer dados na base de dados.Constraints are defined in the schema and imposed on any data in the database.
  • Os dados precisam de uma integridade elevada.Data requires high integrity. Os índices e as relações têm de ser mantidos com exatidão.Indexes and relationships need to be maintained accurately.
  • Os dados precisam de uma consistência forte.Data requires strong consistency. As transações funcionam de uma forma que garante que todos os dados são 100% consistentes para todos os utilizadores e processos.Transactions operate in a way that ensures all data are 100% consistent for all users and processes.
  • Pretende-se que as entradas de dados individuais tenham um tamanho pequeno a médio.Size of individual data entries is intended to be small to medium-sized.
ExemplosExamples
  • Linha de negócio (gestão do capital humano, gestão da relação com o cliente, planeamento dos recursos da empresa)Line of business (human capital management, customer relationship management, enterprise resource planning)
  • Gestão de inventárioInventory management
  • Base de dados de relatóriosReporting database
  • ContabilidadeAccounting
  • Gestão de ativosAsset management
  • Gestão de fundosFund management
  • Gestão de encomendasOrder management

Bases de dados de documentosDocument databases

Carga de trabalhoWorkload
  • Fins gerais.General purpose.
  • As operações de inserção e de atualização são comuns.Insert and update operations are common. A criação de novos registos e as atualizações dos dados existentes ocorrem regularmente.Both the creation of new records and updates to existing data happen regularly.
  • Sem erro de impedância de objeto relacional.No object-relational impedance mismatch. Os documentos podem corresponder melhor às estruturas dos objetos utilizados no código da aplicação.Documents can better match the object structures used in application code.
  • A simultaneidade otimista é a mais frequentemente utilizada.Optimistic concurrency is more commonly used.
  • Os dados têm de ser modificados e processados pela aplicação de consumo.Data must be modified and processed by consuming application.
  • Os dados precisam de um índice em vários campos.Data requires index on multiple fields.
  • Os documentos individuais são obtidos e escritos como um único bloco.Individual documents are retrieved and written as a single block.
Tipo de dadosData type
  • Os dados podem ser geridos de uma forma desnormalizada.Data can be managed in de-normalized way.
  • O tamanho dos dados de documentos individuais é relativamente pequeno.Size of individual document data is relatively small.
  • Cada tipo de documento pode utilizar o seu próprio esquema.Each document type can use its own schema.
  • Os documentos podem incluir campos opcionais.Documents can include optional fields.
  • Os dados dos documentos são semiestruturados, o que significa que os tipos de dados de cada campo não estão estritamente definidos.Document data is semi-structured, meaning that data types of each field are not strictly defined.
  • A agregação de dados é suportada.Data aggregation is supported.
ExemplosExamples
  • Catálogo de produtosProduct catalog
  • Contas de utilizadorUser accounts
  • Lista de materiaisBill of materials
  • PersonalizaçãoPersonalization
  • Gestão de conteúdosContent management
  • Dados de operaçõesOperations data
  • Gestão de inventárioInventory management
  • Dados do histórico de transaçõesTransaction history data
  • Vista materializada de outros arquivos NoSQL.Materialized view of other NoSQL stores. Substitui a indexação de ficheiro/Blob.Replaces file/BLOB indexing.

Arquivos de chave/valorKey/value stores

Carga de trabalhoWorkload
  • Os dados são identificados e acedidos com uma chave de ID único, como um dicionário.Data is identified and accessed using a single ID key, like a dictionary.
  • Escalável em massa.Massively scalable.
  • Não são precisas adesões, bloqueios ou uniões.No joins, lock, or unions are required.
  • Não são utilizados mecanismos de agregação.No aggregation mechanisms are used.
  • Geralmente, os índices secundários não são utilizados.Secondary indexes are generally not used.
Tipo de dadosData type
  • O tamanho dos dados tende a ser grande.Data size tends to be large.
  • Cada chave está associada a um valor único, que é um BLOB de dados não gerido.Each key is associated with a single value, which is an unmanaged data BLOB.
  • Não há nenhuma imposição de esquema.There is no schema enforcement.
  • Não existem relações entre as entidades.No relationships between entities.
ExemplosExamples
  • Colocação de dados em cacheData caching
  • Gestão de sessõesSession management
  • Preferência do utilizador e gestão de perfilUser preference and profile management
  • Recomendação de produtos e entrega de um anúncioProduct recommendation and ad serving
  • DicionáriosDictionaries

Bases de dados de gráficosGraph databases

Carga de trabalhoWorkload
  • As relações entre os itens de dados são muito complexas e envolvem muitos saltos entre itens de dados relacionados.The relationships between data items are very complex, involving many hops between related data items.
  • A relação entre os itens de dados é dinâmica e altera ao longo do tempo.The relationship between data items are dynamic and change over time.
  • As relações entre os objetos são de primeira classe, não precisarem de chaves externas nem de adesões para atravessar.Relationships between objects are first-class citizens, without requiring foreign-keys and joins to traverse.
Tipo de dadosData type
  • Os dados são compostos por nós e relações.Data is comprised of nodes and relationships.
  • Os nós são semelhantes às linhas de tabela ou aos documentos JSON.Nodes are similar to table rows or JSON documents.
  • As relações são tão importantes quanto os nós e são expostas diretamente na linguagem de consulta.Relationships are just as important as nodes, and are exposed directly in the query language.
  • 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áveisComposite objects, such as a person with multiple phone numbers, tend to be broken into separate, smaller nodes, combined with traversable relationships
ExemplosExamples
  • OrganogramasOrganization charts
  • Gráficos de redes sociaisSocial graphs
  • Deteção de fraudesFraud detection
  • AnáliseAnalytics
  • Motores de recomendaçõesRecommendation engines

Bases de dados de família de colunasColumn-family databases

Carga de trabalhoWorkload
  • A maioria das bases de dados de famílias de colunas realizam operações de escrita extremamente rápidas.Most column-family databases perform write operations extremely quickly.
  • As operações de atualização e de eliminação são raras.Update and delete operations are rare.
  • Criada para fornecer um débito elevado e acesso de baixa latência.Designed to provide high throughput and low-latency access.
  • Suporta um acesso de consulta fácil para um determinado conjunto de campos num registo muito maior.Supports easy query access to a particular set of fields within a much larger record.
  • Escalável em massa.Massively scalable.
Tipo de dadosData type
  • Os dados são armazenados em tabelas constituídas por uma coluna de chaves e uma ou mais famílias de colunas.Data is stored in tables consisting of a key column and one or more column families.
  • Colunas específicas podem variar de acordo com linhas individuais.Specific columns can vary by individual rows.
  • As células individuais são acedidas através dos comandos get e putIndividual cells are accessed via get and put commands
  • Várias linhas são devolvidas com um comando de análise.Multiple rows are returned using a scan command.
ExemplosExamples
  • RecomendaçõesRecommendations
  • PersonalizaçãoPersonalization
  • Dados de sensoresSensor data
  • TelemetriaTelemetry
  • MensagensMessaging
  • Análise de redes sociaisSocial media analytics
  • Análise WebWeb analytics
  • Monitorização da atividadeActivity monitoring
  • Meteorologia e outros dados de séries temporaisWeather and other time-series data

Bases de dados de motores de pesquisaSearch engine databases

Carga de trabalhoWorkload
  • Indexação de dados a partir de várias origens e serviços.Indexing data from multiple sources and services.
  • As consultas são ad-hoc e podem ser complexas.Queries are ad-hoc and can be complex.
  • Precisa de agregação.Requires aggregation.
  • É preciso uma pesquisa de texto completo.Full text search is required.
  • São precisas consultas personalizadas ad-hoc.Ad hoc self-service query is required.
  • É preciso uma análise de dados com índices em todos os campos.Data analysis with index on all fields is required.
Tipo de dadosData type
  • Semiestruturado ou não estruturadoSemi-structured or unstructured
  • TextoText
  • Texto com referência a dados estruturadosText with reference to structured data
ExemplosExamples
  • Catálogo de produtosProduct catalogs
  • Pesquisa do siteSite search
  • RegistoLogging
  • AnáliseAnalytics
  • Sites de comprasShopping sites

Armazém de dadosData warehouse

Carga de trabalhoWorkload
  • Análise de dadosData analytics
  • BI empresarialEnterprise BI
Tipo de dadosData type
  • Dados históricos de várias origens.Historical data from multiple sources.
  • Normalmente desnormalizado numa "estrela" ou "floco de neve" esquema, consistindo em tabelas de fatos e dimensão.Usually denormalized in a "star" or "snowflake" schema, consisting of fact and dimension tables.
  • Normalmente carregados com novos dados de forma agendada.Usually loaded with new data on a scheduled basis.
  • 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.Dimension tables often include multiple historic versions of an entity, referred to as a slowly changing dimension.
ExemplosExamples Um armazém de dados empresariais que fornece dados para modelos analíticos, relatórios e dashboards.An enterprise data warehouse that provides data for analytical models, reports, and dashboards.

Bases de dados de séries temporaisTime series databases

Carga de trabalhoWorkload
  • Uma grande proporção de operações (95 99%) são escritas.An overwhelming proportion of operations (95-99%) are writes.
  • Geralmente, os registos são acrescentados sequencialmente por ordem cronológica.Records are generally appended sequentially in time order.
  • As atualizações são raras.Updates are rare.
  • As eliminações ocorrem em massa e são realizadas para blocos ou registos contíguos.Deletes occur in bulk, and are made to contiguous blocks or records.
  • Os pedidos de leitura podem ser maiores do que a memória disponível.Read requests can be larger than available memory.
  • -'s comum para várias leituras ocorrem em simultâneo.It's common for multiple reads to occur simultaneously.
  • Os dados são lidos sequencialmente por ordem ascendente ou descendente de forma cronológica.Data is read sequentially in either ascending or descending time order.
Tipo de dadosData type
  • Um carimbo de data/hora é utilizado como a chave primária e o mecanismo de ordenação.A time stamp that is used as the primary key and sorting mechanism.
  • Medidas da entrada ou das descrições daquilo que a entrada representa.Measurements from the entry or descriptions of what the entry represents.
  • As etiquetas que definem as informações adicionais sobre o tipo, a origem e outras informações sobre a entrada.Tags that define additional information about the type, origin, and other information about the entry.
ExemplosExamples
  • Monitorização e telemetria dos eventos.Monitoring and event telemetry.
  • Sensor ou outros dados de IoT.Sensor or other IoT data.

Armazenamento de objetosObject storage

Carga de trabalhoWorkload
  • Identificado por chave.Identified by key.
  • Os objetos podem estar acessíveis de forma pública ou privada.Objects may be publicly or privately accessible.
  • Por norma, o conteúdo é um recurso, como uma folha de cálculo, uma imagem ou um ficheiro de vídeo.Content is typically an asset such as a spreadsheet, image, or video file.
  • O conteúdo tem de ser durável (persistente) e externo a qualquer camada de aplicação ou máquina virtual.Content must be durable (persistent), and external to any application tier or virtual machine.
Tipo de dadosData type
  • O tamanho dos dados é grande.Data size is large.
  • Dados de blobs.Blob data.
  • O valor é opaco.Value is opaque.
ExemplosExamples
  • Imagens, vídeos, documentos do Office, PDFsImages, videos, office documents, PDFs
  • CSS, Scripts, CSVCSS, Scripts, CSV
  • HTML estático, JSONStatic HTML, JSON
  • Ficheiros de registo e auditoriaLog and audit files
  • Cópias de segurança de bases de dadosDatabase backups

Ficheiros partilhadosShared files

Carga de trabalhoWorkload
  • Migração de aplicações existentes que interagem com o sistema de ficheiros.Migration from existing apps that interact with the file system.
  • Precisa da interface de SMB.Requires SMB interface.
Tipo de dadosData type
  • Ficheiros num conjunto de pastas hierárquico.Files in a hierarchical set of folders.
  • Acessível com bibliotecas de E/S padrão.Accessible with standard I/O libraries.
ExemplosExamples
  • Ficheiros legadosLegacy files
  • Conteúdo partilhado acessível entre várias VMs ou instâncias de aplicaçõesShared content accessible among a number of VMs or app instances