#Caché

30 Followers · 4.6K Posts

  

InterSystems Caché is a multi-model DBMS and application server. See more details here.

Documentation.

Question Paras Batheja · Oct 13, 2020

Hi team

We are migrating the Code set of VMS to Unix. 
In this process we are also taking care of all I/O operations of file. 
In VMS, whenever we create a file, it generates a Version # associated with the file. Best part is we have a common library which we use to OPEN/USE/CLOSE/DELETE/RENAME/COPY the file.
Now, when we talk about VMS on cache, if we two processes creates a file "ABC.TXT", for 1st process it will create the version #1 and for second it will create #2.

4
0 580
Article Alexey Maslov · Oct 20, 2020 11m read

As we all well know, InterSystems IRIS has an extensive range of tools for improving the scalability of application systems. In particular, much has been done to facilitate the parallel processing of data, including the use of parallelism in SQL query processing and the most attention-grabbing feature of IRIS: sharding. However, many mature developments that started back in Caché and have been carried over into IRIS actively use the multi-model features of this DBMS, which are understood as allowing the coexistence of different data models within a single database. For example, the HIS qMS database contains both semantic relational (electronic medical records) as well as traditional relational (interaction with PACS) and hierarchical data models (laboratory data and integration with other systems). Most of the listed models are implemented using SP.ARM's qWORD tool (a mini-DBMS that is based on direct access to globals). Therefore, unfortunately, it is not possible to use the new capabilities of parallel query processing for scaling, since these queries do not use IRIS SQL access.

Meanwhile, as the size of the database grows, most of the problems inherent to large relational databases become right for non-relational ones. So, this is a major reason why we are interested in parallel data processing as one of the tools that can be used for scaling.

In this article, I would like to discuss those aspects of parallel data processing that I have been dealing with over the years when solving tasks that are rarely mentioned in discussions of Big Data. I am going to be focusing on the technological transformation of databases, or, rather, technologies for transforming databases.

4
3 987
Article Ward De Backer · Apr 20, 2017 5m read

Developing a Full-Stack JavaScript web app with Caché requires you to bring together the right building blocks. Previously, I outlined the basic steps to install and connect Node.js to Caché and make it's powerful multi-model database capabilites available for use with Node.js. You can use Caché as a NoSQL-, document- (with unique key-level access!), SQL- and object-database with Node.js. When developing JavaScript applications, you'll see how powerful this combination is and makes Caché a perfect fit for Node.js.

In the first part of this article series I will show how to get started with the React framework, one of the most popular frameworks currently taking over front-end development. In the next parts you'll learn how to connect a basic web app to a Caché back-end.

You'll see, it's very easy to get started with this technology - you can even compare the amount of basic knowledge you need to COS because you only need to know a few basic concepts to start!

8
2 5230
Question Alice Shrestha · Nov 27, 2020

Hi,

I seem to be able to execute sqlproc using the convention defined here https://docs.intersystems.com/latest/csp/docbook/Doc.View.cls?KEY=GSQL_… the package/folder is a single level. As, soon I have a nested folder structure I get an error while trying to execute this. 

For instance, 

select id, Utils.Users_getRole(id) roles from users.users

works fine while, 

select id, com.xyz.utils.Users_getRole(id) from users.users
does not work and gives,  "User defined SQL function ... does not exist"

I am on Cache 2017. Is there a workaround to making this work? 

3
0 213
Discussion Evgeny Shvarov · Nov 24, 2020

Hi Developers!

Want to raise security discussion today!

Let's discuss how InterSystems security for applications works. In general, the concept is clear: we have Resources (what to protect), Roles which combine a set of privileges and accesses to Resources and Users which can have this or that Role.

But there is also a concept of Application which also could have a Role.

So you either provide a Role for a User or for an Application.

What do you use in production? What is your strategy and why? Pros, cons?

3
0 279
Question Ahmad Bukhtiar · Nov 19, 2020

I have multiple files with different columns, first 9 values are fixed, so i want to ignore the first value, and next 8 values i want to combine into one value using ^ sign

Current Format

|||||||||||^^||||||^^|||||||||||||||||
|||||||||||^^||||^^|||||||||||||||||||||||
|||||||||||^^|||^^||||||||

Desired Format

^^^^^^|||^^||||||^^|||||||||||||||||
^^^^^^|||^^||||^^|||||||||||||||||||||||
^^^^^^|||^^|||^^||||||||

Reading each line from the file use below code.

#dim line as %String = tInput.ReadLine(, .

11
0 1051
Question Anna Golitsyna · Nov 11, 2020

Hi everybody,

Is there a way to run code on another machine? Of course, all authentication info is known. I know only about RemoteResultSet but that seems to be query specific.

Thanks in advance,
Anna
P.S. The ultimate goal, in case that matters, is to create identical globals on 2 different machines with one run.

22
1 729
Announcement Neerav Verma · Feb 21, 2019

1. Define Persistent Class
Call utility class to fetch json via query.
Class 
Test.JSONFromSQL Extends (%Persistent, %Populate)
{
Property FirstName As %String(POPSPEC = "FirstName()");
Property LastName As %String(POPSPEC = "LastName()");
Property CountOfThings As %Integer(POPSPEC = "Integer()");
ClassMethod OutputJSON() As %Status
{
If '..%ExistsId(1) Do ..Populate(100)
Set sql="select FirstName, LastName, CountOfThings from Atmus_Web_Test.JSONFromSQL"
Quit ##class(JSON.FromSQL).OutputJsonFromSQL(sql)
}
2. Utility Class
Class JSON.FromSQL Extends JSON.Base
{
ClassMethod OutputJsonFromSQL(
sql,

1
0 420
Question Fiona Griffiths · Nov 17, 2020

Hi 

Has anyone found a good terminal emulator replacement for Cache Terminal?  

We want one where the up arrow works to bring back the last command typed (without extraneous characters appearing at the beginning of the line) and be able to run D ^JOURNAL and have it display correctly. 

I tried WebTerminal a couple of years back and but it didn't work properly with the journal.  I've tried RoyalTS and that doesn't do up arrow or the journal correctly even though it's supposed to be emulating a VT400. 

Any suggestions?

thanks

4
0 383
Question Kevin Furze · Nov 15, 2020

version cache for windows, 2017.2.1 build 801_3 - windows 10

I had this system set up for 3+ years now, and background tasks such as converting emails,  have always worked, suddenly it's stopped working and I've tracked it down to any network references.

reading the emails, I look for any attachment files, and save them to a network drive before processing them within a class method,

I've been testing it by sending exactly the same email repeatedly and checking the saving of the attached file in both the background and in the terminal.

11
0 636
Question Mikhail Akselrod · Nov 11, 2020

Hi,

Please, advise how to programmatically set "System Mode" value.

Manually this value can be set via Management Portal > System > Configuration > Memory and Startup > System Mode dropdown.

Value can be programmatically obtained via $SYSTEM.Version.SystemMode() , but  I couldn't  find a programmatical way to set it.

Thank you.

5
0 717
Question James Casazza · Nov 12, 2020

In Cache WIndows environment:

Trying to use the $SYSTEM.SQL.DDLImport to import XML File that has ClassMethods, no SQL Table, but it doesn't appear to be working. I can use this ClassMethod to create SQL Tables. The manual method I have been using is to go into Cache Management Portal, Classes, Import.

I create an XML file first, then run the following to import but get no errors. Any ideas?

 Do $SYSTEM.SQL.DDLImport("Oracle",%ID,dlxml,logfl,0,"",";",2)

Beginning of XML file looks like...

<?xml version="1.

2
0 313
Question Eduardo Raupp · Nov 13, 2020

Hello there,

Someone know which impact would have my database changing the locale and its collationTable? I understand it should works fine, without any drawback.

Could someone else confirm my assumption or tell me what could happen? Has anyone changed something like that? (Not to russian, japanese, chinese, etc..) 

 About queries.. is there any side effect? 

Regards

1
0 294
Question Florian Hansmann · Nov 10, 2020

Hey Intersystems Community,

I have a Problem with the Session Handling in .csp.

I wrote all my Web Services in .csp-Pages and do the work for example in the OnPreHttp Method for to get some data.

After that the Web Service response is in JSON.

I call These Web Services via fetch in my react Single Page application, also Many request parallel. The react App is Rolled out as index.html.
Everything Works Fine with the session Handling via Cookie.

3
0 580
Question Mark O'Reilly · Nov 10, 2020

Hi:

I have noticed a problem in some new code I did on one of our productions. I think it is leading to 2 problems. 

I have a file, lets call it 1111111111_2300.pdf. 

We make the file UNIQUE to avoid an issue. This filename in the working directory gets a session ID Added to it before the .pdf. So lets say it was session ID 9 it would be 1111111111_2300#SID9.pdf in a working directory . 

There are further operations to be done on this document before it is sent. For various errors an email is sent back to service users.

3
0 241
Discussion Andre Larsen Barbosa · Nov 10, 2020

I have already asked a question about migrating an Oracle database to Caché, and I was promptly answered. Now, I have one more question, however it is more conceptual. In general, any tool defends its benefits, and looking at Caché's, among many, there is a lot of talk about speed. The question is, if I already have a database, and at the moment, its performance is not a problem, I would like to know what else could influence the change of this database? Remembering that it is functional and without any apparent problem.

2
1 315
Question Daniel Aguilar · Nov 4, 2020

Good Morning,

I have this question for a long time. When I make an insert by SQL from an external application in the fields of type %String, if they are empty, it writes the character $c(0) in the global.

Is there a way so that if an Insert is received in a field of type% String with null value instead of the $ c (0) it leaves it empty?:

I have the class defined like this:

Class User.MiClase Extends (% Persistent,% XML.Adaptor)

and the property like this:

Property myProperty As% String;

I have tried creating a trigger or setting default values but it doesn't work.

7
0 1275
Discussion Dmitry Maslennikov · Nov 9, 2020

Let's imagine you have to implement a method with a definition

/// Set value to %session.Data
ClassMethod setValue(params...) As %Status
{
}

How it should work

do ..setValue("key1", "val")

is equal to

set %session.Data("key1") = "val"

and 

do ..setValue("key1", "key2", "key3", "key4", "val")

is equal to 

set %session.Data("key1", "key2", "key3", "key4") = "val"

so, quite simple, any amount of arguments, while the latest one is a value, and any previous is an index, should accept at least 2 arguments.

How would you implement this method?

15
0 365
Question Kranthi kiran · Nov 6, 2020

Hi Cache team, I am in the need of listing all the user defined schemas that are present my Cache db and also the user defined tables and views and Columns of those tables and views through Queries. So that I can write some JDBC code to run the queries and fetch the above metadata. Any help is appreciated.

Thanks in Advance,

Kranthi kiran.

2
0 2968
Question Nael Nasereldeen · Apr 16, 2018

Hi,

I need to read a UTF8 encoded text file and translate the content to 8-bit.

Using %File class and $ZCVT(TXT,"I","UTF8") works , but I see that if the content is larger than max string  (32000) and we cut the content

To max string chunks, we can get a <translate> error if we cut it in the "wrong" point..

Is there a better way to do this task?

My code looks like this:

    S file=##class(%File).%New(.LocalFileName)
    D file.Open("R")
    While 'file.
10
0 2280