BASE DE DATOS NoSQL
El paradigma de bases de datos NoSQL surge a causa del cambio que se ha dado en el manejo de la información durante las últimas décadas; por ejemplo, se proyecta un crecimiento del tráfico IP global, de los centros de datos, que en la actualidad es casi de un zetabyte.
Hoy los volúmenes de información crecen a un ritmo sin precedentes, y cada vez se hace más compleja su administración; las empresas no solo desean almacenar esta información, sino quieren sacarle el mayor provecho; los usuarios piden cada vez más velocidad en las consultas, y la arquitectura de los sistemas ha tenido un cambio considerable. El porqué de las bases de datos NoSQL se puede resumir en los siguientes tres aspectos:
A. Tamaño y cantidad de la información
Para nadie es secreto que el tamaño de los archivos ha crecido a un ritmo exponencial; un claro ejemplo son los archivos de video, pues el aumento de la calidad vino de la mano del aumento en el tamaño de archivo; hace tan solo unos años una película usaba como medio de almacenamiento un DVD, que tenía una capacidad de 4.7 GB, hoy se distribuyen en un disco Blu-ray, con una capacidad de 25 GB. Por otro lado, la cantidad de la información también crece; por dar un ejemplo, tan solo hace unos años toma r una fotografía era algo complejo, principalmente por lo largo del proceso y los costos que implicaba, hoy se suben 4.5 millones de fotos a Flickr.
Las grandes compañías que manejan altos volúmenes de información se dieron cuenta de que con la infraestructura que contaban no podrían manejar la cantidad de información que se proyecta para dentro de cinco años, por eso, son esas compañías las que están invirtiendo y creando soluciones NoSQL
Estos dos aspectos: el aumento tanto en el tamaño de los archivos como en su cantidad ha incidido en el crecimiento del interés hacia tecnologías NoSQL; además, hay que tener en cuenta que las bases de datos relacionales (soluciones actuales) presentan serios problemas en cuanto a escalabilidad en el manejo de la información se refiere, lo que genera que a medida que aumentan los datos, el desempeño disminuye y se hacen menos intuitivas (las consultas son cada vez más largas y complejas).
B. Velocidad
Con la evolución en el campo de hardware, y los dramáticos aumentos de la velocidad de navegación en internet, se hace inaceptable para el usuario final una demora en segundos en una consulta a una página Web.
Las bases de datos relacionales están diseñadas para ser “organizadas”; las tablas funcionan de tal forma que las podemos entender; lastimosamente, cuando estos sistemas fueron diseñados se pensaba en sistemas pequeños, estructurados y centralizados, pero eso cambio y la información dejó de ser tan “estructurada”, los sistemas crecieron a un ritmo exponencial y se hizo necesario distribuir la información, lo que ocasionó que estas bases de datos fueran cada vez más lentas, y esto se constituyó en un problema para los desarrolladores.
C. Falta de innovación
Las bases de datos tradicionales fueron creadas para la misma necesidad general de almacenamiento y manejo de la información, pero se diseñaron teniendo en cuenta las características de la época: grandes computadores y datos estructurados, sin embargo aunque la necesidad es la misma, la época ha cambiado, y por eso se hace necesario innovar en el tema para crear soluciones que respondan a las necesidades actuales.
“Las últimas tendencias tanto en la red como en la computación en la nube están haciendo de NoSQL el modelo más deseable. La necesidades de (ampliar rápidamente) escalabilidad, desvincular el hardware del modelo de datos y proporcionar bases de datos más eficientes, son todos factores que contribuyen a esta transición”. Por último, debe destacarse que el tema no es nuevo, pero históricamente se puede decir que en la última década se ha hablado mucho de él.
A. Tamaño y cantidad de la información
Para nadie es secreto que el tamaño de los archivos ha crecido a un ritmo exponencial; un claro ejemplo son los archivos de video, pues el aumento de la calidad vino de la mano del aumento en el tamaño de archivo; hace tan solo unos años una película usaba como medio de almacenamiento un DVD, que tenía una capacidad de 4.7 GB, hoy se distribuyen en un disco Blu-ray, con una capacidad de 25 GB. Por otro lado, la cantidad de la información también crece; por dar un ejemplo, tan solo hace unos años toma r una fotografía era algo complejo, principalmente por lo largo del proceso y los costos que implicaba, hoy se suben 4.5 millones de fotos a Flickr.
Las grandes compañías que manejan altos volúmenes de información se dieron cuenta de que con la infraestructura que contaban no podrían manejar la cantidad de información que se proyecta para dentro de cinco años, por eso, son esas compañías las que están invirtiendo y creando soluciones NoSQL
Estos dos aspectos: el aumento tanto en el tamaño de los archivos como en su cantidad ha incidido en el crecimiento del interés hacia tecnologías NoSQL; además, hay que tener en cuenta que las bases de datos relacionales (soluciones actuales) presentan serios problemas en cuanto a escalabilidad en el manejo de la información se refiere, lo que genera que a medida que aumentan los datos, el desempeño disminuye y se hacen menos intuitivas (las consultas son cada vez más largas y complejas).
B. Velocidad
Con la evolución en el campo de hardware, y los dramáticos aumentos de la velocidad de navegación en internet, se hace inaceptable para el usuario final una demora en segundos en una consulta a una página Web.
Las bases de datos relacionales están diseñadas para ser “organizadas”; las tablas funcionan de tal forma que las podemos entender; lastimosamente, cuando estos sistemas fueron diseñados se pensaba en sistemas pequeños, estructurados y centralizados, pero eso cambio y la información dejó de ser tan “estructurada”, los sistemas crecieron a un ritmo exponencial y se hizo necesario distribuir la información, lo que ocasionó que estas bases de datos fueran cada vez más lentas, y esto se constituyó en un problema para los desarrolladores.
C. Falta de innovación
Las bases de datos tradicionales fueron creadas para la misma necesidad general de almacenamiento y manejo de la información, pero se diseñaron teniendo en cuenta las características de la época: grandes computadores y datos estructurados, sin embargo aunque la necesidad es la misma, la época ha cambiado, y por eso se hace necesario innovar en el tema para crear soluciones que respondan a las necesidades actuales.
“Las últimas tendencias tanto en la red como en la computación en la nube están haciendo de NoSQL el modelo más deseable. La necesidades de (ampliar rápidamente) escalabilidad, desvincular el hardware del modelo de datos y proporcionar bases de datos más eficientes, son todos factores que contribuyen a esta transición”. Por último, debe destacarse que el tema no es nuevo, pero históricamente se puede decir que en la última década se ha hablado mucho de él.
BASE DE DATOS NoSQL
Las bases de datos convencionales son de tipo relacional, es decir, constan de listas tabulares de datos (también conocidas como "relaciones de datos", de ahí el verdadero origen de su nombre), que se relacionan entre sí para almacenar de la forma más eficiente posible la información. Se consultan usando SQL (Structured Query Language), un lenguaje estructurado para gestionar la información.En los últimos años, Internet ha crecido de forma espectacular dando lugar a nuevos tipos de aplicaciones que necesitan gestionar cantidades enormes de datos, que deben ser introducidos y extraídos rápidamente y que deben poder escalar/crecer de manera sencilla y barata. En estos sistemas importa más la flexibilidad, la velocidad y la capacidad de escalado horizontal que otras cuestiones tradicionalmente cruciales como la consistencia o disponer de una estructura perfectamente definida para los datos.
Es una amplia clase de sistemas de gestión de bases de datos que difieren del modelo clásico de SGBDR (Sistema de Gestión de Bases de Datos Relacionales) en aspectos importantes, siendo el más destacado que no usan SQL como lenguaje principal de consultas. Los datos almacenados no requieren estructuras fijas como tablas, normalmente no soportan operaciones JOIN, ni garantizan completamente ACID (atomicidad, consistencia, aislamiento y durabilidad), y habitualmente escalan bien horizontalmente. Los sistemas NoSQL se denominan a veces "no sólo SQL" para subrayar el hecho de que también pueden soportar lenguajes de consulta de tipo SQL.
Los sistemas de bases de datos NoSQL crecieron con las principales redes sociales, como Google, Amazon, Twitter y Facebook. Estas tenían que enfrentarse a desafíos con el tratamiento de datos que las tradicionales SGBDR no solucionaban. Con el crecimiento de la web en tiempo real existía una necesidad de proporcionar información procesada a partir de grandes volúmenes de datos que tenían unas estructuras horizontales más o menos similares.
Los sistemas NoSQL son sistemas de almacenamiento de información ágiles, de gran rendimiento, distribuidos y, en casi todos los casos, escalables horizontalmente.
Esto último es muy importante porque permiten manejar eficientemente volúmenes de datos muy grandes y además escalar a voluntad con una gran simplicidad, lo cual los hace muy atractivos para aplicaciones que puedan llegar a crecer mucho. Por ello son muy utilizados por todas las grandes empresas de Internet, juegos, apps masivas para móviles, etc...
Consistencia
El Teorema CAP
El teorema CAP ha sido ampliamente adoptado por las grandes compañías de internet, al igual que por la comunidad NoSQL. Las siglas CAP hacen referencia a:
- Coherencia. En sistema distribuido, habitualmente se dice que se encuentra en un estado consistente si, después de una operación de escritura, todas las operaciones de lectura posteriores son capaces de ver las actualizaciones desde la parte del sistema desde la que están leyendo.
- Disponibilidad (Availability). La alta disponibilidad se produce cuando el sistema ha sido diseñado e implementado de modo que se pueda continuar operando (lecturas, escrituras), incluso después de que un nodo quede indispuesto, o que algunas partes de hardware tengan que ser retiradas, debido a errores o actualizaciones.
- Tolerancia a Particiones (Partition Tolerance). Entendido como la habilidad de un sistema de tener diferentes regiones o divisiones lógicas en la red, y de ser capaz de seguir funcionando aunque una de estas partes quede inaccesible durante un tiempo.
La teoría CAP (también se conoce como teorema de Bewer (Bewer 2012)) expone que es imposible que un sistema distribuido pueda garantizar simultáneamente estas 3 características. Sin embargo, el teorema de CAP también dice que sí puedes garantizar 2 de estas 3 propiedades .
Escalabilidad
La escalabilidad de un sistema informático se define como la capacidad de un sistema para expandirse según las necesidades que se deriven del uso que se le va a dar. De este modo, por ejemplo, una aplicación web es escalable si es posible atender a un número cada vez mayor de usuarios sin necesidad de cambiar la aplicación. Fundamentalmente existen dos maneras de escalar:
-Escalado vertical: implica añadir más recursos al sistema actual para que pueda atender más solicitudes. Así se le añaden más procesadores o memoria a un servidor o se añade más espacio de almacenamiento. El escalado vertical tiene un límite claro y llega un punto en el que la aplicación necesita ser rediseñada para poder escalar más. En inglés a este tipo de escalado se le denomina "Scale Up".
-Escalado horizontal: en este caso el escalado se consigue simplemente añadiendo más nodos al sistema, por ejemplo, poniendo otra máquina en paralelo a funcionar. Este tipo de escalado es más sencillo y no tiene límite, pero implica que las aplicaciones estén adaptadas para poder hacerlo, pues implican coordinación, replicación, etc... Se denomina comúnmente como "Scale Out".
El teorema de Brewer o teorema CAP
Eric Brewer, un profesor de la Universidad de Berkeley, formuló un teorema acerca de las tres dimensiones de los sistemas distribuidos (de almacenamiento de datos en este caso), que son:
- Consistencia (Consistency): implica que la información permanece coherente y consistente después de cualquier operación sobre los datos, de modo que cualquier usuario que acceda a los mismos verá la misma información.
- Disponibilidad (Availability): significa que toda la información del sistema de almacenamiento de datos distribuido está siempre disponible.
- Tolerancia de las Particiones (Partition Tolerance): se refiere a que las diferentes partes del sistema distribuido (los nodos) continuarán funcionando normalmente aunque la comunicación entre ellos se vea interrumpida o no sea confiable.
Según el teorema no es posible cumplir con las tres dimensiones a la vez. Hay que elegir dos de ellas, y de las 3 parejas resultantes se generan diferentes tipos de sistemas distribuidos de almacenamiento:
- C y A: Son sistemas en los que si falla la comunicación entre sus nodos el conjunto no puede trabajar.
- C y P: en estos, si algo ocurre parte de la información no estará disponible, pero seguirán funcionando y la información disponible será consistente.
- A y P: durante un fallo de uno de los nodos (o falta de comunicación) la información estará disponible pero puede que no sea consistente.

Aunque hay varias aproximaciones diferentes para clasificar las bases de datos NoSQL (Teorema CAP, basándonos en el modelo de datos etc.), en general se considera que existen cuatro tipos diferentes: orientadas a documentos, orientadas a columnas, de clave-valor y en grafo. Así que veamos en qué consisten estos sistemas, para que podamos elegir la opción que mejor se adapte a nuestras necesidades.
Orientadas a documentos
Son aquellas que gestionan datos semi estructurados. Es decir documentos. Estos datos son almacenados en algún formato estándar como puede ser XML, JSON o BSON. Para hacernos una idea un documento suele ser algo parecido a:
{
Orientadas a documentos
Son aquellas que gestionan datos semi estructurados. Es decir documentos. Estos datos son almacenados en algún formato estándar como puede ser XML, JSON o BSON. Para hacernos una idea un documento suele ser algo parecido a:
{
Name: "Genbeta Dev", Tipo: "Blogging", Categorias: [ { Título: "Desarrollo", Articulos: 89 }, { Título: "Formación", Artículos: 45 } ] }En esta categoría encontramos:MongoDB: probablemente la base de datos NoSQL más famosa del momento.En octubre del año pasado, MongoDB conseguía 150 millones de dólares en financiación,convirtiéndose en una da las startups más prometedoras. Algunas compañías que actualmenteutilizan MongoDB son Foursquare o eBay. CouchDB: es la base de datos orientada a documentos de Apache.Una de sus interesantes características es que los datos son accesibles a través de unaAPI Rest. Este sistema es utilizado por compañías como Credit Suisse y la BBC.Orientadas a columnas Este tipo de bases de datos están pensadas para realizar consultas y agregaciones sobregrandes cantidades de datos. Funcionan de forma parecida a las bases de datos relacionales,pero almacenando columnas de datos en lugar de registros. En esta categoría encontramos: Cassandra: incluida en esta sección, aunque en realidad sigue un modelo híbrido entreorientada a columnas y clave-valor. Es utilizada por Facebook y Twitter (aunque dejaronde usarla para almacenar tweets). HBase. Escrita en Java y mantenida por el Projecto Hadoop de Apache, se utiliza paraprocesar grandes cantidades de datos. La utilizan Facebook, Twitter o Yahoo.De clave valor Estas son las más sencillas de entender. Simplemente guardan tuplas que contienen unaclave y su valor. Cuándo se quiere recuperar un dato, simplemente se busca por su clave yse recupera el valor. En esta categoría encontramos: DynamoDB: desarrollada por Amazon, es una opción de almacenaje que puedemos usardesde los Amazon Web Services. La utilizan el Washington Post y Scopely. Redis: desarrollada en C y de código abierto, es utilizada por Craiglist y Stack OverflowEn grafo Basadas en la teoría de grafos utilizan nodos y aristas para representar los datosalmacenados. Son muy útiles para guardar información en modelos con muchas relaciones,como redes y conexiones sociales. En esta categoría encontramos: Infinite Graph: escrita en Java y C++ por la compañía Objectivity. Tiene dos modelos delicenciamiento: uno gratuito y otro de pago. Neo4j: base de datos de código abierto, escrita en Java por la compañía Neo Technology.Utilizada por compañías como HP, Infojobs o Cisco.CARACTERISTICAS
Las características comunes entre todas las implementaciones de bases de datos NoSQL
suelen ser las siguientes: Consistencia Eventual: A diferencia de las bases de datos relacionales tradicionales, en lamayoría de sistemas NoSQL, no se implementan mecanismos rígidos de consistencia quegaranticen que cualquier cambio llevado a cabo en el sistema distribuido sea visto, al mismotiempo, por todos los nodos y asegurando, también, la no violación de posibles restriccionesde integridad de los datos u otras reglas definidas. En su lugar y para obtener un mayorrendimiento, se ofrece el concepto de “consistencia eventual”, en el que los cambiosrealizados “con el tiempo” serán propagados a todos los nodos por lo que, una consultapodría no devolver los últimos datos disponibles o proporcionar datos inexactos, problemaconocido como lecturas sucias u obsoletas.Asimismo, en algunos sistemas NoSQL se pueden presentar perdidas de datos en escritura.Esto se conoce también como BASE (Basically Available Soft-state Eventual Consistency),en contraposición a ACID (Atomicity, Consistency, Isolation, Durability), su analogía en lasbases de datos relacionales.Flexibilidad en el esquema: En la mayoría de base de datos NoSQL, los esquemas de datosson dinámicos; es decir, a diferencia de las bases de datos relacionales en las que, laescritura de los datos debe adaptarse a unas estructuras(o tablas, compuestas a su vez porfilas y columnas) y tipos de datos pre-definidos, en los sistemas NoSQL, cada registro (odocumento, como se les suele llamar en estos casos) puede contener una información condiferente forma cada vez, pudiendo así almacenar sólo los atributos que interesen en cadauno de ellos, facilitando el polimorfismo de datos bajo una misma colección de información.También se pueden almacenar estructuras complejas de datos en un sólo documento, comopor ejemplo almacenar la información sobre una publicación de un blog (título, cuerpo detexto, autor, etc) junto a los comentarios y etiquetas vertidos sobre el mismo, todo en un únicoregistro.Escalabilidad horizontal: Por escalabilidad horizontal se entiende la posibilidad deincrementar el rendimiento del sistema añadiendo, simplemente, más nodos (servidores)e indicando al sistema cuáles son los nodos disponibles. Estructura distribuida: Generalmente los datos se distribuyen, entre los diferentes nodosque componen el sistema.Hay dos estilos de distribución de datos: Particionado (ó Sharding): El particionado distribuye los datos entre múltiples servidores deforma que, cada servidor, actúe como única fuente de un subconjunto de datos. Normalmente, a la hora de realizar esta distribución, se utilizan mecanismos de tablas de hash distribuidas(DHT).Réplica: La réplica copia los datos entre múltiples servidores, de forma que cada bit de datospueda ser encontrado en múltiples lugares.Esta réplica puede realizarse de dos maneras:Réplica maestro-esclavo en la que un servidor gestiona la escritura de la copia autorizadamientras que los esclavos se sincronizan con este servidor maestro y sólo gestionan laslecturas. Réplica peer-to-peer en la que se permiten escrituras a cualquier nodo y ellos se coordinanentre sí para sincronizar sus copias de los datos Tolerancia a fallos y Redundancia: Pese a lo que cualquiera pueda pensar cuando se hablade NoSQL, no todas las tecnologías existentes bajo este paraguas usan el mismo modelo dedatos ya que, al ser sistemas altamente especializados, la idoneidad particular de una basede datos NoSQL dependerá del problema a resolver. Así a todo, podemos agrupar losdiferentes modelos de datos usados en sistemas NoSQL en cuatro grandes categorías:Base de datos de Documentos: Este tipo de base de datos almacena la información comoun documento, usando para habitualmente para ello una estructura simple como JSON,BSON o XML y donde se utiliza una clave única para cada registro. Este tipo deimplementación permite, además de realizar búsquedas por clave–valor, realizar consultasmás avanzadas sobre el contenidodel documento. Son las bases de datos NoSQL másversátiles.Almacenamiento Clave-Valor: Son el modelo de base de datos NoSQL más popular,además de ser la más sencilla en cuanto a funcionalidad. En este tipo de sistema, cadaelemento está identificado por una clave única, lo que permite la recuperación de lainformación de forma muy rápida, información que suele almacenarse como un objetobinario. Se caracterizan por ser muy eficientes tanto para las lecturas como para lasescrituras.Bases de datos de grafos: Usadas para aquellos datos cuyas relaciones se puedenrepresentar adecuadamente mediante un grafo. Los datos se almacenan en estructurasgrafo con nodos (entidades), propiedades (información entre entidades) y líneas (conexionesentre las entidades). Base de datos Columnar (o Columna ancha): En vez de“tablas”, en las bases de datos decolumna tenemos familias de columnas que, son los contenedores de las filas. A diferenciade los RDBMS, no necesita conocer de antemano todas las columnas, cada fila no tiene porqué tener el mismo número de columnas. Este tipo de bases de datos se adecuan mejor aoperaciones analíticas sobre grandes conjuntos de datos. Pese a todas las opciones proporcionadas por el auge de las bases de datos NoSQL, estono significa la desaparición de las bases de datos de RDBMS ya que son tecnologíascomplementarias. Estamos entrando en una era de persistencia políglota, una técnica queutiliza diferentes tecnologías de almacenamiento de datos para manejar las diversasVentajas y desventajas de las bases de datos NoSQL
Ventajas
Las bases de datos de NoSQL presentan muchas ventajas en comparación con las bases de datos tradicionales.
- A diferencia de las bases de datos relacionales, las bases de datos NoSQL están basadas en key-value pairs
- Algunos tipos de almacén de bases de datos NoSQL incluyen diferentes tipos de almacenes como por ejemplo el almacén de columnas, de documentos, de key value store, de gráficos, de objetos, de XML y otros modos de almacén de datos.
- Algunos tipos de almacén de bases de datos NoSQL incluyen almacenes de columnas, de documentos, de valores de claves, de gráficos, de objetos, de XML y otros modos de almacén de datos.
- Podría decirse que las bases de datos NoSQL de código abierto tienen una implementación rentable. Ya que no requieren las tarifas de licencia y pueden ejecutarse en hardware de precio bajo.
- Cuando trabajamos con bases de datos NoSQL, ya sean de código abierto o tengan un propietario, la expansión es más fácil y más barata que cuando se trabaja con bases de datos relacionales. Esto se debe a que se realiza un escalado horizontal y se distribuye la carga por todos los nodos. En lugar de realizarse una escala vertical, más típica en los sistemas de bases de datos relacionales.
Desventajas
Por supuesto, las bases de datos NoSQL no son perfectas, y no siempre van a ser la elección ideal.
- La mayoría de las bases de datos NoSQL no admiten funciones de fiabilidad, que son soportadas por sistemas de bases de datos relacionales. Estas características de fiabilidad pueden resumirse en: “atomicidad, consistencia, aislamiento y durabilidad.” Esto también significa que las bases de datos NoSQL, que no soportan esas características, ofrecen consistencia para el rendimiento y la escalabilidad.
- Con el fin de apoyar las características de fiabilidad y coherencia, los desarrolladores deben implementar su propio código, lo que agrega más complejidad al sistema.
- Esto podría limitar el número de aplicaciones en las que podemos confiar para realizar transacciones seguras y confiables, como por ejemplo los sistemas bancarios.
- Otras formas de complejidad encontradas en la mayoría de las bases de datos NoSQL, incluyen la incompatibilidad con consultas SQL. Esto significa que se necesita un lenguaje de consulta manual, haciendo los procesos mucho más lentos y complejos.
Estructuras de indexación para bases de datos NoSQL
La indexación es el proceso de asociar una clave con la ubicación de un registro de datos correspondiente en un DBMS. Hay muchas estructuras de datos de indización utilizadas en las bases de datos NoSQL. Las siguientes secciones discutirán brevemente algunos de los métodos más comunes; La indexación de los árboles B, la indexación de los árboles T y la indexación de los árboles O2.Indexación de árboles B
El árbol B es una de las estructuras de índice más comunes en DBMS.En los árboles B, los nodos internos pueden tener un número variable de nodos secundarios dentro de un rango predefinido.Una diferencia importante de otras estructuras de árbol, como AVL, es que el árbol B permite que los nodos tengan un número variable de nodos secundarios. Lo que va a significar menos equilibrio de árbol y más espacio perdido.El B + -Tree es una de las variantes más populares de B-Trees. El B + -Tree es una mejora sobre B-Tree que requiere todas las claves para residir en las hojas.Indexación de árboles T
La estructura de datos de un árbol T fue diseñada combinando características de AVL-Trees y B-Trees. (AVL-árbol y B-árbol).Un árbol AVL es un tipo de auto-equilibrio binario de árboles de búsqueda, mientras que un árbol B es más desequilibrado, y cada nodo puede tener un número diferente de hijos.En un árbol T, la estructura es muy similar a los árboles B y AVL.Cada nodo almacena más de una tupla {key-value, pointer}. Además, la búsqueda binaria se utiliza en combinación con los nodos de múltiples tuplas para producir un mejor almacenamiento y rendimiento.Un árbol T tiene tres tipos de nodos: Un T-Node que tiene un hijo derecho e izquierdo, un nodo de hoja sin hijos, y un nodo de media hoja con un solo hijo.Se cree que los árboles T tienen un mejor rendimiento general que los árboles AVL.Indexación de árboles O2
El árbol O2 es básicamente una mejora sobre los árboles Rojo-Negro (Red-Black), una forma de un árbol Binary-Search, en el que los nodos hoja contienen el valor {key value, pointer}El árbol O2, se propuso para mejorar el rendimiento de los actuales métodos de indexación. Un árbol de O2 de orden m (m ≥ 2), donde m es el grado mínimo del árbol, satisface las siguientes propiedades:
- Cada nodo es rojo o negro. Pero la raíz es siempre negra.
- Si un nodo es rojo, entonces sus dos hijos son negros.
- Para cada nodo interno, todas las rutas simples desde el nodo hasta los nodos-hoja descendientes contienen el mismo número de nodos negros. Cada nodo interno tiene un único valor de clave.
- Los nodos de hoja son bloques que tienen entre ⌈m / 2⌉ y m pares “key-value, record-pointer”.
- Si un árbol tiene un único nodo, entonces debe ser una hoja, que es la raíz del árbol, y puede tener entre 1 a m elementos de datos clave.
- Los nodos de hoja pueden ir hacia adelante y hacia atrás.
BIBLIOGRAFIA:https://www.genbetadev.com/bases-de-datos/ bases-de-datos-nosql-elige-la-opcion-que-mejor-se-adapte-a-tus-necesidades https://www.campusmvp.es/recursos/post/Fundamentos-de-bases-de-datos-NoSQL-MongoDB.aspx https://blogs.oracle.com/uncafeconoracle/qu-es-una-base-de-datos-nosql https://blog.pandorafms.org/es/bases-de-datos-nosql/ https://e-archivo.uc3m.es/bitstream/handle/10016/22895/PFC_raul_herranz_gomez_2014.pdf file:///C:/Users/Asus%20i5/Downloads/Dialnet-UtilidadYFuncionamientoDeLasBasesDeDatosNoSQL- 5029469.pdf
Comentarios
Publicar un comentario