#Beginner

6 Followers · 533 Posts

Beginner tag unites articles and questions for those who are getting started with InterSystems Data Platform

New
Article Iryna Mykhailova · Jun 17 10m read

In the modern world, data is rarely uniform. Applications often require the structural rigidity of a relational database, the flexibility of a document store, and the performance of a high-speed key-value storage. Luckily, InterSystems IRIS solves this complexity by providing a single, unified engine that natively supports multiple distinct data models: 

  • Hierarchical
  • Key-value
  • Object
  • Document (JSON)
  • Relational
  • Columnar

Crucially, all of these models access exactly the same physical data.

To illustrate this approach, let's examine all these data models using the same conceptual structure: The Record of Patient P101 (John Doe).

0
0 19
New
Article Dmitrij Vladimirov · Jun 16 3m read

Hi folks!
Our community is growing rapidly, and the knowledge base is incredibly vast. Whether you're a newbie, confused, and unsure where to start, or a seasoned IRIS veteran who occasionally forgets a few basic rules (it's normal and happens to everyone!), you'll find this brief overview of IRIS basics and all its wonders useful.
Here I'd like to begin a series of articles dedicated to this topic.
There will be eight main topics in total:

  1. InterSystems ObjectScript
  2. Build with REST APIs
  3. Managing Data Models
  4. Explore Integrated ML
  5. Interoperability & Integrations
  6. Introduction to IRIS HealthShare products
  7. Analytics & Business Intelligence
  8. Deployment & DevOps

Each of them will consist of four parts: Courses, Community articles, Documentation, Applications

This particular part will cover InterSystems ObjectScript. For your convenience, all categories will be hidden under a spoiler.
 

0
1 49
Article Robert Cemper · Oct 21, 2025 2m read

If you start with InterSystems ObjectScript, you will meet the XECUTE command.
And beginners may ask: Where and Why may I need to use this ?

The official documentation has a rich collection of code snippets. No practical case.
Just recently, I met a use case that I'd like to share with you.

The scenario:

When you build an IRIS container with Docker, then, in most cases,
you run the  initialization script  

iris session iris < iris.script

This means you open a terminal session and feed your input line-by-line from the script.
And that's fine and easy if you call methods, or functions, or commands.

2
3 290
Article Sylvain Guilbaud · Oct 6, 2016 2m read

to dismount/mount a database, use Dismount() and Mount() methods in SYS.Database class available in %SYS namespace.
NB: the database ID is its Directory

You'll find  some examples of how to dismount/mount and check if a database is mounted (Mounted=1) or not (Mounted=0), and quickly see all the attributes of a database (via zwrite)


%SYS>set db="/opt/irisapp/data" 

%SYS>w ##class(SYS.Database).%OpenId(db).Mounted                     
1
%SYS>w ##class(SYS.Database).%OpenId(db).Dismount()
1
%SYS>w ##class(SYS.Database).%OpenId(db).Mounted   
0
%SYS>w ##class(SYS.Database).%OpenId(db).Mount()   
1
%SYS>w ##class(SYS.Database).%OpenId(db).Mounted
1
%SYS>zw ##class(SYS.Database).%OpenId(db)
+----------------- general information ---------------
|      oref value: 3
|      class name: SYS.Database
|           %%OID: $lb("/opt/irisapp/data","SYS.Database")
| reference count: 2
+----------------- attribute values ------------------
|       %Concurrency = 0  <Set>
|        BlockFormat = 2
|          BlockSize = 8192  <Set>
|             Blocks = 780288
|       BlocksPerMap = 62464
|   ClusterMountMode = 0  <Set>
|     ClusterMounted = 0  <Set>
|        CurrentMaps = 13
|          Directory = "/opt/irisapp/data/"  <Set>
|     DirectoryBlock = 3
|        EncryptedDB = 0  <Set>
|    EncryptionKeyID = ""
|          Expanding = 0
|      ExpansionSize = 0  <Set>
|               Full = 0
| GlobalJournalState = 3  <Get,Set>
|     InActiveMirror = 0
|  LastExpansionTime = "09/06/2023 20:00:01"
|            MaxSize = 0  <Set>
|MirrorActivationRequired = 0
|    MirrorDBCatchup = 0
| MirrorDBCreatedNew = 0
|       MirrorDBName = ""
|     MirrorDBPaused = 0
|   MirrorFailoverDB = 0
|      MirrorNoWrite = 0
|     MirrorObsolete = 0
|      MirrorSetName = ""
|           Mirrored = 0
|            Mounted = 1
| NewGlobalCollation = 5  <Set>
|NewGlobalGrowthBlock = 50  <Set>
|    NewGlobalIsKeep = 0  <Set>
|NewGlobalPointerBlock = 16  <Set>
|   NumberOfConfigDB = 0
|       ROReasonCode = 0
|       ROReasonText = ""
|           ReCreate = 0
|           ReadOnly = 0  <Set>
|    ReadOnlyMounted = 0
|       Reinitialize = 0
|        RequestSize = 0
|       ResourceName = "%DB_IRISAPP-DATA"
|RunCatchupDBOnCreate = 1
|                SFN = 6
|               Size = 6096  <Set>
|           Skeleton = 0
|           SparseDB = 0
+----------------------------------------------------- 
%SYS>
5
1 3010
Question Aziz Cotrim · May 29

I have several Business Operations that share similar behavior, like building HTTP headers or parsing a specific response format. In C# I would extract this into a service class or a base class. What is the recommended way to do this in IRIS? Should I use a utility class, a common superclass, or is there another pattern the community prefers?

2
0 63
Question Aziz Cotrim · May 29

I have a Business Process that needs to call an external API that may take several seconds to respond. I'm worried that keeping the BP blocked waiting for the response could affect the overall Production throughput. Is there a recommended pattern for handling async calls inside a BPL or custom BP class to avoid this kind of bottleneck?

3
0 64
Article Iryna Mykhailova · May 10 3m read

The recently published tutorial "Introduction to InterSystems Data Studio" inspired me to check out this product. And I think it’s an interesting look at how to manage a data fabric without deep-diving into complex code. It allows you to connect disparate data silos, transform the data through automated pipelines, and load it into a unified environment for analysis. So, I decided to write up an example of how you can use it. Basically, I'll walk you through the tutorial in case you don't have time to do it on your own. Though I would definitely suggest you actually follow the tutorial - it has lots of useful information.

To see how it works, I stepped into the shoes of a system administrator, logging in with the provided credentials to explore the interface. The layout centers on a few core pillars: defining where data comes from, cataloging its structure, and building automated "recipes" to move it into production.

And the very first step is to establish a connection to my data. 

0
0 123
Article Guilherme Tonelotti · Sep 25, 2025 2m read

When we need to integrate Caché/IRIS with other relational databases, one common question arises: “How do I set up the JDBC connection?”.
The official documentation doesn’t always provide a straightforward step-by-step guide, which can be frustrating, especially for beginners.

In this article, I’ll walk you through the entire process of configuring a JDBC connection with MySQL, from downloading the connector to linking tables in Caché/IRIS.

Note: JDBC connections in Caché/IRIS have some limitations, especially regarding caching and the use of ResultSet

2
1 299
Article Eduard Lebedyuk · Mar 24 4m read

Despite the fact that LOCK (docs) is a foundational part of InterSystems IRIS, responsible for concurrency, there is not a lot of discussion on the Developer Community about it. Which is understandable, considering it's stable and fairly low-level command. In this article, I will show a simple example of how to use locks with interoperability.

5
0 174
Article Beatrice Zorzoli · Sep 10, 2025 4m read

I joined InterSystems less than a year ago. Diving into ObjectScript and IRIS was exciting, but also full of small surprises that tripped me up at the beginning. In this article I collect the most common mistakes I, and many new colleagues, make, explain why they happen, and show concrete examples and practical fixes. My goal is to help other new developers save time and avoid the same bumps in the road.

1. Getting lost among system classes and where to start

The issue: ObjectScript/IRIS ships with many system classes and packages (%Library, %SYS, %Persistent, %SQL, etc.).

17
3 590
Announcement Olga Zavrazhnova · Apr 24

Hi Community, 

If you’re new to InterSystems, check out the InterSystems Developer Hub.

Start working with InterSystems technologies — install InterSystems IRIS, connect to it, run something real, or try products directly in a browser-based interactive environment (no setup required).

If you’re wondering where to begin, here’s what you’ll find there:

Developer Onboarding Guide — a structured walkthrough of what InterSystems IRIS is and how to set it up

Quickstarts — short, practical guides to get you from zero to a working setup:

0
2 75
Article Eduard Lebedyuk · Mar 20, 2018 8m read

In this series of articles, I'd like to present and discuss several possible approaches toward software development with InterSystems technologies and GitLab. I will cover such topics as:

  • Git 101
  • Git flow (development process)
  • GitLab installation
  • GitLab Workflow
  • Continuous Delivery
  • GitLab installation and configuration
  • GitLab CI/CD

In the first article, we covered Git basics, why a high-level understanding of Git concepts is important for modern software development, and how Git can be used to develop software.

13
4 3407
Article Kate Lau · Apr 14 3m read

Hi, every one. Again, it's me!!😀😀

Recently I was trying to organize some learning materials for InterSystems IRIS😆, and realized that the resources are actually quite scattered.🤐

So I put together a list here—grouped by categories—for anyone who:

  • is new to InterSystems
  • or wants to go deeper into specific areas

Also adding some of my own experience on what worked (and what didn’t, may be only not work for me🤫🤐).


1. For starters

If you don’t know where to begin, start here:

5
1 146