# Banco de dados relacionais

- DBR = tabelas (entidades) formadas por colunas e linhas
- Tabelas possuem restrições e se inter-relacionam
- Manipuladas via SQL e geram Result Sets
- Se relacionam através das colunas, comum que haja joins
- Normalização = menos redundância e mais consistência
- Exemplos: Oracle, SQL Server, MySQL, Sybase, DB2, PostgreSQL, etc
- Dominam, melhor custo-benefício (simplicidade, robustez, flexibilidade, desempenho, escalabilidade e compatibilidade) no tratamento de dados em geral.
- Para oferecer tanto, grande complexidade interna:

- Um SELECT simples pode ter várias de possibilidades de ser resolvido
- Optimizer deve escolher on-the-fly (execution plan) baseando-se em algorítmos complexos

- O problema com DBRs

- solução em cada área geralmente é pior do que solução isolada
- mas nunca houve muita necessidade de avançar
- e quando houve, sempre alguma alternativa foi criada

# Surgimento da necessidade

- Hoje, crescente aumento de apps e dados

- Twitter: 7 TB/dia, 2 PB/ano (2010) - Apache Cassandra
- Facebook: TBs de índices por +600 nós - Apache Cassandra
- Google: group of 8069 servers, 1.2 million requests/s (2006) - BigTable (Google Reader, Google Maps, Google Book Search, Google Earth, Blogger.com, Google Code hosting, Orkut, YouTube, Gmail)

- Escalabilidade horizontal é necessária
- RDBMs escalam bem poucos servidores, mas centenas e milhares ...
- Plataformas de Cloud Computing devem ter elasticidade

# NoSQL a próxima geração de banco de dados

- Ganhou força no início de 2009
- document-oriented, Internet-facing, attribute-oriented, distributed database, sharded sorted arrays, distributed hash table, key/value database, noSQL
- "no to sql", "Not Only SQL"
- Voltado para: grandes bases de dados (PB de dados com alta taxa de crescimento) distribuídos entre milhares de nós espalhados em diferentes data centers (formando clusters) e com necessidade de acesso instantâneo
- Características:

- non-relacional
- distribuído
- escalável horizontalmente (mais computadores)
- de fácil replicação
- API simples, alguns usam SQL
- BASE (not ACID)
- consistência fica por conta da aplicação

- Todos relaxam nas propriedades ACID, melhor custo-benefício de acordo com o escopo do negócio

Fontes:
  Is the Relational Database Doomed?, Tony Brain, 2009, http://www.readwriteweb.com
  Your Ultimate Guide to the Non - Relational Universe!, http://nosql-database.org/