CouchDB ca server de aplicatii

Categorii: Programare

17-Jul-2015 21:56 - 491 vizionari

Imaginati-va un server de documente (o colectie de date de tip cheie = valoare) cu interfata de web si cu posibilitatea de replicare a datelor in mod continuu (master-master, bidirectional, multimaster) intre mai multe calculatoare.
In plus, serverul sa contina programul de afisare si de prelucare a datelor (documentelor) continute in server ca unul din documentele sale (document special cu atasamente binare: imagini, html, css si JavaScript).
Toate documentele au un numar aproape nelimitat (implicit e 1000) de versiuni: uneori administratorul sau serverul automat mai sterge versiunile mai vechi ale documentelor.

Acesta este CouchDB, un program-server de tip No SQL scris in Erlang, care garanteaza ca rezolva doua probleme din maxim trei specifice bazelor de date distribuite: disponibilitate (toti clientii primesc date) si distributie (datele sunt duplicate pe cel putin inca un server). Problema care nu este garantata de CouchDB este consistenta (toti clientii primesc aceeasi informatie), dar consistenta nu poate fi garantata datorita arhitecturii serverului si limitelor fizice de copiere a datelor intre servere (replicare automata). Consistenta poate fi garantata prin confirmare a salvarii datelor, confirmare venita de la toate serverele din retea, ca salvarea s-a facut cu succes, dar asta incetineste foarte mult legatura cu serverul si reduce dramatic performantele la scrierea datelor.

Erlang este un limbaj dedicat executiei programelor pe diferite servere (multe si distribuite) si menite sa ruleze multa vreme si, daca apare o eroare sau programul se termina neasteptat (datorita erorilor de programare sau problemelor fizice cu serverele sau comunicatia intre servere), atunci un program supervizor poate sa reporneasca programul ce s-a oprit neasteptat.

Se pare ca Erlang este limbajul ideal pentru construirea sistemelor de tip server distribuite (si imi pare rau ca nu l-am studiat serios pana acum - tutorial) si care sa fie functionale 99.99% din timpul de exploatare.

Incercand sa fac o aplicatie simpla pentru CouchDB, am gasit PouchDB, un server de baze de date scris in JavaScript care foloseste protocolul de comunicatie al lui CouchDB si poate fi atat server cat si client pentru un alt server CouchDB si poate chiar face o replicare de date intre servere. PouchDB ca server stocheaza un volum mic de date (de la 5-10 mega pana la 100 de mega, limitat de browserul de web folosit) si este mai util sa fie client in aplicatiile de web care stocheaza datele in servere CouchDB.

Un tutorial PouchDB foarte interesant: cum sa administrezi o lista de actiuni (to do list) prin interfata web cu replicarea datelor din local in alt server CouchDB.

Dupa ce am inteles tutorialul si l-am modificat un pic, ca sa exersez cunostintele insusite, m-am gandit sa integrez tutorialul direct in serverul CouchDB, renuntand la replicarea Pouch <-> Couch.

Documentul index, care contine codul html si fisierele JavaScript necesare afisarii informatiei:
documentul index

Continutul bazei de date, cu documentul index si trei documente ca elemete din lista todo:
continutul bazei de date

Astfel serverul CouchDB poate fi vazut ca un sistem complet si portabil (merge in Windows, Linux, OpenBSD, etc.) de baza de date distribuita si care nu depinde de alte tehnologii pentru accesul la date.

Actualizarea serverului se face intr-un singur nod (poate fi laptopul de dezvoltare de aplicatii) si, prin replicarea bazei de date, noua versiune de program devine disponibila pe toate serverele.

In continuare testez limitele serverului CouchDB si in imaginea urmatoare este o baza de date cu 13 milioane de documente:
benchmark 13 milioane

Testele mele sunt cu versiunea 1.6.1, dar a aparut versiunea 2.0: http://couchdb.apache.org/developer-preview/2.0/



Ultimele pagini: RSS

Alte adrese de Internet

Categorii

Istoric



Contorizari incepand cu 9 iunie 2014:
Flag Counter

Atentie: Continutul acestui server reprezinta ideile mele si acestea pot fi gresite.