SlideShare uma empresa Scribd logo
Mundo NoSQL
São Paulo, 04 de Junho de 2018
Jéssica Nathany – Software Development
Pós-graduada em Arquitetura e Desenvolvimento de Sofware
Pesquisa sobre no sql
Objetivo
O objetivo deste artigo é apresentar os conceitos de Bancos de Dados Não Relacionais,
baseando-se em algumas IDEs do mercado, e quando devemos utilizá-la em nossas
aplicações. Por mais que não seja algo novo e, embora seja algo que vem sido tanto discutido
no momento, NoSQL (Not Only SQL - Não Somente SQL) vamos entender um pouco por trás
como isso funciona e quais situações devemos utilizar.
Introdução
A sociedade está vivenciando um acúmulo de informações a cada instante, com uma
quantidade de dados cada vez maior parece que não há mais espaço para guardar tantos
dados e informação que só aumenta com o decorrer do tempo.
Em seu artigo Wanzeller “Conforme Borkar et al.[17] descreve, as empresas passaram a
monitorar compras de clientes, pesquisas de produtos, sites de relacionamento e diversas
outras fontes para aumentar a eficácia do seu marketing e dos serviços ofertados aos clientes;
governos e empresas estão rastreando conteúdos de blogs e tweets para realizar análise de
sentimentos; e organizações públicas de saúde estão monitorando artigos de notícias, tweets e
tendencias de pesquisas na web para acompanhar o processo de epidemias. Esse grande
volume de dados disponíveis e gerenciados leva a muitos desafios tanto para a academia
quanto para a sociedade em geral”. (Diogo Wanzeler - 2013 p.1)
A tecnologia avança, ferramentas são criadas, novas versões de frameworks vão surgindo
tudo para facilitar a vida de quem desenvolve softwares. Mas, um dos grandes desafios
atualmente da área da Computação é, o processamento e a manipulação da quantidade
excessiva de dados, no termo Big Data. Esse crescimento começou já no período do
surgimento da Web 2.0, que se baseia em uma rede onde o usuário não apenas usufrui dela e
sim contribui com seu conteúdo na rede.
Big Data
Big Data (Data Analytics) ou Ciência dos Dados, descreve o imenso volume de dados
armazenados, onde uma enorme quantidade de registro é criada simultaneamente. Exemplo:
dados em redes sociais, economia, IOT, bancos, blogs, notícias, dados de transações, dados
privados, dados públicos e por aí vai uma infinidade de dados.
De acordo com Hekina que descreve o big data como: “O termo Big Data é tão amplo quanto
seu nome sugere. Para contextualizá-lo e dar sentido a ele, caro leitor, segue uma breve
explicação: nós vivemos em uma Era em que, a (apenas) cada um ano e meio, se gera a
mesma quantidade de dados já criados pela humanidade em todos os tempos.
O Vs presente no big data são:
● Volume: quantidade de dados acomulados;
● Variedade: meios de propagação do tipo destes dados;
● Veracidade: verificar se estes dados são confiáveis;
● Valor: resultado obtido com o uso das ferramentas do big data
O objetivo das ferramentas do big data é a manipulação de dados estruturados e não
estruturados, com o intuito de extrair valor destas correlações, tentando fazer uma análise
destes dados e compreendê-los para assim poder chegar a uma conclusão ou resultado
esperado. O tratamento destes dados é feito com algoritmos inteligentes, que nada mais são
sequência de instruções que tem como objetivo chegar a um resultado esperado, uma solução
para um problema.
O tratamento dos dados no Big Data é feito com a utilização de algoritmos inteligente,
utilizando o aprendizado de máquina (Machine Learning), para a coleta, processamento,
separação destes dados. Alguns destes algoritmos para o aprendizado de máquina são: rede
neural, árvore de decisão e classificação linear .
O que é NoSQL ?
NoSQL (Not Only SQL - Não Somente SQL) é um termo genérico utilizado para chamar uma
classe definida de coleção de dados. O termo NoSQL foi re-introduzido no início de 2009 por
um funcionário do Rackspace, Eric Evans, quando Johan Oskarsson da Last.fm queria
organizar um evento para discutir bancos de dados open source distribuídos. O nome — uma
tentativa de descrever o surgimento de um número crescente de banco de dados não
relacionais, que não tinham a preocupação de fornecer garantias ACID — faz referência ao
esquema de atribuição de nomes dos bancos de dados relacionais mais populares do mercado:
MySQL, MS SQL, PostgreSQL etc (Wikipédia).
Essa coleção de dados, vem tendo um crescimento bem favorável nos últimos anos, devido a
algumas limitações existentes que os bancos de dados convencionais (SQL) tem. O NoSQL foi
projetado para ser ter alta escalabilidade, alta disponibilidade para armazenar dados semi
estruturados com alto desempenho. Vejamos algumas das características que diferencia o
NoSQL do SQL são:
● Não há relacionamento entre as tabelas;
● Schema Less;
● Linguagens independentes;
● Versionamento e gerenciamento de transações;
● Model less rodam em ambientes paralelos e distribuídos com alta disponibilidade e
intolerância a falhas;
● Soluções Poliglotas onde uma mesma aplicação pode ter várias soluções coleções de
dados associadas conforme a funcionalidade da aplicação.
● Alta performance;
● Alta escalabilidade;
● Distribuído
(Figura 1 Exemplo Banco Poliglota)
Teorema de CAP
(Figura 2 Teorema de CAP)
“ O teorema de CAP (também chamado de Teorema de Brewer’s[12]) propõe um modelo mais
realístico do que acontece na prática, para entendê-lo teremos que entender a fundo o que as
propriedades ACID propõem.” (Renato Molina).
Conforme mostrado acima, a imagem do teorema representa três requisitos que influenciam o
sistema de dados distribuídos, sendo eles: consistência, disponibilidade e tolerância a falhas
(consistency, availability and partition tolerance).
Consistência - Todos os clientes enxergam os mesmos dados, ou seja, é um comportamento
onde o sistema garante a leitura dos dados e mesmo estes dados terem sido atualizados.
Mesmo que alguém tenha feito uma mudança no dado ou se esse dado tenha sido criado em
algum outro nó, o cliente sempre verá estes dados atualizados.
Disponibilidade - Refere-se o sistema estar disponível ao cliente e estar operando mesmo
falhas, ou seja, quando o cliente lê um registro ou escrever algum dado, em nenhum momento
ele poderá receber uma mensagem “O sistema encontra-se indisponível!”, imagina essa
mesma situação em um usuário do Twitter, ao enviar uma mensagem receber em sua tela uma
informação dessas. Isso não quer dizer que o sistema não pode conter erros ou falhas em um
nó, isso quer dizer que, mesmo ocorrendo uma falha em um nó ou um nó ficar offline, o sistema
deverá continuar disponível ao cliente, porque ele precisa manter essa disponibilidade.
Tolerância a Partição - Tolerância a falha significa que, mesmo que o sistema tenha uma
falha de rede ou conectividade que seja, o mesmo deve continuar funcionando. Pode se dizer
que um sistema que tenha alguma falha de hardware/software algum problema que seja
continua disponível para o cliente, ele é um sistema tolerante a falhas.
O banco de dados NoSQL possui quatro modelos de dados principais que são:
● Modelos Orientado a Documento (MongoDB, CouchDB)
● Modelos Orientado a Chave - valor (Memcached, Riak e Redis)
● Modelos Orientado a Colunas (Cassandra, HBase e Hypertable)
● Modelos Orientado a Grafo (Neo4J, InfoGrid, AllegroGraph e Virtuoso)
Modelos Orientado a Documento
Este modelo de dados tem como objetivo armazenar coleções de documentos encapsulados
semi estruturados em formato JSON ou XML. Um documento, nada mais é do que um objeto
contendo um identificador único com um ou mais pares de campo/valor, que podem ser
strings, listas ou documentos aninhados. As principais soluções que adotam esse modelo são:
CouchDB e MongoDB, ambos utilizam JSON para armazenar os dados .
- CouchDB http://couchdb.apache.org/
- MongoDB https://www.mongodb.com/
(Figura 1: Query SQL e NoSQL exemplo com MongoDB)
Modelos Orientado a Chave-valor
Esse modelo armazena dados indexados por um valor chave, esse tipo de banco de dados é
otimizado para cargas de trabalho com um consumo muito alto de leitura, pois sendo, redes
sociais, jogos e etc. “O armazenando deste tipo é semelhante ao uso de mapas, ou
dicionários, onde os dados são endereçados por uma única chave, permitindo aos clientes
colocar e solicitar valores por chaves.” (Ivan Friess - 2013). Alguns exemplos são:
- DynamoDB https://aws.amazon.com/pt/dynamodb/
- Redis https://redis.io/
- Riak http://basho.com/products/riak-kv/
- Voldemort http://www.project-voldemort.com/voldemort/
- MemcacheDB http://memcachedb.org/
- GenieDB https://www.crunchbase.com/organization/geniedb
Modelos Orientado a Colunas
Os modelos Orientado a Colunas oferecem forte consistência mas, não garante alta
disponibilidade. Os dados são armazenados em colunas e cada coluna de dado é um índice no
banco. Alguns exemplos são:
- Cassandra http://cassandra.apache.org/
- HBase https://hbase.apache.org/
- Big Table https://cloud.google.com/bigtable/?hl=pt-br
- HyperTable http://www.hypertable.org/
Modelos Orientado a Grafos
Neste modelo os dados são armazenados em nós de um grafo, de acordo com Wanzeller
“Esse tipo de banco é especializado em manter dados fortemente ligados. O twitter armazena
as relações entre os seus usuários no seu próprio banco de dados baseados em grafos, o
FlockDB, que é otimizado para listas de relações muito grandes, leituras e escritas [27]. Alguns
exemplos são: Neo4J, infoGrid e FlockDB [9].” (Diogo Wanzeller 2013)
Empresas que utilizam NoSQL
Escolher o modelo a ser utilizado em uma aplicação vai depender muito da sua aplicação.
NoSQL não veio para substituir o SQL, muito pelo contrário SQL ainda continua “vivo” e muito
bem utilizado em grandes aplicações, ainda há uma necessidade muito grande na utilização de
bancos como SQL.
Por isso, que vai depender muito da aplicação, aplicações que utilizam NoSQL são aquelas
aplicações que precisam ter um desempenho e armazenamento maior quando há um volume
de dados muito grande, precisa ter escalabilidade, flexibilidade, disponibilidade e baixo custo,
essas aplicações de fato se torna recomendado o uso do modelo de dados como NoSQL.
Vejamos algumas empresas que adotam o modelo NoSQL.
A Netlix é uma empresa provedora e produtora global de filmes e séries de televisão, via
streaming, seus usuários chegam a mais de 100 milhões. A empresa utiliza os serviços de
nuvem da AWS e o banco de dados Amazon Simple DB.O Amazon Simple DB é um
armazenamento de dados NoSQL altamente disponível. Para sistemas baseados em Hadoop,
o Apache HBase é uma solução de banco de dados distribuída orientada por colunas
conveniente e de alto desempenho. Sai mais no artigo escrito no blog Netflix Tech Blog
publicado no Medium sobre as tecnologias cloud e bancos NoSQL, que utilizam em sua
plataforma. (https://bit.ly/2LhM5kR)
De acordo com uma publicação do Kevin Weil SVP Product do Twitter referente a bancos de
dados NoSQL e como a empresa usa em suas aplicações. Segundo Weil, os usuários do
Twitter geram 12 terabytes de dados por dia - cerca de quatro petabytes por ano e essa
quantidade está se multiplicando a cada ano. Algumas das tecnologias utilizadas para soluções
NoSQL são, Hadoop, Cassandra e FlockDB.
A rede social Facebook não só utiliza modelos NoSQL como também desenvolveu sua própria
solução de dados o Cassandra. O Cassandra foi criado com o intuito de resolver um problema
inicialmente, de otimização de buscas pelo Facebook. De acordo com Avinash Lakshman um
antigo engenheiro de software do Facebook informa em uma publicação técnica “Este desafio é
sobre o armazenamento de índices reversos de mensagens do Facebook que os usuários do
Facebook enviam e recebem enquanto se comunicam com seus amigos na rede do Facebook.
A quantidade de dados a serem armazenados, a taxa de crescimento dos dados e a exigência
de atendê-los dentro de SLAs estritos tornaram muito aparente que uma nova solução de
armazenamento era absolutamente essencial. A solução necessária para escalar de forma
incremental e de maneira econômica.” (Avinash Lakshman - Cassandra – A structured storage
system on a P2P Network).
Conclusão
Eu citei três exemplos de empresas que utilizam a tecnologia NoSQL em suas aplicações, mas,
existem várias empresas que também utilizam, por exemplo, Globo, Linkedin, Totvs entre
outras. O que essas empresas têm em comum? Além da grande quantidade de dados gerados,
precisam ter uma escalabilidade, performance e dentre outras soluções nas quais descrevo no
ínicio do artigo. Por isso, entre escolher SQL ou NoSQL isso vai depender muito da sua
aplicação e da arquitetura que está sendo construída da sua aplicação.
Cada caso é um caso, mas eu não descartaria a ideia de utilizar modelos como NoSQL caso
isso seja levado em conta os cenários acima na qual descrevi. Vale lembrar também que, não é
só porque muitas empresas grandes que estão utilizando esse modelo de dados que sua
empresa utilizará também. Por mais barato que seja utilizar NoSQL ao invés do SQL, temos
que pensar em recursos, pessoas que estão aptas a trabalharem com esse tipo de tecnologia e
claro investir em treinamentos e conhecer um pouco mais sobre essas tecnologias novas e o
que se pode utilizar. É sempre bom estarmos antenados com as mudanças no mercado e,
sempre pensar em como se beneficiar disso.
Para saber mais sobre o assunto, escute o podcast Café debug que teve uma gravação bem
legal sobre NoSQL
Link: https://soundcloud.com/cafe-de-bug/22-bancos-de-dados-nosql
Referencias
http://nosql-database.org/
http://www.portaldba.com.br/utilizacao-de-bancos-de-dados-nosql-em-aplicacoes-corportativas/
http://data.ime.usp.br/sbbd2012/artigos/pdfs/sbbd_min_01.pdf
http://bdm.unb.br/bitstream/10483/7716/1/2013_DiogoAraujoPachecoWanzeller.pdf
https://pt.slideshare.net/Celio12/trabalho-no-sql-aricelio-de-souza
http://www.bigdatabusiness.com.br/tudo-sobre-big-data/
http://www.addlabs.uff.br/sbsc_site/SBSC2011_NoSQL.pdf
https://pt.wikipedia.org/wiki/ACID
https://dcomp.sor.ufscar.br/verdi/topicosCloud/nosql_artigo.pdf
https://medium.com/netflix-techblog/nosql-at-netflix-e937b660b4c
https://aws.amazon.com/pt/simpledb/
https://pt.slideshare.net/kevinweil/nosql-at-twitter-nosql-eu-2010/2-
Introduction_How_We_Arrived_at
https://code.facebook.com/posts/160967930761450/cassandra-a-structured-storage-system-on-
a-p2p-network/

Mais conteúdo relacionado

Mais procurados (20)

PPTX
Big Data
Suzana Viana Mota
 
PDF
NoSQL Familia de Colunas Apresentação
Augusto Giles
 
PDF
Apresentação Modelo de Gestão de dados para sistemas Colaborativos
Mozart Dornelles Claret
 
PDF
NoSQL
Andre Danelon
 
PPT
Banco de Dados - NoSQL
Marcos Luiz Lins Filho
 
PDF
No sql no desenvolvimento de aplicações web colaborativas
João Gabriel Lima
 
PPTX
OS CINCO Vs DO BIG DATA
Leonardo Dias
 
PPT
Bancos de dados NoSQL - Redis e MongoDB
Paulo Bischof
 
PPT
NoSQL & SQL
Charles Fortes
 
PDF
NoSQL x SQL: Bancos de Dados em Nuvens Computacionais
Carlo Pires
 
ODT
Nosql
Suissa
 
PDF
NoSql e NewSql
Suzana Viana Mota
 
PDF
Desenhar o conceito de data warehouse numa biblioteca da universidade
Aristidis Jesus
 
PPTX
Modelos NoSQL e a Persistência Poliglota
Glaucio Scheibel
 
DOC
Exploracao datawarehouse mineracao_de_dados_ou_olap
KlaytonAlves
 
PPTX
Bancos de Dados Geográficos
Suzana Viana Mota
 
PDF
Datawarehouse
Alana Souza
 
PDF
MAC5855 - NoSQL
Mauricio De Diana
 
PPTX
Aula 4 banco de dados
Jorge Ávila Miranda
 
NoSQL Familia de Colunas Apresentação
Augusto Giles
 
Apresentação Modelo de Gestão de dados para sistemas Colaborativos
Mozart Dornelles Claret
 
Banco de Dados - NoSQL
Marcos Luiz Lins Filho
 
No sql no desenvolvimento de aplicações web colaborativas
João Gabriel Lima
 
OS CINCO Vs DO BIG DATA
Leonardo Dias
 
Bancos de dados NoSQL - Redis e MongoDB
Paulo Bischof
 
NoSQL & SQL
Charles Fortes
 
NoSQL x SQL: Bancos de Dados em Nuvens Computacionais
Carlo Pires
 
Nosql
Suissa
 
NoSql e NewSql
Suzana Viana Mota
 
Desenhar o conceito de data warehouse numa biblioteca da universidade
Aristidis Jesus
 
Modelos NoSQL e a Persistência Poliglota
Glaucio Scheibel
 
Exploracao datawarehouse mineracao_de_dados_ou_olap
KlaytonAlves
 
Bancos de Dados Geográficos
Suzana Viana Mota
 
Datawarehouse
Alana Souza
 
MAC5855 - NoSQL
Mauricio De Diana
 
Aula 4 banco de dados
Jorge Ávila Miranda
 

Semelhante a Pesquisa sobre no sql (20)

PDF
NoSQL Familia de Colunas Monografia
Augusto Giles
 
PDF
APOSTILA 1 _ ADMINISTRADOR DE BANCO DE DADOS (1).pdf
LinaKelly2
 
PPT
Bancos de dados NoSQL (Not only sql)
Rodrigo De Souza Valerio
 
PDF
Projeto de Banco de Dados - Capítulo 1
Januário Neto
 
PDF
Artigo Nosql
Ademir Tadeu
 
PDF
Bancos de dados no sql – uma nova abordagem
João Gabriel Lima
 
PDF
Wperformance 2015 (2)
Marcelo Iury d
 
PPS
Apresentação
Joel Junior
 
PDF
Material Seminário NoSQL
Lorran Pegoretti
 
PPTX
Ingestão de Dados
Alexandre Nicolau .·.
 
DOCX
4 semestre trabalho individual analise e desenvolvimento de sistemas 2014
WANDERSON JONER
 
DOCX
Modeloestruturaçaoads
csmp
 
DOCX
Ver
csmp
 
PPTX
Módulo 12 - Introdução aos sistemas de informação
Luis Ferreira
 
PDF
BANCO DE DADOS RELACIONAIS
Antonio Pedro
 
PPT
Introdução à Banco de Dados
Bruno Siqueira
 
PPTX
Banco de dados aula 2
Albert Belchior
 
PDF
Banco de dados parte 01
Barbara Beatriz Santos
 
PPT
Universidade federal do amazonas Banco de Dados - Apresentação final
Renan Levy
 
NoSQL Familia de Colunas Monografia
Augusto Giles
 
APOSTILA 1 _ ADMINISTRADOR DE BANCO DE DADOS (1).pdf
LinaKelly2
 
Bancos de dados NoSQL (Not only sql)
Rodrigo De Souza Valerio
 
Projeto de Banco de Dados - Capítulo 1
Januário Neto
 
Artigo Nosql
Ademir Tadeu
 
Bancos de dados no sql – uma nova abordagem
João Gabriel Lima
 
Wperformance 2015 (2)
Marcelo Iury d
 
Apresentação
Joel Junior
 
Material Seminário NoSQL
Lorran Pegoretti
 
Ingestão de Dados
Alexandre Nicolau .·.
 
4 semestre trabalho individual analise e desenvolvimento de sistemas 2014
WANDERSON JONER
 
Modeloestruturaçaoads
csmp
 
Ver
csmp
 
Módulo 12 - Introdução aos sistemas de informação
Luis Ferreira
 
BANCO DE DADOS RELACIONAIS
Antonio Pedro
 
Introdução à Banco de Dados
Bruno Siqueira
 
Banco de dados aula 2
Albert Belchior
 
Banco de dados parte 01
Barbara Beatriz Santos
 
Universidade federal do amazonas Banco de Dados - Apresentação final
Renan Levy
 
Anúncio

Mais de Jéssica Nathany Carvalho Freitas (9)

PDF
Web por baixo dos panos completo
Jéssica Nathany Carvalho Freitas
 
PDF
Treinamento poo-carreira-unica
Jéssica Nathany Carvalho Freitas
 
PPTX
Boas práticas em programação
Jéssica Nathany Carvalho Freitas
 
PPTX
Segurança em Aplicações Web com OWASP
Jéssica Nathany Carvalho Freitas
 
PDF
Resumo do livro Já Entendi da autora Gladys Mariotto
Jéssica Nathany Carvalho Freitas
 
PPTX
Apresentação Arquitetura MVC
Jéssica Nathany Carvalho Freitas
 
PDF
Tecnologias cloud computing
Jéssica Nathany Carvalho Freitas
 
PPTX
Principais diagramas da UML
Jéssica Nathany Carvalho Freitas
 
PPTX
Programação Orientado a Objetos
Jéssica Nathany Carvalho Freitas
 
Web por baixo dos panos completo
Jéssica Nathany Carvalho Freitas
 
Treinamento poo-carreira-unica
Jéssica Nathany Carvalho Freitas
 
Boas práticas em programação
Jéssica Nathany Carvalho Freitas
 
Segurança em Aplicações Web com OWASP
Jéssica Nathany Carvalho Freitas
 
Resumo do livro Já Entendi da autora Gladys Mariotto
Jéssica Nathany Carvalho Freitas
 
Apresentação Arquitetura MVC
Jéssica Nathany Carvalho Freitas
 
Tecnologias cloud computing
Jéssica Nathany Carvalho Freitas
 
Principais diagramas da UML
Jéssica Nathany Carvalho Freitas
 
Programação Orientado a Objetos
Jéssica Nathany Carvalho Freitas
 
Anúncio

Pesquisa sobre no sql

  • 1. Mundo NoSQL São Paulo, 04 de Junho de 2018 Jéssica Nathany – Software Development Pós-graduada em Arquitetura e Desenvolvimento de Sofware
  • 3. Objetivo O objetivo deste artigo é apresentar os conceitos de Bancos de Dados Não Relacionais, baseando-se em algumas IDEs do mercado, e quando devemos utilizá-la em nossas aplicações. Por mais que não seja algo novo e, embora seja algo que vem sido tanto discutido no momento, NoSQL (Not Only SQL - Não Somente SQL) vamos entender um pouco por trás como isso funciona e quais situações devemos utilizar. Introdução A sociedade está vivenciando um acúmulo de informações a cada instante, com uma quantidade de dados cada vez maior parece que não há mais espaço para guardar tantos dados e informação que só aumenta com o decorrer do tempo. Em seu artigo Wanzeller “Conforme Borkar et al.[17] descreve, as empresas passaram a monitorar compras de clientes, pesquisas de produtos, sites de relacionamento e diversas outras fontes para aumentar a eficácia do seu marketing e dos serviços ofertados aos clientes; governos e empresas estão rastreando conteúdos de blogs e tweets para realizar análise de sentimentos; e organizações públicas de saúde estão monitorando artigos de notícias, tweets e tendencias de pesquisas na web para acompanhar o processo de epidemias. Esse grande volume de dados disponíveis e gerenciados leva a muitos desafios tanto para a academia quanto para a sociedade em geral”. (Diogo Wanzeler - 2013 p.1) A tecnologia avança, ferramentas são criadas, novas versões de frameworks vão surgindo tudo para facilitar a vida de quem desenvolve softwares. Mas, um dos grandes desafios atualmente da área da Computação é, o processamento e a manipulação da quantidade excessiva de dados, no termo Big Data. Esse crescimento começou já no período do surgimento da Web 2.0, que se baseia em uma rede onde o usuário não apenas usufrui dela e sim contribui com seu conteúdo na rede. Big Data
  • 4. Big Data (Data Analytics) ou Ciência dos Dados, descreve o imenso volume de dados armazenados, onde uma enorme quantidade de registro é criada simultaneamente. Exemplo: dados em redes sociais, economia, IOT, bancos, blogs, notícias, dados de transações, dados privados, dados públicos e por aí vai uma infinidade de dados. De acordo com Hekina que descreve o big data como: “O termo Big Data é tão amplo quanto seu nome sugere. Para contextualizá-lo e dar sentido a ele, caro leitor, segue uma breve explicação: nós vivemos em uma Era em que, a (apenas) cada um ano e meio, se gera a mesma quantidade de dados já criados pela humanidade em todos os tempos. O Vs presente no big data são: ● Volume: quantidade de dados acomulados; ● Variedade: meios de propagação do tipo destes dados; ● Veracidade: verificar se estes dados são confiáveis; ● Valor: resultado obtido com o uso das ferramentas do big data O objetivo das ferramentas do big data é a manipulação de dados estruturados e não estruturados, com o intuito de extrair valor destas correlações, tentando fazer uma análise destes dados e compreendê-los para assim poder chegar a uma conclusão ou resultado esperado. O tratamento destes dados é feito com algoritmos inteligentes, que nada mais são sequência de instruções que tem como objetivo chegar a um resultado esperado, uma solução para um problema. O tratamento dos dados no Big Data é feito com a utilização de algoritmos inteligente, utilizando o aprendizado de máquina (Machine Learning), para a coleta, processamento, separação destes dados. Alguns destes algoritmos para o aprendizado de máquina são: rede neural, árvore de decisão e classificação linear . O que é NoSQL ? NoSQL (Not Only SQL - Não Somente SQL) é um termo genérico utilizado para chamar uma classe definida de coleção de dados. O termo NoSQL foi re-introduzido no início de 2009 por um funcionário do Rackspace, Eric Evans, quando Johan Oskarsson da Last.fm queria organizar um evento para discutir bancos de dados open source distribuídos. O nome — uma tentativa de descrever o surgimento de um número crescente de banco de dados não relacionais, que não tinham a preocupação de fornecer garantias ACID — faz referência ao esquema de atribuição de nomes dos bancos de dados relacionais mais populares do mercado: MySQL, MS SQL, PostgreSQL etc (Wikipédia). Essa coleção de dados, vem tendo um crescimento bem favorável nos últimos anos, devido a algumas limitações existentes que os bancos de dados convencionais (SQL) tem. O NoSQL foi projetado para ser ter alta escalabilidade, alta disponibilidade para armazenar dados semi
  • 5. estruturados com alto desempenho. Vejamos algumas das características que diferencia o NoSQL do SQL são: ● Não há relacionamento entre as tabelas; ● Schema Less; ● Linguagens independentes; ● Versionamento e gerenciamento de transações; ● Model less rodam em ambientes paralelos e distribuídos com alta disponibilidade e intolerância a falhas; ● Soluções Poliglotas onde uma mesma aplicação pode ter várias soluções coleções de dados associadas conforme a funcionalidade da aplicação. ● Alta performance; ● Alta escalabilidade; ● Distribuído (Figura 1 Exemplo Banco Poliglota)
  • 6. Teorema de CAP (Figura 2 Teorema de CAP) “ O teorema de CAP (também chamado de Teorema de Brewer’s[12]) propõe um modelo mais realístico do que acontece na prática, para entendê-lo teremos que entender a fundo o que as propriedades ACID propõem.” (Renato Molina). Conforme mostrado acima, a imagem do teorema representa três requisitos que influenciam o sistema de dados distribuídos, sendo eles: consistência, disponibilidade e tolerância a falhas (consistency, availability and partition tolerance).
  • 7. Consistência - Todos os clientes enxergam os mesmos dados, ou seja, é um comportamento onde o sistema garante a leitura dos dados e mesmo estes dados terem sido atualizados. Mesmo que alguém tenha feito uma mudança no dado ou se esse dado tenha sido criado em algum outro nó, o cliente sempre verá estes dados atualizados. Disponibilidade - Refere-se o sistema estar disponível ao cliente e estar operando mesmo falhas, ou seja, quando o cliente lê um registro ou escrever algum dado, em nenhum momento ele poderá receber uma mensagem “O sistema encontra-se indisponível!”, imagina essa mesma situação em um usuário do Twitter, ao enviar uma mensagem receber em sua tela uma informação dessas. Isso não quer dizer que o sistema não pode conter erros ou falhas em um nó, isso quer dizer que, mesmo ocorrendo uma falha em um nó ou um nó ficar offline, o sistema deverá continuar disponível ao cliente, porque ele precisa manter essa disponibilidade. Tolerância a Partição - Tolerância a falha significa que, mesmo que o sistema tenha uma falha de rede ou conectividade que seja, o mesmo deve continuar funcionando. Pode se dizer que um sistema que tenha alguma falha de hardware/software algum problema que seja continua disponível para o cliente, ele é um sistema tolerante a falhas. O banco de dados NoSQL possui quatro modelos de dados principais que são: ● Modelos Orientado a Documento (MongoDB, CouchDB) ● Modelos Orientado a Chave - valor (Memcached, Riak e Redis) ● Modelos Orientado a Colunas (Cassandra, HBase e Hypertable) ● Modelos Orientado a Grafo (Neo4J, InfoGrid, AllegroGraph e Virtuoso) Modelos Orientado a Documento Este modelo de dados tem como objetivo armazenar coleções de documentos encapsulados semi estruturados em formato JSON ou XML. Um documento, nada mais é do que um objeto contendo um identificador único com um ou mais pares de campo/valor, que podem ser strings, listas ou documentos aninhados. As principais soluções que adotam esse modelo são: CouchDB e MongoDB, ambos utilizam JSON para armazenar os dados . - CouchDB http://couchdb.apache.org/ - MongoDB https://www.mongodb.com/
  • 8. (Figura 1: Query SQL e NoSQL exemplo com MongoDB) Modelos Orientado a Chave-valor Esse modelo armazena dados indexados por um valor chave, esse tipo de banco de dados é otimizado para cargas de trabalho com um consumo muito alto de leitura, pois sendo, redes sociais, jogos e etc. “O armazenando deste tipo é semelhante ao uso de mapas, ou dicionários, onde os dados são endereçados por uma única chave, permitindo aos clientes colocar e solicitar valores por chaves.” (Ivan Friess - 2013). Alguns exemplos são: - DynamoDB https://aws.amazon.com/pt/dynamodb/ - Redis https://redis.io/ - Riak http://basho.com/products/riak-kv/ - Voldemort http://www.project-voldemort.com/voldemort/ - MemcacheDB http://memcachedb.org/ - GenieDB https://www.crunchbase.com/organization/geniedb Modelos Orientado a Colunas Os modelos Orientado a Colunas oferecem forte consistência mas, não garante alta disponibilidade. Os dados são armazenados em colunas e cada coluna de dado é um índice no banco. Alguns exemplos são: - Cassandra http://cassandra.apache.org/
  • 9. - HBase https://hbase.apache.org/ - Big Table https://cloud.google.com/bigtable/?hl=pt-br - HyperTable http://www.hypertable.org/ Modelos Orientado a Grafos Neste modelo os dados são armazenados em nós de um grafo, de acordo com Wanzeller “Esse tipo de banco é especializado em manter dados fortemente ligados. O twitter armazena as relações entre os seus usuários no seu próprio banco de dados baseados em grafos, o FlockDB, que é otimizado para listas de relações muito grandes, leituras e escritas [27]. Alguns exemplos são: Neo4J, infoGrid e FlockDB [9].” (Diogo Wanzeller 2013) Empresas que utilizam NoSQL Escolher o modelo a ser utilizado em uma aplicação vai depender muito da sua aplicação. NoSQL não veio para substituir o SQL, muito pelo contrário SQL ainda continua “vivo” e muito bem utilizado em grandes aplicações, ainda há uma necessidade muito grande na utilização de bancos como SQL. Por isso, que vai depender muito da aplicação, aplicações que utilizam NoSQL são aquelas aplicações que precisam ter um desempenho e armazenamento maior quando há um volume de dados muito grande, precisa ter escalabilidade, flexibilidade, disponibilidade e baixo custo, essas aplicações de fato se torna recomendado o uso do modelo de dados como NoSQL. Vejamos algumas empresas que adotam o modelo NoSQL.
  • 10. A Netlix é uma empresa provedora e produtora global de filmes e séries de televisão, via streaming, seus usuários chegam a mais de 100 milhões. A empresa utiliza os serviços de nuvem da AWS e o banco de dados Amazon Simple DB.O Amazon Simple DB é um armazenamento de dados NoSQL altamente disponível. Para sistemas baseados em Hadoop, o Apache HBase é uma solução de banco de dados distribuída orientada por colunas conveniente e de alto desempenho. Sai mais no artigo escrito no blog Netflix Tech Blog publicado no Medium sobre as tecnologias cloud e bancos NoSQL, que utilizam em sua plataforma. (https://bit.ly/2LhM5kR) De acordo com uma publicação do Kevin Weil SVP Product do Twitter referente a bancos de dados NoSQL e como a empresa usa em suas aplicações. Segundo Weil, os usuários do Twitter geram 12 terabytes de dados por dia - cerca de quatro petabytes por ano e essa quantidade está se multiplicando a cada ano. Algumas das tecnologias utilizadas para soluções NoSQL são, Hadoop, Cassandra e FlockDB. A rede social Facebook não só utiliza modelos NoSQL como também desenvolveu sua própria solução de dados o Cassandra. O Cassandra foi criado com o intuito de resolver um problema inicialmente, de otimização de buscas pelo Facebook. De acordo com Avinash Lakshman um antigo engenheiro de software do Facebook informa em uma publicação técnica “Este desafio é sobre o armazenamento de índices reversos de mensagens do Facebook que os usuários do Facebook enviam e recebem enquanto se comunicam com seus amigos na rede do Facebook. A quantidade de dados a serem armazenados, a taxa de crescimento dos dados e a exigência
  • 11. de atendê-los dentro de SLAs estritos tornaram muito aparente que uma nova solução de armazenamento era absolutamente essencial. A solução necessária para escalar de forma incremental e de maneira econômica.” (Avinash Lakshman - Cassandra – A structured storage system on a P2P Network). Conclusão Eu citei três exemplos de empresas que utilizam a tecnologia NoSQL em suas aplicações, mas, existem várias empresas que também utilizam, por exemplo, Globo, Linkedin, Totvs entre outras. O que essas empresas têm em comum? Além da grande quantidade de dados gerados, precisam ter uma escalabilidade, performance e dentre outras soluções nas quais descrevo no ínicio do artigo. Por isso, entre escolher SQL ou NoSQL isso vai depender muito da sua aplicação e da arquitetura que está sendo construída da sua aplicação. Cada caso é um caso, mas eu não descartaria a ideia de utilizar modelos como NoSQL caso isso seja levado em conta os cenários acima na qual descrevi. Vale lembrar também que, não é só porque muitas empresas grandes que estão utilizando esse modelo de dados que sua empresa utilizará também. Por mais barato que seja utilizar NoSQL ao invés do SQL, temos que pensar em recursos, pessoas que estão aptas a trabalharem com esse tipo de tecnologia e claro investir em treinamentos e conhecer um pouco mais sobre essas tecnologias novas e o que se pode utilizar. É sempre bom estarmos antenados com as mudanças no mercado e, sempre pensar em como se beneficiar disso. Para saber mais sobre o assunto, escute o podcast Café debug que teve uma gravação bem legal sobre NoSQL Link: https://soundcloud.com/cafe-de-bug/22-bancos-de-dados-nosql Referencias http://nosql-database.org/ http://www.portaldba.com.br/utilizacao-de-bancos-de-dados-nosql-em-aplicacoes-corportativas/ http://data.ime.usp.br/sbbd2012/artigos/pdfs/sbbd_min_01.pdf http://bdm.unb.br/bitstream/10483/7716/1/2013_DiogoAraujoPachecoWanzeller.pdf