Buscar

Limpiar filtro
Artículo
Mathew Lambert · 25 mar, 2020

Uso de Docker con tu repositorio de desarrollo de InterSystems IRIS

¡Hola Comunidad! Creo que hoy en día todo el mundo guarda el código fuente de sus proyectos en repositorios como Github, GitLab, bitbucket, etc. Lo mismo sucede con proyectos de InterSystems IRIS, se pueden ver algunos ejemplos en Open Exchange. ¿Qué hacemos cada vez que empezamos o continuamos nuestro trabajo con un repositorio en particular con la plataforma de datos InterSystems? Necesitamos una máquina de InterSystems IRIS local, configurar el entorno para el proyecto e importar el código fuente. Por eso, cada desarrollador hace lo siguiente: Bajarse el código del repositorio Instalar/Ejecutar una instalación de IRIS local Crear un nuevo namespace/database para un proyecto Importar el código a ese nuevo namespace Configurar el resto del entorno Iniciar/continuar codificando el proyecto Si pasas tu repositorio a Docker, estos pasos podrían reducirse a 3: Bajarse el código del repositorio Ejecutar docker-compose build Iniciar/continuar desarrollando el proyecto Ventaja - evitar los pasos 3, 4 y 5, que pueden llevar varios minutos y de vez en cuando generan algún dolor de cabeza. Puedes dockerizar (casi) cualquiera de tus repositorios de InterSystems en unos pocos pasos. ¡Comenzamos! Cómo dockerizar el repositorio y lo que significa Básicamente la idea es tener Docker instalado en tu máquina, que compilará el código y el entorno en un contenedor, que a su vez se ejecutará en Docker y funcionará tal como el desarrollador lo introdujo en el primer lugar. Así nos olvidamos de preguntarnos "¿Cuál es la versión del sistema operativo?" o "¿Qué más tenía en esta instalación de IRIS?". Cada vez tenemos una página limpia (o un contenedor de IRIS limpio) que podremos usar para configurar el entorno (namespaces, bases de datos, web-apps, usuarios/roles) e importar código a una base de datos limpia y recién creada. ¿Este procedimiento de "dockerizar" dañará gravemente tu repositorio actual? No. Necesitará añadir 2 o 3 nuevos archivos en la raíz del repositorio y seguir unas pocas reglas que podrás configurar por ti mismo. Requisitos previos Descargar e instalar docker. Descargar e instalar la imagen de IRIS docker. En este ejemplo, usaré la vista previa completa de InterSystems IRIS: iris:2019.1.0S.111.0, que puedes descargar de WRC-preview., mira los detalles. Si trabajas con una instancia que requiere una clave, coloca el iris.key en el lugar que usarás todo el tiempo. Yo la pongo en mi Mac en el directorio Home. Dockerizar el repositorio Para dockerizar tu repositorio, deberás añadir tres archivos a su carpeta raíz. Este es un ejemplo de un repositorio dockerizado - el proyecto ISC-DEV, que ayuda a importar/exportar código fuente desde la base de datos IRIS. Este repositorio tiene un Dockerfile adicional, docker-compose.yml e installer.cls que describiré a continuación. Primero está Dockerfile, que será usado por el comando build de docker-compose. Dockerfile FROM intersystems/iris:2019.1.0S.111.0 # need be the same image as installed WORKDIR /opt/app COPY ./Installer.cls ./ COPY ./cls/ ./src/ RUN iris start $ISC_PACKAGE_INSTANCENAME quietly EmergencyId=sys,sys && \ /bin/echo -e "sys\nsys\n" \ # giving %ALL to the user admin " Do ##class(Security.Users).UnExpireUserPasswords(\"*\")\n" \ " Do ##class(Security.Users).AddRoles(\"admin\", \"%ALL\")\n" \ # importing and running the installer " Do \$system.OBJ.Load(\"/opt/app/Installer.cls\",\"ck\")\n" \ " Set sc = ##class(App.Installer).setup(, 3)\n" \ " If 'sc do \$zu(4, \$JOB, 1)\n" \ # introducing OS Level authorization (to remove login/pass prompt in container) " Do ##class(Security.System).Get(,.p)\n" \ " Set p(\"AutheEnabled\")=p(\"AutheEnabled\")+16\n" \ " Do ##class(Security.System).Modify(,.p)\n" \ " halt" \ | iris session $ISC_PACKAGE_INSTANCENAME && \ /bin/echo -e "sys\nsys\n" \ | iris stop $ISC_PACKAGE_INSTANCENAME quietly CMD [ "-l", "/usr/irissys/mgr/messages.log" ] Este Dockerfile copia installer.cls y el código fuente desde la carpeta /cls del repositorio a la carpeta /src en el contenedor. También ejecuta algunos ajustes de configuración, que otorgan al usuario admin el rol %All, contraseña infinita "SYS", introduce la autorización de nivel de sistema operativo y ejecuta el %Installer. ¿Qué contiene %Installer? Class App.Installer { XData MyInstall [ XMLNamespace = INSTALLER ] { <Manifest> <Default Name="NAMESPACE" Value="ISCDEV"/> <Default Name="DBNAME" Value="ISCDEV"/> <Default Name="APPPATH" Dir="/opt/app/" /> <Default Name="SOURCESPATH" Dir="${APPPATH}src" /> <Default Name="RESOURCE" Value="%DB_${DBNAME}" /> <Namespace Name="${NAMESPACE}" Code="${DBNAME}-CODE" Data="${DBNAME}-DATA" Create="yes" Ensemble="0"> <Configuration> <Database Name="${DBNAME}-CODE" Dir="${APPPATH}${DBNAME}-CODE" Create="yes" Resource="${RESOURCE}"/> <Database Name="${DBNAME}-DATA" Dir="${APPPATH}${DBNAME}-DATA" Create="yes" Resource="${RESOURCE}"/> </Configuration> <Import File="${SOURCESPATH}" Recurse="1"/> </Namespace> </Manifest> } ClassMethod setup(ByRef pVars, pLogLevel As %Integer = 3, pInstaller As %Installer.Installer, pLogger As %Installer.AbstractLogger) As %Status [ CodeMode = objectgenerator, Internal ] { Return ##class(%Installer.Manifest).%Generate(%compiledclass, %code, "MyInstall") } } Crea el namespace/database ISCDEV e importa el código desde la carpeta fuente -/src. A continuación viene el archivo docker-compose.yml, que se usará cuando ejecutemos el contenedor con el comando up de docker-compose. version: '2.4' services: iris: build: . restart: always ports: - 52773:52773 volumes: - ~/iris.key:/usr/irissys/mgr/iris.key Esta configuración le indicará a Docker en qué puerto esperamos que IRIS trabaje en nuestro host. Primero (52773) es un host, segundo es el puerto interno del contenedor de un contenedor (52773) En la sección de volúmenes, docker-compose.yml otorga acceso a una clave de IRIS en tu máquina dentro del contenedor en el lugar, donde IRIS la buscará: - ~/iris.key:/usr/irissys/mgr/iris.key Para empezar a codificar con este repositorio, hay que hacer lo siguiente: 1. Clonar/hacer un pull de git del repositorio hacia cualquier directorio local. 2. Abrir el terminal en este directorio y ejecutar user# docker-compose build esto compilará el contenedor. 3. Ejecutar el contenedor IRIS con tu proyecto user# docker-compose up -d Abre tu IDE favorito, conéctate al servidor en localhost://52773 y desarrolla con InterSystems IRIS Data Platforms ;) Puedes usar estos 3 archivos para dockerizar tu repositorio. Simplemente tienes que introducir el nombre correcto del código fuente en Dockerfile, el o los namespace(s) adecuados en Installer.cls y el sitio de iris.key en docker-compose.yml y usar los beneficios de los contenedores Docker en tus tareas diarias de desarrollo con InterSystems IRIS. Este artículo ha sido etiquetado como "Mejores prácticas" ("Best practices"). Los artículos con la etiqueta "Mejores prácticas" incluyen recomendaciones sobre cómo desarrollar, probar, implementar y administrar mejor las soluciones de InterSystems.
Artículo
Alberto Fuentes · 3 abr, 2020

Cómo cargar un modelo de ML a InterSystems IRIS (PMML)

¡Hola a todos! Hoy hablaremos de cómo cargar un modelo de Machine Learning en IRIS y cómo probarlo, a través de un artículo genial de Niyaz Khafizov. Nota: lo siguiente se realizó utilizando Ubuntu 18.04, Apache Zeppelin 0.8.0 y Python 3.6.5. Introducción Actualmente, muchas de las diferentes herramientas que están disponibles para data mining permiten desarrollar modelos predictivos y analizar los datos con gran facilidad. La plataforma de datos InterSystems IRIS proporciona un soporte sólido para analizar grandes cantidades de datos e incrementar la velocidad de las aplicaciones, al tiempo que ofrece interoperabilidad junto con modernas herramientas de data mining. En esta serie de artículos estamos explorando las capacidades de InterSystems IRIS para la minería de datos . En el primer artículo configuramos nuestra infraestructura y nos preparamos para empezar. En el segundo artículo construimos nuestro primer modelo predictivo para predecir las especies de flores utilizando instrumentos de Apache Spark y Apache Zeppelin. En este artículo, construiremos un modelo KMeans PMML y lo probaremos en InterSystems IRIS. Intersystems IRIS proporciona excelentes funcionalidades para ejecutar PMML. Puedes subir tu modelo y probarlo con cualquier tipo de datos, IRIS mostrará su exactitud, precisión, F-score y muchas cosas más. Comprobación de los requisitos Primero, descarga jpmml (echa un vistazo a la tabla y selecciona la versión adecuada) y colócalo en cualquier directorio. Si utilizas Scala, esto será suficiente. Si utilizas Python, ejecuta la siguiente línea de comando en el terminal pip3 install --user --upgrade git+https://github.com/jpmml/pyspark2pmml.git Después del mensaje de que la instalación se realizó con éxito, ve a Spark Dependencies y añade la dependencia al jpmml descargado: Crear modelo KMeans El builder de PMML utiliza pipelines, por eso modificamos un poco el código escrito en el artículo anterior. Ejectua el siguiente código en Zeppelin: %pysparkfrom pyspark.ml.linalg import Vectorsfrom pyspark.ml.feature import VectorAssemblerfrom pyspark.ml.clustering import KMeansfrom pyspark.ml import Pipelinefrom pyspark.ml.feature import RFormulafrom pyspark2pmml import PMMLBuilder dataFrame=spark.read.format("com.intersystems.spark").\option("url", "IRIS://localhost:51773/NEWSAMPLE").option("user", "dev").\option("password", "123").\option("dbtable", "DataMining.IrisDataset").load() # load iris dataset (trainingData, testData) = dataFrame.randomSplit([0.7, 0.3]) # split the data into two setsassembler = VectorAssembler(inputCols = ["PetalLength", "PetalWidth", "SepalLength", "SepalWidth"], outputCol="features") # add a new column with features kmeans = KMeans().setK(3).setSeed(2000) # clustering algorithm that we use pipeline = Pipeline(stages=[assembler, kmeans]) # First, passed data will run against assembler and after will run against kmeans.modelKMeans = pipeline.fit(trainingData) # pass training data pmmlBuilder = PMMLBuilder(sc, dataFrame, modelKMeans)pmmlBuilder.buildFile("KMeans.pmml") # create pmml model El código creará un modelo para predecir las especies utilizando PetalLength, PetalWidth, SepalLength, SepalLength y SepalWidth como características. Utilizaremos el formato PMML. PMML es un formato para intercambiar modelos predictivos basado en XML. Proporciona una manera para que las aplicaciones analíticas describan e intercambien modelos predictivos generados por la minería de datos y los algoritmos de Machine Learning. Esto nos permite separar el desarrollo de los modelos, de su ejecución. En el resultado verás una ruta hacia el modelo PMML. Subir y probar el modelo PMML Abre IRIS Portal Gestión -> Menu -> Manage Web Applications -> haz clic en tu namespace -> habilita Analytics -> Save. Ahora, ve a Analytics -> Tools -> PMML Model Tester Deberías ver algo como la imagen que se muestra a continuación: Haz clic en New, escribe un nombre para la clase, sube el archivo PMML (la ruta estaba en el resultado), y haz clic en Import . Pega la siguiente consulta SQL en Custom data source : SELECT PetalLength, PetalWidth, SepalLength, SepalWidth, Species, CASE Species WHEN 'Iris-setosa' THEN 0 WHEN 'Iris-versicolor' THEN 2 ELSE 1 ENDAs predictionFROM DataMining.IrisDataset Usamos CASE aquí porque el agrupamiento KMedias devuelve conjuntos de números (0, 1, 2) y si no reemplazamos las especies por números, las contará de manera incorrecta. Mi resultado es el siguiente: Aquí puedes ver el análisis detallado: Si deseas obtener más información sobre qué son los falsos positivos, los falsos negativos..., consulta Precision and recall. Conclusión Hemos descubierto que el PMML Model Tester es una herramienta muy útil para probar modelos con cualquier tipo de datos. Proporciona análisis detallados, gráficos y la posibilidad de enviar consultas SQL. Esto te permitirá probar tu modelo sin que necesites de alguna otra herramienta adicional. Enlaces Artículo anterior PySpark2PMML JPMML ML Pipelines Documentación sobre Apache Spark documentation
Anuncio
Esther Sanchez · 31 mar, 2020

Ganadores del 1er Concurso para Desarrolladores de InterSystems

¡Hola Desarrolladores! El primer Concurso de Programación con InterSystems IRIS ya ha terminado. ¡Gracias a todos los participantes! Recibimos 20 apps excelentes y ya podemos anunciar los ganadores. Un fuerte aplauso para estos desarrolladores y sus aplicaciones: 🏆 Nominación de los expertos - los ganadores han sido elegidos por un jurado especialmente formado para el concurso: 🥇 1er puesto y $2,000 para el proyecto BlocksExplorer de @Dmitry.Maslennikov 🥈 2º puesto y $1,000 para el proyecto ISC DEV de @Gevorg.Arutiunian9096 🥉 3er puesto y $500 para el proyecto isc-utils de @Henrique.GonçalvesDias 🏆 Nominación de la Comunidad - las aplicaciones que recibieron el mayor número de votos: 🥇 1er puesto y $500 para el proyecto BlocksExplorer de @Dmitry.Maslennikov 🥇 1er puesto y $500 para el proyecto sql-builder de @Henry.HamonPereira ¡Enhorabuena a todos! Y gracias de nuevo a todos los participantes por el esfuerzo e ingenio que habéis puesto en el concurso ¿Y qué más? Esto no acaba aquí, porque ¡hemos preparado una serie de concursos para todo el año! ➡️ Echa un vistazo a los próximos concursos >> Enhorabuena a los ganadores!! Como ya habéis visto vamos a hacer concurso cada mes, espero que os animéis a participar !!! Cualquier duda sobre todo esto preguntad en la comunidad... estamos abiertos 24x7 ;-)
Anuncio
Esther Sanchez · 13 abr, 2020

Nuevo vídeo: InterSystems API Manager y FHIR

¡Hola Comunidad! Os traemos un nuevo vídeo, disponible en el canal de YouTube de la Comunidad de Desarrolladores en inglés, grabado por @Patrick.Jamieson3621 ⏯ InterSystems API Manager y FHIR Patrick Jamieson, Product Manager de InterSystems IRIS for Health, muestra cómo InterSystems API Manager (IAM) puede ser utilizada para ver y probar los recursos FHIR con InterSystems IRIS for Health. Más publicaciones sobre InterSystems IRIS for Health. Presentación de InterSystems API Manager. ¡Esperamos que os resulte útil! 👍🏼
Anuncio
David Reche · 29 abr, 2020

¡Ya puedes votar en el Segundo Concurso para Desarrolladores de InterSystems!

¡Hola Comunidad! El plazo para participar en el Segundo Concurso para Desarrolladores de InterSystems ha terminado y empieza la fase de votación. Hemos recibido 7 aplicaciones - así que ya hay suficientes para elegir la mejor! ¿Cómo puedes votar? Es muy fácil: tienes un voto, y tu voto irá en la Nominación de los Expertos o en la Nominación de la Comunidad. Nominación de Expertos Si eres Product Manager de InterSystems, moderador de la Developer Community o embajador de Global Masters con nivel Experto o superior, tu voto va en esta nominación. Nominación de la Comunidad Si eres un miembro registrado en la Comunidad y al menos has publicado una vez (un artículo, una pregunta o una respuesta que no fuera considerada como spam), tu voto va en esta nominación. Votación La votación se realiza en esta página para el concurso en Open Exchange y tienes que registrarte en Open Exchange - puedes hacerlo con tus credenciales de acceso a la Comunidad. Si en algún momento quieres cambiar el voto, puedes cancelar el que hayas dado y dárselo a otra aplicación - tienes hasta el domingo 3 de mayo para votar. Los participantes en el concurso pueden corregir errores ("bugs") e introducir mejoras en sus aplicaciones durante esta semana. Para no perderte los cambios, suscríbete a los avisos sobre nuevas actualizaciones! Criterios de selección Escoge la aplicación que más te guste. Pero los criterios generales son: Idea y valor - la app hace del mundo un lugar mejor o, al menos, mejora la vida de los desarrolladores; Funcionalidad y usabilidad - cómo lo hace y cuánto hace la aplicación/librería; La "belleza" del código - que tenga un código ObjectScript legible y de calidad. Así que... estás a tiempo... ¡Vota la mejor solución sobre InterSystems IRIS! ¡Tú decides!
Artículo
Bernardo Linarez · 4 ago, 2020

Plataformas de datos de InterSystems y su rendimiento - Parte 2

En la última publicación programamos recogidas de métricas de rendimiento usando pButtons, a lo largo de 24 horas. En esta publicación, analizaremos algunas de esas métricas clave que se están recogiendo y cómo se relacionan con el hardware del sistema subyacente. También empezaremos a explorar la relación entre las métricas de Caché (o de cualquiera de las plataformas de datos de InterSystems) y las métricas del sistema. Veremos también cómo usar estas métricas para entender el pulso diario de tu sistema y diagnosticar problemas de rendimiento. [Aquí puedes ver un listado con otros artículos de esta serie >>](https://community.intersystems.com/post/capacity-planning-and-performance-series-index) ***Editado en octubre de 2016...*** *[Añado un ejemplo de script para extraer datos de pButtons a un archivo .csv](https://community.intersystems.com/post/extracting-pbuttons-data-csv-file-easy-charting)* ***Editado en marzo de 2018...*** Las imágenes habían desaparecido, las volví a añadir. # Grupos alimenticios de hardware ![Grupos alimenticios de hardware](https://community.intersystems.com/sites/default/files/inline/images/foodgroups_0.png "Hardware Food Groups") Como verás a medida que avancemos por esta serie de artículos, los componentes del servidor que afectan al rendimiento pueden categorizarse como: - CPU - Memoria - Almacenamiento de entrada y salida - Red de entrada y salida Si alguno de estos componentes está bajo una carga excesiva, el rendimiento del sistema y la experiencia de usuario seguramente se vean disminuidas. Estos componentes también están todos relacionados entre sí, los cambios en un componente pueden afectar a otro, a veces con consecuencias imprevistas. He visto un caso en el que corregir un cuello de botella de E/S en una matriz de almacenamiento causó que el uso de CPU saltara a 100%. Esto resultó en una experiencia de usuario aún peor, ya que el sistema de pronto quedó libre para hacer más trabajo, pero no tenía los recursos de CPU para atender el aumento en la actividad de usuario y el rendimiento. También veremos como la actividad del sistema Caché tiene un impacto directo sobre los componentes del servidor. Si los recursos de E/S de almacenamiento son limitados, un cambio positivo que se puede hacer es aumentar la memoria del sistema y aumentar la memoria para __búferes globales de Caché__, lo que a su vez puede reducir la __E/S de lectura de almacenamiento del sistema__ (¡pero quizás aumentar la CPU!). Una de las métricas más obvias del sistema para monitorizar frecuentemente o para revisar cuándo reportan problemas los usuarios es el uso de CPU. Debemos mirar *top* o *nmon* en Linux o AIX, o *Windows Performance Monitor*. Como la mayoría de los administradores de sistemas revisan frecuentemente los datos de la CPU, especialmente si se presentan de forma gráfica, un rápido vistazo nos da una buena idea de la salud actual del sistema: qué es normal y qué es un pico repentino de actividad que podría ser anormal o indicativo de un problema. En este artículo revisaremos brevemente las métricas de CPU, y nos centraremos en las métricas de Caché. Comenzaremos por ver los datos de *mgstat* y entenderemos que mirar los datos de forma gráfica nos permite obtener, de un vistazo, una idea de la salud del sistema. # Introducción a mgstat mgstat es uno de los comandos de Caché incluidos y ejecutados en pButtons. mgstat es una gran herramienta para recoger métricas básicas de rendimiento para ayudarte a entender la salud de tus sistemas. Observaremos los datos de mgstat recogidos de un pButtons de 24 horas, pero si quieres capturar datos fuera de mgstat de pButtons, también puede ejecutarse a demanda de forma interactiva o como tarea en segundo plano desde el terminal de Caché. Para ejecutar mgstat a demanda desde el namespace %SYS, el formato general es. do mgstat(sample_time,number_of_samples,"/file_path/file.csv",page_length) Por ejemplo, para ejecutar una tarea en segundo plano para una ejecución de una hora con período de muestreo de 5 segundos y salida a un archivo csv. job ^mgstat(5,720,"/data/mgstat_todays_date_and_time.csv") Por ejemplo, para mostrar en pantalla pero omitiendo algunas columnas, usa la entrada dsp132. Te dejaré como tarea revisar la salida para entender la diferencia. do dsp132^mgstat(5,720,"",60) Puedes encontrar información detallada sobre las columnas de mgstat en la *Guía de monitarización de Caché* en la documentación de InterSystems: [InterSystems online documentation](https://docs.intersystems.com) # Analizando los datos de mgstat pButtons fue diseñado para compilarse en un único archivo HTML que se pueda navegar y empaquetar fácilmente para enviar a los especialistas del Centro de Soporte Internacional (WRC), que podrán diagnosticar problemas de rendimiento. Sin embargo, cuando ejecutas pButtons por tu cuenta y quieres mostrar los datos gráficamente, puedes volver a separarlos en un archivo csv para convertirlo en un gráfico, por ejemplo con Excel, usando un script de línea de comandos o simplemente cortando y pegando. En este artículo, profundizaremos solo en algunas de las métricas de mgstat para mostrar como, incluso con un rápido vistazo, podemos hacernos una buena idea sobre si el sistema está funcionando bien, o si hay problemas reales o potenciales que afectarán a la experiencia del usuario. ## Glorefs y CPU El siguiente gráfico muestra el uso de CPU del servidor de la base de datos en un sitio donde se ejecuta una aplicación hospitalaria con una tasa muy elevada de transacciones. Presta atención al pico de actividad de la mañana, cuando hay muchos pacientes externos, con una caída a la hora del almuerzo y un descenso mantenido durante la tarde y labnoche. En este caso, los datos provienen de Windows Performance Monitor *(_Total)\% Processor Time* - la forma del gráfico encaja con el perfil de un día laborable. No hay picos ni "valles" inusuales, lo que es normal para este sitio. Al hacer el mismo análisis para tu sitio, podrás empezar a tener una base de referencia de la actividad "normal". Un pico muy grande, especialmente si es prolongado, puede ser indicativo de un problema. En una publicación futura me enfocaré en el CPU. ![CPU Time](https://community.intersystems.com/sites/default/files/inline/images/cpu_time.png "CPU Time") Como referencia, este servidor de base de datos es un Dell R720 con dos procesadores E5-2670 de 8 núcleos, el servidor tiene 128 GB de memoria y 48 GB de búferes globales. El siguiente gráfico muestra más datos de mgstat: Glorefs (referencias globales) o accesos a la base de datos para el mismo día que la gráfica de uso de CPU. Glorefs indica la cantidad de trabajo que se hace para procesar la carga de trabajo actual. Si bien las referencias globales consumen tiempo de CPU, no siempre consumen otros recursos del sistema, como lecturas físicas, por la forma en que Caché usa el recurso compartido de búfer de memoria global. ![Global References](https://community.intersystems.com/sites/default/files/inline/images/glorefs_0.png "Global References") Como es típico en aplicaciones de Caché, hay una correlación muy fuerte entre Glorefs y uso de CPU. >Otra forma de analizar estos datos de CPU y gloref es decir que *reducir las glorefs reducirá el uso de CPU*, lo que permitirá el uso de servidores con menos núcleos o escalar más sobre los sistemas existentes. Puede haber formas de reducir las referencias globales si hacemos que la aplicación sea más eficiente. Volveremos a este concepto en otros artículo posteriores. ## PhyRds y Rdratio La forma del gráfico obtenido con los datos de mgstat *PhyRds* (Physical Reads, lecturas físicas) y *Rdratio* (Read ratio, tasa de lectura) también puede aportar información sobre qué esperar del rendimiento del sistema y ayudar con la planificación de capacidad. En futuras publicaciones hablaré con más detalle sobre el almacenamiento de entrada y salida para Caché. _PhyRds_ son simplemente IOPS de lectura física desde el disco a las bases de datos de Caché. Deberías ver los mismos valores reflejados en las métricas del sistema operativo para discos lógicos y físicos. Recuerda al mirar las IOPS del sistema operativo que también podrían estar mostrando IOPS provenientes de aplicaciones que no son de Caché. Dimensionar el almacenamiento y no tener en cuenta las IOPS esperadas es una receta para el desastre. Necesitas conocer las IOPS que tu sistema realiza en horas pico para realizar una adecuada planificación de capacidad. El siguiente gráfico muestra las _PhyRds_ entre la media noche y las 15:30. ![Physical Reads](https://community.intersystems.com/sites/default/files/inline/images/phyrds.png "Physical Reads") Observa el gran salto en lecturas entre las 05:30 y las 10:00. Hay otros picos menores a las 11:00 y justo antes de las 14:00. ¿Qué crees que los causa? ¿Ves este tipo de picos en tus servidores? *Rdratio* es un poco más interesante: es la tasa de lectura de bloques lógicos por lectura de bloque físico. Así que es una tasa de cuántas lecturas son de búferes globales (lógicos) desde la memoria y cuántas son del disco, lo que es órdenes de magnitud más lento. Un *Rdratio* alto es algo bueno. Que caiga cerca de cero por largos períodos no es bueno. ![Read Ratio](https://community.intersystems.com/sites/default/files/inline/images/rdratio.png "Read Ratio") Observa que al mismo tiempo que hay una alta cantidad de lecturas, *Rdratio* baja a cerca de cero. En este sitio me pidieron investigar cuando el departamento de TI comenzó a recibir llamadas de usuarios que se quejaban de que el sistema se volvía lento por largos períodos. Esto había estado sucediendo al parecer de forma aleatorio desde hacía semanas, y me pidieron analizar el sistema. > _**Como pButtons había sido programado para ejecutarse diariamente durante 24 horas, fue relativamente sencillo analizar varias semanas de datos para empezar a ver un patrón de _PhyRds_ elevados y bajos _Rdratio_, correlacionados con las llamadas al soporte técnico.**_ Tras un mayor análisis, pude rastrear la causa hasta un trabajador por turnos nuevo, que estaba ejecutando varios informes metiendo parámetros "erróneos" junto con consultas mal redactadas, sin los índices adecuados, lo que causaba la elevada cantidad de lecturas a la base de datos. Este era el origen de las ralentizaciones aparentemente aleatorias. Como estos informes que abarcan mucho tiempo leen datos hacia los búferes globales, el resultado es que los datos de usuario interactivos se recuperan del almacenamiento físico en vez de hacerse desde la memoria. Esto ejerce una gran carga sobre el almacenamiento para atender las lecturas. Supervisar _PhyRds_ y _Rdratio_ te dará una idea del estado de funcionamiento de tus sistemas y quizás te permita encontrar informes o consultas mal realizadas. Podría existir una razón válida para tener un _PhyRds_ alto -- quizás sea necesario ejecutar un informe a cierta hora. Con los servidores y sistemas operativos modernos de 64 bits y su gran capacidad de memoria física, deberías poder minimizar el _PhyRds_ en tus sistemas de producción. > Si observas un _PhyRds_ alto en tu sistema, hay varias estrategias que puedes evaluar: > - Aumentar la cantidad de búferes (globales) de base de datos (y la memoria del sistema) para mejorar el desempeño. > - Mover fuera del horario de oficina la creación de informes o extractos que requieran un largo tiempo. > - Los informes de solo lectura que requieran mucho tiempo, las tareas por lotes y las extracciones de datos pueden ejecutarse en un servidor de shadowing independiente o mirror asíncrono, lo que minimizará el impacto sobre los usuarios interactivos y quitará parte de la carga sobre los recursos del sistema, como CPU e IOPS. Un _PhyRds_ que normalmente sea bajo es algo bueno, y debe ser nuestro objetivo al dimensionar sistemas. Sin embargo, si tienes un _PhyRds_ bajo y los usuarios se quejan del rendimiento, hay otras cosas que se pueden revisar para asegurarse de que el almacenamiento no sea un cuello de botella - la cantidad de lecturas podría ser baja debido a que el sistema ya no puede dar más servicio. Analizaremos el almacenamiento con mayor profundidad en un artículo posterior. # Resumen En esta publicación hemos visto que mostrar con gráficos las métricas recogidas en pButtons puede darnos una idea del estado del sistema de un vistazo. En publicaciones futuras, analizaré en mayor profundidad la relación entre el sistema y las métricas de Caché, y cómo se pueden usar para planificar para el futuro.
Anuncio
David Reche · 1 jun, 2020

¡Ya puedes votar en el Tercer Concurso para Desarrolladores de InterSystems!

¡Hola Comunidad! El plazo para participar en el Tercer Concurso para Desarrolladores de InterSystems ha terminado y empieza la fase de votación. Hemos recibido 8 aplicaciones - así que ya hay suficientes para elegir la mejor! ¿Cómo puedes votar? Es muy fácil: tienes un voto, y tu voto irá en la Nominación de los Expertos o en la Nominación de la Comunidad. Nominación de Expertos Si eres Product Manager de InterSystems, moderador de la Developer Community o embajador de Global Masters con nivel Specialist o superior, tu voto va en esta nominación. Nominación de la Comunidad Si eres un miembro registrado en la Comunidad y al menos has publicado una vez (un artículo, una pregunta o una respuesta que no fuera considerada como spam), tu voto va en esta nominación. Votación La votación se realiza en esta página para el concurso en Open Exchange y tienes que registrarte en Open Exchange - puedes hacerlo con tus credenciales de acceso a la Comunidad. Si en algún momento quieres cambiar el voto, puedes cancelar el que hayas dado y dárselo a otra aplicación - tienes hasta el domingo 7 de junio para votar. Los participantes en el concurso pueden corregir errores ("bugs") e introducir mejoras en sus aplicaciones durante esta semana. Para no perderte los cambios, suscríbete a los avisos sobre nuevas actualizaciones! Criterios de selección Escoge la aplicación que más te guste. Pero los criterios generales son: Idea y valor - la app hace del mundo un lugar mejor o, al menos, mejora la vida de los desarrolladores; Funcionalidad y usabilidad - cómo lo hace y cuánto hace la aplicación/librería; La "belleza" del código - que tenga un código ObjectScript legible y de calidad. Así que... estás a tiempo... ¡Vota la mejor solución sobre InterSystems IRIS! ¡Tú decides!
Anuncio
Esther Sanchez · 9 jun, 2020

Ganadores del 3er Concurso para Desarrolladores de InterSystems

¡Hola desarrolladores! El tercer concurso de Programación con InterSystems IRIS ya ha terminado. ¡Muchas gracias a todos los participantes! Recibimos 8 apps excelentes y ya podemos anunciar los ganadores. Un fuerte aplauso para estos desarrolladores y sus aplicaciones: 🏆 Nominación de los expertos - los ganadores fueron elegidos por un jurado especialmente formado para el concurso: 🥇 1er puesto y $2,000 para el proyecto iris-python-suite de @Renato.Banzai 🥈 2º puesto y $1,000 para el proyecto WebSocket Client JS with IRIS Native API as Docker Micro Server de @Robert.Cemper1003 🥉 3er puesto y $500 para el proyecto ObjectScript Kernel de @Nikita.Mullin 🏆 Nominación de la Comunidad - las aplicaciones que recibieron el mayor número de votos: 🥇 1er puesto y $1,000 para el proyecto WebSocket Client JS with IRIS Native API as Docker Micro Server de @Robert.Cemper1003 🥈 2º puesto y $500 para el proyecto iris-python-suite de @Renato.Banzai ¡Enhorabuena a todos! Y gracias de nuevo a todos los participantes, por el esfuerzo e ingenio que habéis puesto en el concurso ¿Y qué más? Hay una serie de concursos planificados para todo el año, así que ya podéis inscribiros al siguiente! ➡️ Próximos concursos
Anuncio
Esther Sanchez · 18 jun, 2020

Podcast 3. IntegratedML en InterSystems IRIS

¡Hola Comunidad! Os traemos el tercer episodio de Data Points, el podcast de InterSystems en inglés. En esta ocasión, charlamos con Thomas Dyar, especialista en Machine Learning en InterSystems. Escucha la conversación y descubre todo lo que ofrece IntegratedML. Puedes escuchar el podcast dándole a Play o entrando en la web de Data Points: datapoints.intersystems.com Aquí puedes escuchar los episodios anteriores: Episodio 2. ¿Qué es Kubernetes? Episodio 1. ¿Qué es InterSystems IRIS? Esperamos que os resulte útil
Anuncio
Esther Sanchez · 19 jun, 2020

Nuevo vídeo: InterSystems IRIS y Node.js

¡Hola Comunidad! Os traemos un nuevo vídeo, disponible en el canal de YouTube de la Comunidad de Desarrolladores en inglés: ⏯ InterSystems IRIS y Node.js InterSystems IRIS™ admite una API nativa para Node.js, que ofrece acceso directo a las estructuras de datos de InterSystems IRIS desde las aplicaciones en Node.js. ➡️ Aprende más sobre Node.js en el Área de Formación de nuestra página web. Esperamos que os resulte útil 👍🏼
Anuncio
David Reche · 26 jun, 2020

Cuarto Concurso para Desarrolladores de InterSystems: IA y ML

¡Hola desarrolladores! ¡Ya hemos lanzado el siguiente concurso para crear soluciones de código abierto utilizando InterSystems IRIS Data Platform! ¡Así que damos la bienvenida al cuarto concurso de programación con InterSystems! El tema de este concurso es Inteligencia Artificial y Machine Learning. El concurso estará activo durante tres semanas: del 29 de junio al 19 de julio de 2020. Premios 1. Nominación de los expertos - los ganadores serán elegidos por un jurado especialmente formado para el concurso. Los premios serán: 🥇 1er puesto - $2,000 🥈 2º puesto - $1,000 🥉 3er puesto - $500 2. Nominación de la Comunidad - ganará la aplicación que obtenga el mayor número total de votos. Los premios serán: 🥇 1er puesto - $1,000 🥈 2º puesto - $500 Si dos o más participantes obtienen la misma cantidad de votos, todos serán considerados ganadores y el dinero del premio se repartirá entre todos. ¿Quién puede participar? Cualquier miembro registrado en la Comunidad de Desarrolladores de cualquier país puede participar en el concurso, excepto los empleados de InterSystems. Regístrate aquí en la Comunidad si aún no tienes una cuenta >> Duración del concurso Del 29 de junio al 12 de julio de 2020: Dos semanas para subir las aplicaciones a Open Exchange (durante este período, se podrán modificar los proyectos). Del 13 al 19 de julio de 2020: Una semana para votar. Los ganadores serán anunciados el día 20 de julio de 2020. Tema del concurso 🤖 Inteligencia Artificial y Machine Learning 🤖 Desarrollo de una solución de IA/ML utilizando InterSystems IRIS. Se elegirá la mejor solución de IA/ML construida con InterSystems IRIS. La aplicación puede ser una librería, paquete, herramienta o cualquier solución de IA/ML que utilice InterSystems IRIS. La aplicación debe funcionar en IRIS Community Edition, en IRIS for Health Community Edition o en IRIS Advanced Analytics Community Edition. La aplicación debe ser Open Source y publicarse en GitHub. Y las aplicaciones que implementen unos requisitos tecnológicos adicionales, obtendrán bonus tecnológicos. Aplicaciones de muestra InterSystems IntegragedML Template InterSystems PythonGateway Template Recursos adicionales 1. Cómo enviar una aplicación a un concurso: Publish an application on Open Exchange y Submit an application for the contest 2. Documentación: Using IntegratedML 3. Cursos online: Learn IntegratedML in InterSystems IRIS Preparing Your Data for Machine Learning Predictive Modeling with the Machine Learning Toolkit Judgment Consulta los Criterios del jurado y Reglas sobre los votos. Así que... Ready. Set. Code. ¡Suerte a todos! ❗️ Echa un vistazo a los Términos Oficiales del Concurso.❗️ ¡Hola desarrolladores! Estos son los bonus tecnológicos adicionales para el 4º concurso: 1. Uso de IntegratedML - 2 puntos extra2. Uso de Python Gateway usage - 1 punto extra3. Contenedor Docker - 1 punto extra Todos los detalles sobre los bonus extra en este post. ¡Hola desarrolladores! Tenéis hasta el domingo para participar en el concurso. ¿Os animáis?
Anuncio
David Reche · 14 jul, 2020

¡Ya puedes votar en el Cuarto Concurso para Desarrolladores de InterSystems!

¡Hola Comunidad! El plazo para participar en el Cuarto concurso para desarrolladores de InterSystems ya ha terminado y empieza la fase de votación. Hemos recibido 5 aplicaciones, así que ya puedes elegir la mejor solución habilitada para IA y ML en InterSystems IRIS! ¿Cómo se vota? Es muy fácil: tienes un voto, y tu voto irá en la Nominación de los Expertos o en la Nominación de la Comunidad. Nominación de Expertos Si eres Product Manager de InterSystems, moderador de la Developer Community o embajador de Global Masters con nivel Specialist o superior, tu voto va en esta nominación. Nominación de la Comunidad Si eres un miembro registrado en la Comunidad y al menos has publicado una vez (un artículo, una pregunta o una respuesta que no fuera considerada como spam), tu voto va en esta nominación. Votación La votación se realiza en esta página para el concurso en Open Exchange y tienes que registrarte en Open Exchange — puedes hacerlo con tus credenciales de acceso a la Comunidad. Si en algún momento quieres cambiar el voto, puedes cancelar el que hayas dado y dárselo a otra aplicación - tienes hasta el domingo 19 de julio para votar. Los participantes en el concurso pueden corregir errores ("bugs") e introducir mejoras en sus aplicaciones durante esta semana. Para no perderte los cambios, suscríbete a los avisos sobre nuevas actualizaciones! ❗️Y echa un vistazo a los Criterios del jurado y Reglas sobre los votos❗️
Anuncio
David Reche · 25 ago, 2020

¡Ya puedes votar en el Quinto Concurso para Desarrolladores de InterSystems!

¡Hola desarrolladores! Estamos en la semana de votar en el InterSystems IRIS for Health FHIR Contest! Así que es hora de votar a la mejor solución FHIR construida con InterSystems IRIS for Health. 🔥 Tú decides: VOTA AQUÍ 🔥 ¿Cómo se vota? Es muy fácil: tienes un voto, y tu voto irá en la Nominación de los Expertos o en la Nominación de la Comunidad. Nominación de Expertos Si eres Product Manager de InterSystems, moderador de la Developer Community o embajador de Global Masters con nivel Specialist o superior, tu voto va en esta nominación. Nominación de la Comunidad Si eres un miembro registrado en la Comunidad y al menos has publicado una vez (un artículo, una pregunta o una respuesta que no fuera considerada como spam), tu voto va en esta nominación. Votación La votación se realiza en esta página para el concurso en Open Exchange y tienes que registrarte en Open Exchange — puedes hacerlo con tus credenciales de acceso a la Comunidad. Si en algún momento quieres cambiar el voto, puedes cancelar el que hayas dado y dárselo a otra aplicación - tienes 7días para votar. Los participantes en el concurso pueden corregir errores ("bugs") e introducir mejoras en sus aplicaciones durante esta semana. Para no perderte los cambios, suscríbete a los avisos sobre nuevas actualizaciones! ❗️Y echa un vistazo a los Criterios del jurado y Reglas sobre los votos❗️
Anuncio
David Reche · 15 sep, 2020

Sexto Concurso para Desarrolladores de InterSystems: Full Stack

¡Hola desarrolladores! ¡Ya está listo el nuevo concurso para crear soluciones de código abierto utilizando InterSystems IRIS Data Platform! El tema de este sexto concurso es Full Stack. Estará activo durante tres semanas: del 21 de septiembre al 11 de octubre. Premios 1. Nominación de los expertos - los ganadores serán elegidos por un jurado especialmente formado para el concurso. Los premios serán: 🥇 1er puesto - $2,000 🥈 2º puesto - $1,000 🥉 3er puesto - $500 2. Nominación de la Comunidad - ganará la aplicación que obtenga el mayor número total de votos. Los premios serán: 🥇 1er puesto - $1,000 🥈 2º puesto - $500 Si dos o más participantes obtienen la misma cantidad de votos, todos serán considerados ganadores y el dinero del premio se repartirá entre todos. ¿Quién puede participar? Cualquier miembro registrado en la Comunidad de Desarrolladores de cualquier país puede participar en el concurso, excepto los empleados de InterSystems. Regístrate aquí en la Comunidad si aún no tienes una cuenta >> Duración del concurso Del 21 de september al 4 de octubre: Dos semanas para subir las aplicaciones a Open Exchange (durante este período, se podrán modificar los proyectos). Del 5 al 11 de octubre: Una semana para votar. Los ganadores serán anunciados el lunes 12 de octubre. Tema del concurso 💡 Aplicaciones Full Stack 💡 Desarrollo de una solución Full Stack utilizando InterSystems IRIS. Por "full stack" queremos decir que la solución tiene al menos una aplicación con frontend web o móvil que usa datos almacenados en InterSystems IRIS via REST API, Native API, JDBC, o IRIS Web Gateway. La aplicación debe funcionar en IRIS Community Edition o IRIS for Health Community Edition o IRIS Advanced Analytics Community Edition. La aplicación debe ser Open Source y publicarse en GitHub. Y las aplicaciones que implementen unos requisitos tecnológicos adicionales, obtendrán bonus tecnológicos. Recursos adicionales 1. Plantillas Docker IRIS que puedes tomar como punto de partida para una solución Full Stack: Basic InterSystems IRIS Docker template IRIS REST API template Native API template IntegratedML template IRIS Analytics template 2. Cómo enviar una aplicación al concurso: How to publish an application on Open Exchange How to submit an application for the contest 3. Cursos online: Implementing RESTful Applications 4. Vídeos: REST API design and Development REST API in 5 minutes Data-Driven Web Apps Jurado Consulta los Criterios del jurado y las Reglas sobre los votos. Así que... Ready. Set. Code. ¡Suerte a todos! ❗️ Echa un vistazo a los Términos Oficiales del Concurso.❗️
Anuncio
Esther Sanchez · 16 oct, 2020

Nuevo vídeo: Big Data en InterSystems IRIS

¡Hola Comunidad! Os traemos un nuevo vídeo, disponible en el canal de YouTube de la Comunidad de Desarrolladores en inglés: ⏯ Big Data en InterSystems IRIS Uno de los principales beneficios de usar InterSystems IRIS para crear tus aplicaciones, es su capacidad de recoger y gestionar, de forma eficiente, inmensas cantidades de datos. InterSystems IRIS ofrece diferentes opciones para abordar los retos del "big data", como el conector Spark de InterSystems IRIS, sharding incorporado y herramientas de "machine learning". ➡️ Puedes aprender más sobre "Big Data" es este "curso online". Esperamos que os resulte útil