Baixe o app para aproveitar ainda mais
Prévia do material em texto
Prof. Giuliano Nascimento Ribeiro 1 NoSql NOSQL NoSQL é um termo guarda-chuva, que engloba uma série de tecnologias diferentes que não são necessariamente semelhantes, mas que possuem uma característica de não ser tabular. Dados são armazenados de forma diferente da relação linha/coluna Tecnologias de natureza NÃO relacional. Prof. Giuliano Nascimento Ribeiro 2 NOSQL As bases de dados SQL respeitam o modelo relacional, pois baseiam-se no fato de todos os dados serem guardados em tabelas. Temos como principais exemplos de bases de dados SQL: SQL Server, MySQL, Firebird, Sybase, Oracle ou IBM DB2. Prof. Giuliano Nascimento Ribeiro 3 NOSQL Pelo SQL ser uma base de dados relacional temos sempre as propriedades ACID (Atomicidade, Consistência, Isolamento e Durabilidade). Estas quatro propriedades descrevem as principais características de uma transação em SQL. Prof. Giuliano Nascimento Ribeiro 4 NOSQL Atomicidade Uma transação deve ter todas as suas operações executadas com sucesso. Em caso de falha de alguma operação, é necessário proceder ao rollback. Prof. Giuliano Nascimento Ribeiro 5 NOSQL Consistência Uma transação deve respeitar a integridade dos dados. Prof. Giuliano Nascimento Ribeiro 6 NOSQL Isolamento Uma transação em andamento mas ainda não validada deve permanecer isolada de qualquer outra operação, ou seja, garantimos que a transação não será interferida por nenhuma outra transação concorrente. Prof. Giuliano Nascimento Ribeiro 7 NOSQL Durabilidade Garante que o que foi salva não será perdido. As transações com sucesso devem persistir na base de dados mesmo que haja alguma anomalia externa à mesma, ou seja, devemos sempre registar as mesmas em memória não-volátil. Dados validados são registados pelo sistema de tal forma que mesmo no caso de uma falha e/ou reinício do sistema, os dados deve estar disponíveis em seu correto estado. Prof. Giuliano Nascimento Ribeiro 8 NOSQL NoSQL (Not Only SQL) é um termo genérico que representa os bancos de dados não relacionais. Prof. Giuliano Nascimento Ribeiro 9 NOSQL Os bancos NoSQL, diferente dos bancos tradicionais, como: Oracle, MySQL, SQL Server e outros, não são necessariamente do mesmo tipo. Cada um adota um ou mais modelos de dados. Documento. Chave e valor. Coluna. Grafo. Prof. Giuliano Nascimento Ribeiro 10 NOSQL Prof. Giuliano Nascimento Ribeiro 11 Tipos de NOSQL Prof. Giuliano Nascimento Ribeiro 12 NOSQL – Tipos de Dados Prof. Giuliano Nascimento Ribeiro 13 Tipos de Banco de Dados Coluna: Accumulo, Cassandra, Druid, HBase, Vertica Documento: Apache CouchDB, Elasticsearch, ArangoDB, BaseX, Clusterpoint, Couchbase, Cosmos DB, IBM Dominio, MarkLogic, MongoDB, OrientDB, Qizx, RethinkDB Prof. Giuliano Nascimento Ribeiro 14 Tipos de Banco de Dados Chave-valor: Aerospike, Apache Ignite, ArangoDB, Couchbase, Dynamo, FairCom c-treeACE, FoundationDB, InfinityDB, MemcacheDB, MUMPS, Oracle NoSQL Database, OrientDB, Redis, Riak, Berkeley DB, SDBM/Flat File dbm, ZooKeeper Prof. Giuliano Nascimento Ribeiro 15 Tipos de Banco de Dados Grafo: AllegroGraph, ArangoDB, InfiniteGraph, Apache Giraph, MarkLogic, Neo4J, OrientDB, Virtuoso Multi-modelo: Apache Ignite, ArangoDB, Couchbase, FoundationDB, InfinityDB, MarkLogic, OrientDB Prof. Giuliano Nascimento Ribeiro 16 Diferenças Prof. Giuliano Nascimento Ribeiro 17 Diferenças SQL São estruturadas em linguagem de consulta(SQL) para definição e manipulação de dados. Representado o meio mais utilizado, sendo uma escolha segura e especialmente ótima para consultas complexas. Prof. Giuliano Nascimento Ribeiro 18 Diferenças SQL – Outro Lado Exige que você use esquemas pré-definidos para determinara estrutura de dados antes de trabalhar com eles. Todos os seus dados devem seguir a mesma estrutura. Prof. Giuliano Nascimento Ribeiro 19 SQL – Modelo Relacional Prof. Giuliano Nascimento Ribeiro 20 SQL – Modelo de Classes Prof. Giuliano Nascimento Ribeiro 21 Diferenças Prof. Giuliano Nascimento Ribeiro 22 Diferenças NoSQL Uma base de dados NoSQL tem um esquema dinâmico para dados não estruturados, e o dado é armazenado em várias formas: Orientado a coluna; Orientado a documento; Baseado em grafos; Organizado como chave-valor; Prof. Giuliano Nascimento Ribeiro 23 Diferenças NoSQL A flexibilidade permite que: Seja criado documentos sem ter que definir sua estrutura primeiro; Cada documentos tenha sua própria estrutura única; A sintaxe varie de base de dados para base de dados; Seja adicionado campos sempre que precisar. Prof. Giuliano Nascimento Ribeiro 24 Diferenças NoSQL - Particionamento horizontal é um princípio de projeto de banco de dados pelo qual as linhas de um banco de dados são armazenadas separadamente, em vez de serem quebradas em colunas (que é o que a normalização e o particionamento vertical fazem, para diferenciar extensões). Cada partição forma parte de um shard, que pode, por sua vez, ser instalada em um servidor de banco de dados ou localização física separados. Prof. Giuliano Nascimento Ribeiro 25 Diferenças Um shard de banco de dados (Fragmento de banco de dados) Representa uma partição horizontal de dados em um banco de dados ou mecanismo de busca. Cada partição individual é referenciada como um shard ou shard de banco de dados. Cada shard é armazenado em uma instância de servidor de banco de dados separada, para distribuir a carga. Prof. Giuliano Nascimento Ribeiro 26 Exemplo Shard Prof. Giuliano Nascimento Ribeiro 27 Teorema CAP Prof. Giuliano Nascimento Ribeiro 28 Após a atualização de um dado, todos os usuários que tem acesso a esse dado, devem acessá-lo em tempo real. Refere-se a capacidade de um sistema continuar operando mesmo depois uma falha na rede. Refere-se a concepção e implementação de um sistema de modo que seja assegurado que esse permanece ativo durante um determinado período de tempo. Empresas que utilizam Google - Bigtable. Amazon - Dynamo. Yahoo - Hadoop. Facebook - Cassandra. Digg - Cassandra. Twitter - Cassandra. IBM - Cassandra. Netflix - Cassandra. LinkedIn - Voldemort. BNE (Banco Nacional de Empregos)- MongoDB Prof. Giuliano Nascimento Ribeiro 29 Escalabilidade SQL – são verticalmente escaláveis, podemos aumentar o carregamento em um servidor melhorando coisas como CPU, RAM OU SSD. NoSQL – são horizontalmente escaláveis, oferecem suporte a sharding (particionamento de dados). Prof. Giuliano Nascimento Ribeiro 30 Escala Vertical – Seria como adicionar mais andares no mesmo prédio. Horizontal – Seria adicionar mais prédios a vizinhança. Prof. Giuliano Nascimento Ribeiro 31 Escalonamento Banco de dados NoSQL tem facilidade em realizar o escalonamento horizontal, isso quer dizer, adiciona novos servidores em Cluster. Banco de dados relacionais tem facilidade em realizar o escalonamento vertical, isso quer dizer, adiciona recursos a uma máquina como memória e CPU. Prof. Giuliano Nascimento Ribeiro 32 Documento Os dados são armazenados como documentos. Os documentos podem ser descritos como dados no formato de chave-valor, como por exemplo, o padrão JSON (JavaScriptObjectNotation). Prof. Giuliano Nascimento Ribeiro 33 Documento Exemplo (MongoDB) Prof. Giuliano Nascimento Ribeiro 34 Documento Trabalhando com NoSQL Prof. Giuliano Nascimento Ribeiro 35 Documento Prof. Giuliano Nascimento Ribeiro 36 Documento Prof. Giuliano Nascimento Ribeiro 37 Exemplos Prof. Giuliano Nascimento Ribeiro 38 Formato JSON de um documento a ser gravado no MongoDB { "_id" : 8, "nome" : “Douglas Rocha Mendes", “idade" : 44, "info" : { “Cidade" : “Curitiba", “cargo" : “Desenvolvedor" }, "preferences" : [ “Cerveja Artesanal", “Futebol", “Trilhas 4x4" ] } Onde: _id – Chave (PK) No mongoDB a chave é precedida por _ BD Relacional MongoDB Banco de Dados Banco de dados Tabela Coleção LinhaDocumento Exemplos Prof. Giuliano Nascimento Ribeiro 39 "info" : { “Cidade" : “Curitiba", “cargo" : “Desenvolvedor" }, Onde: info – documento interno/embedded document. Composto por novas chaves. Utiliza o caracter { Exemplos Prof. Giuliano Nascimento Ribeiro 40 "preferences" : [ “Cerveja Artesanal", “Futebol", “Trilhas 4x4" ] Onde: Preferences - Arrays Armazena valores sobre as preferências do usuário. Utiliza o caractere [ Exemplos Prof. Giuliano Nascimento Ribeiro 41 Neste novo documento a chave preferences não foi necessária. Em BD relacional teríamos as colunas sem conteúdo. Em milhares de registros apesar de pouco espaço necessário a soma representa um grande espaço desperdiçado. Mongo Abrir o Mongo no Shell Prof. Giuliano Nascimento Ribeiro 42 Mongo Comandos Prof. Giuliano Nascimento Ribeiro 43 Mongo Comandos Prof. Giuliano Nascimento Ribeiro 44 Mongo Comandos Prof. Giuliano Nascimento Ribeiro 45 Mongo Comandos Prof. Giuliano Nascimento Ribeiro 46 Mongo Comandos Prof. Giuliano Nascimento Ribeiro 47 Mongo Comandos Prof. Giuliano Nascimento Ribeiro 48 Mongo Comandos Prof. Giuliano Nascimento Ribeiro 49 Mongo Comandos Prof. Giuliano Nascimento Ribeiro 50 Mongo Comandos Prof. Giuliano Nascimento Ribeiro 51 Mongo Comandos Prof. Giuliano Nascimento Ribeiro 52 Mongo Comandos Prof. Giuliano Nascimento Ribeiro 53 Mongo Comandos Prof. Giuliano Nascimento Ribeiro 54 Mongo Comandos Prof. Giuliano Nascimento Ribeiro 55 Mongo Comandos Prof. Giuliano Nascimento Ribeiro 56 Mongo Comandos Prof. Giuliano Nascimento Ribeiro 57 Mongo Comandos Prof. Giuliano Nascimento Ribeiro 58 Mongo Comandos Prof. Giuliano Nascimento Ribeiro 59 Mongo Comandos Prof. Giuliano Nascimento Ribeiro 60 Mongo Comandos Prof. Giuliano Nascimento Ribeiro 61 Mongo Comandos Prof. Giuliano Nascimento Ribeiro 62 Mongo Comandos Prof. Giuliano Nascimento Ribeiro 63 Mongo Comandos Prof. Giuliano Nascimento Ribeiro 64 Mongo Comandos Prof. Giuliano Nascimento Ribeiro 65 Mongo Comandos Prof. Giuliano Nascimento Ribeiro 66
Compartilhar