#Database Transaction Processing

5 Followers · 17 Posts

Databases and other data stores which treat the integrity of data as paramount often include the ability to handle transactions to maintain the integrity of data. A single transaction consists of one or more independent units of work, each reading and/or writing information to a database or other data store.

Documentation.

Article Sanjib Pandey · Oct 17, 2025 13m read

Overview

This web interface is designed to facilitate the management of Data Lookup Tables via a user-friendly web page. It is particularly useful when your lookup table values are large, dynamic, and frequently changing. By granting end-users controlled access to this web interface (read, write, and delete permissions limited to this page), they can efficiently manage lookup table data according to their needs.

The data managed through this interface can be seamlessly utilized in HealthConnect rules or data transformations, eliminating the need for constant manual monitoring and management of the lookup tables and thereby saving significant time.

Note:
If the standard Data Lookup Table does not meet your mapping requirements, you can create a custom table and adapt this web interface along with its supporting class with minimal modifications. Sample class code is available upon request.

0
1 138
Question Rutvik ISM · Aug 19, 2025

I would like to learn about the binary and document reference FHIR Resources. For the PDF data stored in those resources. But I think Binary Resource for the Document PDF stored in FHIR, so this resource is best for it. So sometimes Large PDF 15-page (~35md) data converts into base64 then data length is ~50 lac charecters length of base64binary data. this data store in Binary Resource on data field https://www.hl7.org/fhir/R4/binary.html follow this url this resource used in my case. so it's support the 50 lac charecter of the base64 length? This resource can be Insert into IRIS?

3
0 117
Question Stefan Cronje · Apr 5, 2024

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 is

6
0 242
Discussion Eduard Lebedyuk · Mar 5, 2024

Work Queue Manager (WQM) is a feature of InterSystems IRIS that enables you to improve performance by distributing work to multiple concurrent processes programmatically. The idea is that you split the work into chunks, and WQM distributes the chunks across worker processes and can provide the info that the work is done.

However, recently, I got an interesting question: there's a large logical transaction composed of ~1,000,000 individual objects and SQL inserts and updates. Some updates are CPU-intensive, so the original idea was to use WQM to split an update into chunks to speed things up. 

But, here's a catch: if one of the individual 1,000,000 changes fails (there's a variety of application-level checks so that it can fail, and that's not even that abnormal a behavior), the entire transaction must be rolled back. That creates a problem: each chunk must report success before committing their individual transactions, and someone must get all these reports and decide if we are committing or not.

Unfortunately, it looks like WQM does not have a bidirectional communication between workers and manager, so I suggested an approach using events:

  1. Start jobs.
  2. Wait for all jobs to report success using $System.Event.WaitMsg().
  3. Send Commit or Rollback using the $System.Event.Signal().
9
2 390
Question Stefan Cronje · Dec 21, 2023

Hi,

The system I am working on processes large numbers of records. Inserts, updates and so forth. There are multiple processes that can potentially work on the same table at the same time. 

It is an almost impossible task to try and time these processes to not run at the same time, due to volumes, SLAs, etc.

Every now and then there are a few locking issues, Not many considering the volumes. It is just a bit of a nuisance as we need to reprocess these records later.

All the selects on the processes run at IsolationMode 0 and the transactions are kept as short as possible.

Is there a way to see

6
0 423
Question Norman W. Freeman · Feb 8, 2023

I use the following code (which is a simplified version of what happen on a server) :

tstartfor I=1:1:N {
  set test = ##class(Test.Test).%New()
  set test.ID = I
  do test.%Save() //create a "Exclusive_e->Delock" lock on ^Test.TestD(..)
}
hang 5tcommit//locks are removed here

Test.Test is a persistent class that inherit from %Persistent :

Class Test.Test Extends %Persistent
{
   Property ID As%Integer [ Required ];
   Index IDKEY On ID [ IdKey ];//...      
}

I think delocks are needed because of the transaction, to maintain data consistency, but why exactly are they needed

6
0 417
Article Piyush Adhikari · Oct 19, 2022 3m read

The capacity of taking numerous records every second while also facilitating real-time queries simultaneously in real time is called Hybrid Transactional Analytical Processing (HTAP). It is also called Transactional analytics or Transanalytics or Translytics and is a very useful element in scenarios where there is constant flow of real time data coming from IIOT sensors or data on fluctuations in stock market, and supporting the need for querying these data sets in real-time or near real-time.

I am sharing my experience on running a demo with test streaming data, having constant input and

4
0 957
Question Ciaran Mooney · Mar 12, 2020

Hi All

When performing an update transaction on  patient data in GUI Apex 5.8 cache2017, we randomly get a ‘Database Connection Lost’ error. Subsequently the application quits and the incomplete transaction is rolled back.
 

We have confined its not a network issue as we can still query the database using CHUI Apex when these events occur.

so any input appreciated.

1
0 374
Question Dmitry Maslennikov · Jan 12, 2020

In one of the projects, when we have ECP with 10 ECP application servers, from time to time we faced the issue when our journals fail to purge, due to open transactions.While we have about 100-150 GB journal files per day, it quite quickly became a big issue, and with mirroring a very big issue.Mostly we just rebooted our ECP Data server, so it searches rollbacks any transactions, but such process is too long, may steal a few hours.I did not find any way, how to get the list of the open transactions from one place from ECP Data Server.We just migrated our Data server to 2018.1.

4
0 1081
Question Stefan Rieger · Feb 2, 2020

will InterSystems fix the Transaction-Handling for  the  .Net Connection Provider?

Nor the  Property IsTransactionAcvtive nor TransactionLevel is set on the  Connection  when using BeginTransaction.

Latest PreView will give me   problem as InterSystems removed removed the TStart() Option to create the Transaction that way which gave back a TransactionObject whith working versions...

2
1 404
Article Sergey Kamenev · Nov 11, 2019 11m read

InterSystems IRIS supports a unique data structure, called globals, for information storage. Essentially, globals are persistent arrays with multi-level indices, having several extra capabilities—transactions, quick traversal of tree structures, and a programming language known as ObjectScript.

I'd note that for the remainder of the article, or at least the code samples, we'll assume you have familiarised yourself with the basics of globals:

Globals Are Magic Swords For Managing Data. Part 1.
Globals - Magic swords for storing data. Trees. Part 2.
Globals - Magic swords for storing data.

7
2 1118
Question Laura Cavanaugh · Nov 7, 2019

Hello community!

I have a question about the %OnSave method of a class.  We have a class that  has two properties that are classes. 

Class A

Class B

Class C

Class A.PropertyB as Class B

ClassA.PropertyC as Class C

Classes B and C also need to point back to Class A - it's just the way it is.  We need to be able to use any one of these classes and get to the others (it's actually even more complicated than this, as Classes B and C also have a PropertyC and PropertyB as well, respectively) :

ClassB.PropertyA as Class A

ClassC.PropertyA as Class A

To see a simpler version of this question, see ** at

3
0 1147
Article Alexander Koblov · Jul 1, 2019 2m read

It’s often useful to make changes inside the current transaction, that would not be rolled-back if transaction is rolled-back. For example to do some logging.

This can be achieved by using global that is mapped to temporary database -- IRISTEMP. All globals that start with ^IRIS.Temp* are mapped to IRISTEMP by default. Problem with such approach is that IRISTEMP is cleaned on InterSystems IRIS restart, so this log is lost.

What else you can do is -- suspend transaction temporarily, do the logging, and then resume the same transaction.

8
1 648
Question Guillaume Rongier · Sep 20, 2018

Hi, We recover a large amount of data from an external database (SQLServer, about 1 million rows in JDBC).
However, we have treatment time issue.
This process takes more than 30 minutes whereas on a "classic" SQL Server Management Studio type request takes less than a minute.

While searching on the internet, I came across this article: http://makejavafaster.blogspot.com/2015/06/jdbc-fetch-size-performance.html
It explains how in Java, we can tweak the FetchSize parameter of the JDBC driver to optimize this kind of process.

Is there a way to access this JDBC parameter through the EnsLib.SQL.Outbound

7
1 1589
Question Scott Beeson · Jun 21, 2016

If I wanted to build a web-based dashboard that monitored various HIE transactions where would I start?

Examples of measures would be Provide & Registers by Facility, Patient Views by facility or even PHR related data.

I have a successful POC that uses nodejs, html and SQL but I think it makes more sense to use Intersystems technology all the way around, I just don't know where to begin.

CSP for the web piece I assume?  How would I access the data, for instance all P&R requests on the BUS?  Any other tips or starting points?  Maybe examples of a similar project?

We do not have a DeepSee license

10
0 721