Is there a way to reduce the size of a CACHE.DAT file after a major reduction in global content has been performed?
Thx... Larry.
Globals are multidimensional sparse arrays which are stored in InterSystems Data Platform. Everything in InterSystems Products is stored in Globals: Classes, Tables, Documents, Code.
Is there a way to reduce the size of a CACHE.DAT file after a major reduction in global content has been performed?
Thx... Larry.
Hi.
The message is received a few times a day.
On documentation, this ^ISCSOAP^is log to service SOAP, but why send to cconsole.log?
04/04/18-01:00:00:597 (10608) 2 ^ISCSOAP in Namespace %SYS has been active for 348 day(s).
04/04/18-01:00:00:598 (10608) 2 ^ISCSOAP in Namespace X has been active for 165 day(s).
Help-me.
Tks
Is there something in Cache that is equivalent to partitioning a table in Oracle? I'm trying to break some big tables into groups so that the most frequently accessed data is faster to retrieve.
Here is some information on this concept from Oracle.
https://docs.oracle.com/cd/B28359_01/server.111/b32024/partition.htm
Is there a way to pull a user name and password from the Credentials list that is kept in Ensemble? Right now I have a LDAP user that I have hard coded into my ZAUTHENTICATE, which I would like to get away from. I am not to familiar with settings Global, or calling them at least.
Thanks
Scott
Hi Guys,
I would like to know, how to setup a global structure in Cache classes storage type.
I want to set a global like below in Cache classes using Storage methods.
^A("ID1")="Name\Abb\Map"
^A("ID2")="Name\Abb\Map"
^A("ID3")="Name\Abb\Map"
...If any lead it would be appreciated.
Thanks,
Arun Kumar Durairaj.
Some of our interfaces use globals for lookups, but we are currently looking at putting a groups of (document) interfaces in a separate production with a shared ‘Default Database for Routines’ to reduce code duplication.
Hi, Community!
Consider you move data from one server to another or make a deployment with persistent data. What do you do with index globals?
Is it always better to rebuild them or there are some cases when it worth to take them too?
Hi All, I need the what are all the global having subscript and value contain what I have the value.How to find out?
The Art of Mapping Globals to Classes (3 of 3)
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:
This example is going to show you how to map a classic parent-child structure.
Same disclaimer: If you can’t make heads or tails of your globals after reviewing these articles please contact the WRC and

I have a classname and a property name. I want to know, when I get object value directly from a global, which property corresponds to which position in the $lb structure.
Here's what I got so far:
Class Utils.Storage {
/// write ##class(Utils.Storage).GetPosition()
ClassMethod GetPosition(class As %Dictionary.CacheClassname = "Sample.Address", property As %Dictionary.CacheIdentifier = "Zip") As %Integer
{
set strategy = $$$comClassKeyGet(class, $$$cCLASSstoragestrategy)
set strategyId = class _ "||" _ strategy
&sql(SELECT Name INTO :position
FROM %DictionI have two databases, and both of them have a global ^Data with subscripts going from 1 to 10 000 000.
I want to get one database with global ^Data but with subscripts going from 1 to 20 000 000.
Since each db is around 100 Gb and they are on a different hosts, what's the best way to merge them?
Hi,
I have a class with around 400k lines and 60 columns. Class storage is Cache SQL storage (Mapped from a global).
I want to create multiple indices on certain fields.
I am familiar with two approaches:
1. Create a new map (Index type) on a pointer global.
2. Create a bitmap index
Which approach is more recommended to be used in the case I described? If there are any other approaches, I will be happy to hear.
Thanks :)
Hi, I work on my application and I want to develop rules for extracting values from my database but i've any idea:
I want to order my records by the most recent timestamps values with profile_id and biometric type as keys, after comparing them with my personal program date (when the timestamp > at my fixed date : an alert message is sent to the patient)
you find here the attached screenshots for my to databases. thank's 

Have you noticed that what ever the model and data structure in databases we cannot escape from the fundamental principle of managing data allocation space with references, i.e. pointer based logic, memory addressing ? Isn’t this the fundamental mechanism of programming languages too ? The problem I see with all these modern NoSQL databases, especially graph databases is that they provide a higher level abstraction for the end developer but they hide and lock completely the access to the low level storage and retrieval mechanism including indexes. Even in key-value stores you can
These Globals are usually cleared out as part of the startup/shutdown processes. If your server never reboots how would you clean these out?
Is there a way to omit or skip rollback of some data changes during a transaction rollback? Maybe some sort of "autonomous transaction"?
The issue is with error logging in transaction. For example we may have in nested calls the following structure:
TS
<some code>
<error happens>
TRO 1
<error log to database>
but if this code is in another transaction, and that rolls back we lose error data.
Is there a way to do something like
TS
<some code>
<error happens>
TRO 1
<autonomous transaction start\flag>
<error log to database>
<autonomous transaction finish\flag>
so error log will be stored anyway?
I know
Does anyone know of a utility to compare two databases (i.e., CACHE.DAT files) and find globals/subscripts that are different between them?
If not, I'll write one and share it. ![]()
Hi all,
I need to create a routine to modifiy some values in a global.
My first attempt was:
but if I use a *.bas file (cache basic script), I'm not able to use these commands ($Order and $Next) and I don't know how to translate theses words.
please, could the comunity help m
In a previous exercise, I was able to show the power of Caché.
A medium-designed set of interdependent tables with some GB of data.
URLs cross reference over some million pages resulting in ~3 billion records
Competition was between
Criteria were Speed + Storage consumption
I composed a customized loader fed over a "raw" TCP connection
Mapping the "objects" into the final table by directly writing to Global Storage.,
Phase 1: MySQL failed before reaching the 1st million records by it's
Incredible consumption of memory and disks space
Pase2: Disk consumption of Pos
Hi,
I use cache 5.0 and access cache through OpenVMS.
The disk-space under a particular namespace has grown up in size due to cache.dat. How to recreate cache.dat to bring up more space back on disk?
Hi, colleagues!
Consider you need to put some (less than 1GB) data to an indexed array and do some data manipulations and calculations with it.
Should I prefer global or local for it?
Is there any general rule when local is faster than global and vice-versa?
Have very little XML experience and have been able to manually create output. Have a need to take data that I store in a M global (example: ^TML("HDATA", ) and out put it in CCDA XML format.
Are there any examples of M code using the XMLWriter to accomplish this?
Or can anyone provide some guidance
Any help would be greatly appreciated.
Globals, these magic swords for storing data, have been around for a while, but not many people can use them efficiently or know about this super-weapon altogether.
If you use globals for tasks where they truly shine, the results may be amazing, either in terms of increased performance or dramatic simplification of the overall solution (1, 2).
Globals offer a special way of storing and processing data, which is completely different from SQL tables. They were first introduced in 1966 in the M(UMPS) programming language, which was initially used in medical databases. It is still used in the same way, but has also been adopted by some other industries where reliability and high performance are top priorities: finance, trading, etc.
Later M(UMPS) evolved into Caché ObjectScript (COS). COS was developed by InterSystems as a superset of M. The original language is still accepted by developers' community and alive in a few implementations. There are several signs of activity around the web: MUMPS Google group, Mumps User's group), effective ISO Standard, etc.
Modern global based DBMS supports transactions, journaling, replication, partitioning. It means that they can be used for building modern, reliable and fast distributed systems.
Globals do not restrict you to the boundaries of the relational model. They give you the freedom of creating data structures optimized for particular tasks. For many applications reasonable use of globals can be a real silver bullet offering speeds that developers of conventional relational applications can only dream of.
Globals as a method of storing data can be used in many modern programming languages, both high- and low-level. Therefore, this article will focus specifically on globals and not the language they once came from.
Greetings,
If given a global, how can I discover information on that global? More specifically, how can I discover how many indices it contains? ie: ^G(1,2,3,4,5) How can I discover that there are 5 subscripts within the Global ^G if I did not already know.
Please advise, and thanks in advance for everyone's time.
It is my understanding that when a routine accesses a global it is temporarily stored in global memory. While the global is within global memory, any other routine would be able to readily access the global from memory and not from disk so long as the same node is being utilized.
For example, RoutineB() would be able to access ^Global(1) and ^Global(1,2) since RoutineA() utilized them, but RoutineB() would have to read ^Global(1,7) from disk as it was not utilized by RoutineA().
For my own sanity, I wanted to reach out and obtain clarification from the community as I have recently begun to doubt
Beginning - see Part 1.
A structure, such as an ordered tree, has various special cases. Let's take a look at those that have practical value for working with globals.
Good day, I have this issue. I have global like: ^myglobal(varX) = $LB(var1,var2). I need to delete all globals that have variable var1 in that list same without a need to iterate through all globals and checking their value.
Exact example:
- in database exist following:
^myglobal("Marek") = $LB("code2",1400)
^myglobal("Ondrej") = $LB("code1",12)
^myglobal("Nikita") = $LB("code2",32)
^myglobal("Evgeny") = $LB("code1",76)
^myglobal("Maks") = $LB("code2",99)
^myglobal("Eduard") = $LB("code1",14)
Now! How to delete all globals that have in list in the first place value "code2" please? It doesn't hav
I know the process ID< and I know the global name: ^||testing(index). From the terminal (and therefore, and different process ID), how do I view the contents of ^||testing() ? Not the list of process private globals; the contents of this single PPG.
Thanks,
Laura
I am inserting rows in a table. This table is appearing in all namespace as I did global mapping.
So once I run insert command from a method, it insert the rows. When I run the same insert command from other namespace, it replace the existing data in table.
Insert command is same in all namespace but the data I m inserting is different.
The Art of Mapping Globals to Classes (2 of 3)
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.
This example is going to cram in 4 or 5 different things beyond what was covered in Part 1
All that is left after this is the Parent Child mapping example and then you will be on your way.
Same disclaimer: If you can’t make heads or tails of your globals after reviewing these articles please contact the WRC and we will try to help you out: Support@InterSyste
