Tipos de banco de dados


Índice

O que é um banco de dados

//TODO: Complementar


Tipos de banco de dados

//TODO: Complementar

Banco de dados relacionais (relational)

Banco de dados relacionais, ou em inglês: relational database management system (RDBMS) são bancos que tem as seguintes características:

Exemplos de Banco de dados relacionais:

Esses bancos utilizam a linguagem SQL (Structured Query Language), que é uma linguagem declarativa (e não imperativa como C++) para manipulação dos dados em banco de dados relacionais (inserir, alterar e excluir dados). A linguagem foi criada em 1974 e teve sua padronização (SQL ANSI) em 1986, formalmente: SQL-86

Cada banco de dados relacional utiliza uma extensão dessa linguagem para manipular os dados, por exemplo:

Cara linguagem tem modificações implementadas pelo desenvolvedor do banco de dados e essas modificações não são compatíveis entre si. Então, por exemplo, declarar uma variável no SQL SERVER é diferente de fazer a mesma coisa no ORACLE.

NoSQL

“NoSQL” (originalmente “non-SQL” ou “non-relational”) é um termo que define qualquer alternativa aos tradicionais bancos de dados que utilizam SQL.

NoSQL - Banco de dados de documento (document database)

Armazenam os dados em JSON, BSON ou XML. A grande vantagem é que os dados são armazenados em um formato muito parecido com o que a aplicação utiliza, então não é necessário realizar grandes modificações, a aplicação pode simplesmente enviar os dados que está utilizando para serem gravados.

Exemplos de banco de dados de documentos:

NoSQL - Banco chave valor (key-value database ou key value store)

Os dados gravados são associados sem a uma chave única e são sempre armazenados e recuperados utilizando essa chave. São banco de dados muito utilizados por exemplo para cache, como é o caso do Redis.

Exemplos de banco de dados de chave valor:

NoSQL - Banco orientado a colunas (column-oriented database)

//TODO: Complementar

NoSQL - Banco de dados de Grafo (graph database)

//TODO: Complementar


Teorema CAP

Teorema do CAP, também chamado de Teorema de Brewer foi publicado pelo cientista da computação Eric Brewer em 1998, esse teorema afirma que é impossível que o armazenamento de dados distribuído forneça simultaneamente mais de duas das três garantias seguintes:

De forma resumida, pensando em um banco de dados com dois nós temos:

Não é possível ter as três garantias ao mesmo tempo porque os banco de dados vão estar ligados pela rede e a rede pode falhar.

Na presença de partições, são dadas duas opções: consistência ou disponibilidade. Ao escolher consistência em relação à disponibilidade, o sistema retornará um erro ou um tempo limite se informações específicas não puderem ser garantidamente atualizadas devido à sua partilha na rede. Ao escolher disponibilidade sobre consistência, o sistema sempre processará a consulta e tentará retornar a versão disponível mais recente da informação, mesmo que não possa garantir que ela esteja atualizada devido às partições.

Vamos considerar um exemplo: Em um banco de dados com 2 nós, note que como tempos 2 nós já escolhemos uma das garantias (P - partição), se ao tentar escrever uma informação no nó 1 e a comunicação entre o nó 1 e o nó 2 não estiver disponível:

Duas considerações importantes:

Exemplos de banco de dados de cada tipo:

C+A = Bancos relacionais (SQL Server, PostgreSQL, MySQL, …) C+P = Mongo, Redis, Memcache A+P = Dynamo, Cassandra, Couchbase


ACID

//TODO: Complementar



Comentários