Sei sulla pagina 1di 11

Bienvenido a Apache Cassandra

La base de datos Apache Cassandra es la mejor opcin cuando se necesita escalabilidad y alta
disponibilidad sin comprometer el rendimiento. Escalabilidad lineal y comprobada de tolerancia a
fallos en el hardware de los productos bsicos o de infraestructura en la nube lo convierten en la
plataforma perfecta para datos de misin crtica. Cassandra compatibilidad para la replicacin a
travs de mltiples centros de datos es el mejor en su clase, ofreciendo una latencia ms baja para
los usuarios y la tranquilidad de saber que se puede sobrevivir a cortes regionales.
Cassandra modelo de datos ColumnFamily ofrece la oportunidad de ndices de columna con el
rendimiento de inicio de sesin estructurados actualizaciones, un fuerte apoyo para las vistas
materializadas y potente capacidad de almacenamiento en cach.
Hace mucho que no escribo, ya que estoy con bastantes cosas, pero ahora que estamos llegando a
fin de ao vamos a escribir una ultima nota!

Historia:
Cassandra es una base de datos NoSQL, hoy en da es un proyecto de Apache. Cassandra fue
desarrollado por Facebook (la versin original fue escrita por un ex empleado de Amazon y otro de
Microsoft), en el 2008 fue liberado como un proyecto open source en Google code, en el 2009 se
convirti en un proyecto Apache Incubator, y finalmente en el 2010 se convirti en un proyecto
TOP-LEVEL.

Informacin:
Las la informacin en las bases de datos relacionales, se almacenan en forma de filas, pero en
Cassandra la informacin se almacena en columnas con pares key-value, key-map para mltiples
valores, que se agrupan en column families (familia de columnas). Las column families son fijas
cunado una base de datos Cassandra es creado, pero las columns se pueden agregar a la column
families en cualquier momento. Por otra parte, las columns se agregan solo a las keys especificas,
por lo tanto diferentes keys pueden tener diferentes nmeros de columns en cualquier columns
family.
Cassandra puede manejar varios terabytes de datos si lo necesita y puede, fcilmente, manejar
millones de files, incluso en un cluster pequeo. Cassandra puede hacer alrededor de 20k de insert
por segundos.
La rendimiento de Cassandra es muy alta, y mantener ese rendimiento alto mayormente depende
del hardward, la configuracin y el numero de nodos en nuestro cluster.

Terminologia de Cassandra:
Column: Es la unidad mas bsica de la representacin en el modelo de datos Cassandra. Una
column es un triplete de un key (un nombre) un value (un valor) y un timestamp. Los valores son
todos suministrados por el cliente. El tipo de dato del key y el value son Matrices de bytes de Java,
el tipo de dato del timestamp es un long primitive. Las column son inmutables para evitar problemas
de multithreading. Las columns se organizan dentro de las columns families. Las columns se
ordenan por un tipo, que pueden ser uno de los siguientes:

AsciiType
BytesType
LexicalUUIDType
LongType
TimeUUIDType
UTF8Type

Modelo de datos:

1.
2.
3.
4.

Keyspace -> Column Family


Column Family -> Column Family Row
Column Family Row -> Columns
Column -> Data value

Super Column: Es una column cuyos values no son strings, sino una o mas columns, que en este
contexto se llamaran subcolumns. Las subcolumns estn ordenadas, y el numero de columnas que se
puede definir es ilimitada. las Super columns, a diferencias de las columns, no tienen un timestamp
definido. No son recursivas, es decir, solamente tienen un nivel de profanidad.
Modelo de datos:
1.
2.
3.
4.
5.

Keyspace -> Super Column Family


Super Column Family -> Super Column Family Row
Super Column Family Row -> Super Columns
Super Column -> Columns
Column -> Data value

Column Family: Es mas o menos anlogo a una tabla en un modelo relacional. Se trata de un
contenedor para una coleccin ordenada de columns. Debido a que cada column family se almacena
en un archivo separado, asegrese de definir las columns que sea probable que acceda juntas en la
misma column family. Tenemos que definir las column family de la aplicacin en el archivo de
configuracin.
Keyspace: Es el contenedor para un column family. Es mas o menos anlogo a una base de datos en
un modelo relacional, usado en Cassandra para separar aplicaciones. Cuando una base de datos
relacional es una coleccin de tablas, un keyspace es una coleccin ordenada de columns family.
Tenemos que definir los keyspace de la aplicacin en el archivo de configuracin o usando mtodos
definidos en la API.

Caracteristicas de Cassandra:
Fault Tolerant (Tolerancia a los fallos): Los datos se replican automticamente a varios nodos.
Perder un nodo no causa la baja del cluster.
Flexible Schema (Flexible esquema): Estamos hablando en trminos de las columns, super
columns y column families en lugar de filas y tablas. Modelo de datos BigTable.
Symmetric (Simtrica): No hay nico punto de fallo, todos los nodos en el cluster son idntica y no
hay cuellos de botella.
Scalable (Escalable): Lineal con la adicin de nuevas mquinas, sin tiempo de inactividad o
interrupcin de las aplicaciones. Leer y escribir aumentar el rendimiento de forma lineal a medida
que las maquinas se van agregando.
Support for Large Data (Apoyo a grandes de datos): La capacidad para escalar a cientos de
gigabytes de datos.

APACHE CASSANDRA
Es un sistema de almacenamiento distribuido escrito en Java de cdigo abierto, descentralizado,
escalable, altamente disponible, tolerante a fallos, eventualmente consistente, y orientado a
columnas basado en la estructura de Dynamo de Amazon y en el modelo de datos de Bigtable de

Google. Naci en Facebook y ahora es usado en muchos de los sitios ms populares de Internet.
CARACTERSTICAS:
Distribuido y Descentralizado:
Cassandra es un sistema distribuido, lo cual significa que est en la capacidad de ejecutarse sobre
mltiples mquinas mientras se presenta a los usuarios como un todo. De hecho, No es
provechoso Ejecutar Cassandra en una nica mquina, aunque si puedes hacerlo. Por supuesto,
aprovechars todos sus beneficios si lo corres en mltiples servidores.
En Almacenes de datos creados con bases de datos relacionales como MySQL, cuando es necesario
escalar, algunas mquinas (tambin llamadas nodos) deben ser validadas como administradores
para coordinar las dems mquinas (llamadas esclavos). Sin embargo, Cassandra es
descentralizado, esto significa que todos los nodos que forman parte del sistema son idnticos,
Ningn nodo desempea funciones distintas a las de los otros nodos, en vez de eso, Cassandra
implementa un protocolo P2P y mantiene una lista de todas las mquinas disponibles e inactivas.
El hecho de que Cassandra sea descentralizado quiere decir que no tiene un punto de fallo, todos
los nodos en un clster (grupo de mquinas) funcionan del mismo modo. A lo cual se le denomina
servidor simtrico, porque todas las mquinas hacen lo mismo, por definicin no existe un
administrador que coordine tareas entre los nodos.
En muchas soluciones de almacenamiento distribuido, se deben hacer mltiples copias de datos
en un proceso llamado replicacin, de esta forma todas las mquinas pueden trabajar peticiones
simultneas y mejorar el desempeo del sistema. Este proceso no es descentralizado como en
Cassandra, pero para llevarlo a cabo se requiere de la definicin de una relacin
Administrador/Esclavos, lo que quiere decir que todos los nodos no funcionan de la misma forma,
el administrador es el que autoriza la distribucin de los datos, y opera bajo una relacin
unidireccional con los nodos esclavos; si el administrador deja de funcionar, la base de datos
completa est en peligro. El diseo descentralizado, por lo tanto, es una de las claves de la alta
disponibilidad de Cassandra. Algunas bases de datos No SQL como MongoDB usan la relacin
Administrador/Esclavos.
La descentralizacin tiene dos ventajas clave: Es ms fcil de usar que un Administrador/Esclavo,
puede ser ms fcil de operar y mantener un almacn de datos descentralizado que un
Administrador/Esclavo ya que todos los nodos son iguales, y no se requieren conocimientos
adicionales para escalar; configurar 50 mquinas no es diferente a configurar una sola. Un
administrador puede ser un simple punto de fallo. Como en Cassandra todos los nodos son
idnticos, la inutilizacin de uno no interrumpe su funcionamiento. En pocas palabras, como
Cassandra es distribuido y descentralizado, no hay un punto de fallo lo que genera una alta
disponibilidad.
Escalabilidad Flexible:
La escalabilidad de un sistema es una caracterstica de un sistema que puede continuar

soportando un creciente gran nmero de peticiones sin afectar mucho su desempeo, La


escalabilidad vertical (adicionar ms capacidad hardware y memoria a las mquinas existentes) es
la forma ms fcil de lograr esto. La escalabilidad horizontal consiste en agregar ms maquinas
que ayuden con el almacenamiento de informacin y recibir peticiones, para esto el sistema debe
tener la capacidad de sincronizar sus datos con los otros nodos en el clster.
La escalabilidad flexible se refiere a una propiedad especial de la escalabilidad horizontal. Esto
significa que el clster puede escalar y des escalar uniformemente. Para hacer esto el clster debe
estar en la capacidad de aceptar nuevos nodos que empiecen recibiendo parte o toda la
informacin de los dems nodos y aceptando peticiones de usuarios sin configuraciones sobre el
clster. No es necesario parar el sistema ni realizar cambios en la aplicacin, solo se agrega el
nodo, y en el caso de Cassandra, la encontrar y la configurar para que forme parte del sistema.
Des escalar, desde luego, significa remover mquinas del clster, lo cual se necesita si las
peticiones al sistema disminuyen y no se requiere hardware adicional para soportarlas.
Alta Disponibilidad y Tolerancia a Fallos:
En trminos generales, la disponibilidad de un sistema est ligada a su habilidad de cumplir
peticiones. Pero los computadores pueden experimentar muchas formas de fallo, desde
componentes hardware descompuestos hasta problemas de conexin y comunicacin. Existen
computadores sofisticados (y costosos) que pueden tratar con este tipo de circunstancias. Para
que un sistema sea altamente disponible, debe incluir mltiples computadores conectados, y el
software que se ejecuta sobre ellos debe tener la capacidad de correr sobre un clster e identificar
posibles nodos defectuosos.
Cassandra es altamente disponible, t puedes reemplazar nodos defectuosos en un clster sin
tener que detener el sistema, y puedes tambin replicar la informacin a otros almacenes de
datos para mejorar el desempeo local.
Consistencia Personalizable:
Significa que t decides el nivel de consistencia que necesitas en balance al nivel de disponibilidad.
Existen tres modelos de consistencia: estricta, en la cual un lector recibe el valor ms
recientemente escrito, consistencia casual, la cual es una variacin de la estricta, y la eventual, en
la cual los datos deben pasar por las mquinas de un sistema distribuido, esto lleva tiempo, por
eso decimos que eventualmente los datos son consistentes.
Orientacin a Columnas:
Cassandra no es relacional, representa las estructuras de datos como tablas de hash
multidimensionales, en donde cada registro puede tener una o ms columnas, aunque no todos
los registros de un mismo tipo deben el mismo nmero de columnas, como si sucede en el modelo
relacional. Cada registro contiene una llave nica la cual permite el acceso a los datos.
Cassandra almacena los datos en tablas de hash multidimensionales, lo que significa que no es
necesario tener por adelantado la representacin de los datos que se va a usar y cuantos campos

se necesitarn para los registros, esto es til cuando la estructura de datos est sujeta a cambios
frecuentes. Cassandra permite agregar campos para los registros aun cuando est en servicio.
Libre Esquema:
Cassandra requiere que definas un contenedor, llamado espacio clave que contiene familias de
columnas. El espacio clave es esencialmente un nombre para mantener columnas familiares y
propiedades de configuracin. Las familias de columnas o columnas comunes son nombres para
informacin asociada. Las tablas de datos son dinmicas, as que puedes agregar informacin
usando las columnas que quieras, no necesitas definir las columnas que requieres por adelantado.
Alto Desempeo:
Cassandra fue diseado especficamente para aprovechar al mximo las mquinas con
procesadores multincleo, y para ejecutarse sobre muchas docenas de estas mquinas alojadas en
mltiples almacenes de datos. Cassandra ha demostrado desempearse bien en la carga pesada
de datos. Posee un alto rendimiento en escrituras por segundo. Cuantos ms servidores sean
agregados, se sacar mayor provecho de las propiedades de Cassandra sin sacrificar desempeo.
DE DNDE VIENE CASSANDRA?
Cassandra es un sistema de cdigo abierto mantenido por la fundacin Apache. Cassandra se
origin en Facebook en el 2007 para solventar los problemas de bsqueda interna de datos que
tena la compaa, la cual tiene que tratar con grandes volmenes de datos. El cdigo fuente fue
publicado en Julio del 2008, en ese entonces el cdigo era actualizado por ingenieros de Facebook.
En marzo del 2009 fue acogido por la fundacin Apache y en febrero de 2010 es escogido como
uno de los mejores proyectos de la fundacin.
DE DONDE OBTIENE CASSANDRA SU NOMBRE?
En la mitologa griega, Cassandra era la hija del rey Priam y la reina Hecuba de Troya. Cassandra
era tan bonita que el dios Apolo le dio la habilidad de ver el futuro. Pero cuando este quiso tener
algo con ella, lo rechazo, y aun podra pronosticar todo que ocurrira con exactitud, pero nadie le
creera. La base de datos de Cassandra es nombrada por ella.
USOS PARA CASSANDRA:
A pesar de su sofisticado diseo y deseables caractersticas, no supone la herramienta correcta
para cada trabajo.
Grandes Instalaciones:
Ninguna de las cualidades de Cassandra son bien aprovechadas si esta se ejecuta en un solo nodo.
Existen, sin embargo, una gran cantidad de situaciones en donde una base de datos relacional sea
todo lo que necesitemos. Por lo tanto, hay que analizar el trfico del sistema y las necesidades de
rendimiento para determinar cul paradigma adoptar.
Grandes Escrituras de Datos, Estadsticas y Anlisis:
Cassandra est optimizado para un excelente rendimiento en escritura de datos. Muchas de las
instalaciones de produccin que contienen Cassandra involucran el almacenamiento de

actualizaciones de actividades de los usuarios, uso de redes sociales, comentarios /


recomendaciones, y aplicaciones estadsticas, Estos son usos fuertes de Cassandra debido a que
requieren una gran capacidad de escritura con menos operaciones de lectura y porque las
actualizaciones pueden ocurrir repentinamente en cualquier momento. La habilidad de llevar
grandes cargos de trabajo que requieren alto desempeo en grandes volmenes de escritura con
mucha concurrencia de clientes es una de las caractersticas principales de Cassandra.
Distribucin Geogrfica:
Cassandra tiene soporte para la distribucin geogrfica de datos. Puedes configurar Cassandra
para la replicacin de datos a mltiples almacenes de datos repartidos globalmente.
Aplicaciones Evolutivas:
Si tu aplicacin evoluciona rpidamente, Cassandra es una buena opcin debido a su modelo de
esquema libre.
INSTALACIN EN WINDOWS:
Cassandra est disponible para descargar en la pgina http://cassandra.apache.org. El archivo
pesa alrededor de unos 10 MB. La forma ms simple de empezar es descargando el binario, si
descargas el cdigo fuente tendrs que compilarlo, as que mejor el binario.
Como el archivo est comprimido, lo descomprimimos usando winrar u otro software compresor.
Descomprmelo en la carpeta raz del disco C.
Qu contiene el Paquete?
Una vez lo descomprimes, vers que Cassandra contiene varios directorios, observemos cada uno
de ellos:
.. bin: este directorio contiene todos los ejecutables necesarios para correr Cassandra bajo el
cliente de lnea de comandos.
.. conf: este directorio contiene los archivos que permiten configurar Cassandra.
.. interface: contiene un nico archivo que representa el cliente de llamadas a procedimiento
remoto.
.. javadoc: contiene documentacin.
.. lib: contiene todas las libreras externas que Cassandra necesita para correr.
EJECUTAR CASSANDRA:
Antes de ejecutar Cassandra, necesitamos un software llamado JDK, se puede descargar desde la
pgina oficial de Java. Una vez instalado el JDK, procedemos a crear una variable de entorno, esto
lo podemos hacer de la siguiente forma: en Windows 7, clic derecho en el icono equipo (en XP
se llama MIPC). Clic en propiedades, despus clic en Configuracin avanzada del sistema y por
ltimo clic en el botn de Variables de entorno.
Una vez all, clic en Nueva..., aparecer este cuadro:
En el primer campo escribe: JAVA_HOME, en el segundo la ruta donde est instalado el JDK,
generalmente es esta: C:\Program Files\Java\jdk1.6.0_23. Los nmeros escritos en la ruta pueden

ser distintos, esto depende de tu versin de JDK. Damos en Aceptar.


En la misma ventana seleccionamos la variable de entorno Patch:
Damos clic en Editar... y aparecer lo siguiente:
En el campo valor de la variable colocamos al final un ; y seguido la direccin de Cassandra, si
has seguido los pasos de este manual, la direccin sera: C:\apache-cassandra-0.8.6\bin
Clic en aceptar y cerramos las ventanas.
Listo, ahora ya podemos ejecutar Cassandra, para ello abrimos una lnea de comandos, la forma
ms fcil de hacerlo es pulsar las teclas WINDOWS + R y escribir en la ventana que aparece: cmd y
luego teclea ENTER.
Para iniciar Cassandra escribimos el comando: cassandra start
Esto ejecutar cassandra en el equipo. Para terminar la ejecucin, presiona CTRL + C. No termines
la ejecucin todava.
EJECUTAR EL CLIENTE DE LINEA DE COMANDOS:
Una vez instalado y ejecutado, ya podemos usar el cliente de lnea de comandos de Cassandra,
para ello ejecutamos otra lnea de comando sin cerrar la que est abierta, hazlo de la misma forma
que explique ms arriba.
Ahora ejecutamos el siguiente comando: cassandra-cli
Aparecer lo siguiente:
COMMANDOS BASICOS DEL CLIENTE:
En el cliente puedes ejecutar los siguientes comandos:
Para ayuda escribe: help;
Conectar al Equipo:
Ya has iniciado el cliente y a Cassandra, pero hace falta conectar al cliente con Cassandra, eso se
hace con el siguiente comando: connect localhost/9160;
Crear Espacios clave y familias de columnas:
Para crear un espacio clave ejecutas: create keyspace nombre;
Para usarlo ejecuta: use nombre;
Para crear una familia de columnas ejecuta: create column family nombre;
Salir del Cliente:
Para salir del cliente ejecutamos: quit;
Para terminar la ejecucin de cassandra, lo explique ms arriba.
MODELO DE DATOS DE CASSANDRA
Para desarrolladores y administradores provenientes del mundo relacional, el modelo de datos de
cassandra puede ser muy difcil de entender, algunos trminos, como el espacio clave son
completamente nuevos, y las columnas son comunes al mundo relacional pero con diferente
significado.
El modelo Relacional:

En bases de datos relacionales, cada base de datos contiene tablas, cada tabla tiene su propio
nombre y columnas, cada una con su nombre. Agregamos datos a las tablas, asignamos un valor
para cada columna definida, a las que no se les asigna valores, se les agrega NULL. Las filas de las
tablas corresponden a los registros y cada registro posee una llave primaria la cual permite el
acceso a la informacin. Podemos actualizar todos los registros o algunos de ellos si lo deseamos.
Normalmente este modelo se rige bajo un estndar llamado SQL.
Una simple introduccin:
Supongamos que tenemos una lista con varios valores incrustados en ella:
Si la lista tiene valores, podremos consultarlos ms adelante pero tendramos que examinar valor
por valor si queremos saber qu es lo que guarda exactamente en cada casilla. Para solucionar
esto, podemos agregar otra dimensin a esta lista, la cual me representa una descripcin a los
datos, formando un mapa estructurado:
Ahora, si decidimos que nuestro mapa deba almacenar informacin de usuarios, podramos tener
nombres de columnas como nombre, apellido, email, CC. Pero la estructura que hemos creado
solo permite adicionar un registro, as pues, para almacenar mltiples registros, necesitaramos
varias de estas estructuras, y eso no ayuda mucho. Adems, no tenemos nada que unifique los
datos de cada columna y diferencie un registro de otro, necesitamos una llave que referencie a un
grupo de columnas relacionadas.
Cassandra define una familia de columnas para asociar datos similares. Por ejemplo, podemos
tener una familia de columnas llamada Usuario, otra llamada Hotel, otra llamada Libro de
direcciones y muchas ms. De este modo, una familia de columnas es anloga a una tabla en el
modelo relacional.
Ya tenemos dos estructuras bsicas de Cassandra: las columnas, las cuales son pares
nombre/valor, y la familia de columnas, la cual es un contenedor de registros que contienen
columnas similares.
En las bases de datos relacionales, los nombres de columnas eran los que podan almacenarse
como cadenas nicamente, en Cassandra ya no existe esta limitacin, tanto llaves de registro
como columnas pueden ser cadenas, o enteros, o algn otro tipo.
No necesitamos almacenar un valor para cada columna al momento de crear un nuevo registro
porque quizs no conozcamos los valores cada columna. Por ejemplo, algunas personas tienen un
segundo nmero de telfono y otras no. En vez de colocar NULL para los valores que no
conocemos, lo cual gasta espacio, simplemente no se tiene en cuenta la columna para ese registro.
Con esto tenemos una estructura de arreglos multidimensional como esta:
Cada columna en Cassandra posee una marca horaria, la cual graba la ltima fecha en que la
columna fue actualizada, la marca es de las columnas y no de los registros. Este dato no puede
consultarse, se usa nicamente para resolucin de conflictos en el servidor.
Clster:

Cassandra probablemente no sea la mejor opcin si necesitas nicamente ejecutar un simple


nodo. Cassandra est diseado para distribuirse en mltiples mquinas operando juntas y
presentndose como una nica entidad al usuario final. As, la estructura ms externa de
Cassandra es el clster.
Espacio Clave:
Un clster es un contenedor para espacios clave (generalmente un nico espacio clave). Un
espacio clave es el contenedor de datos ms externo en Cassandra, similar a un contenedor de
tablas en el modelo relacional. Cada espacio contiene un nombre y propiedades. Puedes crear
tanto espacios clave como tu aplicacin lo necesite, aunque se considera como una prctica
aceptable crear un solo espacio clave por aplicacin.
Familia de Columnas:
Una familia de columnas es un contenedor para una ordenada coleccin de registros, los cuales
cada uno es una ordenada coleccin de columnas. En el mundo relacional, cuando creas una base
de datos a partir de un modelo, especificas el nombre de la base de datos (un espacio clave en
Cassandra), los nombres de las tablas (remotamente similares a una familia de columnas).y
entonces defines los nombres de las columnas que irn en cada tabla.
Existen dos razones por las cuales las familias de columnas no son iguales a las tablas. La primera,
aunque las familias de columnas son definidas, las columnas no, eres libre de agregar columnas en
cualquier momento. La segunda, una familia de columnas tiene dos atributos: nombre y
comparador, este ltimo es la forma en cmo se presentarn los datos en una consulta.
Otra diferencia es que en el modelo relacional, las tablas contienen nicamente columnas y
registros, mientras que en una familia de columnas puede haber columnas relacionadas como
sper columnas comunes.
Cuando escribes datos a una familia de columnas, especificas valores para una o ms columnas,
esa coleccin de valores juntos con una nica llave primaria se conoce como registro, de este
modo, un registro puede entenderse como un contenedor para columnas.
Columna:
Una columna es la estructura de datos ms bsica en el modelo de datos de Cassandra. Una
columna contiene un nombre, un valor y un reloj, el cual puedes tomarlo como una marca horaria
por ahora. Aunque estemos familiarizados con el trmino columna desde el mundo relacional,
no funciona igual en Cassandra. Primero que todo, cuando diseamos una base de datos
relacional, primero especificas la estructura de las tablas y el nombre de sus columnas, ms
adelante escribes los datos sobre la estructura ya definida.
En Cassandra, no tienes que definir las columnas que necesitas. Solamente define las familias de
columnas que deseas en el espacio clave, y despus escribir los datos sin tener definidas las
columnas. Esto es posible porque en Cassandra, todas las columnas son proporcionadas por el
cliente.

Los tipos de dato para los nombres y valores de una columna son arreglos de bytes de java,
frecuentemente proporcionados como cadenas. Como el nombre y el valor son de tipo binario,
pueden tener cualquier longitud. El tipo de dato definido para el reloj es un IClock, propio de
Cassandra.
Una familia de columnas puede tener las mismas o diferentes columnas en cada registro.
Registros Amplios, Registros Compactos:
Cuando diseamos una tabla en una base de datos relacional, tpicamente tratas con entidades, o
el grupo de atributos que describen un sustantivo particular (hotel, usuario), el tamao de los
registros no es negociable una vez hayas definido la tabla. Sin embargo, cuando trabajas con
Cassandra, puedes tomar una decisin respecto al tamao de tus registros: pueden ser amplios o
compactos, dependiendo del nmero de columnas que el registro contenga.
Un registro amplio es el que tiene muchas columnas (ciento de miles o incluso millones). Los
registros compactos generalmente contienen nombres generados automticamente (como una
marca horaria). Una diferencia entre amplios y compactos, es que solo los amplios tienen en
cuenta el orden de clasificacin de los nombres de las columnas.
Clasificacin de Columnas:
En Cassandra, especifica cuantas columnas sern comparadas por orden clasificado cuando los
resultados se retornan al cliente. Las columnas se clasifican por el tipo definido Compare With
en la familia de columnas, los tipos son: AsciiType, BytesType, LexicalUUIDType, Integer Type,
LongType, TimeUUIDType, or UTF8Type.
Sper Columnas:
Es un tipo especial de Columna. Una columna regular puede almacenar un arreglo de bytes, y el
valor de una sper columna es un conjunto de subcolumnas (columnas regulares). No es posible
definir una sper columna dentro de otra sper columna. La estructura bsica de una sper
columna est compuesta por un nombre (un arreglo de bytes) y las columnas que almacena.
Cada familia de columnas es almacenada en un archivo separado en disco. Para usar una sper
columna, defines la familia de columnas como un tipo sper, de esta manera, la sper familia de
columnas puede tener a su vez sper columnas, las cuales contienen columnas regulares.
DIFERENCIAS ENTRE RDBMS Y CASSANDRA:
Sin Lenguaje de Consultas:
SQL es el lenguaje estndar de consultas usado en las bases de datos relacionales. Cassandra no
posee un lenguaje para consultas, posee un API a travs de la cual puedes acceder.
Sin Integridad Referencial:
Cassandra no tiene integridad referencial, y por lo tanto, tampoco el concepto de asociaciones. En
una base de datos relacional, podras especificar llaves forneas en una tabla para referenciar la
llave primaria de un registro en otra tabla.
Existen ms diferencias, pero estas son las que por ahora entiendo.

EJEMPLO DE APLICACIN:
Modelado de Datos:
Cuando empiezas a modelar una base de datos relacional, debes empezar desde el dominio
conceptual y entonces representar los sustantivos presentes en el dominio a tablas. Utilizas llaves
primarias y forneas para modelar relaciones. Cuando tienes relaciones muchos a muchos, creas
tablas de asociacin que contengan sus llaves. La asociacin de tablas no existe en el mundo real
pero se necesita para trabajar en el modelo relacional. Una vez definidas las tablas, puedes
empezar a implementar instrucciones para la obtencin y escritura de datos. En cassandra no
tienes que empezar con un modelo de datos, puedes empezar diseando las consultas.
Para este ejemplo, usaremos un dominio que es fcil de entender: Un hotel que desea agregar
huspedes en un libro de reservacin. Nuestro dominio conceptual contiene hoteles, huspedes
que se alojan en los hoteles, un conjunto de habitaciones para cada hotel, y un registro de las
reservaciones. Los hoteles tambin mantienen una coleccin de puntos de inters los cuales son
museos, parques, almacenes de compras, monumentos u otros lugares cercanos al hotel que los
huspedes quieran visitar durante su estada. Tanto hoteles como puntos de inters necesitan
mantener datos de localizacin geogrfica para ser localizados en mapas y para calcular distancias.
Primero, determinemos las consultas:
1.. Encontrar hoteles en un rea dada.
2.. Encontrar informacin acerca de un hotel especifico como nombre y localizacin.
3.. Encontrar puntos de inters cercanos al hotel especifico.
4.. Encontrar una habitacin disponible en una fecha dada.
5.. Encontrar precios y caractersticas de las habitaciones.
6.. Reservar la habitacin seleccionada agregando los datos del husped.
Modelo en RDBMS:
Modelo en Cassandra:
Hay varias formas de hacerlo, una de ellas es representarlo en un modelo fsico similar al
relacional.
Cdigo de la Aplicacin:
Ahora trabajaremos con el cdigo y mostrando como representar el modelo, la aplicacin que
desarrollaremos tendr lo siguiente:
1Crear la estructura de la base de datos.
2Llenar la base de datos con informacin de hoteles y puntos de inters.
3Buscar un hotel en una ciudad especifica.
4Seleccionar uno de los hoteles de la bsqueda y buscar puntos de inters cercanos a ese hotel.
5Seleccionar el hotel e insertar los datos para la reservacin.

Potrebbero piacerti anche