Componentes de NoSQL
Para comprender la arquitectura de las bases de datos de Catalyst NoSQL y aprender a trabajar con ellas, primero debes entender los componentes que conforman las bases de datos NoSQL.
Componentes Básicos
A continuación se explican los componentes fundamentales involucrados en Catalyst NoSQL.
Terminología
| Nombre del Componente | Descripción |
|---|---|
| Tabla | Una tabla es la estructura fundamental en la que NoSQL almacena datos. Similar a las bases de datos relacionales, las tablas están compuestas por registros o elementos. La tabla de ejemplo Travel que se muestra a continuación contiene datos sobre destinos de viaje que se podrían visitar, con información clave sobre cada lugar. |
| Atributos | Un atributo representa una característica de un valor de datos en una tabla. Los atributos en NoSQL son como campos o columnas en una base de datos relacional, donde cada atributo contiene datos de un tipo de dato específico. La tabla de ejemplo Travel a continuación contiene los atributos DestinationName, Distance, BestTimeToVist, Location y EstimatedCost. |
| Elementos | Un elemento es una colección de atributos que contienen los datos de un único punto de datos. Los elementos en NoSQL son similares a las filas o registros en una base de datos relacional, donde pueden contener valores para diferentes atributos. En la tabla de ejemplo Travel, cada colección de datos identificada de forma única por DestinationName es un elemento. Por ejemplo, el registro "Honululu" que también contiene un conjunto de valores para Distance, BestTimeToVisit y EstimatedCost es un elemento. De manera similar, el registro identificado por "Prague" con diferentes valores de atributos es un elemento. Nota: El tamaño total máximo de un elemento aprovisionado en Catalyst NoSQL es de 400 KB. |
| Datos | En términos de Catalyst NoSQL, los datos de una tabla están compuestos por todos los atributos y elementos en ella, presentes en el formato JSON personalizado de Catalyst. El código JSON que se muestra a continuación para la tabla Travel representa los datos de la tabla. La sección de ayuda Trabajar con Datos elabora sobre el formato de datos JSON personalizado y los tipos de datos admitidos. |
Representación de Tabla de Ejemplo
Nombre de la tabla: Travel
{
"item": {
"DestinationName": {
"S": "Honolulu"
},
"Distance": {
"N": 4960
},
"BestTimeToVist": {
"L":
[
{
"S": "September"
},
{
"S": "October"
},
{
"S": "November"
}
]
},
"EstimatedCost": {
"N": 2500
}
},
"item": {
"DestinationName": {
"S": "Prague"
},
"Distance": {
"N": 4081
},
"Location": {
"M": {
"Country": {
"S": "Czech Republic"
},
"Continent": {
"S": "Europe"
}
}
},
"EstimatedCost": {
"N": 3000
}
},
"item": {
"DestinationName": {
"S": "Marrakesh"
},
"Distance": {
"N": 3700
},
"BestTimeToVist": {
"L":
[
{
"S": "March"
},
{
"S": "April"
},
{
"S": "September"
},
{
"S": "October"
}
]
},
"Location": {
"M": {
"Country": {
"S": "Morocco"
},
"Continent": {
"S": "Africa"
}
}
},
"EstimatedCost": {
"N": 1700
}
}
}
La tabla Travel representa una tabla NoSQL simple en el formato JSON personalizado. La estructura incluye atributos anidados y arrays: BestTimeToVist está presente como un array del tipo de dato lista (“L”), y el atributo Location es un atributo anidado del tipo de dato mapa (“M”) que contiene las claves Country y Continent.
Claves de Tabla
Siguiendo una arquitectura NoSQL típica, Catalyst NoSQL almacena datos en particiones distribuidas entre clústeres, también conocidos como shards. Estos shards también pueden replicarse en múltiples servidores en espejos. Este almacenamiento distribuido entre múltiples nodos divide los conjuntos de datos en fragmentos más pequeños y promueve la optimización.
Al consultar datos en una tabla NoSQL, debemos poder localizar la partición en la que se almacena un elemento específico. Además, ordenar a través de una partición para localizar un elemento también implica esfuerzos adicionales. Esto se logra con la ayuda de claves distintas que identifican particiones u ordenan a través de ellas, como se describe a continuación.
Terminología
| Nombre del Componente | Descripción |
|---|---|
| Clave de Partición | La clave de partición identifica una partición lógica en un almacenamiento distribuido en la que se almacena un elemento de datos. Estas particiones lógicas se mapean a nodos de almacenamiento físico en el backend mediante funciones hash. En la tabla de ejemplo Menu que se analiza a continuación, el atributo Category es una clave de partición. |
| Clave de Ordenación | La clave de ordenación principal ordena a través de una partición específica para localizar un elemento de datos y lo devuelve en un orden clasificado si más de 1 elemento coincide con la clave de partición en los datos. Esto se hace identificándolo a partir de un rango de hashes de clave. Catalyst te permite agregar una clave de ordenación opcionalmente al crear una tabla NoSQL. En la tabla de ejemplo Menu que se analiza a continuación, el atributo DishName se considera como una clave de ordenación. |
| Clave Primaria Simple | Una clave primaria simple en Catalyst NoSQL denota únicamente la clave de partición. Cuando eliges configurar solo una clave de partición para una tabla NoSQL sin una clave de ordenación, la clave de partición actuará como la clave primaria de la tabla identificando de forma única un elemento en ella. Esto es similar al concepto de una clave primaria en una base de datos relacional. En la tabla de ejemplo Travel analizada en la sección anterior, el atributo DestinationName se considera como la clave primaria, ya que este atributo debe estar presente en todos los elementos y no pueden existir dos elementos con los mismos valores para este atributo. Sin embargo, en la tabla de ejemplo Menu que se analiza a continuación, la clave de partición Category no identifica de forma única un elemento, porque pueden existir múltiples elementos con el mismo valor para ella. Esto se debe a que la tabla Menu utiliza una clave primaria compuesta. |
| Clave Primaria Compuesta | La clave primaria compuesta incluye tanto una clave de partición como una clave de ordenación para identificar de forma única un elemento, es decir, la combinación de ambas claves actúa como clave primaria. Consultar una tabla con la clave primaria compuesta es global, ya que los datos abarcan múltiples particiones. A diferencia de la clave primaria simple que requiere que la clave de partición sea única, aquí puedes almacenar valores no únicos para la clave de partición, siempre y cuando definas también una clave de ordenación. Nota: Para todos los elementos que tienen la misma clave de partición en una tabla, las claves de ordenación deben ser únicas.
La tabla de ejemplo Menu que se analiza a continuación contiene una clave primaria compuesta donde la clave de partición Category y la clave de ordenación DishName juntas identifican de forma única un elemento de datos (un plato). |
| Claves de Ordenación Adicionales | Catalyst NoSQL te permite configurar claves de ordenación adicionales, además de la clave de ordenación principal, que es parte de la clave primaria compuesta. Las claves de ordenación adicionales se utilizan si necesitas que la ordenación se realice según una clave diferente a la clave de ordenación principal, o si la clave de ordenación principal es desconocida para un elemento específico. En este caso, una combinación de la clave de partición y una clave de ordenación adicional se utilizará como clave primaria compuesta. Consultar una tabla con claves de ordenación adicionales es similar a la indexación local, ya que todas se utilizan con la misma clave de partición para ordenar solo en esa partición específica. Nota: Catalyst te permite configurar un máximo de 5 claves de ordenación adicionales para una tabla.
En la tabla de ejemplo Menu que se analiza a continuación, los atributos PreparationTime y Calories están configurados como claves de ordenación adicionales. |
Representación de Tabla de Ejemplo
Nombre de la tabla: Menu
{
"item": {
"Category": {
"S": "Pizza"
},
"DishName": {
"S": "Vegan"
},
"Calories": {
"N": 350
},
"PreparationTime": {
"N": 20
},
"Cost": {
"N:" 25
},
"DiscountPercentage": {
"N": 5
},
"KeyIngredients": {
"L": [
{
"S": "Pizza Base"
},
{
"S": "Pizza Sauce"
},
{
"S": "Olives"
},
{
"S": "Bell Peppers"
},
{
"S": "Corn"
},
{
"S": "Onions"
}
]
}
},
"item": {
"Category": {
"S": "Pizza"
},
"DishName": {
"S": "Chicken Overload"
},
"Calories": {
"N": 450
},
"PreparationTime": {
"N": 30
},
"KeyIngredients": {
"L": [
{
"S": "Pizza Base"
},
{
"S": "Pizza Sauce"
},
{
"S": "Fried Chicken"
},
{
"S": "Paprika"
}
]
}
},
"item": {
"Category": {
"S": "Sandwich"
},
"DishName": {
"S": "Vegan"
},
"Calories": {
"N": 300
},
"PreparationTime": {
"N": 20
},
"Cost": {
"N": 25
},
"DiscountPercentage": {
"N": 15
}
}
}
La tabla Menu incluye varios atributos de los cuales Category es la clave de partición, DishName es la clave de ordenación, y PreparationTime y Calories son claves de ordenación adicionales.
La clave primaria compuesta mejora la consulta de datos. Si esta tabla estuviera configurada solo con la clave primaria simple, es decir, con Category (ejemplo: “Pizza”), entonces consultarla obtendría todos los elementos de esa Category (todas las “pizzas” en el menú). Sin embargo, dado que está configurada con una clave primaria compuesta, es decir, con Category y DishName, consultarla con ambas claves recuperará un elemento único de esos valores (ejemplo: “Pizza” y “Vegan”).
De manera similar, las claves de ordenación adicionales proporcionan mayor flexibilidad al consultar la tabla dentro de la misma partición. Puedes elegir consultar la tabla con la clave de ordenación adicional PreparationTime en combinación con la clave de partición Category (ejemplo: “Sandwich” y “20”).
Antes de analizar la indexación, entendamos un atributo especial que Catalyst NoSQL proporciona para todas las tablas.
Time To Live (TTL)
Time To Live (TTL) proporciona una forma automatizada de eliminar elementos en las tablas de Catalyst NoSQL después de un punto específico en el tiempo. Puedes configurar un atributo para almacenar la marca de tiempo de expiración en tu tabla al crearla. Luego puedes agregar la marca de tiempo de expiración de cada elemento en la tabla en el formato de tiempo Unix epoch al agregar los datos. Catalyst eliminará permanentemente los elementos de la tabla que hayan pasado su tiempo de expiración automáticamente, evitándote realizar actualizaciones manuales y consumir rendimiento de escritura.
El atributo TTL es útil para eliminar elementos que no serán necesarios más allá de un punto específico en el tiempo o cuya validez es de corta duración. Los elementos que Catalyst elimina automáticamente después de que hayan pasado su fecha de expiración se eliminarán de la tabla y de cualquier lugar donde estén indexados.
Catalyst opera un programador integrado una vez cada 24 horas para verificar si hay elementos cuyos valores de atributo TTL indican que han expirado. Esta verificación se realiza en todas las tablas NoSQL de todos tus proyectos, y los elementos que han pasado su expiración se eliminan permanentemente.
Entendamos el TTL con un ejemplo. Supongamos que creamos un atributo llamado Expiry para almacenar la marca de tiempo TTL en la tabla Menu proporcionada en la sección anterior. Luego podemos definir la marca de tiempo de expiración para todos los elementos de la tabla de la siguiente manera.
Representación de Tabla de Ejemplo
Nombre de la tabla: Menu
{
"item": {
"Category": {
"S": "Pizza"
},
"DishName": {
"S": "Vegan"
},
"Calories": {
"N": 350
},
"PreparationTime": {
"N": 20
},
"Cost": {
"N:" 25
},
"DiscountPercentage": {
"N": 5
},
"Expiry": {
"N": 1715755926
}
},
"item": {
"Category": {
"S": "Pizza"
},
"DishName": {
"S": "Chicken Overload"
},
"Calories": {
"N": 450
},
"PreparationTime": {
"N": 30
},
"Expiry": {
"N": 1715565610
}
},
"item": {
"Category": {
"S": "Sandwich"
},
"DishName": {
"S": "Vegan"
},
"Calories": {
"N": 300
},
"PreparationTime": {
"N": 20
},
"Cost": {
"N": 25
},
"DiscountPercentage": {
"N": 15
}
"Expiry": {
"N": 1715700869
}
}
}
Puntos a recordar:
-
Podrás actualizar el valor del atributo TTL para elementos en una tabla NoSQL en cualquier momento que lo necesites. Cuando se ejecute el programador integrado de Catalyst, identificará y procesará los elementos según el último valor de TTL.
-
También puedes eliminar el atributo TTL para elementos según tus necesidades, basándote en los valores proporcionados
Última actualización 2026-03-20 21:51:56 +0530 IST
Yes
No
Send your feedback to us