CouchDB - Guida rapida

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 alcune operazioni più veloci 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 sono spiegati di seguito.

Key-value Store- Questi database sono progettati per archiviare i 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 archiviati 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 dalla fondazione software Apache. 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é archiviamo i dati nella struttura flessibile basata sui 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, grazie alla quale è possibile 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 numero di 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 oltre 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 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 reporting 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, è possibile 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.

Questo capitolo ti insegna come installare CouchDB su sistemi Windows e Linux.

Installazione di CouchDB in Windows

Scarica CouchDB

Il sito ufficiale di CouchDB è https://couchdb.apache.org. Se si fa clic sul collegamento fornito, è possibile visualizzare la home page del sito Web ufficiale di CouchDB come mostrato di seguito.

Se si fa clic sul pulsante di download, verrà visualizzata una pagina in cui sono forniti i collegamenti per il download di CouchDB in vari formati. La seguente istantanea illustra lo stesso.

Scegli il link per il download per i sistemi Windows e seleziona uno dei mirror forniti per avviare il download.

Installazione di CouchDB

CouchDB verrà scaricato sul sistema sotto forma di file di installazione denominato setup-couchdb-1.6.1_R16B02.exe. Eseguire il file di installazione e procedere con l'installazione.

Dopo l'installazione, apri l'interfaccia web incorporata di CouchDB visitando quanto segue link: http://127.0.0.1:5984/. Se tutto va bene, questo ti darà una pagina web, che ha il seguente output.

{
   "couchdb":"Welcome","uuid":"c8d48ac61bb497f4692b346e0f400d60",
   "version":"1.6.1",
   "vendor":{
      "version":"1.6.1","name":"The Apache Software Foundation"
   }
}

Puoi interagire con l'interfaccia web di CouchDB utilizzando il seguente URL:

http://127.0.0.1:5984/_utils/

Questo ti mostra la pagina dell'indice di Futon, che è l'interfaccia web di CouchDB.

Installazione di CouchDB nei sistemi Linux

Per molti dei sistemi basati su Linux, forniscono internamente CouchDB. Per installare questo CouchDB segui le istruzioni.

Su Ubuntu e Debian puoi usare -

sudo aptitude install couchdb

Su Gentoo Linux è disponibile un ebuild CouchDB -

sudo emerge couchdb

Se il tuo sistema Linux non ha CouchDB, segui la sezione successiva per installare CouchDB e le sue dipendenze.

Installazione delle dipendenze di CouchDB

Di seguito è riportato l'elenco delle dipendenze che devono essere installate per ottenere CouchDB nel proprio sistema

  • Erlang OTP
  • ICU
  • OpenSSL
  • Mozilla SpiderMonkey
  • GNU Make
  • Raccolta di compilatori GNU
  • libcurl
  • help2man
  • Python per documenti
  • Sfinge di pitone

Per installare queste dipendenze, digita i seguenti comandi nel terminale. Qui stiamo usando Centos 6.5 ei seguenti comandi installeranno i software richiesti compatibili con Centos 6.5.

$sudo yum install autoconf
$sudo yum install autoconf-archive
$sudo yum install automake
$sudo yum install curl-devel
$sudo yum install erlang-asn1
$sudo yum install erlang-erts
$sudo yum install erlang-eunit
$sudo yum install erlang-os_mon
$sudo yum install erlang-xmerl
$sudo yum install help2man
$sudo yum install js-devel
$sudo yum install libicu-devel
$sudo yum install libtool
$sudo yum install perl-Test-Harness

Note −Per tutti questi comandi devi usare sudo. La procedura seguente converte un utente normale in un sudoer.

  • Accedi come root in utente amministratore

  • Aperto sudo file utilizzando il seguente comando:

visudo
  • Quindi modifica come mostrato di seguito per dare al tuo utente esistente i privilegi sudoer -
Hadoop All=(All) All , and press esc : x to write the changes to the file.

Dopo aver scaricato tutte le dipendenze nel tuo sistema, scarica CouchDB seguendo le istruzioni fornite.

Download di CouchDB

La fondazione software Apache non fornirà il file .tar completo per CouchDB, quindi è necessario installarlo dalla fonte.

Creare una nuova directory per installare CouchDB, accedere a tale directory creata e scaricare il sorgente CouchDB eseguendo i seguenti comandi:

$ cd
$ mkdir CouchDB
$ cd CouchDB/
$ wget
http://www.google.com/url?q=http%3A%2F%2Fwww.apache.org%2Fdist%2Fcouchdb%2Fsource%2F1.6.1%2Fapache-couchdb-1.6.1.tar.gz

Questo scaricherà il file sorgente di CouchDB nel tuo sistema. Ora decomprimi il fileapache-couchdb-1.6.1.tar.gz come mostrato di seguito.

$ tar zxvf apache-couchdb-1.6.1.tar.gz

Configurazione di CouchDB

Per configurare CouchDB, procedi come segue:

  • Vai alla cartella home di CouchDB.
  • Accedi come superutente.
  • Configurare utilizzando il prompt ./configure come mostrato di seguito -
$ cd apache-couchdb-1.6.1
$ su
Password:
# ./configure --with-erlang=/usr/lib64/erlang/usr/include/

Ti dà il seguente output simile a quello mostrato di seguito con una riga conclusiva che dice: You have configured Apache CouchDB, time to relax.

# ./configure --with-erlang=/usr/lib64/erlang/usr/include/

checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking how to create a ustar tar archive... gnutar
………………………………………………………..
……………………….
config.status: creating var/Makefile
config.status: creating config.h
config.status: config.h is unchanged
config.status: creating src/snappy/google-snappy/config.h
config.status: src/snappy/google-snappy/config.h is unchanged
config.status: executing depfiles commands
config.status: executing libtool commands

You have configured Apache CouchDB, time to relax.

Run `make && sudo make install' to install.

Installazione di CouchDB

Ora digita il seguente comando per installare CouchDB nel tuo sistema.

# make && sudo make install

Installa CouchDB nel tuo sistema con una riga conclusiva che dice: You have installed Apache CouchDB, time to relax.

Avvio di CouchDB

Per avviare CouchDB, accedere alla cartella principale di CouchDB e utilizzare il seguente comando:

$ cd apache-couchdb-1.6.1
$ cd etc
$ couchdb start

Avvia CouchDB dando il seguente output: -

Apache CouchDB 1.6.1 (LogLevel=info) is starting.
Apache CouchDB has started. Time to relax.
[info] [lt;0.31.0gt;] Apache CouchDB has started on http://127.0.0.1:5984/
[info] [lt;0.112.0gt;] 127.0.0.1 - - GET / 200
[info] [lt;0.112.0gt;] 127.0.0.1 - - GET /favicon.ico 200

Verifica

Poiché CouchDB è un'interfaccia web, prova a digitare il seguente URL della homepage nel browser.

http://127.0.0.1:5984/

Produce il seguente output:

{
   "couchdb":"Welcome",
   "uuid":"8f0d59acd0e179f5e9f0075fa1f5e804",
   "version":"1.6.1",
   "vendor":{
      "name":"The Apache Software Foundation",
      "version":"1.6.1"
   }
}

cURL Utility

L'utilità cURL è un modo per comunicare con CouchDB.

È uno strumento per trasferire dati da o verso un server, utilizzando uno dei protocolli supportati (HTTP, HTTPS, FTP, FTPS, TFTP, DICT, TELNET, LDAP o FILE). Il comando è progettato per funzionare senza l'interazione dell'utente. cURL offre un sacco di trucchi utili come supporto proxy, autenticazione utente, caricamento ftp, post HTTP, connessioni SSL (https :), cookie, ripristino del trasferimento di file e altro.

L'utilità cURL è disponibile nei sistemi operativi come UNIX, Linux, Mac OS X e Windows. È un'utilità della riga di comando che utilizza l'utente che può accedere al protocollo HTTP direttamente dalla riga di comando. Questo capitolo ti insegna come usare l'utility cURL.

Utilizzo dell'utilità cURL

È possibile accedere a qualsiasi sito Web utilizzando l'utilità cURL semplicemente digitando cURL seguito dall'indirizzo del sito Web come mostrato di seguito -

curl www.tutorialspoint.com/

Per impostazione predefinita, l'utilità cURL restituisce il codice sorgente della pagina richiesta. Visualizza questo codice nella finestra del terminale.

Opzioni dell'utilità cURL

L'utilità cURL fornisce varie opzioni con cui lavorare e puoi vederle nella guida dell'utilità cURL.

Il codice seguente mostra una parte dell'help di cURL.

$ curl --help
Usage: curl [options...] <url>
Options: (H) means HTTP/HTTPS only, (F) means FTP only
      --anyauth Pick "any" authentication method (H)
   -a/--append Append to target file when uploading (F/SFTP)
      --basic Use HTTP Basic Authentication (H)
      --cacert <file> CA certificate to verify peer against (SSL)
-d/--data <data> HTTP POST data (H)
      --data-ascii <data> HTTP POST ASCII data (H)
      --data-binary <data> HTTP POST binary data (H)
      --data-urlencode <name=data/[email protected]> HTTP POST data
urlencoded (H)
      --delegation STRING GSS-API delegation permission
      --digest Use HTTP Digest Authentication (H)
      --disable-eprt Inhibit using EPRT or LPRT (F)
      --disable-epsv Inhibit using EPSV (F)

   -F/--form <name=content> Specify HTTP multipart POST data (H)
      --form-string <name=string> Specify HTTP multipart POST data (H)
      --ftp-account <data> Account data to send when requested by server
(F)
      --ftp-alternative-to-user <cmd> String to replace "USER [name]" (F)
      --ftp-create-dirs Create the remote dirs if not present (F)
      --ftp-method [multi cwd/no cwd/single cwd] Control CWD usage (F)
      --ftp-pasv Use PASV/EPSV instead of PORT (F)

   -G/--get Send the -d data with a HTTP GET (H)

   -H/--header <line> Custom header to pass to server (H)
   -I/--head Show document info only
   -h/--help This help text
      --hostpubmd5 <md5> Hex encoded MD5 string of the host public key.
(SSH)
   -0/--http1.0 Use HTTP 1.0 (H)
      --ignore-content-length Ignore the HTTP Content-Length header
   -i/--include Include protocol headers in the output (H/F)

   -M/--manual Display the full manual

   -o/--output <file> Write output to <file> instead of stdout
      --pass <pass> Pass phrase for the private key (SSL/SSH)
      --post301 Do not switch to GET after following a 301
redirect (H)
      --post302 Do not switch to GET after following a 302
redirect (H)
   -O/--remote-name Write output to a file named as the remote file
      --remote-name-all Use the remote file name for all URLs
   -R/--remote-time Set the remote file's time on the local output
   -X/--request <command> Specify request command to use
      --retry <num> Retry request <num> times if transient problems
occur
      --retry-delay <seconds> When retrying, wait this many seconds
between each
      --retry-max-time <seconds> Retry only within this period
   -T/--upload-file <file> Transfer <file> to remote site
      --url <URL> Set URL to work with
   -B/--use-ascii Use ASCII/text transfer

Durante la comunicazione con CouchDB, alcune opzioni dell'utilità cURL sono state ampiamente utilizzate. Di seguito sono riportate le brevi descrizioni di alcune importanti opzioni dell'utilità cURL, comprese quelle utilizzate da CouchDB.

-X bandiera

(HTTP) Specifica un metodo di richiesta personalizzato utilizzato durante la comunicazione con il server HTTP. La richiesta specificata viene utilizzata al posto del metodo altrimenti utilizzato (il cui valore predefinito è GET). Leggi la specifica HTTP 1.1 per dettagli e spiegazioni.

(FTP) Specifica un comando FTP personalizzato da utilizzare al posto di LIST quando si eseguono elenchi di file con ftp.

-H

(HTTP) L'intestazione aggiuntiva viene utilizzata quando si ottiene una pagina web. Nota che se aggiungi un'intestazione personalizzata che ha lo stesso nome di una di quelle interne che cURL userebbe, la tua intestazione impostata esternamente verrà usata al posto di quella interna. Questo ti permette di fare un lavoro ancora più complicato di quello che farebbe normalmente cURL. Non dovresti sostituire le intestazioni impostate internamente senza sapere perfettamente cosa stai facendo. La sostituzione di un'intestazione interna con quella senza contenuto sul lato destro dei due punti impedirà la visualizzazione di tale intestazione.

cURL assicura che ogni intestazione che aggiungi / sostituisci venga inviata con il marcatore di fine riga corretto. Né dovresti aggiungerlo come parte del contenuto dell'intestazione né aggiungere nuove righe o ritorni a capo alle cose di disordine.

Vedi anche le opzioni -A / - user-agent e -e / - referer.

Questa opzione può essere utilizzata più volte per aggiungere / sostituire / rimuovere più intestazioni.

-d flag

Utilizzando questo flag di cURL, è possibile inviare dati insieme alla richiesta HTTP POST al server, come se fosse stato compilato dall'utente nel modulo e inviato.

Example

Supponiamo che ci sia un sito web e tu voglia accedere ad esso o inviare alcuni dati al sito web usando il flag –d dell'utilità cURL come mostrato di seguito.

curl -X PUT http://mywebsite.com/login.html -d userid=001 -d password=tutorialspoint

Invia un pezzo di post che assomiglia "userid=001&password=tutorialspoint". Allo stesso modo puoi anche inviare documenti (JSON) usando il flag -d.

-o bandiera

Usando questo flag, cURL scrive l'output della richiesta in un file.

Example

L'esempio seguente mostra l'uso di -o flag dell'utilità cURL.

$ curl -o example.html www.tutorialspoint.com/index.htm 
% Total % Received % Xferd Average Speed Time Time Time Current 
      Dload Upload Total Spent Left Speed
100 81193 0 81193 0 0 48168 0 --:--:-- 0:00:01 --:--:--
58077

Questo ottiene il codice sorgente della homepage di tutorialspoint.com, crea un file denominato example.com e salva l'output nel file denominato example.html.

Di seguito è riportata l'istantanea del file example.html.

-O

Questa bandiera è simile a –o, l'unica differenza è con questo flag, è stato creato un nuovo file con lo stesso nome dell'URL richiesto e il codice sorgente dell'URL richiesto verrà copiato su di esso.

Example

L'esempio seguente mostra l'uso di -O flag dell'utilità cURL.

$ curl -O www.tutorialspoint.com/index.htm
% Total % Received % Xferd Average Speed Time Time Time Current
      Dload Upload Total Spent Left
Speed
100 81285 0 81285 0 0 49794 0 --:--:-- 0:00:01 --:--:--
60077

Crea un nuovo file con il nome index.htm e salva il codice sorgente della pagina indice di tutorialspoint.com in esso.

Ciao CouchDB

È possibile accedere alla home page di CouchDB inviando una richiesta GET all'istanza CouchDB installata. Prima di tutto assicurati di aver installato CouchDB nel tuo ambiente Linux e che funzioni correttamente, quindi utilizza la seguente sintassi per inviare una richiesta get all'istanza CouchDB.

curl http://127.0.0.1:5984/

Questo ti dà un documento JSON come mostrato di seguito dove CouchDB specifica i dettagli come il numero di versione, il nome del fornitore e la versione del software.

$ curl http://127.0.0.1:5984/
{
   "couchdb" : "Welcome",
   "uuid" : "8f0d59acd0e179f5e9f0075fa1f5e804",
   "version" : "1.6.1",
   "vendor" : {
      "name":"The Apache Software Foundation",
      "version":"1.6.1"
   }
}

Elenco di tutti i database

È possibile ottenere l'elenco di tutti i database creati, inviando una richiesta get insieme alla stringa "_all_dbs string ". Di seguito è riportata la sintassi per ottenere l'elenco di tutti i database in CouchDB.

curl -X GET http://127.0.0.1:5984/_all_dbs

Ti dà l'elenco di tutti i database in CouchDB come mostrato di seguito.

$ curl -X GET http://127.0.0.1:5984/_all_dbs
[ "_replicator" , "_users" ]

Creazione di un database

Puoi creare un database in CouchDB usando cURL con l'intestazione PUT usando la seguente sintassi:

$ curl -X PUT http://127.0.0.1:5984/database_name

Esempio

Ad esempio, utilizzando la sintassi sopra indicata creare un database con nome my_database come mostrato di seguito.

$ curl -X PUT http://127.0.0.1:5984/my_database
{"ok":true}

Verifica

Verificare se il database è stato creato, elencando tutti i database come mostrato di seguito. Qui puoi osservare il nome del database appena creato,"my_database" nella lista

$ curl -X GET http://127.0.0.1:5984/_all_dbs

[ "_replicator " , "_users" , "my_database" ]

Ottenere informazioni sul database

È possibile ottenere le informazioni sul database utilizzando la richiesta get insieme al nome del database. Di seguito è riportata la sintassi per ottenere le informazioni sul database.

Esempio

A titolo di esempio, otteniamo le informazioni del database denominato my_databasecome mostrato di seguito. Qui puoi ottenere le informazioni sul tuo database come risposta.

$ curl -X GET http://127.0.0.1:5984/my_database

{
   "db_name" : "my_database",
   "doc_count" : 0,
   "doc_del_count" : 0,
   "update_seq" : 0,
   "purge_seq" : 0,
   "compact_running" : false,
   "disk_size" : 79,
   "data_size" : 0,
   "instance_start_time" : "1423628520835029",
   "disk_format_version" : 6,
   "committed_update_seq" : 0
 }

Futon

Futon è l'interfaccia di amministrazione incorporata, basata sul web, di CouchDB. Fornisce una semplice interfaccia grafica che consente di interagire con CouchDB. È un'interfaccia ingenua e fornisce pieno accesso a tutte le funzionalità di CouchDB. Di seguito è riportato l'elenco di queste funzionalità:

Databases −
  • Crea database.
  • Distrugge i database.
Documents −
  • Crea documenti.
  • Aggiorna i documenti.
  • Modifica i documenti.
  • Elimina i documenti.

Avvio Futon

Assicurati che CouchDB sia in esecuzione e quindi apri il seguente URL nel browser -

http://127.0.0.1:5984/_utils/

Se apri questo URL, viene visualizzata la home page di Futon come mostrato di seguito -

  • Sul lato sinistro di questa pagina puoi osservare l'elenco di tutti i database correnti di CouchDB. In questa illustrazione, abbiamo un database denominatomy_database, insieme ai database definiti dal sistema _replicator e _user.

  • Sul lato destro puoi vedere quanto segue:

    • Tools - In questa sezione puoi trovare Configuration per configurare CouchDB, Replicator per eseguire repliche e Status per verificare lo stato di CouchDB e le recenti modifiche apportate su CouchDB.

    • Documentation - Questa sezione contiene la documentazione completa per la versione recente di CouchDB.

    • Diagnostics - Sotto questo puoi verificare l'installazione di CouchDB.

    • Recent Databases - Sotto questo puoi trovare i nomi dei database aggiunti di recente.

Utilizzando le intestazioni delle richieste HTTP, puoi comunicare con CouchDB. Attraverso queste richieste possiamo recuperare i dati dal database, memorizzare i dati nel database sotto forma di documenti e possiamo visualizzare e formattare i documenti memorizzati in un database.

Formati di richiesta HTTP

Durante la comunicazione con il database utilizzeremo diversi formati di richiesta come get, head, post, put, delete e copy. Per tutte le operazioni in CouchDB, i dati di input e le strutture dei dati di output saranno sotto forma di oggetto JSON (JavaScript Object Notation).

Di seguito sono riportati i diversi formati di richiesta del protocollo HTTP utilizzato per comunicare con CouchDB.

  • GET- Questo formato viene utilizzato per ottenere un articolo specifico. Per ottenere articoli diversi, devi inviare pattern URL specifici. In CouchDB utilizzando questa richiesta GET, possiamo ottenere elementi statici, documenti di database e configurazione e informazioni statistiche sotto forma di documenti JSON (nella maggior parte dei casi).

  • HEAD - Il metodo HEAD viene utilizzato per ottenere l'intestazione HTTP di una richiesta GET senza il corpo della risposta.

  • POST- La richiesta di post viene utilizzata per caricare i dati. In CouchDB utilizzando la richiesta POST, è possibile impostare valori, caricare documenti, impostare valori di documenti e anche avviare determinati comandi di amministrazione.

  • PUT - Utilizzando la richiesta PUT, è possibile creare nuovi oggetti, database, documenti, viste e documenti di progettazione.

  • DELETE - Utilizzando la richiesta DELETE, è possibile eliminare documenti, viste e documenti di progettazione.

  • COPY - Utilizzando il metodo COPY, è possibile copiare documenti e oggetti.

Intestazioni delle richieste HTTP

Le intestazioni HTTP dovrebbero essere fornite per ottenere il formato e la codifica corretti. Durante l'invio della richiesta al server CouchDB, è possibile inviare le intestazioni della richiesta HTTP insieme alla richiesta. Di seguito sono riportate le diverse intestazioni delle richieste Http.

  • Content-type- Questa intestazione viene utilizzata per specificare il tipo di contenuto dei dati che forniamo al server insieme alla richiesta. Per lo più il tipo di contenuto che inviamo insieme alla richiesta sarà di tipo MIME o JSON (application / json). Si consiglia vivamente di utilizzare il tipo di contenuto su una richiesta.

  • Accept- Questa intestazione viene utilizzata per specificare il server, l'elenco dei tipi di dati che il client può comprendere, in modo che il server invii la sua risposta utilizzando quei tipi di dati. In genere qui è possibile inviare l'elenco dei tipi di dati MIME accettati dal client, separati da due punti.

    Sebbene non sia necessario utilizzare Accetta nelle query di CouchDB, si consiglia vivamente di garantire che i dati restituiti possano essere elaborati dal client.

Intestazioni di risposta

Queste sono le intestazioni della risposta inviata dal server. Queste intestazioni forniscono informazioni sul contenuto inviato dal server come risposta.

  • Content-type- Questa intestazione specifica il tipo MIME dei dati restituiti dal server. Per la maggior parte delle richieste, il tipo MIME restituito è text / plain.

  • Cache-control- Questa intestazione suggerisce al client di trattare le informazioni inviate dal server. CouchDB restituisce principalmente il must-revalidate, che indica che le informazioni dovrebbero essere riconvalidate se possibile.

  • Content-length - Questa intestazione restituisce la lunghezza del contenuto inviato dal server, in byte.

  • Etag - Questa intestazione viene utilizzata per mostrare la revisione di un documento o di una vista.

Codici di stato

Di seguito è riportato il formato tabulare del codice di stato inviato dall'intestazione http e la sua descrizione.

Sr.No. Codice di stato e descrizione
1

200 − OK

Questo stato verrà emesso quando una richiesta è stata completata con successo.

2

201 − Created

Questo stato verrà emesso quando viene creato un documento.

3

202 − Accepted

Questo stato verrà emesso quando una richiesta viene accettata.

4

404 − Not Found

Questo stato verrà emesso quando il server non è in grado di trovare il contenuto richiesto.

5

405 − Resource Not Allowed

Questo stato viene emesso quando il tipo di richiesta HTTP utilizzato non è valido.

6

409 − Conflict

Questo stato viene emesso ogni volta che si verifica un conflitto di aggiornamento.

7

415 − Bad Content Type

Questo stato indicava che il tipo di contenuto richiesto non è supportato dal server.

8

500 − Internal Server Error

Questo stato viene emesso ogni volta che i dati inviati nella richiesta non sono validi.

Percorsi URL HTTP

Esistono alcuni percorsi URL che consentono di interagire direttamente con il database. Di seguito è riportato il formato tabulare di tali percorsi URL.

Sr.No. URL e operazione
1

PUT /db

Questo URL viene utilizzato per creare un nuovo database.

2

GET /db

Questo URL viene utilizzato per ottenere le informazioni sul database esistente.

3

PUT /db/document

Questo URL viene utilizzato per creare un documento / aggiornare un documento esistente.

4

GET /db/document

Questo URL viene utilizzato per ottenere il documento.

5

DELETE /db/document

Questo URL viene utilizzato per eliminare il documento specificato dal database specificato.

6

GET /db/_design/design-doc

Questo URL viene utilizzato per ottenere la definizione di un documento di progettazione.

7

GET /db/_design/designdoc/_view/view-name

Questo URL viene utilizzato per accedere alla vista, nome-vista dal documento di progettazione dal database specificato.

Il database è la struttura dati più esterna in CouchDB in cui sono archiviati i tuoi documenti. È possibile creare questi database utilizzando l'utilità cURL fornita da CouchDB, così come Futon l'interfaccia web di CouchDB.

Creazione di un database utilizzando l'utilità cURL

È possibile creare un database in CouchDB inviando una richiesta HTTP al server utilizzando il metodo PUT tramite l'utilità cURL. Di seguito è riportata la sintassi per creare un database:

$ curl -X PUT http://127.0.0.1:5984/database name

Utilizzando −Xpossiamo specificare il metodo di richiesta personalizzato HTTP da utilizzare. In questo caso, stiamo usando il metodo PUT. Quando usiamo l'operazione / metodo PUT, il contenuto dell'URL specifica il nome dell'oggetto che stiamo creando utilizzando la richiesta HTTP. Qui dobbiamo inviare il nome del database utilizzando la richiesta put nell'URL per creare un database.

Esempio

Utilizzando la sintassi sopra indicata se si desidera creare un database con nome my_database, puoi crearlo come segue

curl -X PUT http://127.0.0.1:5984/my_database
{
   "ok":true
}

In risposta, il server ti restituirà un documento JSON con il contenuto “ok” - true indicando che l'operazione è andata a buon fine.

Verifica

Verificare se il database è stato creato, elencando tutti i database come mostrato di seguito. Qui puoi osservare il nome di un database appena creato," my_database " nella lista.

$ curl -X GET http://127.0.0.1:5984/_all_dbs

[ "_replicator " , " _users " , " my_database " ]

Creazione di un database utilizzando Futon

Per creare un database apri il file http://127.0.0.1:5984/_utils/. Otterrai una pagina Panoramica / indice di CouchDB come mostrato di seguito.

In questa pagina è possibile visualizzare l'elenco dei database in CouchDB, un pulsante di opzione Crea database sul lato sinistro.

Ora fai clic sul collegamento Crea database. Puoi vedere una finestra popupCreate New Databaseschiedendo il nome del database per il nuovo database. Scegli qualsiasi nome seguendo i criteri menzionati. Qui stiamo creando un altro database con il nome tutorials_point. Fare clic sul pulsante Crea come mostrato nello screenshot seguente.

Eliminazione di un database utilizzando l'utilità cURL

È possibile eliminare un database in CouchDB inviando una richiesta al server utilizzando il metodo DELETE tramite l'utilità cURL. Di seguito è riportata la sintassi per creare un database:

$ curl -X DELETE http://127.0.0.1:5984/database name

Utilizzando −Xpossiamo specificare un metodo di richiesta personalizzato di HTTP che stiamo utilizzando, durante la comunicazione con il server HTTP. In questo caso, stiamo usando il metodo DELETE. Invia l'URL al server specificando il database da eliminare al suo interno.

Esempio

Supponiamo che ci sia un database chiamato my_database2 in CouchDB. Utilizzando la sintassi sopra indicata se si desidera eliminarlo, è possibile farlo come segue:

$ curl -X DELETE http://127.0.0.1:5984/my_database2
{
   "ok" : true
}

In risposta, il server ti restituirà un documento JSON con il contenuto “ok” - true indicando che l'operazione è andata a buon fine.

Verifica

Verificare se il database è stato eliminato elencando tutti i database come mostrato di seguito. Qui puoi osservare il nome del database cancellato,"my_database" non è presente nell'elenco.

$ curl -X GET http://127.0.0.1:5984/_all_dbs

[ "_replicator " , " _users " ]

Eliminazione di un database utilizzando Futon

Per eliminare un database, apri il file http://127.0.0.1:5984/_utils/ url dove otterrai una pagina Panoramica / indice di CouchDB come mostrato di seguito.

Qui puoi vedere tre database creati dagli utenti. Cerchiamo di eliminare il database denominato tutorials_point2. Per eliminare un database, selezionarne uno dall'elenco dei database e fare clic su di esso, che porterà alla pagina di panoramica del database selezionato dove è possibile vedere le varie operazioni sui database. Lo screenshot seguente mostra lo stesso:

Tra di loro puoi trovare Delete Databaseopzione. Cliccandoci sopra si aprirà una finestra popup, che ti chiederà se sei sicuro! Fare clic su Elimina per eliminare il database selezionato.

I documenti sono la struttura dati centrale di CouchDB. Il contenuto del database verrà archiviato sotto forma di documenti invece che di tabelle. È possibile creare questi documenti utilizzando l'utilità cURL fornita da CouchDB e Futon. Questo capitolo descrive i modi per creare un documento in un database.

Ogni documento in CouchDB ha un ID univoco. Puoi scegliere il tuo ID che dovrebbe essere sotto forma di stringa. In generale, viene utilizzato UUID (Universally Unique IDentifier), che sono numeri casuali che hanno meno possibilità di creare un duplicato. Questi sono preferiti per evitare collisioni.

Creazione di un documento utilizzando cURL Utility

È possibile creare un documento in CouchDB inviando una richiesta HTTP al server utilizzando il metodo PUT tramite l'utilità cURL. Di seguito è riportata la sintassi per creare un documento.

$ curl -X PUT http://127.0.0.1:5984/database name/"id" -d ' { document} '

Utilizzando −X, possiamo specificare un metodo di richiesta personalizzato di HTTP che stiamo utilizzando, durante la comunicazione con il server HTTP. In questo caso, stiamo usando il metodo PUT. Quando usiamo il metodo PUT, il contenuto dell'URL specifica il nome dell'oggetto che stiamo creando utilizzando la richiesta HTTP. Qui dobbiamo inviare quanto segue:

  • Il nome del nome del database in cui stiamo creando il documento.

  • L'ID del documento.

  • I dati del documento. −dopzione viene utilizzata per inviare i dati / documento tramite richiesta HTTP. Durante la scrittura di un documento, inserisci semplicemente le tue coppie Campo-Valore separate da due punti, tra parentesi di fiori come mostrato di seguito -

{
   Name : Raju
   age : 23
   Designation : Designer
}

Esempio

Utilizzando la sintassi sopra indicata se si desidera creare un documento con id 001 in un database con nome my_database, puoi crearlo come mostrato di seguito.

$ curl -X PUT http://127.0.0.1:5984/my_database/"001" -d
'{ " Name " : " Raju " , " age " :" 23 " , " Designation " : " Designer " }'

{"ok":true,"id":"001","rev":"1-1c2fae390fa5475d9b809301bbf3f25e"}

La risposta di CouchDB a questa richiesta contiene tre campi:

  • "ok", indicando che l'operazione è andata a buon fine.

  • "id", che memorizza l'ID del documento e

  • "rev",questo indica l'id della revisione. Ogni volta che rivedi (aggiorni o modifichi) un documento a_revil valore verrà generato da CouchDB. Se desideri aggiornare o eliminare un documento, CouchDB si aspetta che tu includa il file_revcampo della revisione che si desidera modificare. Quando CouchDB accetta la modifica, genererà un nuovo numero di revisione. Questo meccanismo garantisce il controllo della concorrenza.

Verifica

Se desideri visualizzare il documento creato, puoi ottenerlo utilizzando il documento come mostrato di seguito.

$ curl -X GET http://127.0.0.1:5984/my_database/001
{
   "_id": "001",
   "_rev": "1-3fcc78daac7a90803f0a5e383f4f1e1e",
   "Name": "Raju",
   "age": 23,
   "Designation": "Designer"
}

Creazione di un documento utilizzando Futon

Per creare un documento apri il file http://127.0.0.1:5984/_utils/ url per ottenere una pagina Panoramica / indice di CouchDB come mostrato di seguito.

Seleziona il database in cui desideri creare il documento. Apri la pagina Panoramica del database e selezionaNew Document opzione come mostrato di seguito.

Quando selezioni il file New Documentopzione, CouchDB crea un nuovo documento di database, assegnandogli un nuovo id. È possibile modificare il valore dell'id e assegnare il proprio valore sotto forma di stringa. Nella figura seguente, abbiamo creato un nuovo documento con un ID 001.

In questa pagina puoi osservare tre opzioni: Salva documento, Aggiungi campo e Carica allegato.

Aggiungi campo al documento

Per aggiungere un campo al documento fare clic su Add Fieldopzione. Dopo aver creato un database, è possibile aggiungervi un campo utilizzando questa opzione. Facendo clic su di esso otterrai un paio di caselle di testo, vale a dire,Field, value.È possibile modificare questi valori facendo clic su di essi. Modifica questi valori e digita la coppia campo-valore desiderata. Fare clic sul pulsante verde per salvare questi valori.

Nella figura seguente, abbiamo creato tre campi Nome, età e, Designazione del dipendente.

Salva documento

È possibile salvare le modifiche apportate al documento facendo clic su questa opzione. Dopo il salvataggio, un nuovo ID_rev verrà generato come mostrato di seguito.

Aggiornamento dei documenti utilizzando cURL

È possibile aggiornare un documento in CouchDB inviando una richiesta HTTP al server utilizzando il metodo PUT tramite l'utilità cURL. Di seguito è riportata la sintassi per aggiornare un documento.

curl -X PUT http://127.0.0.1:5984/database_name/document_id/ -d '{ "field" : "value", "_rev" : "revision id" }'

Esempio

Supponiamo che nel database sia presente un documento con ID 001 denominato my_database. Puoi eliminarlo come mostrato di seguito.

Prima di tutto, ottieni l'ID di revisione del documento che deve essere aggiornato. Puoi trovare il file_rev del documento nel documento stesso, quindi ottenere il documento come mostrato di seguito.

$ curl -X GET http://127.0.0.1:5984/my_database/001
{
   "_id" : "001",
   "_rev" : "2-04d8eac1680d237ca25b68b36b8899d3 " ,
   "age" : "23"
}

Usa l'ID di revisione _rev dal documento per aggiornare il documento. Qui stiamo aggiornando l'età dai 23 ai 24 anni.

$ curl -X PUT http://127.0.0.1:5984/my_database/001/ -d
' { " age " : " 24 " , " _rev " : " 1-1c2fae390fa5475d9b809301bbf3f25e " } '

{ " ok " : true , " id " : " 001 " , " rev " : " 2-04d8eac1680d237ca25b68b36b8899d3 " }

Verifica

Per verificare il documento, ottenere di nuovo il documento utilizzando la richiesta GET come mostrato di seguito.

$ curl -X GET http://127.0.0.1:5984/my_database/001
{
   " _id " : " 001 ",
   " _rev " : " 2-04d8eac1680d237ca25b68b36b8899d3 " ,
   " age " : " 23 "
 }
Note

Di seguito sono riportati alcuni punti importanti da notare durante l'aggiornamento di un documento.

  • L'URL che inviamo nella richiesta contenente il nome del database e l'ID del documento.

  • L'aggiornamento di un documento esistente equivale all'aggiornamento dell'intero documento. Non è possibile aggiungere un campo a un documento esistente. È possibile scrivere solo una versione completamente nuova del documento nel database con lo stesso ID documento.

  • Dobbiamo fornire il numero di revisione come parte della richiesta JSON.

  • In cambio, JSON contiene il messaggio di successo, l'ID del documento in fase di aggiornamento e le nuove informazioni sulla revisione. Se vuoi aggiornare la nuova versione del documento, devi citare l'ultimo numero di revisione.

Aggiornamento dei documenti utilizzando Futon

Per eliminare un documento apri il file http://127.0.0.1:5984/_utils/ url per ottenere una pagina Panoramica / indice di CouchDB come mostrato di seguito.

Selezionare il database in cui esiste il documento da aggiornare e fare clic su di esso. Qui stiamo aggiornando un documento nel database denominatotutorials_point. Otterrai l'elenco dei documenti nel database come mostrato di seguito.

Seleziona un documento che desideri aggiornare e fai clic su di esso. Otterrai il contenuto dei documenti come mostrato di seguito.

Qui, per aggiornare la posizione da Delhi a Hyderabad, fare clic sulla casella di testo, modificare il campo e fare clic sul pulsante verde per salvare le modifiche come mostrato di seguito.

Eliminazione di un documento utilizzando l'utilità cURL

È possibile eliminare un documento in CouchDB inviando una richiesta HTTP al server utilizzando il metodo DELETE tramite l'utilità cURL. Di seguito è riportata la sintassi per eliminare un documento.

curl -X DELETE http : // 127.0.0.1:5984 / database name/database id?_rev id

Utilizzando −X,possiamo specificare un metodo di richiesta personalizzato di HTTP che stiamo utilizzando, durante la comunicazione con il server HTTP. In questo caso, stiamo usando il metodo Delete. Eliminare un database /database_name/database_id/non è sufficiente. Devi passare l'ID di revisione recente tramite l'URL. Per menzionare gli attributi di qualsiasi struttura dati"?" si usa.

Esempio

Supponiamo che nel database sia presente un documento denominato my_databasecon ID documento 001. Per eliminare questo documento, è necessario ottenere l'ID rev del documento. Ottieni i dati del documento come mostrato di seguito.

$ curl -X GET http://127.0.0.1:5984/my_database/001
{
   " _id " : " 001 ",
   " _rev " : " 2-04d8eac1680d237ca25b68b36b8899d3 " ,
   " age " : " 23 "
}

Ora specifica l'ID di revisione del documento da eliminare, l'ID del documento e il nome del database a cui appartiene il documento, come mostrato di seguito:

$ curl -X DELETE http://127.0.0.1:5984/my_database/001?rev=1-
3fcc78daac7a90803f0a5e383f4f1e1e

{"ok":true,"id":"001","rev":"2-3a561d56de1ce3305d693bd15630bf96"}

Verifica

Per verificare se il documento è stato eliminato, prova a recuperare il documento utilizzando il file GETmetodo. Dato che stai recuperando un documento eliminato, questo ti darà un messaggio di errore come mostrato di seguito -

$ curl -X GET http://127.0.0.1:5984/my_database/001
{"error":"not_found","reason":"deleted"}

Eliminazione di un documento utilizzando Futon

Prima di tutto, verifica i documenti nel database. Di seguito è riportata l'istantanea del database denominatotutorials_point.

Qui puoi osservare, il database è composto da tre documenti. Per eliminare uno qualsiasi dei documenti, dire003, fare quanto segue -

  • Fare clic sul documento, verrà visualizzata una pagina che mostra il contenuto del documento selezionato sotto forma di coppie campo-valore.

  • Questa pagina contiene anche quattro opzioni, vale a dire Save Document, Add Field, Upload Attachment, Delete Document.

  • Clicca su Delete Document opzione.

  • Verrà visualizzata una finestra di dialogo che dice "Are you sure you want to delete this document?" Fare clic su Elimina per eliminare il documento.

Allegare file utilizzando cURL

Puoi allegare file a CouchDB proprio come le email. Il file contiene metadati come il nome e include il suo tipo MIME e il numero di byte contenuti in allegato. Per allegare file a un documento è necessario inviare una richiesta PUT al server. Di seguito è riportata la sintassi per allegare file al documento:

$ curl -vX PUT http://127.0.0.1:5984/database_name/database_id
/filename?rev=document rev_id --data-binary @filename -H "Content-Type:
type of the content"

La richiesta ha varie opzioni che vengono spiegate di seguito.

  • [email protected] - Questa opzione dice a cURL di leggere il contenuto di un file nel corpo della richiesta HTTP.

  • -H - Questa opzione viene utilizzata per menzionare il tipo di contenuto del file che stiamo per caricare.

Esempio

Alleghiamo un file denominato boy.jpg, al documento con id 001, nel database denominato my_databaseinviando una richiesta PUT a CouchDB. Prima di ciò, devi recuperare i dati del documento con id001 per ottenere la sua corrente rev id come mostrato di seguito.

$ curl -X GET http://127.0.0.1:5984/my_database/001
{
   "_id": "001",
   "_rev": "1-967a00dff5e02add41819138abb3284d"
}

Ora usando il _rev value, invia la richiesta PUT al server CouchDB come mostrato di seguito.

$ curl -vX PUT http://127.0.0.1:5984/my_database/001/boy.jpg?rev=1-
967a00dff5e02add41819138abb3284d --data-binary @boy.jpg -H "ContentType:
image/jpg"

Verifica

Per verificare se l'allegato è stato caricato, recupera il contenuto del documento come mostrato di seguito

$ curl -X GET http://127.0.0.1:5984/my_database/001
{
   "_id": "001",
   "_rev": "2-4705a219cdcca7c72aac4f623f5c46a8",
   "_attachments": {
      "boy.jpg": {
         "content_type": "image/jpg",
         "revpos": 2,
         "digest": "md5-9Swz8jvmga5mfBIsmCxCtQ==",
         "length": 91408,
         "stub": true
      }
   }
}

Allegare file utilizzando Futon

Carica allegato

Utilizzando questa opzione, è possibile caricare un nuovo allegato come un file, un'immagine o un documento nel database. A tal fine, fare clic suUpload Attachmentpulsante. Apparirà una finestra di dialogo dove potrai scegliere il file da caricare. Seleziona il file e fai clic sul fileUpload pulsante.

Il file caricato verrà visualizzato nel campo _attachments. Successivamente puoi vedere il file facendo clic su di esso.