Redalyc.Utilidad Y Funcionamiento De Las Bases De Datos NoSQL

Transcription

Facultad de IngenieríaISSN: 0121-1129revista.ingenieria@uptc.edu.coUniversidad Pedagógica y Tecnológicade ColombiaColombiaCastro Romero, Alexander; González Sanabria, Juan Sebastián; Callejas Cuervo, MauroUtilidad y funcionamiento de las bases de datos NoSQLFacultad de Ingeniería, vol. 21, núm. 33, julio-diciembre, 2012, pp. 21-32Universidad Pedagógica y Tecnológica de ColombiaTunja, ColombiaDisponible en: http://www.redalyc.org/articulo.oa?id 413940772003Cómo citar el artículoNúmero completoMás información del artículoPágina de la revista en redalyc.orgSistema de Información CientíficaRed de Revistas Científicas de América Latina, el Caribe, España y PortugalProyecto académico sin fines de lucro, desarrollado bajo la iniciativa de acceso abierto

ISSN 0121–1129Utilidad y funcionamiento de las bases de datos NoSQLDatabases NoSQL’s Utility and FunctioningFecha de recepción: 15 de noviembre de 2012Fecha de aprobación: 12 de diciembre de 2012Alexander Castro Romero*Juan Sebastián González Sanabria**Mauro Callejas Cuervo****ResumenAbstractReflexiona sobre las bases de datos NoSQL,describiéndolas y analizando el porqué de suimportancia y actualidad; además recopila y definealgunas características de este tipo de base de datos,para revisar las taxonomías más importantes yanalizar el uso conjunto de tecnologías NoSQL yrelacionales, con el fin de proporcionar un punto departida para los trabajos en esta área por parte deinvestigadores.These are reflections on NoSQL databases, whichdescribe and analyze the reasons for its importanceand for being an updated subject. Besides it collectsand defines some characteristics to describe this typeof databases, in order to review the major taxonomiesand to analyze the joint use of NoSQL and relationaltechnologies, to provide a starting point to theresearchers work in this area.Palabras clave: NoSQL, Bases de datos,Arquitectura en bases de datos.Keywords: NoSQL, Databases, DatabaseArchitecture.*Estudiante Décimo Semestre Ingeniería de Sistemas y Compu tación, Universidad Peda gógica y Tecnológica de Colombia.alexanderb221@gmail.com** Especialista en Bases de Datos, Universidad Pedagógica y Tecnológica de Colombia. Ingeniero de Sistemas y Computación, UniversidadPedagógica y Tecnológica de Colombia. Docente Auxiliar Ingeniería de Sistemas y Computación, Universidad Pedagógica y Tecnológicade Colombia. Investigador Grupo de Investigación en el Manejo de la Información (GIMI). gmail.com*** Magíster en Ciencias Computacionales. Instituto Tecnológico y de Estudios Superiores de Monterrey. Especialista en Ingeniería del Software.Universidad Antonio Nariño. Ingeniero de Sistemas. Universidad Antonio Nariño. Docente Asistente Ingeniería de Sistemas y Computación.Universidad Pedagógica y Tecnológica de Colombia. Investigador Grupo de Investigación en Software (GIS). Revista Facultad de Ingeniería, UPTC, Julio-Diciembre de 2012, Vol. 21, No. 33 , pp.21-32– CEDEC 21

Utilidad y funcionamiento de las bases de datos NoSQLI. INTRODUCCIÓNDía tras día el manejo de la información se hace máscomplejo; diferentes factores hacen que las personasinvolucradas en el área busquen tecnologías que lesayuden con este problema; sin embargo, el manejocomercial que se le da al tema dificulta realizar unabuena elección.Haciendo un paralelo con lo dicho por Henry Ford,“si le hubiera preguntado a la gente ¿qué querían?,me habrían dicho que un caballo más rápido”; lasbases de datos no pueden quedarse estancadas en unmodelo que no ofrece alternativas viables aproblemas que se están presentando, por eso se hacenecesario buscar posibles formas de solucionar estosproblemas y que sea un avance en el área del manejode la información, así como el automóvil fue unavance en el área del transporte.En los últimos años ha aumentado el interés por lasbases de datos NoSQL (Not only SQL), un nuevoconjunto de tecnologías que pueden contribuir almanejo de la información, como lo menciona [1]: “lasorganizaciones que recopilan grandes cantidades dedatos no estructurados son cada vez más propensas aluso de las bases de datos NoSQL”; lastimosamente,la documentación acerca de estas es escasa ygeneralmente se limita a pequeños artículos oejemplos prácticos, de los cuales la mayoría no seencuentran en español. Adicionalmente, espreocupante el desconocimiento del tema enambientes académicos.Por lo anterior, el presente documento hace unarevisión de las tecnologías NoSQL, tomando las partesmás significativos para formular una reflexión quesirva como punto de partida para las personasinteresadas en investigar el tema.II. CAMBIO DE PARADIGMADesde su creación, las bases de datos han sido unsoporte para la organización de la información dentrode los diferentes tipos de entidades, debido a que“las bases de datos comenzaron a aparecer a finalesde 1950 y comienzos de 1960, impulsadas por dos22– CEDECfactores tecnológicos: el incremento de la fiabilidadde los procesadores de ordenador y la expansión dela capacidad de almacenamiento secundario en cintasy unidades de disco” [2].En 1970 se propusieron por primera vez las basesde datos relacionales y las teorías subyacentes [3],entre las que se destaca el modelo de base de datosrelacional, que implicó un cambio radical en elmanejo de la información apoyándose en operacionesde conjuntos que combinan tablas de datos separadas(o relaciones) para pr oducir un conjunto derespuestas. Las consultas se especifican utilizandoel lenguaje de consulta estructurado SQL (por lassiglas en inglés de Structured Query Language),soportado en el álgebra relacional, y que permite aun usuario expresar su consulta en forma declarativa,sin ningún tipo de instrucciones detalladas deprogramación.Sin embargo, este tipo de bases de datos estápresentando inconvenientes, y la historia se repite;como se mencionó al inicio, continuos cambios enlas sociedades impulsan la aparición de modelos quesatisfagan nuevas necesidades, uno de estos esNoSQL, que define un conjunto de tecnologías quese apartan de lo planteado por los gestores de basesrelacionales, por ejemplo, la interfaz de consulta paralos usuarios en NoSQL no es soportada sobre SQL;aunque algunos autores lo describen como “unmovimiento más que como una tecnología” [4].Por otra parte, desde la aparición del término NoSQLexiste un inconveniente conceptual (en un principiose pensó usar el término “NoRel”, haciendoreferencia a “No Relacional”, pero no sonabacomercial), puesto que la denominación puedeinterpretarse a primera vista como oposición de SQL;por ello se ha querido dar vuelta a este conceptoaclarando que NoSQL (siglas en inglés de Not onlySQL) se define como “No solo SQL”; “NoSQL esusado como un término general por todas las basesde datos y almacenes de datos que no siguen lospopulares y bien establecidos principios RDBMS(Relational Database Management System), y amenudo está relacionado con grandes conjuntos dedatos y su manipulación en una escala Web” [5].Revista Facultad de Ingeniería, UPTC, Julio-Diciembre de 2012, Vol. 21, No. 33

Castro Romero, González Sanabria, Callejas CuervoPor tanto, se puede concluir que el término NoSQLhace referencia al conjunto de tecnologías, en basesde datos, que buscan alternativas al sistema de basesde datos relacional, en un contexto donde priman lavelocidad, el manejo de grandes volúmenes de datosy la posibilidad de tener un sistema distribuido.También se hace necesario destacar que al ser tanamplio este concepto cobija a múltiples tecnologías,unas más nuevas que otras, pero para este trabajo setendrán en cuenta las tecnologías que se estánmanejando actualmente y que están representandoeste movimiento.III. ¿POR QUÉ AHORA?El paradigma de bases de datos NoSQL surge a causadel cambio que se ha dado en el manejo de lainformación durante las últimas décadas; porejemplo, se proyecta un crecimiento del tráfico IPglobal, de los centros de datos, que en la actualidades casi de un zetabyte (1.099.511.627.776 gigabytes)por año a 4.8 zetabyte en el 2015 [6].Hoy los volúmenes de información crecen a un ritmosin precedentes, y cada vez se hace más compleja suadministración; las empresas no solo deseanalmacenar esta información, sino quieren sacarle elmayor provecho; los usuarios piden cada vez másvelocidad en las consultas, y la arquitectura de lossistemas ha tenido un cambio considerable. El porquéde las bases de datos NoSQL se puede resumir enlos siguientes tres aspectos:A. Tamaño y cantidad de la informaciónPara nadie es secreto que el tamaño de los archivosha crecido a un ritmo exponencial; un claro ejemploson los archivos de video, pues el aumento de lacalidad vino de la mano del aumento en el tamañode archivo; hace tan solo unos años una películausaba como medio de almacenamiento un DVD, quetenía una capacidad de 4.7 GB, hoy se distribuyenen un disco Blu-ray, con una capacidad de 25 GB.Por otro lado, la cantidad de la información tambiéncrece; por dar un ejemplo, tan solo hace unos añostomar una fotografía era algo complejo,principalmente por lo largo del proceso y los costosque implicaba, hoy se suben 4.5 millones de fotos aFlickr (sitio Web para almacenamiento de imágenesy videos) cada día [7].Las grandes compañías que manejan altos volúmenesde información se dieron cuenta de que con lainfraestructura que contaban no podrían manejar lacantidad de información que se proyecta para dentrode cinco años, por eso, son esas compañías las queestán invirtiendo y creando soluciones NoSQL. Unclaro ejemplo es lo sucedido en los Juegos Olímpicosde Londres 2012, donde se esperaba que “845millones de usuarios activos mensuales de Facebooksean responsables de más de 15 terabytes de datosal día, mientras que Twitter está a la espera de másde 13.000 tweets por segundo” [8].Estos dos aspectos: el aumento tanto en el tamañode los archivos como en su cantidad ha incidido enel crecimiento del interés hacia tecnologías NoSQL;además, hay que tener en cuenta que las bases dedatos relacionales (soluciones actuales) presentanserios problemas en cuanto a escalabilidad en elmanejo de la información se refiere, lo que generaque a medida que aumentan los datos, el desempeñodisminuye y se hacen menos intuitivas (las consultasson cada vez más largas y complejas).B. VelocidadCon la evolución en el campo de hardware, y losdramáticos aumentos de la velocidad de navegaciónen internet, se hace inaceptable para el usuario finaluna demora en segundos en una consulta a una páginaWeb. Como lo menciona [9], es la presión de losusuarios y el surgimiento de nuevas tecnologías(como el software en la nube y el streaming) las quehan impulsado el crecimiento de las tecnologíasNoSQL; con millones de usuarios solicitandoproductos completos, pero sobre todo veloces, queal final de cuentas están basados en almacenamientosy búsqueda de la información, se hace necesario unparadigma en bases de datos orientado a la velocidad.“Es un hecho que cualquier aplicación moderna va atener una arquitectura distribuida. El tamaño de losconjuntos de datos modernos es sólo una de las razonesRevista Facultad de Ingeniería, UPTC, Julio-Diciembre de 2012, Vol. 21, No. 33– CEDEC 23

Utilidad y funcionamiento de las bases de datos NoSQLpara su distribución, y no la más importante. Lasaplicaciones modernas (especialmente aplicacionesWeb) tienen muchos usuarios al mismo tiempo queexigen respuestas razonablemente ágiles” [10]; elusuario final no está interesado en qué tecnología debases de datos se use, sino en que la respuesta a susconsultas se dé en un tiempo razonable, como sedemuestra en un experimento realizado para medir lapaciencia de los usuarios en las consultas, el cualindicó que demoras de medio segundo tienen seriasconsecuencias en las métricas del negocio [11].Además, es claro que las ideas para SQL se agotaban,y la centralización de los productos aislaba las nuevaspropuestas; la gente se enfrascaba en controversiassobre cuál gestor de bases de datos era mejor, y concada versión las novedades escaseaban. “Losvendedores de Sistemas Gestores de Bases de Datos(y la comunidad de investigación) deben comenzarcon una hoja de papel y sistemas de diseño para losrequisitos del mañana, no continuar empujandolíneas de código y arquitecturas diseñadas para lasnecesidades de ayer” [14].Las bases de datos relacionales están diseñadas paraser “organizadas”; las tablas funcionan de tal formaque las podemos entender; lastimosamente, cuandoestos sistemas fueron diseñados se pensaba ensistemas pequeños, estructurados y centralizados, peroeso cambio y la información dejó de ser tan“estructurada”, los sistemas crecieron a un ritmoexponencial y se hizo necesario distribuir lainformación, lo que ocasionó que estas bases de datosfueran cada vez más lentas, y esto se constituyó en unproblema para los desarrolladores.En este punto se puede concluir que el cambio delparadigma en el manejo de la información motivó elauge del movimiento NoSQL; adicionalmente, hayque destacar el papel de grandes empresas comoGoogle, que con la presentación de su trabajo“Bigtable: A Distributed Storage System forStructured Data”, allá en el 2006, contribuyó paraque la comunidad especializada hablara del tema[15].C. Falta de innovaciónLas bases de datos tradicionales fueron creadas parala misma necesidad general de almacenamiento ymanejo de la información, pero se diseñaron teniendoen cuenta las características de la época: grandescomputadores y datos estructurados, sin embargoaunque la necesidad es la misma, la época hacambiado, y por eso se hace necesario innovar en eltema para crear soluciones que respondan a lasnecesidades actuales.Es claro que las soluciones SQL están de algunamanera estancadas, además, para la comunidad “OpenSource” ha habido noticias inquietantes últimamente(la compra de MySQL por parte de Oracle [12]), esosin contar con los costos de las soluciones máspopulares, lo cual hace que los desarrolladores mirenhacia otro lugar: “Oracle te diría que con el gradojusto de hardware y la configuración correcta deOracle RAC (Real Application Clusters) y con elsoftware mágicamente asociado, se puede lograr lamisma escalabilidad. Pero ¿a qué precio?” [13].24– CEDEC“Las últimas tendencias tanto en la red como en lacomputación en la nube están haciendo de NoSQLel modelo más deseable. La necesidades de (ampliarrápidamente) escalabilidad, desvincular el hardwaredel modelo de datos y proporcionar bases de datosmás eficientes, son todos factores que contribuyen aesta transición” [16]. Por último, debe destacarse queel tema no es nuevo, pero históricamente se puededecir que en la última década se ha hablado muchode él [17].IV. CARACTERÍSTICASNOSQLAunque es difícil determinar propiedades comunespara un conjunto de tecnologías, se proponen seiscaracterísticas específicas para poder encasillar a lasbases de datos NoSQL [18]: Escalabilidad horizontal: refiriéndose a lafacilidad añadir, eliminar o realizar operacionescon elementos (hardware) del sistema, sin afectarel rendimiento. Habilidad de distribución: tiene que ver con lasescalabilidad horizontal, pero haciendo énfasisRevista Facultad de Ingeniería, UPTC, Julio-Diciembre de 2012, Vol. 21, No. 33

Castro Romero, González Sanabria, Callejas Cuervoen su soporte; para ello se tiene en cuenta lahabilidad de replicar y distribuir los datos sobrelos servidores. Uso eficiente de recursos: aprovecha las nuevastecnologías, como los discos en estado sólido, eluso eficiente de recursos como la memoria RAMy los sistemas distribuidos en general.Este punto es importante, pues permite entender quepara ganar velocidad se debe sacrificar por lo menosuna de las características mencionadas; pero elenfoque es que el sistema puede estar haciendocambios entre las combinaciones de estos elementos,teniendo en cuenta las siguientes posibilidades:- CP: el sistema ejecutará las operaciones deforma consistente, aunque se pierda lacomunicación entre nodos (partición del sistema),pero no se asegura que el sistema responda(disponibilidad).- AP: el sistema siempre responderá a laspeticiones, aunque se pierda la comunicaciónentre nodos (partición del sistema). Los datosprocesados pueden no ser consistentes.- CA: el sistema siempre responderá a laspeticiones y los datos procesados seránconsistentes. En este caso no se permite unapérdida de comunicación entre nodos (particióndel sistema). Libertad de esquema: al no tener un esquemarígido se permite mayor libertad para modelar losdatos; además facilita la integración con loslenguajes de programación orientados a objetos,lo que evita el proceso de mapeado. Modelo concurrencia débil: no implementa ACID(Atomicity, Consistency, Isolation andDurability), que reúne las caracter ísticasnecesarias para que una serie de instruccionespuedan ser consideradas una transacción, sinembargo sí se tienen en cuenta algunasconsideraciones para asegurar estos aspectos,pero no son tan estrictas. Consultas simples: las consultas requieren menosoperaciones y son más naturales, por la tanto, segana en simplicidad y eficiencia.Por otro lado, se propone considerar cuatro aspectosteóricos muy importantes [19]: ACID “relajado”: como ya se mencionó, ACIDes muy importante en los sistemas de bases dedatos relacionales; sin embargo, en los sistemasNoSQL se hizo evidente que con el fin deproporcionar una gran escalabilidad, puede sernecesario relajarse o redefinir algunas de lascualidades de este modelo, en particularconsistencia y durabilidad. Teorema CAP (Consistency Availability Partitiontolerance): en el 2000, Eric Brewer [20] propusola idea de que en un entorno distribuido unsistema no puede mantener continuamenteconsistencia perfecta, disponibilidad y toleranciapartición simultáneamente.- Consistencia: los usuarios tienen laposibilidad de acceder simultáneamente a unmismo registro.- Disponibilidad: la garantía de que cadasolicitud recibe una respuesta.- Tolerancia de reparto: el sistema siguefuncionando a pesar de la pérdida arbitraria deinformación.Revista Facultad de Ingeniería, UPTC, Julio-Diciembre de 2012, Vol. 21, No. 33Por ejemplo, en el caso de la consistencia, en lossistemas relacionales la consistencia completahace a estos más lentos, pues se implementancerraduras, para (por dar dos casos) que dosusuarios no puedan modificar un archivo almismo tiempo y que no se pueda alterar laestructura si alguien está trabajando con unelemento de esta; en los sistemas NoSQL se optapor una consistencia eventual, que permite a cadasistema hacer cambios a los datos y aprender deotras actualizaciones realizadas por otros sistemasdentro de un corto periodo de tiempo, sin sertotalmente coherente en todo momento.Al hacer esto se reafirma la teoría de que esnecesario sacrificar algunas características que– CEDEC 25

Utilidad y funcionamiento de las bases de datos NoSQLestán presentes en las bases de datos relacionalespara obtener nuevas características o mejorar enalgunos aspectos, pero se puede hacer de unaforma que no afecte tanto al sistema. Datos y modelo de acceso: el modelo de datos delas bases de datos relacionales, con sus tablas,relaciones, vistas, filas y columnas, ha sido muyútil y aceptado; el orden que brinda y laestructuración son cuestiones que se destacanpero que presentan problemas, entre ellos, larelación con los lenguajes orientados a objetos yla dificultad para la adaptación a datos noestructurados.Por otro lado, el modelo de acceso a las bases dedatos relacionales presenta dificultades en lagestión de las restricciones globales en un entornodistribuido, y los intenta solucionar con lacreación de barreras para coordinar cambios; estointroduce sobrecarga de la red, y a veces puededetener el progreso en el sistema. Datos y procesos distribuidos: además dedistribuir los datos, las bases de datos NoSQLpermiten la aplicación de procesos a los datosque se encuentran distribuidos sin necesidad decentralizarlos; este almacenamiento distribuidocontribuye positivamente a la fiabilidad yescalabilidad de la base de datos, pero presentamuchos retos en su implementación, como loscostos extra para el almacenamiento de datosduplicados y su correcta gestión.Se hace necesario unificar criterios para estudiar alas bases de datos NoSQL, por eso se establecen trescaracterísticas generales: Son sistemas descentralizados: esto quiere decirque son sistemas distribuidos y que permiten unafácil escalabilidad horizontal; por eso, parafuturas consideraciones se hace necesario revisarlas características de sistemas distribuidos. Esquema flexible: no quiere decir que no existaun esquema, sino que cada tecnología maneja unesquema que no es rígido. Estos esquemas están26– CEDECenfocados en las características de los sistemasactuales, y que el modelado sea sencillo y natural. Cambio de modelo: hay quienes pretenden queNoSQL mejore sus fallas sacrificando susprincipios, lo que resultaría volver al modelorelacional; sin embargo, no hay que caer en esto,hay que recordar que este es un nuevo paradigmay necesita nuevas propuestas, un ejemplo es lo quepasó con ACID, en vez a implementarlo “a lasmalas” se propone un sistema llamado “BASE(Basically Available, Soft State, EventuallyConsistent), que es diametralmente opuesta aACID. Donde este último es pesimista y fuerza laconsistencia al final de cada operación, BASE esoptimista y acepta que la consistencia de base dedatos estará en un estado de flujo. Ladisponibilidad de BASE se logra mediante el apoyoa fallos parciales sin fallo total del sistema” [21].Es interesante analizar cómo muchas de estascaracterísticas responden a las oportunidades deinvestigación en bases de datos planteadas por“Reporte Claremont en investigación en bases dedatos” [22], que define cinco oportunidades deinvestigación: Revisar los motores de bases de datos: que en síes uno de los propósitos de NoSQL. Programación declarativa para plataformasemergentes: lo usuarios de NoSQL son capacesde escribir código r obusto para entornoscomplejos debido a la cercanía entre el modeladoen NoSQL y el modelado del negocio. La interacción de datos estructurados y noestructurados: como ya se ha mencionado, elmanejo de datos no estructurados es uno de lospuntos fuertes de NoSQL. Nube de servicios de datos: la computación en lanube se puede definir como una de las causas delresurgimiento de las tecnologías NoSQL, en estepunto se destaca que estas tecnologías fuerondiseñadas para soportar la arquitectura de estetipo de sistemas.Revista Facultad de Ingeniería, UPTC, Julio-Diciembre de 2012, Vol. 21, No. 33

Castro Romero, González Sanabria, Callejas Cuervo Aplicaciones móviles y mundos virtuales: lanecesidad de gestionar grandes cantidades dediversos datos creados por el usuario, de sintetizarde forma inteligente y de proporcionar serviciosen tiempo real es satisfecha por las bases de datosNoSQL a la perfección.V. TAXONOMÍAAunque existen muchas tecnologías en bases de datosNoSQL, cuando se habla de categorías se puedendestacar cuatro [23]:A. Almacenamiento clave-valorDe las bases de datos NoSQL, las de clave/valor sonlas más simples; en ellas se asigna una clave única(llamada llave) a un valor que es típicamente unacadena arbitraria. La operación de encontrar el valorasociado a una clave se denomina “lookup”(indexación), y la relación entre una clave y su valorse denomina correlación (vinculante).La naturaleza poco estructurada de las bases de datosde clave/valor asegura una buena escalabilidad, sinembargo, es complejo crear un llave representativapara cada registro; además, hay que tener en cuentaque la novedad con este tipo de bases de datosNoSQL es la posibilidad de tener los datos en unambiente distribuido. Se recomienda su uso en casosdonde se necesita velocidad en las consultas o setienen muchos datos con estructura simple querequieren ser procesados una y otra vez y tienenvalores cambiantes, por ejemplo, listas de los másvendidos, carritos de la compra, las preferenciascliente, gestión de sesiones, rango de venta y catálogode productos [24].Ejemplo: Redis [25] es una base de datos NoSQL declave-valor, donde los valores pueden contener tiposde datos más complejos, con operaciones atómicasdefinidas para ese tipo de datos. Los tipos de datosRedis están estrechamente relacionados con lasestructuras de datos fundamentales y se exponen alprogramador como tal, sin capas de abstracciónadicionales.Ejemplo práctico:Set name BatmanGet namelpush heroes “Batman”lpush heroes “Superman”lpush heroes “Green Lanter”lrange heroes 0 -1 //Muestra los dos primerossort heroes alpha //los ordena alfabéticamentehset user name “Batman”hset user tierra “Tierra 1”En el ejemplo se aprecia cómo se asigna como valorlos nombres de los héroes; Redis se encarga segenerar una clave única para cada uno, lo que permitefacilitar su recuperación; para ello existen diferentesfunciones, como “irange” y “sort”.B. Almacenamiento de documentosUn almacén de documentos gestiona los registrosde datos estructurados jerár quicamente yproporciona medios para recuperar registros enfunción de su contenido real. Esta categoria de basesde datos NoSQL proporciona la capacidad demanejar millones de lecturas simultáneas, puesto queya tienen una lectura simple (como típicamente undocumento que contiene toda la informaciónrequerida).En el almacenamiento de documentos se mantienetoda la información relacionada a una entidad en soloun documento [26].Ejemplo: MongoDB [27] (de “humongous” descomunal-) es una base de datos NoSQL escalable,de alto rendimiento y de código abierto; guardaestructuras de datos en documentos tipo JSON(JavaScript Object Notation) con un esquemadinámico, haciendo que la integración de los datosen ciertas aplicaciones sea más fácil y rápida.En este tipo de base de datos NoSQL se manejancuatro elementos:Revista Facultad de Ingeniería, UPTC, Julio-Diciembre de 2012, Vol. 21, No. 33– CEDEC 27

Utilidad y funcionamiento de las bases de datos NoSQL Base de datos: contiene un conjunto decolecciones. Colección: contiene un conjunto de documentos,puede relacionarse con las tablas del modelorelacional, pero hay que tener en cuenta que acáse pueden almacenar documentos con diferentesatributos. Documento: es un conjunto de campos. Campo: es una pareja compuesta por una Llavey un Valor, donde la llave es el nombre del campoy el valor su contenido.Ejemplo práctico:Use dcdc.historia.save({“nombre”: “El caballero de lanoche regresa”, “Paginas”: 25, “personajes”: [{“nombre”: “Batman”, “Tierra”: “Tierra 1”},{“nombre”: “Superman”, “Tierra”: “Tierra ombre”:”Batman”})En el ejemplo se aprecia cómo en un únicodocumento se puede guardar tanto la informaciónde una historieta (su nombre y número de páginas)como los nombres de los personajes que aparecenen ella (además de la tierra en la que viven); en elmodelo relacional serían necesarias al menos dostablas para modelar este problema. Adicionalmente,las consultas se expresan de una manera natural, esdecir, manejan una estructura más sencilla ysemántica.C. Almacenamiento de familias de columnasUna base de datos orientada a columnas almacenasu contenido por columnas, en lugar de por filas.Las bases de datos orientadas a columnas tienden aser un híbrido de las clásicas bases de datosrelacionales y la tecnología orientada a columna. Lacolumna es la base, es un elemento compuesto deun nombre, un valor y una marca de tiempo. La base28– CEDECde datos almacena sus datos (físicamente por familiasde columna) de manera que pueden ser rápidamenteagregados, con menos actividad de entrada y salida.Como los datos de la columna son de tipo uniforme,la optimización del tamaño de almacenamiento selogra mediante esquemas tales como algoritmos decompresión. Una desventaja de almacenar los datosen columnas es que los datos de una entidad seesparcen entre varias columnas; por lo tanto, lainserción y la actualización o lectura del contenidocompleto de una entidad puede ser más lenta ycompleja que en una base de datos relacional.Las bases de datos orientadas a columnas serecomiendan para grandes almacenes de datos cuyalectura es más frecuente que su escritura, y esnecesario realizar muchas operaciones con losatributos de las entidades, como en el manejo dedatos estadísticos [28].Ejemplo: HBase[29] es una base de datos NoSQLde código abierto inspirada en Big Table de Google,la cual comprende un conjunto de tablas quecontienen filas y columnas; además, debe tener unelemento definido, como una clave principal, y todoslos intentos de acceso a ella han de usar esta claveprincipal. Una columna representa un atributo de unobjeto; cada fila podría es una entrada de registro.En HBase se permite que muchos atributos puedanser agrupados juntos, en lo que se conoce comofamilias de columna, de tal manera que los elementosde una familia columna se almacenan todos juntos.D. Almacenamiento de grafosUna base de datos de grafos utiliza estructuras grafoscon nodos (que vienen a ser objetos o entidades),bordes (relación entre los objetos o entidades) ypropiedades para representar y almacenarinformación. Un grafo (o una red) es una estructurade datos flexible y que se integra más fácilmentecon la estructura de aplicaciones orientadas a objetos.Las bases de datos de grafos se pueden escalar deforma más natural a conjuntos de datos de grantamaño, y son más adecuadas para la gestión ad-hocy el cambio de datos con esquemas cambiantes. EsteRevista Facultad de Ingeniería, UPTC, Julio-Diciembre de 2012, Vol. 21, No. 33

Castro Romero, González Sanabria, Callejas Cuervotipo de bases de datos se recomienda para estructurasdinámicas complejas, como las redes sociales, comose aprecia en [30].útiles para resumir un conjunto de datos enorme,mientras que SQL se puede utilizar para un análisismás detallado” [33].Ejemplo: Neo4j [31] es una base de datos NoSQLbasada en grafos de alto rendimiento, con todas lascaracterísticas de una base de datos madura y robusta.EMC (compañía norteamericana en el área delalmacena

Facultad de Ingeniería ISSN: 0121-1129 revista.ingenieria@uptc.edu.co Universidad Pedagógica y Tecnológica de Colombia Colombia Castro Romero, Alexander; González Sanabria, Juan Sebastián; Callejas Cuervo, Mauro Utilidad y funcionamiento de las bases de datos NoSQL Facultad de Ingeniería, vol. 21, núm. 33, julio-diciembre, 2012, pp. 21-32