#Sharding

0 Seguidores · 10 Publicaciones

La Fragmentación es un tipo de partición de la base de datos, que separa las bases de datos muy grandes en partes más pequeñas, rápidas y fáciles de administrar llamadas fragmentos de datos. La palabra fragmento significa que es una pequeña parte de algo más grande.

Wikipedia.

Artículo Jose-Tomas Salvador · feb 5, 2025 8m read

Os voy a mostrar cómo podéis montaros en vuestra máquina, muy rápidamente, un cluster de nodos InterSystems IRIS en sharding. En este artículo no es mi objetivo hablar del sharding en detalle, ni definir una arquitectura de despliegue para un caso real, sino enseñaros como podéis montar de forma rápida, en vuestro equipo, un cluster de instancias de IRIS en sharding con el que poder jugar y hacer pruebas. Si estáis interesados en indagar más sobre el sharding en IRIS, podéis echar un vistazo a la documentación pinchando aquí.  

Vaya por delante que la tecnología sharding de IRIS nos va a permitir 2 cosas de inicio:

  • Definir, cargar y consultar tablas fragmentadas o shards, cuyos datos serán distribuidos transparentemente entre los nodos del cluster
  • Definir tablas federadas, que ofrecen una vista global y compuesta de datos pertenecientes a tablas distintas y que, fisicamente, están almacenadas en distintos nodos distribuidos.

Así que , lo dicho, dejamos para otros artículos el tema de jugar con shards o con tablas federadas, y nos centramos ahora en el paso previo, esto es, en montar el cluster de nodos en sharding.

2
0 77
Artículo Alberto Fuentes · jun 22, 2021 4m read

En este artículo, ejecutaremos un clúster InterSystems IRIS usando Docker y archivos CPF combinados - una nueva característica que permite configurar servidores con facilidad.

En UNIX® y Linux, puedes modificar el archivo predeterminado iris.cpf utilizando un archivo CPF combinado declarativo. Un archivo combinado es un CPF parcial en el que se establecen los valores deseados que queramos que tenga una instancia al iniciar. La operación de combinación en CPF sólo funciona una vez para cada instancia.

Nuestra arquitectura de clúster es muy sencilla, consistirá en un Nodo 1 (nodo maestro) y dos Nodos de datos (echa un vistazo a todas las funciones disponibles). Desafortunadamente, docker-compose no puede desplegar en diferentes servidores (aunque puede desplegar a hosts remotos), por lo que esto es útil para el desarrollo local de modelos de datos que utilicen sharding, pruebas, etc. Para el despliegue en producción de un cluster de estar características, debes utilizar ICM o IKO.

Docker-compose.yml

Comencemos con la configuración de docker-compose:

 
docker-compose.yml

Como puedes ver, estamos ejecutando una imagen intersystems/iris:2020.3.0.221.0, a la que pasamos un fichero de licencia (que debe ser compatible con sharding), persiste los datos utilizando la funcionalidad Durable %SYS, y le pasa un ISC_CPF_MERGE_FILE que apunta al archivo CPF que queremos combinar (son diferentes archivos los usados para el Nodo 1 y los nodos de datos).

Además, los nodos de datos se inician con un minuto de retraso dándole tiempo al Nodo 1 para que arranque. Esta es una estimación extremadamente conservadora, con un hardware adecuado el tiempo de inicio es del orden de segundos como máximo.

Revisaremos la configuración de clúster que tiene lugar en los archivos combinados CPF.

CPF2merge-data-instance.conf

[Startup]
PasswordHash=FBFE8593AEFA510C27FD184738D6E865A441DE98,u4ocm4qh
ShardRole=node1


[config]
MaxServerConn=64
MaxServers=64
globals=0,0,400,0,0,0
errlog=1000
routines=32
gmheap=256000
locksiz=1179648

¿Qué sucede aquí?

En la parte [Startup] habilitamos sharding al asignar el rol de Nodo1 a nuestro clúster. Y en [config] ampliamos un poco nuestro servidor al permitir más buffers de memoria y conexiones. ¡Eso es todo!

CPF2merge-data-instance.conf

[Startup]

ShardClusterURL=IRIS://iris1:1972/IRISCLUSTER
ShardRole=DATA

Para los nodos de datos, necesitamos proporcionar la URL del Nodo1 y el rol del nodo.

Pruébalo

Revisa el repositorio o ejecuta este código:

git clone https://github.com/intersystems-ru/iris-container-recipes.git
cd iris-container-recipes
cd cluster
// copy iris.key in cluster folder
docker-compose up -d

Después de iniciar el clúster de InterSystems IRIS, puedes acceder a él desde el navegador. El usuario/contraseña es: _SYSTEM/SYS.

Conclusiones

Los archivos CPF combinados son una excelente y sencilla herramienta, que permiten configurar instancias de InterSystems IRIS.

Gracias a @Luca Ravazzolo por proporcionar el código y responder a todas mis preguntas.

1
0 139
Artículo Ricardo Paiva · jun 10, 2021 2m read

En los buenos tiempos, calcular el tamaño de los datos, flujos e índices para una clase/tabla era fácil - solo había que ejecutar %GSIZE y revisar los globals D, S, e I, respectivamente.

Sin embargo, hoy en día el sharding, los nombres de los globals optimizados y los índices en globals separados producen una salida %GSIZE parecida a esta:

            Global Size Display of /irissys/data/IRIS/mgr/irisshard/
                              1:35 PM  Dec 02 2020

          IRIS.Msg       1     IRIS.MsgNames       1     IRIS.SM.Shard       1
       IS.DGoWeK.1   24359       IS.DGoWeK.2       3       IS.DGoWeK.3    2810
       IS.DGoWeK.4    2542        IS.V0Zli.1     373        IS.V0Zli.2       2
        IS.k22Ht.1  238028        IS.k22Ht.2       3        IS.k22Ht.3   25819
        IS.k22Ht.4    7426       ISC.Src.Jrn       1           ROUTINE       1
           oddBIND       1            oddCOM       1            oddDEF       1
            oddDEP       1            oddEXT       1           oddEXTR       1
            oddMAP       1           oddMETA       1            oddPKG       1
           oddPROC       1        oddPROJECT       1            oddSQL       1
 oddStudioDocument       1     oddStudioMenu       1           oddTSQL       1
            oddXML       1           rBACKUP       1              rINC       1
          rINCSAVE       1            rINDEX       1       rINDEXCLASS       1
         rINDEXEXT       7         rINDEXSQL       1              rMAC       1
          rMACSAVE       1              rMAP       1              rOBJ       1

      TOTAL:  301403

Claro, se pueden seguir las definiciones de almacenamiento y descodificar para entender a donde se fue el espacio, pero ya no es obvio.

Introduce en ClassSize query una función con valores de tabla (tvf) personalizada, que muestre los globals relacionados con las clases, su tamaño y su función.

Llámala con dos argumentos:

  • package: dónde buscar clases persistentes
  • fast: si es verdadero devuelve solo el espacio asignado

Esta es la apariencia de una combinación de clases sharded y non-sharded:

La limitación es que, de momento, solo la información sobre el shard actual es devuelta para las clases sharded.

0
0 154
Artículo Ricardo Paiva · ene 14, 2020 5m read

Nuestra plataforma de datos InterSystems IRIS es una plataforma perfecta para todo lo que necesite realizar con sus datos, ya sean transacciones, análisis o ambos. Incluye muchas de las funciones de Caché y Ensemble que nuestros clientes ya conocen, y en este artículo descubriremos un poco más acerca de una de sus nuevas funcionalidades: SQL Sharding.

0
0 230
Anuncio David Reche · nov 7, 2019

La versión 2019.3 de InterSystems IRIS, IRIS for Health e IRIS Studio ya está disponible.

Está disponible a través del Centro de Soporte Internacional,  con número de compilación 2019.3.0.311.0.

InterSystems IRIS Data Platform 2019.3 incluye muchas funcionalidades nuevas:

0
0 147
Artículo Jose-Tomas Salvador · sep 3, 2019 4m read

Hola a todos,

como prometí en mi post previo Evaluación de Sharding #1, continué investigando el impacto del número de shards.

Para completar la revisión, he añadido también las instancias en Windows (Server 2012 R2) 8 cores:

  • Cache for Windows (x86-64) 2016.2.2 - 12 GB global buffers
  • IRIS for Windows (x86-64) 2018.1.1  - 400 MB global buffers, no sharding

En LINUX (Ubuntu 16.04 LTS)  2 cores:

  • IRIS for UNIX (Ubuntu Server LTS for x86-64) 2018.1.1   400MB global buffe

Pruebas: no shards, 2 shards, 3 shards, 4 shards.

0
0 163
Artículo Jose-Tomas Salvador · sep 3, 2019 4m read

¡Hola Comunidad!

Con IRIS nos llegó una INTERESANTÍSIMA funcionalidad - ¡SHARDING! Sin duda una gran característica.

Pero, ¿cómo puedo descubrir si encaja con mis aplicaciones actuales? ¿Hay alguna funcionalidad práctica para apostar por ello en mi perfecta aplicación transaccional? ¿O es sólo algo para las nuevas aplicaciones que vaya a diseñar?

0
0 169