La familia de columnas estándar es un objeto NoSQL que contiene columnas de datos relacionados. Es una tupla (par) que consta de un par clave-valor , donde la clave se asigna a un valor que es un conjunto de columnas. En analogía con las bases de datos relacionales, una familia de columnas estándar es como una "tabla", cada par clave-valor es una "fila". [1] Cada columna es una tupla ( triplete ) que consta de un nombre de columna, un valor y una marca de tiempo . [2] En una tabla de base de datos relacional , estos datos se agruparían dentro de una tabla con otros datos no relacionados. [3]
Las familias de columnas estándar son contenedores de columnas ordenados por sus nombres que pueden ser referenciados y ordenados por su clave de fila. [4]
Beneficios
Acceder a los datos en un almacén de datos distribuidos sería costoso (llevaría mucho tiempo) si se guardaran en forma de tabla. También sería ineficaz leer todas las familias de columnas que formarían una fila en una tabla relacional y juntarlas para formar una fila, ya que los datos se distribuyen en una gran cantidad de nodos . Por lo tanto, el usuario accede solo a la información relacionada requerida.
Por ejemplo, una tabla relacional podría constar de las columnas UID, nombre, apellido, fecha de nacimiento, género, etc. En un almacén de datos distribuido, la misma tabla se implementaría creando familias de columnas para "UID, nombre, apellido". , "fecha de nacimiento, género", etc. Si solo se necesitan los varones que nacieron entre 1950 y 1960, para una consulta en la base de datos relacional, se debe leer toda la tabla. En un almacén de datos distribuido, basta con acceder solo a la segunda familia de columnas estándar, ya que el resto de la información es irrelevante.
Ordenar y consultar
No hay forma de ordenar columnas ni de consultar una consulta arbitraria en almacenes de datos distribuidos . Las columnas se ordenan cuando se agregan a la familia de columnas. La forma de clasificación está definida por un atributo. Por ejemplo, esto lo hace el CompareWith
atributo en Apache Cassandra que puede tener los siguientes valores:
AsciiType
BytesType
LexicalUUIDType
LongType
TimeUUIDType
UTF8Type
También es posible agregar algunos atributos de clasificación definidos por el usuario. El uso de esta forma de clasificación hace que el proceso sea extremadamente rápido. [5]
Familias de columnas estándar frente a filas
Las familias de columnas estándar tienen una naturaleza sin esquema, por lo que cada una de sus "filas" puede contener un número diferente de columnas, e incluso pueden haber diferentes nombres de columna en cada fila. [6] Por lo tanto, son un concepto muy diferente a las filas en los sistemas de administración de bases de datos relacionales (RDBMS) . Esta es una de las razones por las que el concepto no es trivial para un experto en RDBMS con experiencia.
Ejemplos de
En notación similar a JSON , una definición de familia de columnas se vería de la siguiente manera: [6]
UserProfile = { Cassandra = { emailAddress : "[email protected]" , edad : 20 }, TerryCho = { emailAddress : "[email protected]" , gender : "male" }, Cath = { emailAddress : "cath @ apache.org " , edad : 20 , sexo : " mujer " , dirección : " Seúl " }, }
donde "Cassandra", "TerryCho", "Cath" corresponden a claves de fila; y "emailAddress", "age", "gender", "address" corresponden a los nombres de las columnas.
Ver también
Referencias
- ^ "Familias de columnas 101" . Salida de Max . Consultado el 18 de marzo de 2011 .
- ^ Salida de Max. "Una introducción rápida al modelo de datos de Cassandra: 1) Cassandra se basa en un modelo clave-valor" . Max Grinev . Consultado el 18 de marzo de 2011 .
Una familia de columnas estándar es un conjunto de pares clave-valor. Sé que la terminología es confusa, pero hasta ahora es solo un modelo básico de clave-valor. Haciendo una analogía con las bases de datos relacionales, puede pensar en la familia de columnas estándar como una tabla y un par clave-valor como un registro en una tabla.
- ^ "Familias de columnas 101" . Toad for Cloud . Consultado el 18 de marzo de 2011 .
- ^ "Hoja de referencia del modelo de datos de Cassandra: familia de columnas estándar" . http://www.javageneration.com/ : Blog de Chaker Nakhli - Otro blog técnico más . Consultado el 29 de marzo de 2011 .
Un contenedor de columnas ordenadas por sus nombres. Las familias de columnas están referenciadas y ordenadas por claves de fila.
- ^ "Instalación y uso de Apache Cassandra con Java Parte 3 (modelo de datos 2)" . http://www.sodeso.nl/ : Sodeso - Soluciones de desarrollo de software . Consultado el 30 de marzo de 2011 .
La clasificación se puede especificar en el atributo ColumnFamily CompareWith, estas son las opciones entre las que puede elegir (es posible crear un comportamiento de clasificación personalizado, pero lo cubriremos más adelante): BytesType, UTF8Type, LexicalUUIDType, TimeUUIDType, AsciiType, LongType
- ^ a b Publicado por Terry (2010-03-22). "Visita rápida de Apache Cassandra" . Blog de Terry.Cho . Consultado el 25 de marzo de 2011 .
Una cosa interesante es que cada fila puede tener un esquema diferente. La fila de Cassandra tiene la columna "emailAddress", "age". La fila de TerryCho tiene la columna "emailAddress", "gender". Esta característica se denomina "sin esquema" (la estructura de datos de cada fila en la familia de columnas estándar puede ser diferente).