OrientDB

Categorii: Programare, Stiinta si Tehnologie

18-Feb-2015 20:10 - 925 vizionari

Am cautat o solutie fiabila si usor de configurat pentru un server de baze de date distribuit cu replicare automata intre noduri (peer to peer si multi master).

Dupa indelungi incercari nereusite sa configurez Apache Cassandra (folosit de CERN, eBay si alte 1500 de firme) sa comunice intre doua noduri, dupa ce am testat cu succes Postgres BDR, chiar si solutii moderne de tip NoSQL - http://nosql-database.org/, cum ar fi MongoDB (merge numai master-slave), am gasit OrientDB ca fiind cea mai potrivita solutie pentru aplicatia mea.

Bazele de date de tip NoSQL pot fi considerate baze de date moderne (No SQL) care nu sunt bazate pe structura SQL (sunt bazate pe dictionare de tip cheie:valoare) sau baze de date care nu contin numai sistemul SQL (Google: Not Only SQL).

SQL este un concept vechi, aparut prin anii 70 – Google: sql history.
Conceptul NoSQ, aparut prin 2009, ofera performante mai ridicate fata de SQL, mai ales cand baza de date este imensa (miloane, miliarde de inregistrari).

Am reusit in cateva zile sa construiesc o baza de date OrientDB cu peste 70 de milioane de inregistrari.

Nu am reusit performatele promise pe sit-ul OrientDB (150,000 de inregistrari pe secunda pe un calculator aproape normal, adica pe un laptop cu quad core si 8 giga de RAM, HDD cu 7200 RPM – nota marcata cu * in pagina de web), desi am folosit un desktop (cam vechi) cu core quad Q6600 (primul procesor cu 4 nuclee produs de Intel) si cu 8 giga de RAM (memorie veche – DDR2 la 800).

Eu am reusit maxim 800 de inregistrari pe secunda:

Apasa pentru o imagine mai mare

Sunt sigur ca sistemele moderne cu procesoare Intel i5 si i7 (nu i3, pentru ca nu este quad) si cu memorii DDR3-4 au performante mult mai mari, dar considerand ca eu am inserat in 4 ferestre cate 800 val/sec, adica total 3,200 val/sec, pana la 150,000 val/sec mai este destul de mult, mai precis diferenta este de 46 de ori. Adica sistemul meu este de 46 de ori mai lent decat sistemul lor.

Probabil este adevarat: procesoarele i5 si i7 sunt de 3-4 ori mai rapide decat generatia Core 2 (compara Intel Core i7-4790K @ 4.00GHz, cu scor 11239, cu Intel Core2 Quad Q6600 @ 2.40GHz, cu scor 2990) si memoriile moderne de 10 ori mai rapide decat DDR2 la 800 (crestere de la 400 la 4266 MT/s), mai este si diferenta de tip de HDD care ajuta (si te spioneaza) …

Pana la aproximativ 40 de milioane de inregistrari viteza de salvare a datelor in server a fost satisfacatoare, desi in ultima parte am rulat numai o instanta a programului de test, adica am adaugat date printr-un singur program, nu prin patru (memorie ocupata: 6.79G, toate procesoarele incarcate foarte putin, rata de salvare a datelor 600-800 valori pe secunda):

Apasa pentru o imagine mai mare 

Am renuntat la o incarcare prea mare a procesoarelor (am pastrat un singur program de adaugare date, nu patru) pentru ca in conditii normale de lucru datele sunt inserate destul de rar si mi-a mai fost teama sa nu se uzeze hard disk-ul prematur. Scopul meu este sa vad cum raspunde serverul la interogari pe baze de date mari, nu sa vad cat de repede pot umple serverul de date, cu riscul sa stric HDD datorita uzurii.

La peste 70 de milioane de inregistrari, pentru anumite interogari raspunsul a fost relativ acceptabil (18 secunde pentru o cautare de numere):

Apasa pentru o imagine mai mare

Dar cautatea de texte a fost foarte lenta, peste 1000 de secunde, in mod sigur datorita indexului creat gresit de mine:

Apasa pentru o imagine mai mare

Apasa pentru o imagine mai mare

Mai am de studiat diferentele intre tipurile de indexuri si, probabil cu o versiune mai noua de OrientDB, voi obtine performante mai bune.



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.