NoSQL para
Desenvolvedores .NET
Renato Groffe (Microsoft MVP, MTAC)
http://renatogroffe.net/
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
Contatos – Renato Groffe
/renatogroffe /in/renatogroffe
/canaldotnet /renatogroffe
/@renato.groffe /renatogroff
Agenda
• O paradigm NoSQL: uma visão geral
• Redis
• MongoDB
• Azure Cosmos DB
• Azure Table Storage
• DocumentDB
• Exemplos práticos
Uma visão geral
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
Limitações do modelo relacional
• Disponibilidade
• Escalabilidade
• Dificuldades em gerenciar agrupamentos de
dados mais complexos
• Impedance mismatch → dificuldades
conciliando conceitos relacionais e de OO
Uma alternativa: NoSQL (“Not Only SQL”)
• Alta Disponibilidade
• Escalabilidade facilitada
• Flexibilidade
• Diversos tipos de soluções NoSQL →
Chave-valor, orientado a documentos
Bancos do tipo chave-valor
Chave 1 Valor 1
Chave 2 Valor 2
Chave n Valor n
. . .
Bancos do tipo chave-valor
Redis
Bancos orientados a documentos
{
"id": 55,
"Pais": "Brasil",
"Regiao": "América do Sul",
"Populacao": 201032714,
"PrincipaisCidades": [
{
"NomeCidade": "São Paulo",
"Populacao": 1182876,
},
{
"NomeCidade": "Rio de Janeiro",
"Populacao": 6323037,
}
]
}
Bancos orientados a documentos
DocumentDB
Redis
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
Redis – Algumas plataformas suportadas
Go . . .
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
MongoDB – Estrutura de um banco
MongoDB – Algumas plataformas suportadas
. . .
MongoDB e ferramentas de gerenciamento
Robo 3T
(RoboMongo)
Studio 3T
(MongoChef)
Azure Cosmos DB
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
Azure Cosmos DB – Resumo
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
Azure Cosmos DB – Características
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
Azure Cosmos DB – Características
Múltiplos modelos de consistência
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
Azure Table Storage
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)
Azure Table Storage – Suporte
DocumentDB
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
DocumentDB: uma visão geral
• Suporte a transações baseado no modelo ACID
• Suporte a dados geoespaciais
• Consultas via LINQ ou expressões SQL
Estrutura geral do DocumentDB
DocumentDB – Suporte
E quando não existir um SDK?
A solução neste caso seria utilizar o
Azure DocumentDB REST API
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.)
Demos
Dúvidas?
Obrigado!

NoSQL para Desenvolvedores .NET - Developers-SP - Setembro-2017

  • 1.
    NoSQL para Desenvolvedores .NET RenatoGroffe (Microsoft MVP, MTAC) http://renatogroffe.net/
  • 2.
    Renato Groffe • MicrosoftMost 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
  • 3.
    Contatos – RenatoGroffe /renatogroffe /in/renatogroffe /canaldotnet /renatogroffe /@renato.groffe /renatogroff
  • 4.
    Agenda • O paradigmNoSQL: uma visão geral • Redis • MongoDB • Azure Cosmos DB • Azure Table Storage • DocumentDB • Exemplos práticos
  • 5.
  • 6.
    Modelo relacional: umbreve 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 modelorelacional • 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 tipochave-valor Chave 1 Valor 1 Chave 2 Valor 2 Chave n Valor n . . .
  • 10.
    Bancos do tipochave-valor Redis
  • 11.
    Bancos orientados adocumentos { "id": 55, "Pais": "Brasil", "Regiao": "América do Sul", "Populacao": 201032714, "PrincipaisCidades": [ { "NomeCidade": "São Paulo", "Populacao": 1182876, }, { "NomeCidade": "Rio de Janeiro", "Populacao": 6323037, } ] }
  • 12.
    Bancos orientados adocumentos DocumentDB
  • 13.
  • 14.
    Redis • Solução NoSQLopen 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
  • 15.
    Redis – Algumasplataformas suportadas Go . . .
  • 17.
    MongoDB • Gratuito, opensource e multiplataforma • Representação de dados no padrão BSON (bynary JSON) • Schemaless • Dados geospaciais • Índices para a otimização de consultas
  • 18.
  • 19.
    MongoDB – Algumasplataformas suportadas . . .
  • 20.
    MongoDB e ferramentasde gerenciamento Robo 3T (RoboMongo) Studio 3T (MongoChef)
  • 21.
  • 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
  • 23.
    Azure Cosmos DB– Resumo
  • 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
  • 25.
    Azure Cosmos DB– Características
  • 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
  • 29.
  • 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)
  • 31.
  • 32.
  • 33.
    DocumentDB: uma visãogeral • 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ãogeral • Suporte a transações baseado no modelo ACID • Suporte a dados geoespaciais • Consultas via LINQ ou expressões SQL
  • 35.
  • 36.
  • 37.
    E quando nãoexistir um SDK? A solução neste caso seria utilizar o Azure DocumentDB REST API
  • 38.
    Como migrar parao 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.)
  • 39.
  • 40.
  • 41.