Artículo
· 1 jun, 2024 Lectura de 3 min

Cómo configurar el almacenamiento en columnas en clases

​El almacenamiento en columnas es una de las nuevas ofertas de InterSystems IRIS. A diferencia del almacenamiento tradicional basado en filas, optimiza el procesamiento de consultas al almacenar datos en columnas en lugar de filas, lo que permite un acceso y una recuperación más rápidos de información relevante.

Se han escrito un par de artículos sobre cuándo se debe utilizar para darle el mayor impulso a un sistema, y cómo crear tablas así usando SQL.

CREATE TABLE tabla (columna1 tipo1, columna2 tipo2, columna3 tipo3) WITH STORAGETYPE = COLUMNAR -- ex 1
CREATE TABLE tabla (columna1 tipo1, columna2 tipo2, columna3 tipo3 WITH STORAGETYPE = COLUMNAR) -- ex 2

e incluso las pruebas de rendimiento.

Como todos sabemos, InterSystems IRIS es un DBMS multimodelo y brinda acceso perfecto a los mismos datos mediante acceso relacional y de objetos. Lo primero se trata en otros artículos, pero ¿qué pasa con lo segundo?

Es bueno saber que el diseño de almacenamiento en columnas también se puede definir en clases y hay varias formas de hacerlo.

1. Si desea definir el almacenamiento de todas las propiedades como en columnas (ejemplo 1 en la parte superior), simplemente agregue el siguiente parámetro a su clase:

Parameter STORAGEDEFAULT = "columnar" 

Y si tomamos un ejemplo anterior, obtendremos la siguiente clase:

Class Post.Address Extends %Persistent [Final]
{
Parameter STORAGEDEFAULT = "columnar";
Parameter USEEXTENTSET=1;
Property City As %String(MAXLEN = 12);
Property ZIP As %String(MAXLEN = 9);
Property Country As %String(MAXLEN = 12);
}

El parámetro STORAGEDEFAULT = "columnar" le dice al sistema que todos los datos deben almacenarse en forma de columnas (lo que significa que cada columna tendrá su propio global).

El parámetro USEEXTENTSET = 1 le indica al sistema que genere globales hash más eficientes con nombres más cortos.

Puede declarar cualquier tabla como de columnas. Sin embargo, las tablas que utilizan columnas como diseño de almacenamiento predeterminado deben especificar la palabra clave de clase Final o la palabra clave de clase NoExtent , con cualquier subclase inmediata definida explícitamente como Final. De lo contrario, obtendrá un error durante la compilación.

2. También puede definir solo algunas propiedades almacenadas por columnas (ejemplo 2 en la parte superior). Para hacer esto, debe especificar el parámetro STORAGEDEFAULT = "columnar" para una propiedad.

Class Post.Address Extends %Persistent
{
Parameter STORAGEDEFAULT = "row";
Parameter USEEXTENTSET=1;
Property City As %String(MAXLEN = 12);
Property ZIP As %String(MAXLEN = 9);
Property Country As %String(MAXLEN = 12, STORAGEDEFAULT = "columnar");
}

De esta manera, las ciudades y los códigos postales se almacenarán como de costumbre en una ^Post.AddressD global y los países se almacenarán en una columna global separada.

En el caso de este ejemplo, este sería un enfoque mucho mejor, porque si tenemos una base de datos de diferentes ciudades en diferentes países, la cantidad de países es limitada, mientras que la cantidad de ciudades no lo es tanto. Además, no hay muchos casos en los que sea necesario realizar consultas analíticas en ciudades, a diferencia de los países.

Espero que esto te ayude a comprender cómo trabajar con el almacenamiento en columnas en las clases. Hay bastantes limitaciones que debes tener en cuenta, así que lee más sobre el tema aquí.

Comentarios (0)1
Inicie sesión o regístrese para continuar