NoSQL: Teorema CAP, MongoDB, CouchDB
Student Groups
Our goal here is to understand the CAP Theorem and to know the advantages and disadvantages of some NoSQL solutions. There will be four groups. All the wikis will have the following content:
- DB Name
- Student List (with name and USP id)
- Main DB Features
- Does It Implement CA, CP, or AP? Why?
- DB Advantages
- DB Disadvantages
- Application Niches
They will also make a 22 minutes presentation of their work to the class.
Each group has to choose:
- Coordinator: To coordinate the discussions and group activities. He also has to control the time to make sure the group will post its results on time.
- Editor: To write down the group's contents to the wiki.
- Three Presenters: To present the work to the class
A group may divide the work among subgroups, but, in this case, it is recommended that you plan some time to join the work of each subgroup.
Tip: If you use Google Docs or Slides to create your work, you may just link it to the group's wiki page. But remember to make it readable by everyone and copy its text to the wiki (just as a backup).
CouchDB2
(Restore this version)
Modified: 4 July 2023, 4:27 PM User: Adalton de Sena Almeida Filho →
Nome do Banco de Dados
Nomes dos Alunos
- Adalton de Sena Almeida Filho - 12542435
- Bernardo Rodrigues Tameirão Santos - 12733212
- Daniel Henrique Lelis de Almeida - 12543822
- Gabriel dos Santos Brito - 10284250
- Felipi Yuri Santos - 11917292
- Igor Cardozo Martins - 10387515
- Rodrigo de Freitas Lima - 12547510
- Victor Lucas de Almeida Fernandes - 12675399
- Vinicius Carneiro Macedo - 11915752
- Yuri Fernandes Pereira - 13730127
Principais Funcionalidades
Replicação: Provém a forma mais simples de replicação, e não há outra base de dados tão simples de replicar.
Armazenamento de Documentos: É uma base de dados NoSQL que segue armazenamento de documentos, em que cada campo é unicamente nomeado e contém valores de vários tipos de dados, como texto, números, booleanos e listas.
Propriedades ACID: O layout de arquivos do CouchDB segue todas as características das propriedades ACID, que são atomicidade, consistência, isolamento e durabilidade.
Segurança: Também fornece segurança no nível do banco de dados e as permissões são divididas em leitores e administradores, onde os leitores podem fazer a leitura e a gravação no banco de dados.
Map/Reduce: O principal motivo da popularidade do CouchDB é um sistema de mapear / reduzir.
Authentication: o CouchDB facilita a manutenção da autenticação aberta por meio de um cookie de sessão, como um aplicativo da web.
Built for Offline: o CouchDB pode replicar para dispositivos como smartphones que têm um recurso para ficar offline e lidar com a sincronização de dados para você quando o dispositivo estiver online novamente.
Eventual Consistency: o CouchDB garante consistência eventual para fornecer disponibilidade e tolerância de partição.
HTTP API: Todos os itens têm um URI (Identificador de Recurso Único) exclusivo que é exposto via HTTP. Ele usa os métodos HTTP como POST, GET, PUT e DELETE para as quatro operações básicas CRUD (Criar, Ler, Atualizar, Excluir) em todos os recursos.
O CouchDB implementa CA, CP ou AP? Por quê?
O CouchDB possui uma abordagem diferente do Teorema CAP se comparado com bancos de dados relacionais, que escolhem dois entre os três atributos: Consistência, Disponibilidade e Tolerância ao Particionamento. O CouchDB funciona no modo AP (Availability e Partition Tolerance), pois é projetado para atender a aplicações com prioridade para Disponibilidade e Tolerância ao Particionamento. Contudo, o CouchDB também usa “Eventual Consistency”: os clientes podem escrever em algum nó da base de dados, e é garantido que esta informação será eventualmente propagada para o resto da base de dados. Desse modo, o CouchDB também busca atender ao atributo da Consistência.
Vantagens
- HTTP API é usado para facilitar a comunicação.
- Ele é usado para armazenar qualquer tipo de dados.
- Reduce/Map permite otimizar a combinação de dados.
- A estrutura do CouchDB é muito simples
- Indexação e recuperação rápidas.
Desvantagens
- O CouchDB ocupa um grande espaço para sobrecarga, o que é uma grande desvantagem em comparação com outros bancos de dados.
- As consultas arbitrárias são caras.
- Há um pouco de sobrecarga de espaço extra com o CouchDB em comparação com a maioria das alternativas.
- Visualizações temporárias em grandes conjuntos de dados são muito lentas.
- Não suporta transações
- A replicação de grandes bancos de dados pode falhar.
Nichos de Aplicação
- Aplicativos Web em tempo real: permite armazenar e sincronizar dados entre clientes e servidores em tempo real.
- Sistemas de Gerenciamento de Conteúdo (CMS): usado para armazenar e indexar informações relacionadas ao conteúdo, como blogs, notícias e documentos.
- Aplicativos móveis com sincronização offline/online: os dados podem ser armazenados localmente nos dispositivos móveis e sincronizados com o servidor quando houver conectividade.
- Internet das Coisas (IoT): adequado para armazenar grandes volumes de dados gerados por dispositivos IoT, como dados sensoriais e métricas.
- Sistemas de gerenciamento de documentos flexíveis: permite armazenar e recuperar documentos com diferentes esquemas sem a necessidade de migrações complexas.
- Aplicativos colaborativos em tempo real: suporta aplicativos onde vários usuários podem trabalhar simultaneamente nos mesmos dados.
Referências
https://www.javatpoint.com/features-of-couchdb
class="" style="color: rgb(125, 159, 211);">https://www.geeksforgeeks.org/introduction-to-apache-couchdb/
class="" style="color: rgb(125, 159, 211);">https://www.integrate.io/blog/couchdb-vs-mongodb/
class="" style="color: rgb(125, 159, 211);">https://acervolima.com/introducao-ao-apache-couchdb/