Palestra sobre o uso de soluções NoSQL como Redis, MongoDB, DocumentDB, Azure Tables e Azure Cosmos DB em aplicações .NET. Apresentação realizada em 18/09/2017 em São Paulo-SP, em meetup promovido pelo grupo Developers-SP.
2. Renato Groffe
• Microsoft Most Valuable Professional (MVP)
• Multi-Plataform Technical Audience Contributor (MTAC)
• Mais de 15 anos de experiência na área de Tecnologia
• Autor Técnico e Palestrante
6. Modelo relacional: um breve histórico
• Proposto na década de 1970
• Estrutura mais rígida → tabelas, campos, linhas,
relacionamentos e uma série de restrições
• Linguagem SQL
• Muito presente no ambiente corporativo
7. Limitações do modelo relacional
• Disponibilidade
• Escalabilidade
• Dificuldades em gerenciar agrupamentos de
dados mais complexos
• Impedance mismatch → dificuldades
conciliando conceitos relacionais e de OO
8. Uma alternativa: NoSQL (“Not Only SQL”)
• Alta Disponibilidade
• Escalabilidade facilitada
• Flexibilidade
• Diversos tipos de soluções NoSQL →
Chave-valor, orientado a documentos
9. Bancos do tipo chave-valor
Chave 1 Valor 1
Chave 2 Valor 2
Chave n Valor n
. . .
14. Redis
• Solução NoSQL open source
• Armazenamento em memória de chaves e
valores
• Cache distribuído em aplicações Web (uso
mais comum)
• O Azure conta com uma implementação na
nuvem → Azure Redis Cache
17. MongoDB
• Gratuito, open source e multiplataforma
• Representação de dados no padrão BSON
(bynary JSON)
• Schemaless
• Dados geospaciais
• Índices para a otimização de consultas
22. Azure Cosmos DB
• Lançamento oficial durante o Build 2017 (Maio)
• Solução NoSQL oferecida como serviço na nuvem
• Serviço de banco de dados de distribuição global
• “Evolução” do Document DB
24. Azure Cosmos DB – Características
Distribuição Global
• Possibilidade de replicação em várias regiões
• Sem preocupações com questões de infra estrutura
Baixa Latência
• Abaixo de 10 ms para leituras
• Abaixo de 15 ms para escritas
• Otimizações na escrita
• Indexação automática
26. Azure Cosmos DB – Características
Multi-model
• Suporte a DocumentDB (SQL), MongoDB,
Azure Tables e Gremlin (grafos)
• Database Account
– Bancos de dados
• Usuários
– Permissões
• Container (Coleções, Tabelas, Grafos)
– Itens (Documentos, Itens, Nodes)
– Procedures, triggers, functions
27. Azure Cosmos DB – Características
Múltiplos modelos de consistência
28. Azure Cosmos DB – Características
Escalabilidade
• Horizontal (Throughput e Storage)
• Elasticidade
SLAs
• Garantias de 99,99% para alta disponibilidade,
throughput, baixa latência e consistência
30. Azure Table Storage
• Solução do tipo chave-valor
• Esquema de dados flexível (“schemaless”)
• Grandes volumes de dados estruturados e não relacionais
• Armazenamento baseado em tabelas e entidades
• As tabelas estão organizadas por partições e chaves primárias
• Conta com emulador local (Azure Storage Emulator)
33. DocumentDB: uma visão geral
• Mais uma solução NoSQL do Microsoft Azure
• Orientado a documentos
• Flexível por ser “schemaless”
• Uso do padrão JSON para a representação dos dados
• Possui emulador local
34. DocumentDB: uma visão geral
• Suporte a transações baseado no modelo ACID
• Suporte a dados geoespaciais
• Consultas via LINQ ou expressões SQL
37. E quando não existir um SDK?
A solução neste caso seria utilizar o
Azure DocumentDB REST API
38. Como migrar para o DocumentDB?
Utilizando o DocumentDB Data Migration Tool
• Executável disponível para download
• Suporte a inúmeras fontes (arquivos JSON,
MongoDB, SQL Server, arquivos CSV etc.)