CouchDB - Introdução

O sistema de gerenciamento de banco de dados fornece mecanismo para armazenamento e recuperação de dados. Existem três tipos principais de sistemas de gerenciamento de banco de dados: RDBMS (Relational Database management Systems), OLAP (Online Analytical Processing Systems) e NoSQL.

RDBMS

RDBMS significa Relational Database Management System. O RDBMS é a base do SQL e de todos os sistemas de banco de dados modernos, como MS SQL Server, IBM DB2, Oracle, MySQL e Microsoft Access.

Um sistema de gerenciamento de banco de dados relacional (RDBMS) é um sistema de gerenciamento de banco de dados (DBMS) que se baseia no modelo relacional introduzido por EF Codd.

Os dados em RDBMS são armazenados em objetos de banco de dados chamados tables. A tabela é uma coleção de entradas de dados relacionadas e consiste em colunas e linhas. Ele armazena apenas dados estruturados.

OLAP

O Online Analytical Processing Server (OLAP) é baseado no modelo de dados multidimensional. Ele permite que gerentes e analistas obtenham uma visão das informações por meio de acesso rápido, consistente e interativo às informações.

Bancos de dados NoSQL

Um banco de dados NoSQL (às vezes chamado de Not Only SQL) é um banco de dados que fornece um mecanismo para armazenar e recuperar dados além das relações tabulares usadas em bancos de dados relacionais. Esses bancos de dados não têm esquemas, suportam replicação fácil, têm API simples, eventualmente consistentes e podem lidar com grandes quantidades de dados (big data).

O objetivo principal de um banco de dados NoSQL é ter o seguinte -

  • Simplicidade de design,
  • Escala horizontal e
  • Controle mais preciso sobre a disponibilidade.

Os bancos de dados NoSQL usam estruturas de dados diferentes em comparação aos bancos de dados relacionais. Isso torna algumas operações mais rápidas no NoSQL. A adequação de um determinado banco de dados NoSQL depende do problema que ele deve resolver. Esses bancos de dados armazenam dados estruturados e não estruturados, como arquivos de áudio, arquivos de vídeo, documentos, etc. Esses bancos de dados NoSQL são classificados em três tipos e são explicados a seguir.

Key-value Store- Esses bancos de dados são projetados para armazenar dados em pares de valores-chave e esses bancos de dados não terão nenhum esquema. Nesses bancos de dados, cada valor de dados consiste em uma chave indexada e um valor para essa chave.

Exemplos - BerkeleyDB, Cassandra, DynamoDB, Riak.

Column Store- Nesses bancos de dados, os dados são armazenados em células agrupadas em colunas de dados e essas colunas são agrupadas em famílias de colunas. Esses grupos de colunas podem conter qualquer número de colunas.

Exemplos - BigTable, HBase e HyperTable.

Document Store- Esses são os bancos de dados desenvolvidos com base na ideia básica de armazenamentos de valores-chave onde "documentos" contêm dados mais complexos. Aqui, cada documento recebe uma chave exclusiva, que é usada para recuperar o documento. Eles são projetados para armazenar, recuperar e gerenciar informações orientadas a documentos, também conhecidas como dados semiestruturados.

Exemplos - CouchDB e MongoDB.

O que é CouchDB?

CouchDB é um banco de dados de código aberto desenvolvido pela Apache Software Foundation. O foco está na facilidade de uso, abraçando a web. É um banco de dados de armazenamento de documentos NoSQL.

Ele usa JSON, para armazenar dados (documentos), java script como sua linguagem de consulta para transformar os documentos, protocolo http para api acessar os documentos, consultar os índices com o navegador web. É um aplicativo multimestre lançado em 2005 e se tornou um projeto do Apache em 2008.

Por que CouchDB?

  • O CouchDB tem uma API REST baseada em HTTP, que ajuda a se comunicar com o banco de dados facilmente. E a estrutura simples de recursos e métodos HTTP (GET, PUT, DELETE) são fáceis de entender e usar.

  • Como armazenamos dados na estrutura flexível baseada em documentos, não há necessidade de se preocupar com a estrutura dos dados.

  • Os usuários recebem um poderoso mapeamento de dados, que permite consultar, combinar e filtrar as informações.

  • O CouchDB fornece replicação fácil de usar, com a qual você pode copiar, compartilhar e sincronizar os dados entre bancos de dados e máquinas.

Modelo de dados

  • O banco de dados é a estrutura / contêiner de dados mais externo no CouchDB.

  • Cada banco de dados é uma coleção de documentos independentes.

  • Cada documento mantém seus próprios dados e esquema independente.

  • Os metadados do documento contêm informações de revisão, o que permite mesclar as diferenças ocorridas durante a desconexão das bases de dados.

  • O CouchDB implementa controle de simultaneidade de várias versões, para evitar a necessidade de bloquear o campo do banco de dados durante as gravações.

Recursos do CouchDB: Reduza o Conteúdo

Armazenamento de Documentos

CouchDB é um banco de dados NoSQL de armazenamento de documentos. Ele fornece a facilidade de armazenar documentos com nomes exclusivos e também fornece uma API chamada RESTful HTTP API para ler e atualizar (adicionar, editar, excluir) documentos de banco de dados.

No CouchDB, os documentos são a unidade primária de dados e também incluem metadados. Os campos do documento têm nomes exclusivos e contêm valores de vários tipos (texto, número, booleano, listas etc.) e não há limite definido para o tamanho do texto ou contagem de elementos.

As atualizações do documento (adicionar, editar, excluir) seguem a atomicidade, ou seja, serão salvas completamente ou não serão salvas de forma alguma. O banco de dados não terá documentos parcialmente salvos ou editados.

Estrutura do Documento Json

{
   "field" : "value",
   "field" : "value",
   "field" : "value",
}

Propriedades ACID

CouchDB contém propriedades ACID como um de seus recursos.

Consistência - Quando os dados no CouchDB foram confirmados uma vez, esses dados não serão modificados ou sobrescritos. Portanto, o CouchDB garante que o arquivo de banco de dados sempre estará em um estado consistente.

Um modelo Multi-Version Concurrency Control (MVCC) é usado por leituras CouchDB, por causa do qual o cliente verá um instantâneo consistente do banco de dados do início ao fim da operação de leitura.

Sempre que um documento é atualizado, o CouchDB descarrega os dados no disco e o cabeçalho do banco de dados atualizado é gravado em dois blocos consecutivos e idênticos para formar os primeiros 4k do arquivo e, em seguida, descarregado de forma síncrona no disco. As atualizações parciais durante a liberação serão descartadas.

Se a falha ocorreu durante a confirmação do cabeçalho, uma cópia sobrevivente dos cabeçalhos idênticos anteriores permanecerá, garantindo a coerência de todos os dados previamente confirmados. Exceto na área do cabeçalho, verificações de consistência ou consertos após uma falha ou falha de energia nunca são necessários.

Compactação

Sempre que o espaço no arquivo do banco de dados for desperdiçado acima de certa medida, todos os dados ativos serão copiados (clonados) para um novo arquivo. Quando o processo de cópia estiver totalmente concluído, o arquivo antigo será descartado. Tudo isso é feito por processo de compactação. O banco de dados permanece online durante a compactação e todas as atualizações e leituras podem ser concluídas com êxito.

Visualizações

Os dados no CouchDB são armazenados em documentos semiestruturados que são flexíveis com estruturas implícitas individuais, mas é um modelo de documento simples para armazenamento e compartilhamento de dados. Se quisermos ver nossos dados de muitas maneiras diferentes, precisamos filtrar, organizar e relatar os dados que não foram decompostos em tabelas.

Para resolver esse problema, o CouchDB fornece um modelo de visualização. As visualizações são o método de agregar e relatar os documentos em um banco de dados e são criadas sob demanda para agregar, unir e relatar os documentos do banco de dados. Como as visualizações são construídas dinamicamente e não afetam o documento subjacente, você pode ter quantas representações de visualizações diferentes dos mesmos dados desejar.

História

  • CouchDB foi escrito na linguagem de programação Erlang.
  • Foi iniciado por Damien Katz em 2005.
  • O CouchDB se tornou um projeto Apache em 2008.

A versão atual do CouchDB é 1.61.