CouchDB - Introduzione

Il sistema di gestione del database fornisce un meccanismo per l'archiviazione e il recupero dei dati. Esistono tre tipi principali di sistemi di gestione di database: RDBMS (Relational Database management Systems), OLAP (Online Analytical Processing Systems) e NoSQL.

RDBMS

RDBMS è l'acronimo di Relational Database Management System. RDBMS è la base per SQL e per tutti i moderni sistemi di database come MS SQL Server, IBM DB2, Oracle, MySQL e Microsoft Access.

Un sistema di gestione di database relazionali (RDBMS) è un sistema di gestione di database (DBMS) basato sul modello relazionale introdotto da EF Codd.

I dati in RDBMS vengono memorizzati in oggetti di database chiamati tables. La tabella è una raccolta di voci di dati correlate ed è composta da colonne e righe. Memorizza solo dati strutturati.

OLAP

Online Analytical Processing Server (OLAP) si basa sul modello di dati multidimensionali. Consente a manager e analisti di ottenere una visione delle informazioni attraverso un accesso rapido, coerente e interattivo alle informazioni.

Database NoSQL

Un database NoSQL (a volte chiamato non solo SQL) è un database che fornisce un meccanismo per archiviare e recuperare dati diversi dalle relazioni tabulari utilizzate nei database relazionali. Questi database sono privi di schemi, supportano una facile replica, hanno API semplici, eventualmente coerenti e possono gestire enormi quantità di dati (big data).

L'obiettivo principale di un database NoSQL è di avere quanto segue:

  • Semplicità di design,
  • Ridimensionamento orizzontale e
  • Controllo più preciso sulla disponibilità.

I database NoSQL utilizzano strutture di dati diverse rispetto ai database relazionali. Rende più veloci alcune operazioni in NoSQL. L'idoneità di un dato database NoSQL dipende dal problema che deve risolvere. Questi database memorizzano sia dati strutturati che dati non strutturati come file audio, file video, documenti, ecc. Questi database NoSQL sono classificati in tre tipi e vengono spiegati di seguito.

Key-value Store- Questi database sono progettati per archiviare dati in coppie chiave-valore e questi database non avranno alcuno schema. In questi database, ogni valore di dati è costituito da una chiave indicizzata e da un valore per quella chiave.

Esempi: BerkeleyDB, Cassandra, DynamoDB, Riak.

Column Store- In questi database, i dati vengono memorizzati in celle raggruppate in colonne di dati e queste colonne vengono ulteriormente raggruppate in famiglie di colonne. Queste famiglie di colonne possono contenere un numero qualsiasi di colonne.

Esempi: BigTable, HBase e HyperTable.

Document Store- Questi sono i database sviluppati sull'idea di base degli archivi chiave-valore in cui i "documenti" contengono dati più complessi. Qui, a ogni documento viene assegnata una chiave univoca, che viene utilizzata per recuperare il documento. Questi sono progettati per archiviare, recuperare e gestire informazioni orientate ai documenti, note anche come dati semi-strutturati.

Esempi: CouchDB e MongoDB.

Cos'è CouchDB?

CouchDB è un database open source sviluppato da Apache Software Foundation. Il focus è sulla facilità d'uso, abbracciando il web. È un database di archivio di documenti NoSQL.

Utilizza JSON, per memorizzare i dati (documenti), java script come linguaggio di query per trasformare i documenti, protocollo http per api per accedere ai documenti, interrogare gli indici con il browser web. È un'applicazione multi master rilasciata nel 2005 ed è diventata un progetto Apache nel 2008.

Perché CouchDB?

  • CouchDB ha un'API REST basata su HTTP, che aiuta a comunicare facilmente con il database. E la semplice struttura delle risorse e dei metodi HTTP (GET, PUT, DELETE) sono facili da capire e utilizzare.

  • Poiché memorizziamo i dati nella struttura flessibile basata su documenti, non è necessario preoccuparsi della struttura dei dati.

  • Agli utenti viene fornita una potente mappatura dei dati, che consente di interrogare, combinare e filtrare le informazioni.

  • CouchDB fornisce una replica di facile utilizzo, che consente di copiare, condividere e sincronizzare i dati tra database e computer.

Modello di dati

  • Il database è la struttura / contenitore dati più esterni in CouchDB.

  • Ogni database è una raccolta di documenti indipendenti.

  • Ogni documento mantiene i propri dati e il proprio schema autonomo.

  • I metadati del documento contengono informazioni di revisione, che consentono di unire le differenze verificatesi durante la disconnessione dei database.

  • CouchDB implementa il controllo della concorrenza multi versione, per evitare la necessità di bloccare il campo del database durante le scritture.

Caratteristiche di CouchDB: Riduci il contenuto

Archiviazione documenti

CouchDB è un database NoSQL per l'archiviazione di documenti. Fornisce la possibilità di archiviare documenti con nomi univoci e fornisce anche un'API chiamata API HTTP RESTful per leggere e aggiornare (aggiungere, modificare, eliminare) documenti di database.

In CouchDB, i documenti sono l'unità principale di dati e includono anche i metadati. I campi del documento hanno un nome univoco e contengono valori di diversi tipi (testo, numero, booleano, elenchi, ecc.) E non esiste alcun limite alla dimensione del testo o al conteggio degli elementi.

Gli aggiornamenti dei documenti (aggiungi, modifica, elimina) seguono Atomicity, ovvero verranno salvati completamente o non verranno salvati affatto. Il database non avrà alcun documento parzialmente salvato o modificato.

Struttura del documento Json

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

Proprietà ACID

CouchDB contiene le proprietà ACID come una delle sue caratteristiche.

Coerenza: una volta eseguito il commit dei dati in CouchDB, questi dati non verranno modificati o sovrascritti. Pertanto, CouchDB garantisce che il file del database sarà sempre in uno stato coerente.

Un modello MVCC (Multi-Version Concurrency Control) viene utilizzato dalle letture CouchDB, per cui il client vedrà un'istantanea coerente del database dall'inizio alla fine dell'operazione di lettura.

Ogni volta che un documento viene aggiornato, CouchDB scarica i dati nel disco e l'intestazione del database aggiornato viene scritta in due blocchi consecutivi e identici per formare i primi 4k del file, quindi scaricata in modo sincrono su disco. Gli aggiornamenti parziali durante il lavaggio verranno ignorati.

Se l'errore si è verificato durante il commit dell'intestazione, rimarrà una copia superstite delle intestazioni identiche precedenti, garantendo la coerenza di tutti i dati precedentemente salvati. Ad eccezione dell'area dell'intestazione, i controlli di coerenza o le correzioni dopo un arresto anomalo o un'interruzione di corrente non sono mai necessari.

Compattazione

Ogni volta che lo spazio nel file del database è stato sprecato al di sopra di una certa misura, tutti i dati attivi verranno copiati (clonati) in un nuovo file. Al termine del processo di copia, il vecchio file verrà eliminato. Tutto questo viene fatto mediante un processo di compattazione. Il database rimane in linea durante la compattazione e tutti gli aggiornamenti e le letture possono essere completati correttamente.

Visualizzazioni

I dati in CouchDB sono archiviati in documenti semi-strutturati che sono flessibili con singole strutture implicite, ma è un semplice modello di documento per l'archiviazione e la condivisione dei dati. Se vogliamo vedere i nostri dati in molti modi diversi, abbiamo bisogno di un modo per filtrare, organizzare e creare report sui dati che non sono stati scomposti in tabelle.

Per risolvere questo problema, CouchDB fornisce un modello di visualizzazione. Le viste sono il metodo di aggregazione e creazione di report sui documenti in un database e sono costruite su richiesta per aggregare, unire e creare report sui documenti del database. Poiché le viste vengono create in modo dinamico e non influiscono sul documento sottostante, puoi avere tutte le rappresentazioni della vista diverse degli stessi dati che desideri.

Storia

  • CouchDB è stato scritto nel linguaggio di programmazione Erlang.
  • È stato avviato da Damien Katz nel 2005.
  • CouchDB è diventato un progetto Apache nel 2008.

La versione attuale di CouchDB è la 1.61.