Artículo
· 1 jun, 2023 Lectura de 5 min

Memoria ocupada por las tablas de IRIS

Introducción

Entre las diversas soluciones que desarrollamos en Innovatium, un desafío habitual es la necesidad de acceder al tamaño de las bases de datos. Entonces me di cuenta de que eso no es algo tan trivial en IRIS. Ese tipo de información es importante para mantener un control del flujo de datos y del coste en gigabytes de un sistema para implementar. Sin embargo, lo que realmente me llamó la atención fue la necesidad de eso para algo muy importante: la migración a la nube. Al final, ¿quién no quiere migrar sus sistemas a la nube hoy en día? 

Los servicios cloud ofrecen, de manera sencilla, todo lo que un sistema necesita: mirroring, escalabilidad, protección de datos, facilidad de flujo y lo que hace que todas las empresas se enamoren: solo se paga por lo que se usa. Y además, con los gigantes Google (Cloud), Microsoft (Azure), Amazon (AWS), etc. ofreciendo sus servicios casi impecables a precios accesibles, es algo que con una pequeña inversión puede ser una realidad para cualquiera que quiera aumentar sus ganancias y ahorrar a largo plazo. Además, para aquellos que ya están aquí, InterSystems también tiene sus propios servicios en la nube.

Por eso os voy a presentar la aplicación que estoy desarrollando, en la cual no solo es posible, sino también es fácil, observar el tamaño de los globals, para que los análisis necesarios para obtener un servicio cloud sean tan complicado como tu proveedor favorito lo complique.


Inspiración

Inspirándome en las aplicaciones isc-global-size-tracing y globals-tool, estoy creando una versión que pueda unir lo mejor de cada una y añadir las adaptaciones necesarias para nuestro negocio. Pero antes de mostrar mi desarrollo, voy a presentar brevemente las aplicaciones comentadas.

isc-global-size-tracing ofrece servicios de análisis a partir de clases dentro de IRIS, con métodos más amigables para el usuario y opciones de tareas programadas que actualizan una tabla con varios datos sobre los globals. Hay también opciones predefinidas para exportar las información a archivos externos. Así, si ya hay conocimiento de ObjectScript no es tan difícil dedicar unos minutos a entender cómo funciona y adaptarlo a tu negocio.

Globals-tool muestra un portal en forma de página web, donde es posible verificar los tamaños asignados y los tamaños disponibles para cada global, dentro de sus namespaces. Es un poco más simple, pero más amigable para el usuario, y también se puede utilizar para compartir los datos con personas de otras áreas sin conocimientos de programación. Los cambios y adaptaciones pueden requerir conocimientos previos no solo de ObjectScript, sino también de React y similares.

Lo que me gustaría entonces es combinar las diversas opciones de la primera con la facilidad de uso de la segunda, además de añadir otras funciones de análisis y exportación.

 

La aplicación - lo que ya está disponible

En esta sección, voy a explicar un poco lo que ya está hecho y cómo puedes aprovecharlo tú y tu empresa.

Todo el código está disponible para consultar, clonar o descargar en mi Github.

Empezar a utilizarla es muy sencillo, solamente hay que clonar o descargar el repositorio en la carpeta que prefieras y configurar para tu instancia de IRIS.

  • Abre el terminal en la carpeta donde quieres clonar el repositorio y usa el comando
git clone https://github.com/heloisatambara/iris-size-django
  • Entra en la carpeta iris-size-django e instala los requisitos necesarios: 
.../iris-size-django > pip install -r requirements.txt
  • Edita el archivo .../iris-size-django/globalsize/settings.py para personalizar la configuración de la base de datos. No cambies el parámetro ENGINE, debe apuntar a la aplicación de CaretDev, django-iris. Sin embargo, hay que cambiar NAME para el namespace, USER y PASSWORD para un usuario con los privilegios adecuados (se requiere acceso al namespace %SYS y poder crear una tabla en el namespace deseado) y los parámetros HOST y PORT deben apuntar a tu instancia.

  • De vuelta al terminal, vamos a ejecutar los comandos makemigrations para preparar la aplicación, migrate para crear la tabla donde vamos a almacenar la información de los globals y runserver para poner todo en práctica.
> python manage.py makemigrations
> python manage.py migrate
> python manage.py runserver
  • Ahora, simplemente abre el enlace http://127.0.0.1:8000/globals/ en un navegador y haz clic en Update. En pocos segundos deberías ver una tabla con todos los namespaces y sus respectivos globals, mostrando la cantidad (en megabytes) de memoria asignada y utilizada, como se ve en la imagen al inicio de esta sección.


Ahora vamos a analizar mejor la parte superior de la foto:

Aquí se pueden ver las opciones de filtros, exportación y ordenación.

Puedes escribir parte del nombre de la base de datos o de los globals para ver resultados específicos, o escribir un número positivo en Size o Allocated para ver resultados por encima de ese valor. Si escribes un número negativo, tendrás los resultados debajo del módulo del valor. Haz clic en Filter para aplicar el filtro.

Selecciona el modelo de exportación (CSV, XML, JSON) y haz clic en Export para exportar a la carpeta iris-size-django. Ten en cuenta que los filtros aplicados se reflejarán en la exportación. Además, puedes cambiar la dirección de exportación en el código, en .../iris-size-django/globals/views.py.>

Finalmente, puedes seleccionar el orden ascendente en orden alfabético, por el nombre de la base de datos y del global o por el espacio ocupado o por la cantidad asignada. Haz clic en Filter para efectuar la ordenación y los filtros aplicados. Nota: la ordenación no se reflejará en la exportación.

Al final de la página se puede ver el recuento de globals dentro de los filtros seleccionados, además de la cantidad total asignada y utilizada:


Si quieres hacer análisis más detallados o incluso ver la tabla original, una buena opción es entrar en el portal de administración de la instancia referida en settings.py, en la sesión de SQL y seleccionar el namespace referido en el mismo lugar. La tabla habrá sido creada automáticamente por Django con el nombre de SQL_User.globals_iglobal, y ahí puedes usar las herramientas de InterSystems para ejecutar todo tipo de consultas.

 

Nota: en settings.py, el parámetro DEBUG está marcado como TRUE, porque aún está en desarrollo.

 

Ideas futuras

Mis próximas ideas son añadir más funciones al portal. Actualmente es posible modificar configuraciones de exportación y de la base de datos directamente en el código, además de realizar consultas más complejas a través del portal de IRIS. Sin embargo, creo que unificar todo eso en el portal puede ser más eficiente. Además, también estoy estudiando añadir un siguimiento del flujo de datos por período.

Por fin, me gustaría saber vuestra opinión: ¿Creéis que ese tipo de aplicación puede ayudar a vuestros negocio? ¿Qué otras funciones os gustaría ver aquí? ¿Os gustaría ver alguna función ya existente de IRIS de manera más amigable? ¿O preferiríais que algo presentado aquí fuera más simple?

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