NoSQL a fost unul dintre cele mai discutate subiecte din ultimele luni. Acest tutorial vă va prezenta CouchDB, o implementare NoSQL și vă va învăța cum să începeți cu platforma.
NoSQL este schema gratuită - nu trebuie să decideți structura în față.
NoSQL [nu numai SQL] este o mișcare către magazinele de documente care nu utilizează modelul relațional. Schimbarea paradigmelor fundamentale este în modul în care stochează datele. De exemplu, atunci când trebuie să stocați date despre o factură, în RDBMS ar trebui să distilați aceste informații în tabele și apoi să utilizați o limbă de server pentru a transforma aceste date în obiecte reale. Pe de altă parte, în NoSQL, stocați doar factura. NoSQL este schema gratuită, ceea ce înseamnă că nu aveți nevoie să vă proiectați tabelele și să le structurați în față - puteți începe pur și simplu să stocați noi valori.
Continuând exemplul facturii, unele facturi pot include un număr de TVA, altele nu pot. Într-o RDBMS, va trebui să spuneți tabelului dvs. să accepte mai întâi un număr de TVA și apoi să fie nul. În NoSQL, cu toate acestea, puteți stoca doar facturi cu sau fără un număr de TVA - nu există nicio schemă. Rețineți că NoSQL nu este un glonț de argint. Dacă datele dvs. sunt într-adevăr relaționale, lipirea cu RDBMS ar fi alegerea potrivită.
MapReducing are avantaje asupra interogărilor SQL deoarece sarcina hartă / reducere poate fi distribuită între mai multe noduri, ceva nu este posibil în RDBMS.
Bazele de date NoSQL utilizează harta / reducerea la interogarea și indexarea bazei de date. În RDBMS, executați o interogare care unește mai multe tabele împreună pentru a crea mai întâi un grup de date și apoi interogarea rulează crearea unui set de rezultate, un subset al datelor globale. În NoSQL, utilizați harta / reduceți pentru a crea o vizualizare (similară cu rezultatul), această vizualizare fiind un subset al datelor globale.
Harta este în esență extragerea datelor și reducerea, agregarea datelor. Cu cât sunteți mai familiarizați cu RDBMS, cu atât va fi mai dificilă apucarea / reducerea hărții. Harta Reducționarea avantajelor față de interogările SQL, deoarece hartă / reducerea sarcinii poate fi distribuită între mai multe noduri, ceea ce nu este posibil în RDBMS. Adăugarea unei noi înregistrări în baza de date nu constituie întotdeauna sarcina de hartă / reducere complet redată.
Câteva informații despre CouchDB pe care ar trebui să le cunoașteți:
CouchDB este o bază de date concepută pentru a rula pe internetul de astăzi.
CouchDB vă permite să scrieți o aplicație pe partea clientului care vorbește direct cu Canapeaua fără a avea nevoie de un strat intermediar de pe server, reducând în mod semnificativ timpul de dezvoltare. Cu CouchDB, puteți să vă ocupați cu ușurință de cerere prin adăugarea mai ușoară a nodurilor de replicare. CouchDB vă permite să reproduceți baza de date către clientul dvs. și cu filtrele pe care le puteți replica și pe acele date specifice utilizatorului.
Având baza de date stocată local înseamnă că aplicația dvs. din partea clientului poate funcționa fără aproape nici o latență. CouchDB se va ocupa de replicarea cloud-ului pentru tine. Utilizatorii dvs. puteau accesa facturile pe telefonul mobil și efectuau modificări fără o latență vizibilă, toate fiind offline. Atunci când o conexiune este prezentă și utilizabilă, CouchDB va replica automat aceste modificări în cloudul CouchDB.
CouchDB este o bază de date concepută pentru a rula pe internetul de azi pentru aplicațiile desktop de astăzi și pentru dispozitivele conectate prin care accesăm internetul.
Cel mai simplu mod de a obține CouchDB în funcțiune pe sistemul dvs. este să vă îndreptați către CouchOne și să descărcați o distribuție CouchDB pentru sistemul dvs. OS - OSX în cazul meu. Descărcați zipul, extrageți-l și plasați CouchDBX în dosarul meu de aplicații (instrucțiuni pentru alte sisteme de operare pe CouchOne).
În cele din urmă, deschideți CouchDBX.
După ce CouchDB a început, ar trebui să vedeți panoul de control Futon din aplicația CouchDBX. În cazul în care nu puteți, puteți accesa Futon prin browserul dvs. Privind la jurnal, CouchDBX ne spune că CouchDB a început la http://127.0.0.1:5984/
(pot fi diferite în sistemul dvs.). Deschideți un browser și mergeți la http://127.0.0.1:5984/_utils/
și ar trebui să-l vezi pe Futon.
Pe tot parcursul acestui tutorial voi folosi Futon în Firefox. Voi avea, de asemenea, Firebug și vizualizarea consolei deschise pentru a vedea toate cererile HTTP pe care Futon le trimite în spatele scenei. Acest lucru este util deoarece aplicația dvs. poate face tot ce face Futon. Să mergem mai departe și să creăm o bază de date numită mycouchshop
.
Futon utilizează de fapt un plugin jQuery pentru a interacționa cu CouchDB. Puteți vedea pluginul la http://127.0.0.1:5984/_utils/script/jquery.couch.js
(țineți cont de portul dvs. poate fi diferit). Acest lucru vă oferă un bun exemplu de interacțiune cu CouchDB.
CouchDB, în mod implicit, este complet deschis, oferind fiecărui utilizator drepturi de administrator pentru instanță și toate bazele sale de date. Acest lucru este minunat pentru dezvoltare, dar evident rău pentru producție. Hai să mergem mai departe și să instalezi un administrator. În partea din dreapta jos, veți vedea "Bine ați venit la Admin Party! Toată lumea este admin!.
Mergeți mai departe și faceți clic pe repara asta și dați-vă un nume de utilizator și o parolă. Acest lucru creează un cont de administrator și permite accesul utilizatorilor anonimi la operațiile de citire și scriere pe toate bazele de date, dar fără privilegii de configurare.
În CouchDB nu ar fi înțelept să creezi un singur super-utilizator și să îl faci pe acel utilizator să citească / scrie.
Utilizatorii din CouchDB pot fi puțin confuz să înțeleagă inițial, mai ales dacă sunteți obișnuiți să creați un singur utilizator pentru întreaga aplicație și apoi să vă gestionați utilizatorii în cadrul unei tabele de utilizatori (nu tabelul utilizatorilor MySQL). În CouchDB, nu ar fi înțelept să creați un singur utilizator super și să îl faceți pe acel utilizator să citească / scrie, deoarece dacă aplicația dvs. are client, atunci acreditările acestui super utilizator vor fi vizibile în codul sursă JavaScript.
CouchDB are creare de utilizatori și autentificare copiate. Puteți crea utilizatori cu ajutorul pluginului jQuery utilizând $ .Couch.signup ()
. Acestea devin, în esență, utilizatorii sistemului dvs. Utilizatorii sunt doar documente JSON ca orice altceva, astfel încât să puteți stoca toate atributele suplimentare pe care le doriți, cum ar fi e-mail, de exemplu. Apoi puteți folosi grupuri în cadrul CouchDB pentru a controla documentele la care fiecare utilizator are acces la scriere. De exemplu, puteți crea o bază de date pentru acel utilizator la care să poată scrie și apoi să le adauge într-un grup cu acces de citire la celelalte baze de date, după cum este necesar.
Acum, să creăm primul nostru document folosind Futon prin următorii pași:
mycouchshop
Bază de date.Treceți la un nivel, înapoi la baza de date și ar trebui să vedeți un document enumerat cu codul anterior ca cheie și o valoare care începe cuRev:
. Acesta este documentul JSON pe care tocmai l-ați creat.
CouchDB este o bază de date anexată numai - actualizări noi sunt adăugate la baza de date și nu suprascrie versiunea veche. Fiecare actualizare nouă a unui document JSON cu un ID pre-existent va adăuga o nouă revizuire. Aceasta înseamnă cheia de revizuire introdusă automat. Urmați pașii de mai jos pentru a vedea acest lucru în acțiune:
mycouchshop
faceți clic pe singura înregistrare vizibilă.După ce ați lovit salvați, o nouă cheie de revizuire ar trebui să fie vizibilă începând cu numărul 2. Revenind la un nivel la mycouchshop
vizualizarea bazei de date, veți vedea în continuare doar un singur document, aceasta este ultima revizuire a documentului nostru de produs.
În timp ce CouchDB folosește revizuiri interne, încercați să nu vă sprijiniți prea mult. Reviziile pot fi curățate cu ușurință de către Futon și nu sunt concepute pentru a fi utilizate ca sistem de control al revizuirii. CouchDB utilizează reviziile ca parte a funcționalității sale de replicare.
Am menționat deja că CouchDB folosește o interfață RESTful, iar cititorul cu ochi de vultur ar fi observat că Futon va folosi acest lucru prin consola din Firebug. În cazul în care nu ați făcut-o, permiteți-o să dovedească acest lucru prin introducerea unui document folosind cURL prin Terminal.
Primul, să creăm un document JSON cu conținutul de mai jos și să îl salvăm pe desktop, care sună la fișier person.json
.
"nume": "Gavin", "nume": "Cooper", "tip": "persoană"
Următor →, deschideți terminalul și executați cd ~ / Desktop /
punându-vă în directorul corect și apoi efectuați inserarea cu curl -X POST http://127.0.0.1:5984/mycouchshop/ -d @ person.json -H "Content-Type: aplicație / json"
. CouchDB ar fi trebuit să returneze un document JSON similar celui de mai jos.
"Ok": true, "id": "c6e2f3d7f8d0c91ce7938e9c0800131c", "rev": "1-abadd48a09c270047658dbc38dc8a892"
Acesta este ID-ul și numărul de revizie al documentului inserat. CouchDB urmează convenția RESTful și astfel:
Putem verifica suplimentar inserarea noastră prin vizualizarea tuturor documentelor din site-ul nostru mycouchshop
baza de date prin executare curl -X GET http://127.0.0.1:5984/mycouchshop/_all_docs
.
Vizionarea tuturor documentelor este destul de inutilă din punct de vedere practic. Ce ar fi mai ideal este să vizualizați toate documentele produsului. Urmați pașii de mai jos pentru a realiza acest lucru:
funcția (doc) if (doc.type === "product" && doc.name) emit (doc.name, doc);
După crearea acestei simple funcții de hartă, putem cere acum această vizualizare și vom vedea conținutul său prin HTTP utilizând următoarea comandă curl -X GET http://127.0.0.1:5984/mycouchshop/_design/products/_view/products
.
Un mic lucru pe care trebuie să-l observați este modul în care obținem ID-ul documentului și revizuirea în mod implicit.
Pentru a efectua o reducere utilă, să adăugăm un alt produs în baza noastră de date și să adăugăm un atribut de preț cu valoarea de 1,75 la primul nostru produs.
"nume": "Produsul meu", "preț": 2,99, "tip": "produs"
Pentru noul nostru punct de vedere, vom include o reducere, precum și o hartă. În primul rând, trebuie să definim hărțile definite mai jos.
funcția (doc) if (doc.type === "produs" && doc.price) emit (doc.id, doc.price);
Funcția hartă de mai sus verifică pur și simplu dacă documentul introdus este un produs și că are un preț. Dacă aceste condiții au fost îndeplinite, prețul produselor este emis. Funcția de reducere este mai jos.
funcție (chei, prețuri) sumă de returnare (prețuri);
Funcția de mai sus ia prețurile și returnează suma utilizând una dintre funcțiile de reducere construite în CouchDB. Asigurați-vă că verificați opțiunea de reducere din partea dreaptă sus a tabelului cu rezultate, deoarece altfel nu veți putea vedea rezultatele reducerii. Este posibil să fie nevoie să faceți o reîncărcare puternică pe pagină pentru a vedea opțiunea de reducere
În acest tutorial, am făcut o privire scurtă, dar concentrată asupra CouchDB. Am văzut puterea potențială a lui CouchDB și cât de ușor este să începeți. Sunt sigur că aveți multe întrebări în acest moment, deci nu ezitați să faceți clic pe mai jos. Vă mulțumesc foarte mult pentru lectură!