2. NoSQLNoSQL
Los sistemas de bases de datos se clasificanLos sistemas de bases de datos se clasifican
mayormente en tres tipos:mayormente en tres tipos:
- RelacionalesRelacionales
- Orientadas a objetosOrientadas a objetos
- Relacionales orientadas a objetosRelacionales orientadas a objetos
Sin embargo, la mayoría de los motores de bases deSin embargo, la mayoría de los motores de bases de
datos más populares se basan en la arquitecturadatos más populares se basan en la arquitectura
relacional, y todos ellos utilizan el lenguaje de consultasrelacional, y todos ellos utilizan el lenguaje de consultas
SQL (con variaciones).SQL (con variaciones).
3. ¿Por qué aparecen los sistemas NoSQL?¿Por qué aparecen los sistemas NoSQL?
Gracias al transcurso de los años, hemos logrado aprender técnicas bastante comunes paraGracias al transcurso de los años, hemos logrado aprender técnicas bastante comunes para
normalizar las BD relacionales en la medida de lo posible, escalarlas según crece la demanda, ynormalizar las BD relacionales en la medida de lo posible, escalarlas según crece la demanda, y
utilizarlas como sistema de persistencia para almacenar información desde nuestro lenguajeutilizarlas como sistema de persistencia para almacenar información desde nuestro lenguaje
procedural u orientado a objetos (entre otros). La cuota de uso de software como SQLite,procedural u orientado a objetos (entre otros). La cuota de uso de software como SQLite,
MySQL, PostgreSQL u Oracle, es muy alta, encontrándose en la mayor parte de los desarrollosMySQL, PostgreSQL u Oracle, es muy alta, encontrándose en la mayor parte de los desarrollos
modernos.modernos.
Pero llegó la web, el software como servicio, los servicios en la nube y lasPero llegó la web, el software como servicio, los servicios en la nube y las startupsstartups de éxito conde éxito con
millones de usuarios. Y con todo ello llegaron los problemas de alta escalabilidad. Si bien losmillones de usuarios. Y con todo ello llegaron los problemas de alta escalabilidad. Si bien los
modelos relacionales se pueden adaptar para hacerlos escalar incluso en los entornos más difíciles,modelos relacionales se pueden adaptar para hacerlos escalar incluso en los entornos más difíciles,
es cierto que se hacen cada vez menos intuitivos a medida que aumenta la complejidad.es cierto que se hacen cada vez menos intuitivos a medida que aumenta la complejidad.
Los sistemas NoSQL intentan atacar este problema proponiendo una estructura deLos sistemas NoSQL intentan atacar este problema proponiendo una estructura de
almacenamiento más versátil, aunque sea a costa de perder ciertas funcionalidades como lasalmacenamiento más versátil, aunque sea a costa de perder ciertas funcionalidades como las
transacciones que engloban operaciones en más de una colección de datos, o la incapacidad detransacciones que engloban operaciones en más de una colección de datos, o la incapacidad de
ejecutar el producto cartesiano de dos tablas (también llamado FULL JOIN) teniendo que recurrirejecutar el producto cartesiano de dos tablas (también llamado FULL JOIN) teniendo que recurrir
a la desnormalización de datos.a la desnormalización de datos.
Algunas implementaciones NoSQL : CouchDB, MongoDB, RavenDB, Neo4j, Cassandra,Algunas implementaciones NoSQL : CouchDB, MongoDB, RavenDB, Neo4j, Cassandra,
BigTableBigTable, Dynamo, Riak, Hadoop, y otras muchas., Dynamo, Riak, Hadoop, y otras muchas.
4. Pero, ¿en qué se diferencianPero, ¿en qué se diferencian
exactamente?exactamente?
Características:Características:
-Ausencia de esquema en los registros de datos.-Ausencia de esquema en los registros de datos.
-Escalabilidad horizontal sencilla.-Escalabilidad horizontal sencilla.
-Velocidad (aunque esto último no siempre es cierto, pues muchos de estos sistemas aún no están-Velocidad (aunque esto último no siempre es cierto, pues muchos de estos sistemas aún no están
suficientemente maduros).suficientemente maduros).
La primera característica significa que los datos no tienen una definición de atributos fija, es decir:La primera característica significa que los datos no tienen una definición de atributos fija, es decir:
Cada registro (o documento, como se les suele llamar en estos casos) puede contener unaCada registro (o documento, como se les suele llamar en estos casos) puede contener una
información con diferente forma cada vez, pudiendo así almacenar sólo los atributos que intereseninformación con diferente forma cada vez, pudiendo así almacenar sólo los atributos que interesen
en cada uno de ellos, facilitando el polimorfismo de datos bajo una misma colección deen cada uno de ellos, facilitando el polimorfismo de datos bajo una misma colección de
información.información.
Con escalabilidad horizontal nos referimos a la posibilidad de aumentar el rendimiento del sistemaCon escalabilidad horizontal nos referimos a la posibilidad de aumentar el rendimiento del sistema
simplemente añadiendo más nodos, sin necesidad en muchos casos de realizar ninguna otrasimplemente añadiendo más nodos, sin necesidad en muchos casos de realizar ninguna otra
operación más que indicar al sistema cuáles son los nodos disponibles.operación más que indicar al sistema cuáles son los nodos disponibles.
Por último, muchos de estos sistemas realizan operaciones directamente en memoria, y sóloPor último, muchos de estos sistemas realizan operaciones directamente en memoria, y sólo
vuelcan los datos a disco cada cierto tiempo.vuelcan los datos a disco cada cierto tiempo.
5. Entonces, no es la Gran SoluciónEntonces, no es la Gran Solución
Desde luego que no. Ninguna herramienta deDesde luego que no. Ninguna herramienta de
software lo es. Pero sí es cierto que ensoftware lo es. Pero sí es cierto que en
determinados entornos donde hemos de escalardeterminados entornos donde hemos de escalar
rápidamente, es una solución muy buena, enrápidamente, es una solución muy buena, en
especial por el altísimo rendimiento que ofrecen.especial por el altísimo rendimiento que ofrecen.
No en vano, hoy en día se utilizan ya muchísimoNo en vano, hoy en día se utilizan ya muchísimo
no sólo como almacenamiento primario, sinono sólo como almacenamiento primario, sino
también como sistema de persistencia paratambién como sistema de persistencia para
guardar cachés, analíticas de uso, y otros datosguardar cachés, analíticas de uso, y otros datos
para los que lo primordial es la velocidad.para los que lo primordial es la velocidad.
6. ArquitecturaArquitectura
Las arquitecturas NoSQL frecuentemente aportan escasasLas arquitecturas NoSQL frecuentemente aportan escasas
garantías de consistencia, tales como consistencia de eventos ogarantías de consistencia, tales como consistencia de eventos o
transaccional restringida a ítems únicos de datos.transaccional restringida a ítems únicos de datos.
Bastantes sistemas NoSQL emplean una arquitectura distribuída,Bastantes sistemas NoSQL emplean una arquitectura distribuída,
manteniendo los datos de forma redundante en varios servidores,manteniendo los datos de forma redundante en varios servidores,
usando frecuentemente una tabla hash distribuida. De estausando frecuentemente una tabla hash distribuida. De esta
forma, el sistema puede realmente escalar añadiendo másforma, el sistema puede realmente escalar añadiendo más
servidores, y el fallo en un servidor puede ser tolerado.servidores, y el fallo en un servidor puede ser tolerado.
Algunos defensores de NoSQL promueven interfaces simplesAlgunos defensores de NoSQL promueven interfaces simples
tales como los arrays asociativos o los pares clave-valor. Otrostales como los arrays asociativos o los pares clave-valor. Otros
sistemas, tales como las bases de datos nativas en XML,sistemas, tales como las bases de datos nativas en XML,
promueven el soporte del estándarpromueven el soporte del estándar XqueryXquery. Los sistemas mas. Los sistemas mas
novedosos tales como CloudTPS también soportan unión denovedosos tales como CloudTPS también soportan unión de
queries.queries.
7. VentajasVentajas
Responden a las necesidades de escalabilidadResponden a las necesidades de escalabilidad
horizontal.horizontal.
Pueden manejar enormes cantidades de datos.Pueden manejar enormes cantidades de datos.
No generan cuellos de botella.No generan cuellos de botella.
Escalamiento sencillo.Escalamiento sencillo.
Diferentes DBs NoSQL para diferentesDiferentes DBs NoSQL para diferentes
proyecto.proyecto.
Se ejecutan en clusters de máquinas baratas.Se ejecutan en clusters de máquinas baratas.
8. Bases de datosBases de datos
documentalesdocumentales
CouchDB, de ApacheCouchDB, de Apache
Apache CouchDBApache CouchDB
MongoDB, de 10genMongoDB, de 10gen
RavenDz, deRavenDz, de
Hibernating Rhinos.Hibernating Rhinos.
BaseXBaseX
eXisteXist
SimpleDBSimpleDB
IBM Lotus DominoIBM Lotus Domino
TerrastoreTerrastore
Bases de datosBases de datos
clave/valorclave/valor
Cassandra, de Apache TheCassandra, de Apache The
Apache CassandraApache Cassandra
BigTable, de GoogleBigTable, de Google
Dynamo, de AmazonDynamo, de Amazon
Project Voldemort, deProject Voldemort, de
LinkedInLinkedIn
RiakRiak
RedisRedis
Bases de datos enBases de datos en
grafografo
Neo4jNeo4j
DEXDEX
AllegroGraphAllegroGraph
OrientDBOrientDB
InfiniteGraphInfiniteGraph
Sones GraphDBSones GraphDB
InfoGridInfoGrid
HyperGraphDBHyperGraphDB
9. Bases de datosBases de datos
MultivalorMultivalor
Bases de datosBases de datos
Orientadas a ObjetosOrientadas a Objetos
Bases de datosBases de datos
TabularTabular
OpenQMOpenQM
ExtensibleExtensible
storagestorage
engineengine Zope ObjectZope Object
DatabaseDatabase
db4odb4o
GemStone SGemStone S
Objectivity/DBObjectivity/DB
HBase, deHBase, de
ApacheApache
BigTable, deBigTable, de
GoogleGoogle
HypertableHypertable
10. BigTableBigTable
BigTable es un motor de bases de datos creado por Google con las características de ser:BigTable es un motor de bases de datos creado por Google con las características de ser:
- Distribuido.- Distribuido.
- De alta eficiencia.- De alta eficiencia.
- Propietario.- Propietario.
Está construído sobreEstá construído sobre GFS (Google File System)GFS (Google File System).. Chubby Lock ServiceChubby Lock Service, y algunos otros servicios y, y algunos otros servicios y
programas de Google, y funciona sobre 'commodity hardware' (sencillos y baratos PCs conprogramas de Google, y funciona sobre 'commodity hardware' (sencillos y baratos PCs con
procesadores Intel).procesadores Intel).
BigTable comenzó a ser desarrollado a principios de 2004.BigTable comenzó a ser desarrollado a principios de 2004.
BigTable almacena la información en tablas multidimensionales cuyas celdas están, en su mayoría,BigTable almacena la información en tablas multidimensionales cuyas celdas están, en su mayoría,
sin utilizar. Además, estas celdas disponen de versiones temporales de sus valores, con lo que sesin utilizar. Además, estas celdas disponen de versiones temporales de sus valores, con lo que se
puede hacer un seguimiento de los valores que han tomado históricamente.puede hacer un seguimiento de los valores que han tomado históricamente.
Para poder manejar la información, las tablas se dividen por columnas, y son almacenadas comoPara poder manejar la información, las tablas se dividen por columnas, y son almacenadas como
“tabletas” de unos 100-200 MB cada una. Cada máquina almacena 100 tabletas, mediante el“tabletas” de unos 100-200 MB cada una. Cada máquina almacena 100 tabletas, mediante el
sistema 'Google File System'. La disposición permite un sistema de balanceo de carga (si unasistema 'Google File System'. La disposición permite un sistema de balanceo de carga (si una
tableta está recibiendo un montón de peticiones, la máquina puede desprenderse del resto de lastableta está recibiendo un montón de peticiones, la máquina puede desprenderse del resto de las
tabletas o trasladar la tableta en cuestión a otra máquina) y una rápida recomposición del sistematabletas o trasladar la tableta en cuestión a otra máquina) y una rápida recomposición del sistema
si una máquina “se cae”.si una máquina “se cae”.
11. Cómo Google almacena los datosCómo Google almacena los datos
Los gigantes de internet como Google, Amazon, Yahoo o Facebook necesitan mover de forma fiable, rápida yLos gigantes de internet como Google, Amazon, Yahoo o Facebook necesitan mover de forma fiable, rápida y
energéticamente eficiente volúmenes de información impensables hace unos años y, con la tecnologíaenergéticamente eficiente volúmenes de información impensables hace unos años y, con la tecnología
proporcionada hasta la fecha, no era posible de realizar.proporcionada hasta la fecha, no era posible de realizar.
Si miramos hacia atrás,Si miramos hacia atrás, la fiabilidadla fiabilidad estaba condicionada a que un súper ordenador o un pequeño grupo deestaba condicionada a que un súper ordenador o un pequeño grupo de
estos no fallasen al procesar programas preconcebidamente “imperfectos”. Por esta razón, los esfuerzos de losestos no fallasen al procesar programas preconcebidamente “imperfectos”. Por esta razón, los esfuerzos de los
ingenieros estaban centrados en el hardware intentando obtener lo máximo de cada máquina. Pero ahora, estasingenieros estaban centrados en el hardware intentando obtener lo máximo de cada máquina. Pero ahora, estas
empresas tienen miles, decenas de miles o incluso centenares de miles de ordenadores trabajando al unísonoempresas tienen miles, decenas de miles o incluso centenares de miles de ordenadores trabajando al unísono
para mantener vivo el flujo de datos continuo al que se ven sometidos. No es de extrañar entonces que, con talpara mantener vivo el flujo de datos continuo al que se ven sometidos. No es de extrañar entonces que, con tal
cantidad de servidores operando, sea inevitable que siempre fallará alguno.cantidad de servidores operando, sea inevitable que siempre fallará alguno.
En cuanto aEn cuanto a la rapidezla rapidez, ya no nos vale con tener súper ordenadores con los mejores procesadores, pues por, ya no nos vale con tener súper ordenadores con los mejores procesadores, pues por
mucho que nos empeñemos en el procesador, los cuellos de botella están en los propios datos y en la entrada ymucho que nos empeñemos en el procesador, los cuellos de botella están en los propios datos y en la entrada y
salida de estos de las máquinas.salida de estos de las máquinas.
Por último,Por último, el consumo de energíael consumo de energía, es, probablemente el principal problema cuando se habla de esos miles de, es, probablemente el principal problema cuando se habla de esos miles de
ordenadores trabajando conjuntamente.ordenadores trabajando conjuntamente.
Google dispone de su propia fuente de energía solar, que proporciona una bonita instantánea aérea de susGoogle dispone de su propia fuente de energía solar, que proporciona una bonita instantánea aérea de sus
DataCenters con tejados construidos bajo paneles solares. Y no es de extrañar, cuando esta empresa cuentaDataCenters con tejados construidos bajo paneles solares. Y no es de extrañar, cuando esta empresa cuenta
con, seguramente, el mayor centro de datos del mundo. Más de medio millón de servidores que obliga alcon, seguramente, el mayor centro de datos del mundo. Más de medio millón de servidores que obliga al
gigante a encargar sus componentes a medida para eliminar elementos inútiles para el procesado de sus datos.gigante a encargar sus componentes a medida para eliminar elementos inútiles para el procesado de sus datos.
Incluso utiliza su propia patente de unidad de alimentación de bajo consumo.Incluso utiliza su propia patente de unidad de alimentación de bajo consumo.
Con todo esto, para poder llevar a buen puerto esta macro arquitectura de servidores, debemos olvidarnos delCon todo esto, para poder llevar a buen puerto esta macro arquitectura de servidores, debemos olvidarnos del
propio hardware y centrarnos en las aplicaciones, en que sea el software el que dé la solución. Las bases depropio hardware y centrarnos en las aplicaciones, en que sea el software el que dé la solución. Las bases de
datos serán las encargadas de ello.datos serán las encargadas de ello.
12. Qué es BigTableQué es BigTable
BigTable es un mapa multidimensional ordenado, disperso, distribuido y persistente.BigTable es un mapa multidimensional ordenado, disperso, distribuido y persistente.
Google creó BigTable porque los sistemas de bases de datos tradicionales no tenían ni tienen, la capacidad de crearGoogle creó BigTable porque los sistemas de bases de datos tradicionales no tenían ni tienen, la capacidad de crear
sistemas lo suficientemente grandes. Además, estos sistemas de bases de datos relacionales, como SQL Server, Oracle osistemas lo suficientemente grandes. Además, estos sistemas de bases de datos relacionales, como SQL Server, Oracle o
MySQL fueron pensados y diseñados para que se ejecutasen en un solo servidor con mucha potencia.MySQL fueron pensados y diseñados para que se ejecutasen en un solo servidor con mucha potencia.
BigTable está pensado para ser una base de datos en la que se almacene la información perteneciente a todos losBigTable está pensado para ser una base de datos en la que se almacene la información perteneciente a todos los
productos de Google, En la actualidad es usada, entre otros, por el propio buscador, Google Maps, Google Earth,productos de Google, En la actualidad es usada, entre otros, por el propio buscador, Google Maps, Google Earth,
Google Finance, Blogger, etc. De esta manera, la cantidad de información almacenada es enorme y del orden deGoogle Finance, Blogger, etc. De esta manera, la cantidad de información almacenada es enorme y del orden de
Petabytes.Petabytes.
Cada tabla en BigTable, está dividida en “tablets” que tienen un tamaño máximo de 200 MB. Si llegasen a superar esteCada tabla en BigTable, está dividida en “tablets” que tienen un tamaño máximo de 200 MB. Si llegasen a superar este
tamaño, serían automáticamente divididas y comprimidas usando un sistema de compresión propio de Google paratamaño, serían automáticamente divididas y comprimidas usando un sistema de compresión propio de Google para
luego ser enviadas a nuevos servidores dentro de la red.luego ser enviadas a nuevos servidores dentro de la red.
Aunque tiene algún parecido con los sistemas tradicionales relacionales de bases de datos, rompe alguna de susAunque tiene algún parecido con los sistemas tradicionales relacionales de bases de datos, rompe alguna de sus
principales premisas. Un ejemplo es la organización de las propias tablas. Estas se dividen en conjuntos de columnas yprincipales premisas. Un ejemplo es la organización de las propias tablas. Estas se dividen en conjuntos de columnas y
éstos en otras columnas. Es posible añadir columnas en cualquier momento y no es posible borrar las filas.éstos en otras columnas. Es posible añadir columnas en cualquier momento y no es posible borrar las filas.
El historial es vital para Google, y por ello no podemos eliminar nada en BigTable, ni siquiera sobreescribirlo. ParaEl historial es vital para Google, y por ello no podemos eliminar nada en BigTable, ni siquiera sobreescribirlo. Para
reemplazar una fila, lo que debemos es insertar una nueva que la sustituya, contradiga o actualice en base a una líneareemplazar una fila, lo que debemos es insertar una nueva que la sustituya, contradiga o actualice en base a una línea
temporal. Existen 3 claves primarias que se utilizan para la localización de los datos: la propia fila (similar a untemporal. Existen 3 claves primarias que se utilizan para la localización de los datos: la propia fila (similar a un
identificador de fila), la columna (que lleva un “nombre” dentro del conjunto de columnas inicial y anteriormente citado)identificador de fila), la columna (que lleva un “nombre” dentro del conjunto de columnas inicial y anteriormente citado)
y un timestamp (marca de tiempo) que diferencia dos filas iguales en el tiempo. De esta forma, tenemos un historialy un timestamp (marca de tiempo) que diferencia dos filas iguales en el tiempo. De esta forma, tenemos un historial
completo y podemos acceder a filas “borradas” simplemente referenciando el timestamp.completo y podemos acceder a filas “borradas” simplemente referenciando el timestamp.
Las celdas contienen un único tipo de datos: cadenas de caracteres.Las celdas contienen un único tipo de datos: cadenas de caracteres.
Desgraciadamente BigTable es propietario y completamente privado y secreto de Google por lo que no podemosDesgraciadamente BigTable es propietario y completamente privado y secreto de Google por lo que no podemos
emplearlo ni hacer pruebas sobre él. Existen alternativas libres creadas a partir de la información arquitectural yemplearlo ni hacer pruebas sobre él. Existen alternativas libres creadas a partir de la información arquitectural y
tecnológica proporcionada por Google como pueden ser Hadoop e Hypertable.tecnológica proporcionada por Google como pueden ser Hadoop e Hypertable.
13. De GFS a BigTableDe GFS a BigTable
Google File System (GFS), es un sistema de ficheros distribuido, creado por Google para satisfacer la crecienteGoogle File System (GFS), es un sistema de ficheros distribuido, creado por Google para satisfacer la creciente
demanda en las necesidades de la empresa en el procesamiento de datos. Garantiza el rendimiento, lademanda en las necesidades de la empresa en el procesamiento de datos. Garantiza el rendimiento, la
escalabilidad y la disponibilidad en todo momento.escalabilidad y la disponibilidad en todo momento.
El principal objetivo de GFS es el poder almacenar ficheros de gran tamaño de forma segura y que soportaseEl principal objetivo de GFS es el poder almacenar ficheros de gran tamaño de forma segura y que soportase
una gran carga de trabajo. Al ser un sistema distribuido los datos que componen cada fichero no estánuna gran carga de trabajo. Al ser un sistema distribuido los datos que componen cada fichero no están
guardados en un mismo disco duro, ni siquiera en un solo servidor, sino que utiliza toda la red de ordenadoresguardados en un mismo disco duro, ni siquiera en un solo servidor, sino que utiliza toda la red de ordenadores
necesaria para llevar su cometido lo suficientemente eficiente como se haya pensado. Además, por cada trozonecesaria para llevar su cometido lo suficientemente eficiente como se haya pensado. Además, por cada trozo
de un fichero se hacen 3 copias que irán a parar a 3 máquinas diferentes.de un fichero se hacen 3 copias que irán a parar a 3 máquinas diferentes.
Existen dos tipos de servidores:Existen dos tipos de servidores:
- Los servidores Master almacenan dónde están los trozos (chunks), es decir, la situación física o real que- Los servidores Master almacenan dónde están los trozos (chunks), es decir, la situación física o real que
componen los ficheros, así como la jerarquía de ficheros y directorios.componen los ficheros, así como la jerarquía de ficheros y directorios.
- Los Chunkservers almacenan los trozos propiamente dichos. Cada trozo ocupa 100MB en adelante. Esta- Los Chunkservers almacenan los trozos propiamente dichos. Cada trozo ocupa 100MB en adelante. Esta
red de servidores es capaz de almacenar y administrar varios millones de estos trozos.red de servidores es capaz de almacenar y administrar varios millones de estos trozos.
Los ficheros en GFS no se pueden sobrescribir, solo es posible añadir datos al final del fichero y añadir unaLos ficheros en GFS no se pueden sobrescribir, solo es posible añadir datos al final del fichero y añadir una
marca de tiempo (timestamp) para seguir el flujo de cambios.marca de tiempo (timestamp) para seguir el flujo de cambios.
A su vez, existen dos tipos de servidores Chunkserver: los primarios y los secundarios. Aquí es donde seA su vez, existen dos tipos de servidores Chunkserver: los primarios y los secundarios. Aquí es donde se
encuentran las 3 copias de cada trozo. Por un lado, el servidor primario almacena la copia principal y otros dosencuentran las 3 copias de cada trozo. Por un lado, el servidor primario almacena la copia principal y otros dos
servidores secundarios, almacenan otra copia cada uno de ellos.servidores secundarios, almacenan otra copia cada uno de ellos.
De esta manera, el proceso de escritura en un fichero (trozo) se desarrolla de la siguiente manera. El clienteDe esta manera, el proceso de escritura en un fichero (trozo) se desarrolla de la siguiente manera. El cliente
inicia la transacción pidiendo la información de localización al servidor Master y este le contesta con los datosinicia la transacción pidiendo la información de localización al servidor Master y este le contesta con los datos
solicitados. Acto seguido, el cliente pasa los nuevos datos a los tres servidores Chunkserver y le informa alsolicitados. Acto seguido, el cliente pasa los nuevos datos a los tres servidores Chunkserver y le informa al
servidor primario de la intención de añadir los datos. El servidor primario ordena a los secundarios queservidor primario de la intención de añadir los datos. El servidor primario ordena a los secundarios que
almacenen los datos que tienen en el bus de entrada y que informen de sus acciones. Una vez realizado todoalmacenen los datos que tienen en el bus de entrada y que informen de sus acciones. Una vez realizado todo
este proceso, el servidor primario da la confirmación al cliente que inició todo el trabajo.este proceso, el servidor primario da la confirmación al cliente que inició todo el trabajo.
GFS no forma parte del sistema operativo, sino que se accede a través de librerías, por lo que lo convierte enGFS no forma parte del sistema operativo, sino que se accede a través de librerías, por lo que lo convierte en
portable.portable.
14. HypertableHypertable
Es un Sistema Gestor de Bases de Datos de tipo “open source”, desarrollado por la compañíaEs un Sistema Gestor de Bases de Datos de tipo “open source”, desarrollado por la compañía
Zvents. Es un sistema de almacenamiento de datos distribuido y de alto desempeño, ideal paraZvents. Es un sistema de almacenamiento de datos distribuido y de alto desempeño, ideal para
aplicaciones que necesitan manejar datos que evolucionan rápidamente y diseñado para soportaraplicaciones que necesitan manejar datos que evolucionan rápidamente y diseñado para soportar
una gran demanda de datos en tiempo real, y fue modelado basándose en el diseño de Google’suna gran demanda de datos en tiempo real, y fue modelado basándose en el diseño de Google’s
BigTable.BigTable.
Hypertable surgió para facilitar el procesamiento de grandes cantidades de datos, tras la granHypertable surgió para facilitar el procesamiento de grandes cantidades de datos, tras la gran
explosión de información que acompañó el inicio de la Web 2.0, y se caracteriza por ser un gestorexplosión de información que acompañó el inicio de la Web 2.0, y se caracteriza por ser un gestor
de bases de datos distribuido, escalable, no relacional y que no soporta transacciones.de bases de datos distribuido, escalable, no relacional y que no soporta transacciones.
Este gestor de bases de datos ha sido desarrollado en C++, pero inicialmente se pensó hacerlo enEste gestor de bases de datos ha sido desarrollado en C++, pero inicialmente se pensó hacerlo en
Java, idea que fue rechazada debido al gran consumo de memoria de dicho lenguaje deJava, idea que fue rechazada debido al gran consumo de memoria de dicho lenguaje de
programación, y a la intensidad del flujo de datos de una aplicación de la naturaleza de Hypertable.programación, y a la intensidad del flujo de datos de una aplicación de la naturaleza de Hypertable.
La principal diferencia entre Hypertabe y los gestores de bases de datos relacionales es que, en losLa principal diferencia entre Hypertabe y los gestores de bases de datos relacionales es que, en los
gestores de bases de datos relacionales, se tienen muchas tablas muy pequeñas, y se las une con lagestores de bases de datos relacionales, se tienen muchas tablas muy pequeñas, y se las une con la
operación de join, pero ni siquiera todos los join y todas las tablas juntas suelen acercarnos aloperación de join, pero ni siquiera todos los join y todas las tablas juntas suelen acercarnos al
verdaderoverdadero volumen de datos generados por aplicaciones web 2.0, además de que el excesivo uso devolumen de datos generados por aplicaciones web 2.0, además de que el excesivo uso de
operaciones join vuelve más “lenta” nuestra aplicación web; entonces la idea de Hypertable es queoperaciones join vuelve más “lenta” nuestra aplicación web; entonces la idea de Hypertable es que
guardemos toda esta gran cantidad de información en una sola tabla (eliminando la necesidad deguardemos toda esta gran cantidad de información en una sola tabla (eliminando la necesidad de
las operaciones join) y colocarla en un Sistema de Archivos Distribuido, para que las operacioneslas operaciones join) y colocarla en un Sistema de Archivos Distribuido, para que las operaciones
realizadas sobre la tabla puedan ser procesadas de forma simultánea por todos los sistemasrealizadas sobre la tabla puedan ser procesadas de forma simultánea por todos los sistemas
conectados a la red.conectados a la red.