Article Adel Elsayed · Jan 8, 2024 9m read

InterSystems IRIS Document Database (DocDB) offers a flexible and dynamic approach to managing database data. DocDB embraces the power of JSON (JavaScript Object Notation), providing a schema-less environment for storing and retrieving data.

It is a powerful tool, enables developers to bypass a ton of boiler plate code in interaction with existing applications, serialization, pagination and integration. the seamless flow of DocDB with Interoperability Rest services and operations, gives a big leap in API production and management.

for full DocDB documentation Here. in the context of this article i will showcase a use case in which DocDB will make a perfect fit.

1
0 849
Question Adel Elsayed · Sep 22, 2021

i noticed -by reading .INT files of one class- that some of embedded sql select statements code blocks translates into code that uses lock command.

 

even if i use %nolock in the select, still cursors and arrow referencing notations "->" have the same results.

4
0 338
Question Adel Elsayed · Jul 21, 2021

in order to do analysis on huge data volumes, it is better to take you data to a separate machine for analysis away from the operational machine, so trying to write huge globals or tables into files as is would take a huge space, what could be a solution or best practice ?..in python for instance, there is the pickling option (serializes data to byte string and saves it to a file) to save space, what could be best in object script ?

12
0 1754
Question Adel Elsayed · May 14, 2021

I'm trying to connect to a database (outside Cache) using the examples here:

 

https://docs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.cl…

and https://docs.intersystems.com/latest/csp/docbook/Doc.View.cls?KEY=BGOD_…

and i'm still getting an error on running the Connect method ( Connect(pDSN,usr,pwd,0))

 

"0 "_$lb($lb(6022,"DSN/User Connect",,,,,,,,$lb(,"TRAK",$lb("e^zConnect+15^%Library.SQLGatewayConnection.1^2","d^zConnect+13^%Library.SQLGatewayConnection.1^2","e^^^0"))))/* ERROR #6022: Gateway failed: DSN/User Connect.

1
0 535
Question Adel Elsayed · Jul 13, 2020

Pyodbc supports calling stored procedure  , but if the IRIS Stored Procedure ROWSPEC has a column with datatype specified as %Date or %Time, Pyodbc fails to fetch it and throws this error.

"

pyodbc.Error: (' 2201', '[ 2201] [Cache ODBC][State :  22018 ][Native Code 22005]\r\nERROR #388: Unknown error, code 22005 (22005) (SQLGetData)')

"

on printing the cursor execute description, pyodbc reads the column as <int>.

and if the ROWSPEC datatype specification was removed, it fetches successfully.

i'm using the driver "InterSystems IRIS ODBC35"  2019.2.0.107

3
0 1105
Discussion Adel Elsayed · Feb 8, 2020

I'm looking into finding ways to  fetch data from cache efficiently and work with it with python - specially pandas.

i tried the following but i'm wondering if this is the most efficient way?

to run the stored procedure as %ResultSet inside cache in a classmethod and serialize the data to JSON

and then call that class method from python

 Class User.RegObj Extends %RegisteredObject
{ ClassMethod runAlpha() As %Library.DynamicAbstractObject
{
set QHi=##class(%DynamicAbstractObject).%FromJSON("{}") set rs=##class(%ResultSet).%New("User.Person:alpha")
set pr=rs.Execute("","") set idx=0 
while rs.
5
0 728