New in InterSystems IRIS 2022.2
This page describes the new and enhanced features in the 2022.2 release of InterSystems IRIS®, which is a Continuous Delivery (CD) release.
Enhancing Analytics and AI
Columnar Storage (Experimental Feature)
Columnar Storage is a new storage option for IRIS SQL tables that offers an order-of-magnitude faster analytical queries compared to traditional row storage on IRIS. Such queries typically aggregate data over very large tables and typically involve filters and groupings on one or more columns. By laying out the table data by column rather than by row (which works best for transactions on a handful of rows at a time), we can dramatically reduce the amount of I/O required to run such queries, and exploit modern chipset-level optimizations called SIMD (Single Instruction Multiple Data) to further improve performance. This means the net performance gain will also depend on the chipset you run IRIS on.
Columnar Storage is available as an Experimental Feature in release 2022.2. This means it is not supported for production environments. The feature is well tested and InterSystems has observed very significant performance benefits for analytical queries, though mileage will vary depending on the query structure, the actual data, and the platform (chipset) you’re running on. Columnar Storage is currently supported on the x64 platform; before the 2022.2 general availability release, the PowerPC and ARM platforms will be added.
InterSystems is looking for feedback around the performance benefits and potential space saving seen on customers’ real systems — in test environments. Please contact the Worldwide Response Center (WRC) if you’d like to share your experiences or have questions.
For more details, see Choose an SQL Table Storage Layout.
Enhancing Speed, Scale, and Security
The 2022.2 release includes many enhancements to SQL.
SQL Process View
The SQL Process View offers a simple SQL-accessible view and corresponding page in the System Management Portal for consulting all the SQL statements that are currently running on the system. This enables administrators to quickly identify queries that may already have been running for an unusually long time and immediately compare this execution time to historical runtime statistics for that same query based on information captured in the Statement Index.
This change is fully integrated with our System Alerting and Monitoring (SAM)Opens in a new tab product, which leverages the same internal infrastructure to expose the corresponding metrics.
Distributing a Workload Across a Sharded Cluster
This release completes support for the object data model in sharded clusters. Where previously individual object-style access was already supported, such code, inherently procedural, would run on the node where it was invoked. With this release, we're introducing two easy-to-use API methods to invoke procedural code on all the nodes of a sharded cluster.
A Broadcast() method will simply invoke a routine or method once on each data and/or compute node, and can be used to kick off complex ObjectScript code across the cluster, for example to pull new data from a feed and insert it locally. A separate Map() method will invoke a routine or method once for every instance of a sharded class, on the data node where that instance is physically stored. These methods follow the same style of signatures as the Work Queue Manager, which distributes work across processes on a single server.
These two methods (in %SYSTEM.ShardWorkMgrOpens in a new tab) offer developers all the flexibility they need to take advantage of their sharded cluster.
Lateral JOIN Support
This release introduces support for lateral joins, a style of joining tables or subqueries where the different streams being joined together are not evaluated independently. A typical use case for this is when a subquery includes a reference to another table being joined, or a table-valued function taking a column value of another joined table as an input. LATERAL JOIN is a standard ANSI SQL construct.
Better schema management — This release introduces a number of convenience extensions to IRIS DDL such as the CREATE IF NOT EXISTS for tables and views and CREATE OR REPLACE for code artefacts such as procedures and functions. Also, the DDL export utility now covers more class definition features that can be expressed as DDL; see the ExportDDL() method of %SYSTEM.SQL.SchemaOpens in a new tab.
Projection of list collections — List of style collection properties can now be projected to a child table, similar to how Array of collection properties were projected before. This means the physical storage option and SQL projection are now entirely independent.
Performance improvements — When executing SQL queries, the use of JOIN, GROUP BY, ORDER BY and other constructs means a temporary data structure (referred to as "tempfile" internally) is built by one part of the query plan and then read by another part of the query plan. This change bundles a few changes to how internal constructs are used to store these temporary data structures to better leverage available memory and improve overall query performance. These changes take advantage of the new default for process-private memory (now defaulting to unlimited per the new default bbsiz setting).
RedHat Enterprise Linux Updates: The 2022.2 release adds support for RHEL 9 and retires support for RHEL 7.
Ubuntu Updates: The 2022.2 release adds support for Ubuntu 22.04 and retires support for Ubuntu 18.04.