Decidimos começar o nosso estudo pelo NoSql (Not Only Sql) . Trata-se de uma classe definida de banco de dados não relacional que em sua composição inclui características de transações ACID que quer dizer (Atomicidade , Consistência , Isolamento e Durabilidade ). O Nosql foi criado por Carlo Strozzi e o seu conhecido termo foi utilizado pela primeira vez em 1998 como um banco de dados open surce sem interface sql. Porém o seu criador achou que o banco de dados NoSql era totalmente diferente dos bancos de dados relacionais existentes e por tanto deveria ser chamado 'NoRel' ou NoSql.
MongoDB vem da palavra Humongous que em inglês significa algo grandioso .
Os bancos de dados que utilizam a estrutura Nosql não utilizam tabelas fixas , chaves estrangeiras e Join´s . Não possuindo também a primeira forma normal 1NF.
O NoSql não veio com a proposta de substituir os bancos de dados relacionais existentes , pelo contrário o novo banco de dados veio com a proposta de suprir as necessidades de demandas e mercados onde os SGBDS Relacionais não supriam como a escalabilidade , performance , suporte a dados estruturados e sub colunas . Como os bancos de dados relacionais são muito restritos a escalabilidade e performance principalmente, o NoSql tem uma grande facilidade na distribuição horizontal , ou seja , quanto mais dados , mais servidores . Grandes empresas como o Google , Armazon , Facebook, Linkedin, Twitter, Yahoo, NYTimes entre outros utilizam bancos de dados NoSql para armazenar e gerenciar os seus dados .
Os bancos NoSql agrupam toda a informação em um mesmo registro ao invés de relacionar os dados entre várias tabelas . São subdivididos pelo se núcleo e como trabalham com os dados .
Suas subdivisões são :
WIDE COLUNMS STORE
Suportam várias linhas e colunas e permitem subcolunas
Big Table (Google)
HBase (Apache)
Hipertable
Cassandra (Facebook)
DOCUMENT STORE
Utiliza documentos em XML ou JSON , são localizados por um id único ou por qualquer registro que tenha no documento .
CouchDB (Apache)
MongoDB
Riak
RavenDB
KEY VALUE STORE
Este é o tipo de banco de dados NoSql mais simples , e possui maior escalabilidade .
Berkley DB
Tokyo Cabinet
Project Voldermort
Simple DB
MemcacheDB
GRAPH STORE
Com uma maior complexidade estes bancos de dados guardam objetos e não registros como outros tipos de NoSql . A busca pelos itens é realizada pela navegação desses objetos .
Neo4J
InfoGrid
HyperGraphDB
BigData
COLUMN ORIENTED STORE
Esses são bancos de dados relacionais que armazena dados em coluna porém possui características NoSql. Os dados são armazenados em colunas possuindo mais escalabilidade do que os SGBD´S relacionais.
Vertica
MonetDB
LucidDB
Infobright
Ingres/Vectorwise