O documento fornece uma introdução a vários bancos de dados NoSQL de código aberto, incluindo Cassandra, Redis, MongoDB e Neo4J. Resume os principais recursos e casos de uso recomendados para cada um.
1. Banco de Dados NoSQL de
código aberto
Jean Carlo Nascimento aka SUISSA Nodeware
Líder Técnico http://www.nodeware.com.br
Email: suissa@nodeware.com.br Twitter:@nodeware
Twitter: @osuissa
http://about.me/suissa
2. Sobre o autor
● Desenvolvedor web há 8 anos
● Formado pela UTF-PR em SI
● Especialista em Desenvolvimento Web
● Criador do Sampa.js e FrontinSampa
● Evangelista Node.js e NoSQL
● nosqlbr.com.br
● javascriptbrasil.com
● jquerybrasil.org
12. Cassandra
● O melhor do BigTable e Dynamo
● Java
● Licença Apache
● Protocol personalizado, Thrift
http://cassandra.apache.org/
13. Cassandra
● Consulta por faixa de coluna e chaves
● BigTable-como características: colunas, famílias de
coluna
● Tem índices secundários
● As gravações são muito mais rápido do que lê (!)
● Map / Reduce possível com Apache Hadoop
http://cassandra.apache.org/
14. Cassandra
Melhor usado: Quando você escreve mais do que você lê
(logging). Se todos os componentes do sistema deve ser em
Java.
Por exemplo: Bancos, setor financeiro (Embora não
necessariamente para transações financeiras, mas estas
indústrias são muito maiores do que isso). Ótimo para
aplicações em tempo real e análise de dados.
http://cassandra.apache.org/
18. Redis
● Replicação master-slave
● Possui transações
● Valores podem expirar (como em um cache)
● Pub/Sub permite implementação de aplicação de
mensagens
http://redis.io/
19. Redis
Melhor uso: Para mudança rápida de dados com um
banco de dados de tamanho previsível (deve caber
principalmente na memória).
Exemplos: Os preços das ações. Analytics. Coleção de
dados em tempo real. Comunicação em tempo real.
http://redis.io/
20.
21.
22. MongoDB
● Written in: C++
● Mantém algumas propriedades favoráveis de SQL.
(Query, index)
● Licença: AGPL
● Protocolo personalizado, REST
http://www.mongodb.org/
23. MongoDB
● Master / slave de replicação (failover automático com
conjuntos de réplicas)
● Sharding embutido
● As consultas são expressões javascript
● Executa funções javascript do lado do servidor
http://www.mongodb.org/
24. MongoDB
● Usa arquivos de memória mapeada para
armazenamento de dados
● Em sistemas de 32 bits, limitado a ~ 2.5Gb
● GridFS para armazenar grande de dados de metadados
● Tem indexação geoespacial
http://www.mongodb.org/
25. MongoDB
Melhor usado: Se você precisar de consultas dinâmicas.
Se você precisa de bom desempenho em um banco de
dados grande. Sistemas de logging.
Por exemplo: Para a maioria das coisas que você faria
com MySQL ou PostgreSQL, mas ter colunas predefinidas
realmenteseguram você.
http://www.mongodb.org/
29. Neo4J
● Standalone, ou embutido em aplicações Java
● ACID completo (incluindo dados duráveis)
● Ambos os nós e os relacionamentos podem ter
metadados
● Linguagem de consulta integrada ("Cypher")
● Linguagem "Gremlin" pode ser usada
● Indexação de nós e relacionamentos
http://neo4j.org/
30. Neo4J
● Administrador web agradável auto-suficiente
● Vários algoritmos de busca de caminho
● Indexação de chaves e relacionamentos
● Optimizado para ler
http://neo4j.org/
31. Neo4J
Melhor usado: Para gráfico de estilo, ricos ou complexos,
os dados interligados. Neo4j é bastante diferente dos
outros neste sentido.
Por exemplo: relações sociais, transportes públicos,
mapas rodoviários, topologias de rede.
http://neo4j.org/