A mesura que el panorama de les aplicacions evoluciona, les empreses es troben en la necessitat d'avaluar noves bases de dades que suportin els canvis i els nous requisits de negoci. Analitzem alguns criteris claus per avaluar les bases de dades emergents de tipus no relacional (NoSQL).
Les bases de dades relacionals tradicionals ocupen una posició molt destacada actualment a les empreses. Respalden les aplicacions heretades que compleixen amb les necessitats del negoci, compten amb un llarg nombre de professionals qualificats per implementar i mantenir els seus sistemes i tenen un ampli i contrastat ecosistema d’eines en el mercat.
No obstant això, durant aquests últims anys, les empreses també comencen a considerar alternatives, com les bases de dades NoSQL, principalment motivades per les següents raons:
- Utilitzar sistemes més econòmics i menys complexos que redueixin els costos de llicències, infraestructura i desenvolupament.
- Trobar sistemes més escalables als actuals, especialment per a servir dades en les quals la importància del contingut és baixa i per a aplicacions que gestionen Big Data.
- Utilitzar models de dades més flexibles i reutilitzables que els que ofereix el model relacional en si mateix amb les operacions SQL.
D’aquesta manera, el terme NoSQL, o Not only SQL, representa una àmplia classe de sistemes de gestió de bases de dades no relacionals, distribuïdes, escalables horitzontalment, de codi obert i, a priori més ràpides, ja que no implementen les propietats ACID (Atomicity, Consistency, Isolation and Durability) que sí presenten les bases de dades relacionals. Tot i que això últim no sempre és cert, ja que molts d’aquests sistemes encara no són prou madurs.
Model de dades
Una de les principals diferències entre les bases de dades NoSQL i les bases de dades relacionals és el model de dades. Tot i que actualment existeixen al voltant de 150 tipus de bases de dades NoSQL diferents, els seus models de dades es poden agrupar en tres grans grups:
MODEL DE DADES | FORMAT | CARACTERÍSTIQUES | APLICACIONS |
---|---|---|---|
Document | Similar a JSON (*JavaScript Object Notation*) | - Intuïtiu - Manera natural de modelar dades propera a la programació orientada a objectes - Flexibles, amb esquemes dinàmics - Redueixen la complexitat de l'accés a les dades | Es poden utilitzar en diferents tipus d'aplicacions degut a la flexibilitat que ofereixen |
Graf | Nous amb propietats (atributs) i relacions (arestes) | - Les dades es modelen com un conjunt de relacions entre elements específics - Flexibles, atributs i longitud de registres variables - Permet consultes més àmplies i jeràrquiques | Xarxes socials, programari de recomanació, geolocalització, topologies de xarxa ... |
Clau-Valor i Columna | **Clau-valor:** una clau i el seu valor corresponent **Columnes:** variant que permet més d'un valor (columna) per clau | - Rendiment molt alt - Alta corba d'escalabilitat - Útil per representar dades no estructurades | Aplicacions que només utilitzen consulta de dades per un sol valor de la clau |
Model de consultes
Cada aplicació té uns requisits diferents. En alguns casos, és suficient tenir un model de consultes bàsic en el qual l’aplicació accedeix als registres basant-se en una clau primària. No obstant això, en la majoria d’aplicacions, és necessari poder executar consultes basant-se en diversos valors diferents per a cada un dels registres.
- Bases de dades orientades a document: Aquest tipus de bases de dades proporcionen la possibilitat d’executar consultes basades en qualsevol tipus de camp dins del document. Les bases de dades orientades a document també permeten fer consultes basades en índexs secundaris. Això permet actualitzar registres incloent un o més camps dins del document.
- Bases de dades orientades a graf: L’emmagatzematge en aquest tipus de bases de dades està optimitzat per executar la navegació entre nodes (traversals). Per aquest motiu, les bases de dades orientades a graf són eficients per realitzar consultes en les quals existeixin relacions de proximitat entre dades, i no per executar consultes globals.
- Bases de dades clau-valor i orientades a columna: Aquest tipus de sistemes permeten obtenir i actualitzar dades basant-se en una clau primària. Les bases de dades clau-valor i orientades a columna ofereixen un model de consultes limitat que pot imposar costos de desenvolupament i requisits a nivell d’aplicació per oferir un model de consultes avançat. Un exemple d’això són els índexs, que han de ser gestionats pel propi usuari.
En els sistemes consistents es garanteix que les escriptures siguin immediatament visibles per a les consultes posteriors. Aquest tipus de sistemes són especialment útils per a aplicacions en les quals és indispensable que les dades siguin sempre coherents. Els sistemes consistents proporcionen avantatges en les escriptures, tot i que, en contrapartida, les lectures i les actualitzacions són més complexes.
En els sistemes eventualment consistents, un terme popularitzat per Amazon, existeix un període durant el qual no totes les còpies de les dades estan sincronitzades. El fet de no haver de comprovar la consistència de les dades en cadascuna de les operacions suposa una millora important en el rendiment i disponibilitat del sistema, tot i que per això es sacrifiqui la coherència de les dades. Aquest tipus de sistemes són especialment útils per a dades que no canvien sovint, com arxius històrics o logs.
Les bases de dades orientades a document o grau poden ser consistents o eventualment consistents, mentre que les bases de dades clau-valor i orientades a columna són típicament eventualment consistents.
APIS
La funcionalitat principal de l’API (Application Programming Interface) és mantenir el diàleg amb la base de dades, per poder dur a terme l’accés i la manipulació de les dades.
Les bases de dades NoSQL no compten amb un estàndard, per la qual cosa cada base de dades posseeix la seva pròpia API. La maduresa de l’API repercuteix tant en el temps com en el cost del desenvolupament d’aplicacions.
Alguns sistemes utilitzen drivers idiomàtics que permeten treballar amb les dades i serveis utilitzant els paradigmes d’un llenguatge de programació concret. Mitjançant aquest enfocament s’aprofiten les característiques específiques del llenguatge de programació per accedir i processar les dades de manera eficient. Per als programadors, els drivers idiomàtics són fàcils d’aprendre i redueixen el temps d’adaptació a un nou sistema de dades.
Altres bases de dades utilitzen interfícies RESTful. Aquest enfocament és senzill i conegut, però té associades les latències inherents del protocol HTTP.
Suport comercial i de la comunitat
El suport comercial i de la comunitat són punts importants que també s’han de tenir en compte a l’hora de seleccionar una base de dades.
Pel que fa al suport comercial, és important avaluar tant l’estat del projecte com de l’empresa que el respalda. No només és important la continuïtat del producte, sinó les seves expectatives d’evolució. És important que l’empresa que el respalda sigui forta, tingui experiència i ofereixi serveis addicionals: suport, consultoria, formació i certificacions, eines de desenvolupament …
Les avantatges de tenir una comunitat forta entorn d’una base de dades són les següents:
- Facilita trobar professionals que estiguin familiaritzats amb el producte.
- Ajuda a trobar documentació, codi i exemples més fàcilment.
- Impulsa altres organitzacions i empreses a desenvolupar integracions i participar en l’ecosistema.