Ademir Rafael Marques Guedes NoSQL O termo foi usado pela primeira vez em 1998, como o nome de um banco de dados relacional de código aberto que não possuía um interface SQL. O termo começou então a ser utilizado para definir a tendência de não se utilizar bancos de dados relacionais. Posteriormente, passou a ser utilizado como Not Only SQL (Não Somente SQL) para a prática de utilizar bancos de dados não-relacionais associados a bancos relacionais, quando necessário NoSQL NoSQL são portanto diferentes sistemas de armazenamento que vieram para suprir necessidades em demandas de dados semiestruturados, onde os bancos de dados tradicionais (relacionais) são ineficazes ou pouco eficazes. Embora o termo dê essa impressão, o termo não está relacionado à não-utilização de SQL, mas sim dos bancos relacionais e do conceito entidaderelacionamento. Características Registros schema-free Tolerância à falha Escalabilidade Clusterização Necessidades Sistemas em nuvem Análises sociais Alta escalabilidade Performance na consulta/escrita Utilidade NoSQL surgiu da necessidade de uma performance superior e de uma maior escalabilidade. Bancos de dados relacionais são muito restritos , sendo necessária a distribuição vertical de servidores, ou seja, quanto mais dados, mais memória e mais disco um servidor precisa. Utilidade NoSQL tem grande facilidade na distribuição horizontal, ou seja, uma demanda por mais espaço, pode ser suprida com mais servidores, não necessariamente de alta performance. Um grande utilizador desse conceito é o Google, que usa computadores de pequeno e médio porte para a distribuição dos dados. Essa forma de utilização é muito mais eficiente e econômica. Arquitetura Diferente dos bancos relacionais, que se utilizam de linhas de diversas tabelas e da relação entre elas, para armazenar os dados, nos bancos NoSQL, toda a informação necessária estará agrupada no mesmo registro. Os bancos de dados NoSQL são divididos de acordo com a arquitetura utilizada para armazenamento e diversas opções de arquitetura são possíveis. Arquitetura Column Families/ Wide-Columns Store Document Store /Document Databases Key Value/Tuple Store Graph Databases Object Databases Grid Database XML Databases. Key Value/Tuple Store Tipo mais comum em NoSQL. Baseado em conjuntos chave-valor Exemplos: BerkeleyDB, Tokyo Cabinet, Project Voldermort, MemcacheDB, SimpleBD Key Value/Tuple Store Wide-Columns Store Utiliza os conceitos de bancos relacionais aliados aos conceitos de estrutura variável de um banco key-value. Basicamente, funciona como tabelas, em que cada coluna pode ser subdividida em conjuntos de valores. Exemplos: HBase (Apache), HiperTable, Cassandra (Apache), BigTable(Google) Wide-Columns Store Document Databases Baseado em documentos XML ou JSON, podem ser localizados pelo seu id único ou por qualquer registro que tenha no documento. Exemplos: CouchDB (Apache), MongoDB, Riak, RavenDB Document Databases Graph Databases Com uma complexibilidade maior, esses bancos de dados guardam objetos, e não registros como os outros tipos de NoSQL. A busca desses itens é feita pela navegação desses objetos. Exemplos: Neo4J, InfoGrid, HyperGraphDB, BigData Graph Databases