CouchDB

  1. DB Name: CouchDB
  2. Student List (with name and USP id):
    João Francisco CBC de Pinho 10748500
    Matheus Pereira Dias 11207752
    João Gabriel Zanão Costa 11234266
    Lucas Massao Fukusawa Dagnone 11295810
  3. Main DB Features
    A estrutura de dados responsável pela organização das informações do CouchDB é a arvore binária. Todo o armazenamento de dados, documentos e views são realizados com base na árvore abaixo.

    Anatomy of a view request

    Ainda em cima da B-Tree implementada, o CouchDB utiliza o MapReduce para computar os dados da view. Graças ao Map e ao Reduce, todo o BD é capaz de isolar cada uma das operações e realiza-las de forma paralela e incremental.

    Outra feature interessante do CouchDB é a utilização do Multi-Version Concurrency Control (MVCC) para prevenir que o servidor execute requisições de forma serial, tornando todas as operações não bloqueantes, essa abordagem permite que o banco opere sempre com capacidade máxima mesmo com inúmeras requisições sendo realizadas simultaneamente. No MVCC as requisições são realizadas em paralelo, podemos ver na ilustração o seu funcionamento em comparação com os bancos tradicionais SQL.

    MVCC means no locking

    Possui uma série de documentos especiais arquivados em uma base chamada de "design documents". Esse documentos são comumente escritos em JS, e utilizados na construção de indexes, validar atualizações , formatar o resultado de querys e filtrar replicações.

  4. Does It Implement CA, CP, or AP? Why? 
    CouchDB prefere AP. Ele usa de consistência eventual: ao fazer uma escrita no banco de dados, é garantido que em algum momento essa mudança será propagada. Com isso, ele favorece o desempenho em troca da consistência.
  5. DB Advantages
    a. Pode ser usado para qualquer tipo de dado
    b. A estrutura do CouchDB é bem simples.
    c. O CouchDB tem rápida indexação e captura de dados.
    d. Ele usa HTTP para melhor comunicação.
  6. DB Disadvantages
    a. O CouchDB ocupa muito espaço para overheads.
    b. Alguns queries são caros.
    c. O CouchDB usa mais espaço para overheads que os concorrentes.
    d. Visualizações rápidas em bancos grandes são muito lentas.
    e. Não suporta transações.
    f. Replicação de grandes bancos de dados pode falhar.
  7. Application Niches
    O CouchDB é muito usado para sistemas mobile, pois esses podem estar em dispositivos que perdem a conexão frequentemente.

    A utilização de CouchDB é recomendada em situações que necessitem ocasionais sincronização de dados, o que faz sentido em setores como finanças, coleta de dados, análise de logs e campos de IoT (Internet das coisas). O modelo também é benéfico para empresas que possuem uma força de trabalho distribuída, como empresas imobiliárias.
  8. Slides
    Link para os slides