NOSQL uma breve introdução

Preview:

Citation preview

Por Fernando Cunha

Uma Breve Introdução

Fernando Cunha – fecunhainfo@gmail.com

• Bacharel em Informática• Pós graduado Engenharia de Software UFPR• Pós graduando em Gestão de TI• ITIL V3 Foundation Certificate• Gerente de Projetos

Contatos:

http://br.linkedin.com/pub/fernando-cunha/26/67a/827/

Palestrante:

NOSQL é um termo genérico que define bancos de dados não-relacionais.

Termo introduzido por Carlos Strozzi em um evento de banco de dados open-source em 1998

Em 2009 Eric Evans reintroduziu o termo em outro evento de banco de dados open-source

Pronuncia-se - noseequel

O que significa?

Quem?

Porque? Suprir as necessidades introduzidas pelo o fenômeno

BIG DATA

Classificação de SGBD NOSQL

Coleção de chaves únicas associada a um valor, que pode ser de qualquer tipo (binário, string)

Exemplo:Key: 1234 Value: “Fernando”Key: 2343 Value: “Name=Fernando, age=29”

KEY VALUE COLUMN GRAPH DOCUMENT

Classificação de SGBD NOSQL

Famílias de colunas (um repositório para colunas, análogo a uma tabela do Modelo Relacional) e super-colunas

(compostas por arrays de colunas)

Exemplo:Column family, Key, Column name e valuePessoas ; 4564 ; nome : Ana ; idade : 30;

KEY VALUE COLUMN GRAPH DOCUMENTKEY VALUE COLUMN GRAPH DOCUMENT

Classificação de SGBD NOSQL

Banco de dados baseado em grafos, nele temos as entidades chamadas de vértices (ou node) que são ligadas entre elas pelas arestas (ou relationships) cada um podendo guardar dados entre os relacionamentos e cada relacionamento pode ter uma direção.

Exemplo:- Vértice: Chave->Valor representa entidade. Nome:Priscila- Aresta: relacionamentos

Ex: Vertice “Priscila” segue o vertice “Lucas” desde 2012, o relacionamento é igual a “segue”

KEY VALUE COLUMN GRAPH DOCUMENTKEY VALUE COLUMN GRAPH DOCUMENTKEY VALUE COLUMN GRAPH DOCUMENT

Classificação de SGBD NOSQL

Os documentos são as unidades básicasde armazenamento e estes não utilizam necessariamente

qualquer tipo de estruturação pré-definida São baseados em JSON. (JavaScript Object Notation)

Exemplo:{"user":{

"id": "123","name": "Emmanuel","addresses":[

{"city":"Paris"},{"city":"Sao Paulo"}]}

KEY VALUE COLUMN GRAPH DOCUMENTKEY VALUE COLUMN GRAPH DOCUMENTKEY VALUE COLUMN GRAPH DOCUMENTKEY VALUE COLUMN GRAPH DOCUMENT

Classificação de SGBD NOSQL

Key Value

123435

Joao da Silva

334545

Name=Fernando, age=29

Key - Value Column

Graph Document

Classificação de SGBD NOSQL

150 tipos de banco de dados NOSQL

Fonte: http://nosql-database.org/

Dados compilados manualmente

30%

13% 13%

7%

37%

0%

5%

10%

15%

20%

25%

30%

35%

40%

Key Value Document Store Graph Databases Column Não categorizado

Classificação de SGBD NOSQL e quem está utilizando

KEY VALUE COLUMN GRAPH DOCUMENT

Amazon DynamoDB (Key-value)

Desenvolvido em: Java

Quem Usa?

– Washingtonpost.com

– Elsevier (Editora)

Classificação de SGBD NOSQL e quem está utilizando

KEY VALUE COLUMN GRAPH DOCUMENT

Classificação de SGBD NOSQL e quem está utilizando

Cassandra (column)Desenvolvido em: Java

Quem Usa?

– Twitter

– NetFlix

– Facebook

BigTable(column) GoogleDesenvolvido em: C++

Quem Usa:

GmailGoogle Maps,YouTube

KEY VALUE COLUMN GRAPH DOCUMENT

Classificação de SGBD NOSQL e quem está utilizando

Neo4j (graph)

– Desenvolvido em: JavaQuem Usa?

– WalMart

– National Geographic

– Ebay

KEY VALUE COLUMN GRAPH DOCUMENTKEY VALUE COLUMN GRAPH DOCUMENT

Classificação de SGBD NOSQL e quem está utilizando

MongoDB (Document)Desenvolvido em: C

Quem Usa:

– Globo.com

– Apontador

– Forbes

– New York Times

KEY VALUE COLUMN GRAPH DOCUMENT

Dá pra fazer query?

I SQL

Dá pra fazer query?

Amazon DynamoDB– Key-Value

SQL Query

AWS Query

AWS SDK for Java

AWS SDK for .NET

AWS SDK for PHP

JSON Data Format

API Reference

Dá pra fazer query?

MongoDB - Document

SQL Query

Operation Find

Dá pra fazer query?

Neo4j- Graph

SQL Query

Cyber query

Dá pra fazer query?

Cassandra - Column

SQL Query

CQL – Cassandra Query LanguageComandos CRUD

(Create, Read, Update, Delete)

são iguais

Quais linguagens suportam NOSQL?

Amazon Dynamo Neo4j Cassandra MongoDB

C x

C# x

C++ x x

Go x x

Java x x x x

Javascript x x

Node.js x x x x

Perl x x

PHP x x x x

Python x x x

Ruby x x x x

Scala x x x

Os banco de dados relacionais irão morrer?

Posição NOSQL

Fonte: Gartner

Quando e qual utilizar?

Fonte: Martin Fowler

Fonte: http://www.martinfowler.com/bliki/PolyglotPersistence.html

Sessões de usuários

Key - Value

Dados Financeiros

Relacional

Blog ou SociaMedia

Graph

CatálogoProdutos

Document

Relatórios

Relacional

Atividades e logs de usuário

Column

Cases

SGBD:sistema de processamento de faturas mensais

NOSQL:Sistema focado em recomendações de melhores filmes.

Cases

SGBD:Sistemas de processamento de ordem de venda

NOSQL:Sistema de pesquisa, recomendações e adaptações de preços em tempo real

Cases

SGBD:Dados de clientes, produtos e RH

NOSQL:Explorar, analisar e virtualização de dados

Existem oportunidades no mercado?

Tem profissional no mercado?

Perguntas

Referenciashttp://nosql-database.org/

http://neo4j.com/customers/

http://aws.amazon.com/dynamodb/

http://www.nosqlfordummies.com/

http://technorati.com/is-there-a-sequel-to-nosql-bigdata-analytics-scifi-has-already-foreshadowed-it/

NoSQL Now 2013 conference. Tomer Shiran, VP of Product Management at MapR Technologies. Jeff Kelly from Wikibon.

http://www.strozzi.it/cgi-bin/CSA/tw7/I/en_US/NoSQL/Home%20Page

http://blog.parityresearch.com/21-nosql-innovators-to-look-for-in-2020/

http://blogs.the451group.com/information_management/2014/07/01/nosql-linkedin-skills-index-june-2014/

http://www.gartner.com/technology/reprints.do?id=1-1M9YEHW&ct=131028&st=sb

http://www.tomsitpro.com/articles/rdbms-sql-cassandra-dba-developer,2-547-2.html

http://www.slideshare.net/kevinweil/nosql-at-twitter-nosql-eu-2010

http://www.slideshare.net/thobe/nosql-for-dummies

Referenciashttp://www.mongodb.com/events/

http://docs.mongodb.org/manual/core/read-operations-introduction/

http://data.ime.usp.br/sbbd2012/artigos/pdfs/sbbd_min_01.pdf

https://cassandra.apache.org/doc/cql/CQL.html

http://www.indeed.com/jobtrends?q=nosql+developer&l=

http://blog.nahurst.com/visual-guide-to-nosql-systems

http://revistaopara.facape.br/index.php/opara/article/download/121/72

http://stackoverflow.com/questions/12346326/nosql-cap-theorem-availability-and-partition-tolerance

http://www.martinfowler.com/bliki/PolyglotPersistence.html

http://www.infoq.com/br/news/2014/06/oracle-nosql-database-3.0

http://www.infoq.com/br/news/2014/06/splunk-hunk-6.1

http://docs.neo4j.org/chunked/stable/query-predicates.html

http://pt.splunk.com/view/db-connect/SP-CAAAHR6