#InterSystems IRIS

19 Followers · 5.6K Posts

InterSystems IRIS is a Complete Data Platform
InterSystems IRIS gives you everything you need to capture, share, understand, and act upon your organization’s most valuable asset – your data.
As a complete platform, InterSystems IRIS eliminates the need to integrate multiple development technologies. Applications require less code, fewer system resources, and less maintenance.

InterSystems Official Pete Greskoff · Feb 27, 2020

Starting in March 2020, Microsoft plans to release a series of security updates that will cause Windows Active Directory (AD) servers to reject unencrypted simple binds. For more details on the changes to Active Directory, see Microsoft’s Security Advisory ADV190023.

Instances of all InterSystems products using LDAP with Windows AD servers for user login can be impacted if they are not already properly configured to use TLS/SSL.The impact is not limited to instances running on Windows versions.

2
1 541
Article Dmitry Maslennikov · Mar 24, 2020 2m read

I hope you already know one of my projects Cache Blocks Explorer. I've recently renamed it to Blocks Explorer.

For the recent contest, I've added a new feature, the ability to generate a static picture of any Cache or IRIS database. Like below. Where unique globals have a unique color. This is how looks like inside 9.5GB database. Where 1 pixel represents one block. By link on image you will get even bigger image, with more detalization.


6
0 445
Article Benjamin De Boe · Mar 25, 2020 5m read

InterSystems IRIS 2020.1 brings a broad set of improved and new capabilities to help build important applications. In addition to the many significant performance improvements accrued through 2019.1 and 2020.1, we are introducing one of our biggest changes in recent SQL history: the Universal Query Cache. This article provides more context on its impact to SQL-based applications at a technical level.

0
0 1058
InterSystems Official Pete Greskoff · Mar 25, 2020

InterSystems has corrected two defects that, in rare circumstances, can result in data integrity corruption after running global compaction, database compaction, or database defragmentation. InterSystems recommends avoiding these utilities until after applying the corrections listed below.

  1. The first defect is caused by database compaction, defragmentation, or global compaction, and can result in database corruption.If you have used one of these utilities on a database, InterSystems recommends that you perform an integrity check on it.This will identify any data corruption that has occurred.
0
0 311
Question Jack Smith · Oct 27, 2019

We have a data transformation where source is object collection (populated from a json file)  and target is EnsLib.EDI.XML.Document.

If source file is large enough, transformation fails and we get <store> error and I quickly found this:

https://docs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.cls?KEY=EBPLR_DTL_foreach which at the bottom in "Avoiding <STORE> Errors with Large Messages" section tells to: 

"As you loop over segments in a message or object collections, they are brought into memory.

1
0 546
Article Gevorg Arutiunian · Jul 6, 2018 6m read

GraphQL is a standard for declaring data structures and methods of data access that serves as a middleware layer between the client and the server. If you’ve never heard about GraphQL, here is a couple of useful online resources: here, here and here.

In this article, I will tell you how you can use GraphQL in your projects based on InterSystems technologies.

24
10 2899
Question Eduard Lebedyuk · Mar 22, 2020

I'm building a container from store/intersystems/iris-community:2019.4.0.383.0 .

I need to add my folder to the LD_LIBRARY_PATH  so that my custom shared library would load at runtime.

How can I do that?

Here's what I tried:

ARG IMAGE=store/intersystems/iris-community:2019.4.0.383.0
FROM ${IMAGE}

USER root

ENV MYDIR /usr/mydir

ENV LD_LIBRARY_PATH $MYDIR:$LD_LIBRARY_PATH

RUN mkdir "$MYDIR"; \
	chown -hR $ISC_PACKAGE_IRISUSER:$ISC_PACKAGE_IRISGROUP $MYDIR; \
	chmod -R 777 $MYDIR; \
	echo "LD_LIBRARY_PATH=\"$MYDIR\"" >> /etc/environment; \
	echo "$MYDIR" >>
2
0 3593
Announcement Evgeny Shvarov · Mar 4, 2020

Hi Developers!

In March we are starting our first InterSystems IRIS Programming Contest! It's a competition in creating open-source solutions using InterSystems IRIS Data Platform.

The topic for the first contest is InterSystems IRIS, Docker and ObjectScript!

The contest will last three weeks: March 9-31, 2020

 Prizes:

There will be money prizes for Experts Nomination - winners will be determined by a specially selected jury:

🥇 1st place - $2,000 

🥈 2nd place - $1,000 

🥉 3rd place - $500

Also, there will be Community Nomination - an application that will receive the most votes in total:

🏆 1st place - $1,000

And we provide winners with high-level badges on Global Masters.

27
4 1952
InterSystems Official Jeff Fried · Dec 10, 2019

The 2019.4 versions of InterSystems IRIS, InterSystems IRIS for Health, and InterSystems IRIS Studio are now Generally Available!

These releases are available from the WRC Software Distribution site, with build number 2019.4.0.383.0.

InterSystems IRIS Data Platform 2019.4  has many new capabilities including:

  • New Automatic Configuration Customization
  • System security, performance, and efficiency enhancements including node tables
  • ICM support for Tencent Cloud
  • List Class available in the Native API for Java and .Net
  • Container and Cloud Deployment improvements
  • SQL enhancements

InterSystems

5
0 576
Article Niyaz Khafizov · Jul 6, 2018 3m read

Hi all. Yesterday I tried to connect Apache Spark, Apache Zeppelin, and InterSystems IRIS. During the process, I experienced troubles connecting it all together and I did not find a useful guide. So, I decided to write my own.

Introduction

What is Apache Spark and Apache Zeppelin and find out how it works together.Apache Spark is an open-source cluster-computing framework.It provides an interface for programming entire clusters with implicit data parallelism and fault tolerance.So, it is very useful when you need to work with Big Data.

1
1 1975
Question Mario Sanchez Macias · Mar 17, 2020
 

Hi, 

I know there are several alternatives, but I would like to find the easiest & simpler ones to store data coming in Json format from post requests and also allowing me to do SQL queries. 

I want to have a property called favouriteColors. I want to store a few colors, and I want to be able to do queries to get top favorite colors, etc... so not handling the list of colors as just a fixed string or fixed object. 

If I want to store this information, I have several alternatives, like %DynamicArray, list of %String o maybe just %String, but I  want to find the best way to store the property in

4
0 637
Question Eduard Lebedyuk · Mar 17, 2020

I have a C string and I need to build a $lb from it.

This code works fine for strings shorter than 254 characters:

char *str = "some string";
int len = strlen(str);
int add = 2;
char *list = malloc(len + add + 1);
char lenChar = len + add;
sprintf(list, "%c\x01%s", lenChar, str);

Thought maybe someone can share the code for longer strings?

1
1 402
Article alex kosinets · Mar 17, 2020 2m read

The client part of the code for this game is on the MS Excel sheet and consists of:

  1. m-commands  for random arranging ships on the playing field  (21 cells)
  2. m-command to enable on-click m-trigger on all 100 cells of the playing field (1), red font
  3. m-trigger (1), red font

The server part of the code (vmx.ro) is installed onсе, it not change depending on the task, is the same for IRIS, CACHE, 16, 8-bit encoding, any applications, games, reports.  The server side creates and maintains ‘virtual excel’ in M.

SEA BATTLE can be tested without your mx-server, just download MX and unzip to any

0
0 607
Announcement Rubens Silva · Mar 16, 2020

Hello all!

As we ObjectScript developers have been experiencing, preparing an environment to run CI related tasks can be quite the chore. This is why I have been thinking about how we could improve this workflow and the result of that effort is IRIS-CI.

See how it works here.

Quickstart

1.Download the image from the Docker Hub registry:

docker pull rfns/iris-ci:0.5.3
  1. Run the container (with the default settings):
docker run --rm --name ci -t -v /path/to/your/app:/opt/ci/app rfns/iris-ci:0.5.3

Notice that volume mounting to /path/to/your/app? This is where the app should be.

0
1 448
Question Nauris Gruduls · Mar 12, 2020

In my Data Transformation, the Target class needs to create a new List of objects (ListOfObj), depending on some conditions of Source class (Source/Target are completely distinct/different classes).

I experimented with Lists of 'primitive' data types (ListOfDT), and I could add new %String items (as an example) to a List of %String property, with "append" action in DT.

Does anyone have an example, or guidance, how to create new Lists of Objects in data transformation?

For example, if I have a 'container' class like this, it works:

Class Json.SalesOrderContainer Extends
2
0 941
Article Alexey Maslov · Mar 16, 2020 5m read

Introduction

Despite the fact that InterSystems has long recommended using external backup tools, many users have opted to use the internal Online Backup facility, which is included in all distributions of InterSystems products (IRIS Data Platform, Caché, etc.). The reasons why are quite obvious:

0
2 543
Question Frank Langel · Mar 15, 2020

    Hi, 

   I  like to validate some use cases and have the following question. I am relatively new to IRIS. Perhaps someone can help:

   1. I have a global m[x,y,z,f] distributed across multiple sharded instances
   2. I know that i can set assign computed SQL expressions to class variables using Objectscript 
   3. Is there a possibility in Globals API to do the same ? Set f = x + y as a computed expression in the global  m[x,y,z,f]  ?

       a.  We would want to use the global API to change f programmatically using code

       b.

5
0 434
Question Frank Langel · Mar 14, 2020

Allow a question from a newbie 

1. Lets assume we have a global (matrix) [X,Y,Z] that is distributed across sharded nodes
2. Matrix size doesnt matter, but lets assume it holds 500 GB for the moment
3. I want to return all rows where f(x,y,z) is true. f() is an arbitrary function, i.e. f = x + 20(y*y) > z

Questions
Q1. Can such a computation (in ObjectScript) be moved and distributed from the client to the different sharded nodes for parallel processing
Q2. Where is that documented (incl. perhaps an example and performance measurements)
 

Thanks a lot
Frank

2
0 357
Question Michel Bruyère · Mar 13, 2020

In one of my class, I use Stream.Read() method of the %Stream.Object class.

  • Method OnRequest(request As Ens.StreamContainer, Output response As %Library.Persistent) As %Status
  • {
  •    SET sc=$$$OK
  •    SET strRequest=request.Stream.Read(,.sc)
  • ​​   $$$TRACE($L(​​strRequest))
  • ....  

The Trace value gives 32,000. But the Read() method of the %Stream.Object class specifies 32,656 by default.

  1. Method Read(ByRef len As %Integer = 32656, ByRef sc As %Status) As %CacheString
  2. {
  3.    Set len=0,i%AtEnd=1,sc=$$$OK
  4.    Quit ""
  5. }

Why ?

Best Regards.

2
0 979
Article Evgeny Shvarov · Mar 13, 2020 2m read

Hi developers!

Suppose you have a Github repository with ObjectScript classes but without a Docker environment.

Recently I published a repository with a set of files that form a universal Docker and VSCode environment to let you either import and run your repository in InterSystems IRIS Community Edition on Docker or turn your repository into Docker and VSCode environment for InterSystems IRIS Community Edition.

So in one sentence:

Unpack these files in your folder and you have the Docker and VSCode environment for your InterSystems IRIS ObjectScript application!

See the details below.

0
1 787
Discussion Eduard Lebedyuk · Mar 6, 2020

Temporary tables are tables available for a current process only (and destroyed when process ends).

What are you approaches to creating temporary tables?

Here's the two I know:
  1. Process-private Globals storage can be used as a data global in storage definition. That way, each process can have its own objects for the class with ppg storage.  Here's how. Here's how 2.
  2. InterSystems TSQL supports #tablename temporary tables. A #tablename temporary table is visible to the current procedure of the current process. It is also visible to any procedure called from the current procedure. #tablename synta
5
0 1254