Globals are multidimensional sparse arrays which are stored in InterSystems Data Platform. Everything in InterSystems Products is stored in Globals: Classes, Tables, Documents, Code.
Hello,
We noticed from the integrity logs that some of the namespaces in our integration engine are using large amount of space ( ~380GB ) for the global ^EnsHL7.Segment.
We have culling implemented for large globals like MessageHeader and MessageBody.
Is it a standard process to implement culling for ^EnsHL7.Segment global and any idea about what will be the impact of adding culling to this global?
Not sure if it is possible to implement normal culling task on this Global as I noticed this global content is not accessible via SQL functionality in Management page but only via the Globals
As the title suggests, I would like to programmatically export each HL7 schema category as XML, either as a stream object or to a file. How would I go about doing this?
.png)
As the title suggests, I would like to programmatically export each individual data lookup table as XML, either as a stream object or to a file. How would I go about doing this?
I have been trying to track down an issue we are seeing in our TEST environment with Memory usage.
We have Several BP's for years now that take a HL7 message, parse it apart, and make calls to a Custom EnsLib.SQL.OutboundAdapter to have it execute Insert/Select/Update/Delete stored procedures against a MS SQL Database via JDBC connection. We are using Microsoft's JDBC 12.2 driver to do this.
What we are seeing is that IRIS.WorkQueue globals are being defined for these calls but then the IRIS.WorkQueue is not being cleaned up and taking up large amounts of Memory.
I have tried ensuring the c
InterSystems FAQ rubric
Temporary globals stored in the IRISTEMP/CACHETEMP databases are used when a process does not need to store data indefinitely, but requires the powerful performance of globals. The IRISTEMP/CACHETEMP databases are not journaled, so using temporary globals does not create journal files.
The system uses the IRISTEMP/CACHETEMP databases for temporary storage and are available to users for the same.
For more information about temporary globals and the IRISTEMP database, see the following document:
Temporary Globals and the IRISTEMP Database
Hi everyone,
We have successfully configured the Patient Index and are now looking to bring it to upper environments. Our plan is to export the Linkage Definition and import it into higher environments to avoid any manual work. However, I am having trouble finding an export option in the Linkage Definition Designer and locating the globals that hold this setup.
I would greatly appreciate any tips or guidance on how to export/import the Patient Index configuration between environments.
Thank you in advance!
Hi:
We are looking again into DB size. Looking at our Ens.MessageHeaderI GSIZE is 3767107
Looking at the global i'm not sure if we have had an issue in the past so much of the data looks the same, we only have 3 values in the $zwc and although some of the data in the $c between 1 and 18630 it looks very similar as if there was an issue in the past. But if anyone has any examples of their index param this would help to know if our global is abnormal.
Data below
^EnsLib.H.MessageI("Extent",18631) = $zwc(152,8000)/*$bit(1..64000)*/^EnsLib.H.MessageI("Extent",20750) = $zwc(152,8000)/*$bitHi everyone,
I have this global with 2 informations in it: Reference (ex: 1329) and Code (ex: JMMK-G1D6).
^DataTest = 3
^DataTest(1) = $lb("","1329","JMMK-G1D6")
^DataTest(2) = $lb("","1516","AMEV-GVPF")
^DataTest(3) = $lb("","2333","4QC6-4HW3")
With ObjectScript, i want to test if Reference 1516 exists in the global.
In the InterSystems portal, i can do it with SQL (SELECT count(*) FROM DataTest where Reference = '1516'), but can we do the same in ObjectScript without SQL and manipulating the global directly ?
Thanks for help.
Spoilers: Daily Integrity Checks are not only a best practice, but they also provide a snapshot of global sizes and density.
Update 2024-04-16: As of IRIS 2024.1, Many of the below utilities now offer a mode to estimate the size with <2% error on average with orders of magnitude improvements in performance and IO requirements. I continue to urge regular Integrity Checks, however there are situations where more urgent answers are needed.
EstimatedSize^%GSIZE- Runs %GSIZE in estimation mode.##class(%Library.GlobalEdit).GetGlobalSize(directory, globalname, .allocated, .used. 2)- Estima
Hi all,
I have a situation where I am writing to global from different processes - let's call it an Event Queue.
There is then a different process that uses $order to read through the data - the PubSub processing BP.
Sometimes the writing of this global will form part of a transaction that also insert data into other tables, using tstart and tcommit.
If there is some issue, it will roll back, and the entry written to the global will also roll back.
The problem is that the process that reads from this global, picks it up, regardless of the IsolationMode I set for the process, as IsolationMode
In cache studio there are features, dialog boxes, that help map data from a global to class properties.
I have used %CacheSQLStorage quit a bit, or have in the past, to map globals to classes.
I haven't been able to find a similar feature in VisualStudio.
Do I need to upgrade to IRIS to be able to use VisualStudio to map global properties to classes?
Thanks for your time,
Richard
JSON is a lightweight data interchange format for representing and exchanging data between a server and a web application. Its popularity has led to its widespread use in applications based on InterSystems technology, as well as demand for a converter that transforms globals to JSON and back. Therefore, @Evgeny Shvarov suggested developing Global->JSON->Global converter. Implementing such a converter is important to ensure interoperability, simplify data exchange, support web services, and provide a standardized approach to data representation across different software ecosystems. This article, the second in the "Implemented Ideas" series, focuses on several projects created by the legend of InterSystems Developer Community @Robert Cemper that deal with this task:
- GlobalToJSON-Compact
- GlobalToJSON-Efficient
- GlobalToJSON-Academic
- GlobalToJSON-embeddedPython
- GlobalToJSON-ePython-pure
- GlobalToJSON-XLA
- JSONfile-to-Global.
Hello Community,
The process private global doesn't impact the $storage. But, Why the value has decreases at first time of initialization.
IRIS for Windows (x86-64) 2023.3 (Build 254) Wed Nov 8 2023 13:28:10 EST
LEARNING>write "$Storage: ",$storage
$Storage: 2199023141712
LEARNING>set ^||Test="Test"
LEARNING>write "$Storage: ",$storage
$Storage: 2199023136848
LEARNING>write 2199023141712-$storage
4864
Just want to ensure about it.
I am inspecting our DB globals in order to reduce sizes of the worst offenders if possible. When I come to a large global, I am interested which of its nodes are the largest. Hence code below with unexpected different results. Any explanations why are results different?
testpartialGlobalsSize
d partialGlobalsSize(dirName,globalName)
partialGlobalsSize(dir,global)
S sub="",path="C:\Cachesys\mgr\"_dir_"\",searchGlobal="^"_global
S x=##Class(%GlobalEdit).GetGlobalSize(path, global,.Alloc,.Size)
W global,",",Size,! ; Got 725 here
S x=##Class(%GlobalEdit).GetGlobalSizeBySubscript(path,global,global,.
The Art of Mapping Globals to Classes (4 of 3)
The forth in the trilogy, anyone a Hitchhikers Guide to the Galaxy fan?
If you are looking to breathe new life into an old MUMPS application follow these steps to map your globals to classes and expose all that beautiful data to Objects and SQL.
If the above does not sound familiar to you please start at the beginning with the following:
The Art of Mapping Globals to Classes (1 of 3)
The Art of Mapping Globals to Classes (2 of 3)
The Art of Mapping Globals to Classes (3 of 3)
This one is for you Joel! Building on the parent-child relatio

Good morning,
First of all thanks for your help and time.
We find ourselves at a crossroads in our development journey, and we're reaching out to the community for insights and guidance regarding a critical aspect of our data management strategy.
Our current challenge revolves around the persistence of data in Globals, specifically when it comes to purging. The issue at hand is that, despite purging, data stored in Globals under the current %Persistent classes remains intact. To address this, we are contemplating a shift from %Persistent to %SerialObject for each relevant class.
Our primar
Dear Community,
i need help to access to a Global like ^name over ODBC (SQL)
i will visit this global in a loop from a php site. It a access over SQL or ODBC possible?
Thanks for help and marry Christmas
Hi Community,
Play the new video on InterSystems Developers YouTube:
I'm working for an organisation that is running a very old version of InterSystems Cache (5.016) which runs on AIX . The last two times we have re-booted Cache, we have encountered rollbacks. I've been asked two questions. During the rollback it was "How long is it going to take?" and after the system returned, it was "So what caused it?". My answer to both was "I don't know".
I have looked at ^JRNDUMP to see if the before and after journal files would give me an idea to answer the second question, but the last entry of the "before" journal was at 15:15 (the time Cache shutdown) and the first
There are situations when your only access to a server is using a web browser,
and there is just no chance of a Terminal or Console access.
The Online Demo Server is such a case.
So you have WebTerminal. That's fine for ObjectScript and Embedded Python.
But my demo is straight Java. And is interactive.
$ZF(-100...) is some aproach. But it's rater batch-oriented and not interactive.
@Enrico Parisi presented a nice extension to WebTerminal recently.
It's close to my own packageWebCommand that I presented a year ago.
They all act in the same way. It is always a single-shot approach:
Launch a comma
This is the related article to the package in Java Contest.
I decided to present a CRUD++ Global Editor based on IRIS Native API for Java.
++ because it’s a little bit more than just Create, Read, Update, Delete
Visualization of a global is always important to review results immediately.
- For this purpose, I have extended the API with a Tree Viewer that mimics ZWrite and allows also the examination of subtrees.
- A $Query Style Navigator Forward and Reverse operating for easy finding the Global node of interest.
- Finally, an option to ZKill to delete the content of a Global Node without deleti
.png)
I need to develop a tool to help to get what data is being consumed by a certain process, in order to get all data used to build an automated test scenario.
For example, some user process will pull data from ^GLOBAL(1)="dataString", ^GLOBAL(2)="dataString2", ^GLOBAL1(1)="data1String", ^GLOBAL2(4)="data2String4". Amidst all other data on these Globals, I will ignore everything that was not used in the user process, and get the specific keys used on it.
I can see that Caché knows which Globals and such being referenced, and which keys were used, when looking at Process Details, on the Administra

Currently I have a program that is going to be used to compare global nodes between namespaces. Using nested FOR statements I am stepping through global nodes and comparing between the namespaces, if the global values are different I then parse the node comparing each delimited segment.
This is working.
I want to now be able to set what global I am in as a variable to expand on this concept.
Program architecture
1.Initializing program that has user prompts to change starting nodes. This program contains the FOR nests to step through nodes. If the Global value is different then we move
Hello,
I have a global whose structure is multi-level and I am trying through a class and a SQL query to display a table which includes all the values and levels.
^AFO("Site","Ville")="66722,3743"
^AFO("Site","Ville","111BB","OBT")=",MMM,XXX,"
^AFO("Site","Ville","111OW","OBT")=",XXX,MMM,"
^AFO("Site","Ville","AANVRBIBS","zzz") = "1^^1"
^AFO("Site","Ville","AANVRBIBS","zzz","*","dut") = "*afhalen waar gevonden"
^AFO("Site","Ville","AANVRBIBS","zzz","*","eng") = "*Pickup where found"
^AFO("Site","Ville","AANVRBIBS","zzz","*","fre") = "*Lieu où trouvé"
and here is the tabl
Overview
The online documentation contains a reference Defining and Using Class Queries -
Customizing Stored Procedures with ObjectScript directly has been useful to access NoSQL storage and external messaging via integration, to present output in tabular format.
For example: An application that already uses 90% SQL interaction from a front end, can then also extend this access to the other 10% of required platform functionality, via the same SQL access.
The purpose of this article is to explore how to achieve the same effect via Embedded Python methods.
Figure 1: Stored Procedure as a SQ
.png)
|
|
We are trying to create a simple class extending %RegisteredObject that could be used as a singleton. However we are not able to store it in a global to later be retrieved (by the same process but elsewhere in the code).
I resumed my issue in this small code sample :
ClassMethod RunMe()
{
// Create a simple %RegisteredObject
set obj = ##class(%ZEN.proxyObject).%New()
set obj.MyProp = 22
do ##class(%SYSTEM.OBJ).Dump(obj)
// Store it in a global
set ^MyGlobalName = obj
write "Stored : " _ obj,!!
// Retrieve it from the global
#Dim obj2 As %ZEN.proxyObject = ^MyGlobalNam
Inspired by a Question from @Evgeny Shvarov and a Reply from @Ashok Kumar T
I have created a base for Global download as XML file
How to use:
just call the page like http://<your_server>/csp/samples2/dc.Gdown.cls?GBL=global_name
gbl-name without the initial ^ (caret)
The output has a default name <global_name>.XML Your choice is available.
Known Limits:
- you have to install it at your sourcing server
- it is not tested/working across namespaces
- there is no partial download
- error handling is just basic or missing
There is space for personal improvements.
and this is it:
Class dc.Gdown ExteI found the thread that discusses object mapping, in particular mapping a common global among more than one namespace. The example that is given is a simple one when it's ^global(sub1, ^global(sub2, etc. However I'm having trouble getting this to compile/work when the global has a fixed subscript amongst variable ones.
I have this global in namespaces LAB and ARK in the following format:
^CB(1,sub1)=....
^CB(1,sub2)=...
^CB(1,sub3)=...
Here is what I have for this. In it's current state it throws tons of errors:
If I remove the fixed subscript (like it's not even part of the global struct
Hi developers!
Could you please advice what is the easiest way to download globals from a particular server?
I have the access to it, I know which globals I need to download/copy (5-7 globals per name). This is to perform then analysis in IRIS BI.