Carlos Feiteira / Felipe de Assis E agora? NoSQL ou SQL?
Palestrantes Carlos Henrique Feiteira PFE Data & AI – Microsoft Henrique_net8@Hotmail.com Felipe de Assis Felipe.assis@outlook.com
Patrocinadores
Objetivos E agora? NoSQL ou SQL? Entender as características de um banco de dados NoSQL e comparar algumas de suas particularidades com bancos de dados relacionais (SQL) E agora? NoSQL ou SQL?
Agenda Relembrando SQL O que é NoSQL? Tipos de bancos de dados NoSQL NoSQL vs SQL Principais aplicações/Exemplos Q&A
Introdução Quem já trabalha com banco de dados? Quem já trabalha com NoSQL?
Relembrando a definição: Banco de dados SQL Modelo relacional Ou seja, baseado em entidades (tabelas) que possuem relacionamento entre si Estrutura pré-definida (colunas, tipos de dados, etc.) Sempre preocupado com a consistência dos dados Exemplo: Um pedido é composto por itens (produtos) Pedido Item do pedido Produto
MER (Modelo Entidade Relacionamento)
ACID – Relacionamento de tabelas A – Atomicidade Todas as transações ou nada C – Consistência Garantia do estado de consistência A – Isolamento Transações são independentes A – Durabilidade A informação comitada nunca é perdida
O que é um banco de dados NoSQL? Definição: NoSQL = Não SQL = Não [Somente] Relacional Armazenamento e manipulação de dados não tabulares Principais características: Não relacionais Suporte a replicação Compensação de consistência Projetado para ser distribuído (particionado) Sem esquema definido
Tipos de bancos de dados NoSQL Tipos mais comuns: Chave Valor Documentos Colunar Grafos
Chave Valor Principais características: Rápido acesso aos dados Sessões de usuários Muita inserção Ruim para Update
Documentos Principais características: Bom para criação de CRUD Não estruturado Várias informações em 1 único documento São documentos, não valores e nem tabelas Formato JSON, XML, BSON
Colunar Principais características: Modelo mais próximo do relacional Log de atividades Timeline Bom para gravação Armazenar e processar grande quantidade de dados
Grafos Principais características: Redes sociais Recomendações Logística Internet of Things (IoT)
Suporte à replicação de dados
Como é feita a distribuição dos dados? Sharding! Distribui dados entre vários bancos de dados menores Pode-se adicionar mais servidores para scale-out Um dos principais desafios é balancear a carga
Como o NoSQL é diferente dos DBs relacionais? Esquema: Validação dos dados na entrada Relacionamentos: Impõem conexões entre os dados NoSQL Esquema e Relacionamentos: Na maioria dos casos, são responsabilidades da aplicação Exemplo de exceção: documentos aninhados (json)
Como definir SQL ou NoSQL? Volume, Variedade e Velocidade! Como faço para escalar um ambiente transacional?
Motivadores para o NoSQL Dados vinculados Document-Data Large Data Sets OLAP/BI/DW Resiliência Schema Free Escalabilidade Social Networks
NoSQL vs SQL SQL NoSQL DATABASE TABELA (TABLE) COLEÇÃO (COLLECTION), TABLE LINHA (ROW) DOCUMENT, JSON, BSON COLUNA (COLUMN) CAMPO (FIELD) / PROPRIEDADES INDEX INDEX (AUTO. EM ALGUMAS TECNOLOGIAS) TABLE JOINS EMBUTIDO NO DOCUMENTO CHAVE PRIMÁRIA (PRIMARY KEY) CHAVE / ID DE PARTIÇÃO TRANSACTIONS (BEGIN/COMMIT/ROLLBACK) DEPENDE DA TECNOLOGIA SCHEMA SCHEMA-FREE NORMALIZADO NÃO NORMALIZADO
Exemplo: Algumas pessoas tem mais de um telefone, como resolver? Algumas pessoas tem endereço do trabalho, casa, casa de campo… ??? Criar uma nova tabela? A mesma questão acontece com o E-mail, vamos seguir? Estrutura final Tabela Relacional
Alternativa NoSQL SQL: Esquema rígido O dado fica fragmentado Difícil análise dos dados Muitos JOINS nas consultas NoSQL: Esquema flexível Consumo simples pela aplicação
Exemplos de linguagem NoSQL Não existe um padrão de linguagem como os bancos transacionais. 1-Mongo 2-Gremlin 3-SQL (DocumentDB) 4-REDIS
Comparação: SQL
Comparação: NoSQL
Possíveis aplicações
Exemplo de uma solução híbrida de banco de dados Sistema de E-commerce Sessão de usuário Dados Financeiros Carrinho de Compras Recomendações Chave/Valor SQL Chave/Valor Grafos Catálogo de Produtos Relatórios Analytics Log de Atividades Documento SQL Colunar Colunar
Principais bancos de dados (Microsoft Azure)
SQL ou noSQL? DEMO
Links de referência https://docs.microsoft.com/en-us/azure/architecture/data-guide/big-data/non-relational-data https://docs.microsoft.com/en-us/azure/cosmos-db/ Sugestão de treinamento gratuito: https://www.edx.org/course/introduction-to-nosql-solutions-5
Dúvidas??? Fale com o especialista!
Muito obrigado!