Hay una nueva funcionalidad muy interesante en la recientemente anunciada versión de prueba 2024.1 de InterSystems IRIS - JSON_TABLE. JSON_TABLE forma parte de una familia de funciones introducidas en la versión 2016 del estándar SQL (ISO Standard, publicado a principios de 2017). Permite que valores JSON se mapeen a columnas y se consulten usando SQL. JSON_TABLE puede usarse en la cláusula FROM de algunas sentencias SQL.

La sintaxis de JSON_TABLE es bastante extensa, permitiendo condiciones excepcionales cuando los valores JSON proporcionados no cumplen las expectativas, estructuras anidadas, etc.

La sintaxis básica es bastante sencilla. El primer argumento pasado a JSON_TABLE es el valor JSON que se va a consultar. Puede ser un literal, una referencia a una columna o una llamada a una función. El segundo argumento es una expresión JPL (JSON Path Language), que permite filtrar el valor proporcionado. Después va la cláusula COLUMNS - justo en medio de la llamada a la función. La cláusula COLUMNS se parece mucho a las definiciones de columnas en una sentencia CREATE TABLE pero con un añadido muy necesario - el PATH. PATH es una expresión JPL que se aplica al valor JSON para producir el valor de la columna.

0 0
0 152
La Comunidad de desarrolladores de InterSystems es una comunidad de 23,136 desarrolladores increíbles
¡Somos un lugar donde los programadores de InterSystems IRIS aprenden y comparten, se mantienen actualizados, crecen juntos y se divierten!

¡Hola desarrolladores!

Compartimos con vosotros una nueva funcionalidad muy útil para todos: un Panel de Estadísticas Online para los miembros de la Comunidad 🔥

Ahora podéis consultar las estadísticas de vuestras publicaciones en la Comunidad, agrupadas por semana, mes y siempre. Por ejemplo:

  • número de visualizaciones, likes, comentarios y seguidores
  • gráficos temporales del número de visualizaciones, likes, acciones en vuestras publicaciones y comentarios
  • una tabla con información sobre visualizaciones, comentarios y likes de cada una de vuestras publicaciones

      1 1
      0 132
      Artículo
      · 3 sep, 2019 Lectura de 4 min
      Evaluación de Sharding #2

      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.

      1 0
      0 152
      Artículo
      · 28 nov, 2023 Lectura de 1 min
      Cómo crear Objetos y Matrices JSON mediante SQL

      Esta app evita añadir %JSONAdaptor a cada clase. En su lugar usa las funciones SQL JSON_OBJECT() para crear mis objetos JSON. Con este enfoque, se puede añadir JSON a cualquier clase - incluso a las implementadas - sin ninguna necesidad de cambiar o recompilar.

      La idea inicial surge a raíz de implementar la exportación de relaciones M:N como objetos o matrices JSON.

      La típica estructura de la exportación es

      { M-element : {M-object},
      related-N-elements:
      [
      {N-element},
      {N-element},
      {N-element}
      ]
      }

      Los datos para la demo son un fragmento de los Miembros de la Comunidad de Desarrolladores y sus Insignias conseguidas en GlobalMasters. Los nombres reales están modificados.

      1 0
      0 151
      Hola a todos,
      Acabamos de migrar al nuevo servidor IRIS 2021.2 todas nuestras producciones en un servidor de desarrollo. Es un Windows 2019 Server.
      He instalado Webterminal para tener una buena conexión al servido de forma remota, pero está lanzando el siguiente mensaje de error:
      1 1
      0 150

      Introducción y motivación

      Una unidad de código en ObjectScript (pongamos, un ClassMethod) puede producir una gran variedad de efectos secundarios inesperados cuando interactúa con partes del sistema que están fuera de su propio alcance y no han sido depuradas adecuadamente. En forma de lista parcial, se incluyen:

      0 1
      1 131

      ​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?

      4 0
      0 150

      Hola a todos,

      Cuando estamos diseñando un BP que necesita ser reutilizado, a menudo necesitamos desarrollar un componente con un objeto <call> configurable, donde establecemos el destino de la llamada al objeto.

      @process.TargetConfigName

      Sí, se puede lograr.

      Aquí está el código completo:

      1 2
      0 110
      Artículo
      · 4 feb, 2023 Lectura de 2 min
      Cómo desplegar tu producción de la forma más sencilla

      Por lo general, si desea implementar una solución, debe agregar los elementos, configurar sus tablas de búsqueda y la configuración predeterminada manualmente.
      Está bien si tiene todos los permisos y privilegios para realizar estas acciones. Si desea implementar en el servidor de producción de un cliente y no tiene los permisos, debe indicar en un documento TODOS los pasos que debe realizar el administrador de implementación.

      1 2
      0 110
      Artículo
      · 28 jul, 2022 Lectura de 4 min
      Cómo añadí ObjectScript a Jupyter Notebook

      ObjectScript Kernel Logo

      Jupyter Notebook es un entorno interactivo formado por celdas que permiten ejecutar código en un gran número de lenguajes de marcado y programación diferentes.

      Para hacer esto, Jupyter debe conectarse a un kernel apropiado. No había un Kernel ObjectScript, por lo que decidí crear uno.

      Puedes probarlo aquí.

      Este es un adelanto de los resultados:

      1 0
      0 150

      ¡Hola Comunidad!

      Hemos grabado el webinar que hicimos ayer y lo hemos subido al canal de YouTube de la Comunidad de Desarrolladores en español. Si os perdisteis el webinar o lo queréis volver a ver con más detalle, ya está disponible la grabación!

      Pierre-Yves Duquesnoy mostró toda la potencia de SAM, la herramienta de monitorización de InterSystems IRIS. Presentó la arquitectura de SAM y su instalación; y monitorizó varios sistemas IRIS agrupados en clusters. Además, extendió las métricas existentes para monitorizar métricas de aplicaciones adicionales.... ¡y muchas cosas más! Por eso, si queréis conocer SAM a fondo, ¡no os perdáis el vídeo!

      SAM: Monitorizando InterSystems IRIS con Grafana y Prometheus

      https://www.youtube.com/embed/tA8ISxH2Q9E
      [Este es un enlace integrado, pero no puede ver el contenido integrado directamente en el sitio porque rechazó las cookies que se necesitan para acceder a él. Para ver el contenido integrado, debe aceptar todas las cookies desde la Configuración de cookies]

      0 0
      0 150

      ¡Hola desarrolladores!

      Es un placer anunciar la disponibilidad del Registro de Contenedores de InterSystems. Es un nuevo canal para que los clientes tengan acceso a las versiones finales y de prueba de software, en formato apto para contenedores. Todas las imágenes Community Edition están disponibles en un repositorio público que no necesita autenticación. Las imágenes finales (IRIS, IRIS for Health, Health Connect, System Alerting and Monitoring, InterSystems Cloud Manager) y las utilidades (como pueden ser arbiter, Web Gateway y PasswordHash) requieren un token de autenticación que se genera a partir de las credenciales de la cuenta del WRC.

      0 0
      0 150

      Recientemente me encontré con un HS Caché que no arranca informando que la Collation 30 no está disponible, pero no he encontrado una manera fácil de saber qué colación es 30.

      Ejecutando el siguiente comando devuelve las Collations de la locale actual, pero no de todas ellas

      Set Rset = ##class(%ResultSet).%New("%Library.Collate:CollationList")
      
      d Rset.Execute()
      
      While (Rset.Next()) {zw Rset.Number_": "_Rset.Name}

      Gracias

      0 1
      0 149

      La versión 3.7 de InterSystems Kubernetes Operator (IKO) ya está disponible de manera general (GA). IKO 3.7 añade nuevas funcionalidades significativas, así como la corrección de varios errores. A destacar:

      • Cuando se usa IKO 3.7 con IRIS 2024.1 o superior, el WebGateway puede autenticarse con IRIS a través de TLS mutuo.
      • Soporte para reportar los miembros mirror asíncronos
      • Las solicitudes de recursos ahora se pueden aplicar a los pods de IAM
      • Mejoras en la salida de los recursos de iriscluster

      0 0
      0 149

      Bueno, intentemos recuperarnos de la desastrosa jornada pasada de la Quiniela con una nueva predicción. Esto empieza a ser como la Lotería de Navidad, ¡cómo no vas a jugar si tu compañero de trabajo ha jugado! Imagina que le toca y a ti no...

      A ver que nos dice para Primera División:

      Y para Segunda:

      0 0
      0 149

      He definido una clase con una propiedad de objeto dinámico:

      Mi clase

      El problema que me encuentro es que si la longitud de una propiedad json serializada es de más de 3641144 símbolos, el objeto no puede guardarla, con el siguiente error (MAXSTRING o STRINGSTACK):

      Length: 100 Result: OK
      Length: 3641143 Result: OK
      Length: 3641144 Result: OK
      Length: 3641145 Result: ERROR #5002: ObjectScript error: <MAXSTRING>%GetSerial+1^%Library.DynamicAbstractObject.1
      Length: 7282288 Result: ERROR #5002: ObjectScript error: <STRINGSTACK>%GetSerial+1^%Library.DynamicAbstractObject.1

      ¿Hay algún método alternativo? Necesito almacenar jsons relativamente grandes (10-15 Mb) y las propiedades de objetos dinámicos permiten un acceso muy práctico.

      $ZSTORAGE está establecido en -1.

      0 2
      0 147
      Artículo
      · 4 feb, 2022 Lectura de 3 min
      Interoperabilidad con IRIS y robótica para farmacias

      Me permito adjuntar un documento que describe un producto que he desarrollado llamado NiPaRobotica Pharmacy. Se trata de una interfaz que desarrollé, que acepta solicitudes para dispensar a farmacias y convierte las líneas de pedido en diálogos de dispensación que se envían a los robots de las farmacias.

      0 0
      0 149