In a conference call earlier this week, a customer described how they built an iKnow domain with clinical notes and now wanted to filter the contents of that domain based on the patient's diagnosis codes.
I've released a comprehensive, free online training course on the new EWD 3 suite of products that allow the integration of Cache with the burgeoning Node.js world, and allow you to create and run browser-based and mobile applications with all the very latest development technologies from the JavaScript world.
This short article was motivated by a problem of one of my customers. They use Ensemble to integrate many systems, some of them use just plain files.
So they naturally selected File Outbound Adapter to write into target file. Things were running smoothly for years, until recently, when the volume of data being written to the file reached large size of tens of megabytes. The operation took around half an hour to complete, causing timing problems where subsequent operations within the process had to wait, and third party system was not happy to wait so long.
Caché mirroring is a reliable, inexpensive and easy to implement high availability and disaster recovery solution for Caché and Ensemble-based applications. This article provides an overview of recommended procedures for dealing with a variety of planned and unplanned mirror outage scenarios.
I was recently troubleshooting a problem on a Linux (RHEL) instance of 2016.1 at a site. For policy reasons their sysadmins wanted to update the Caché installation so it used network accounts for its cacheusr and iscagent users and groups instead of the locally-created ones that had been set up during original install of Caché.
To do this they ran various commands including chown
Afterwards non-root users couldn't obtain a terminal session using the csession command. Instead they receive this message:
Welcome to NewBie's Corner, a weekly or biweekly post covering basic Caché Material.
MUMPS verses Caché, what's the difference?
MUMPS was developed at Massachusetts General Hospital during the 1960s. Through a series of experiences and companies over the years eventually MUMPS evolved into Caché. Some deny this but the facts are there. You can read through the various websites with Wikipedia and make up your own mind. The closest way to explain this is that Caché is a superset of MUMPS.
Following my previous post, some urged me to get to the point – ok, so I found my "star" journaling globals, the ones that take up the most space – but how do I avoid this? How do I minimize the journal's size?
[DISCLAIMER: Some might still be disappointed after this post as well but wait till the next one... ]
Welcome to NewBie's Corner, a weekly or biweekly post covering basic Caché Material.
Caché and Cache
Caché and Cache are not the same. Caché is a product offered by InterSystems. Whereas Cache refers to memory storage. In computing, a cache /ˈkæʃ/ KASH, is a hardware or software component that stores data so future requests for that data can be served faster; the data stored in a cache might be the result of an earlier computation, or the duplicate of data stored elsewhere.
Welcome to NewBie's Corner, a weekly or biweekly post covering basic Caché Material.
New command
The New command limits a variable's scope or range of use. In theory the New command is simple, in reality the New command is powerful and needs to be respected and understood. In Caché ObjectScript and MUMPS an entire chapter is devoted to it.
Process-private Globals can be used as a data global in storage definition. That way, each process can have its own objects for the class with ppg storage. For example lets define a pool, which can:
NewBie's Corner Session 16 Introduction to New Concepts
Welcome to NewBie's Corner, a weekly or biweekly post covering basic Caché Material.
A number of new concepts are introduced in this session that will be developed more fully in subsequent sessions. It is necessary to at least introduce these concepts here because they are all interrelated.
This is the fourth article in a series on iKnow demo applications, showcasing how the concepts and context provided through iKnow's unique bottom-up approach can be used to implement relevant use cases and help users be more productive in their daily tasks. Previous articles discussed the Knowledge Portal, the Set Analysis Demo and the Dictionary Builder Demo, each of which gradually implemented slightly more advanced interactions with what iKnow gleans from unstructured data.
This week, we'll look into one more demo application, the Rules Builder Demo, in which we'll build on previous work but again climb a step on the level ladder, implementing a more high-level use case than in the previous ones. The idea came from an opportunity where we were asked to help the customer in the finance sector make sense of vast volumes of contract data. They wanted to semi-automate the extraction of logical rules from that text (in fluent legalese!), so they could be fed into other systems. While this was an exciting use case to work on (and more on it in this GS2016 presentation), we've also used it in other cases, for example to extract mentions of ejection fraction from Electronic Health Records.
This is the third article in a series on iKnow demo applications, showcasing how the concepts and context provided through iKnow's unique bottom-up approach can be used to implement relevant use cases and help users be more productive in their daily tasks. Previous articles discussed the Knowledge Portal, a straightforward tool to browse iKnow indexing results, and the Set Analysis Demo, in which you can use the output of iKnow indexing to organize your texts according to their content, such as in patient cohort selection.
This week, we'll look into another demo application, the Dictionary Builder demo, in which we'll marry iKnow's bottom-up insights with top-down expertise, organizing our domain knowledge into dictionaries that are composed of the actual terms used in the data itself. Sticking to a top-down approach only, you'd risk missing out on some terminology used in the field that a domain expert sitting in his office wouldn't be aware of.
In previous articles on iKnow, we described a number of demo applications (iKnow demo apps parts 1, 2, 3, 4 & 5) that are either part of the regular kit or can be easily installed from GitHub. All of those applications assumed you already had your iKnow domain ready, with your data of interest loaded and ready for exploration. In this article, we'll shed more light on how exactly you can get to that stage: how you define and then build a domain.
The release of IBM POWER 8 processors with AIX 7.1 introduced up to 8 SMT threads per processor core (logical or physical). Which SMT level (1, 2, 4, or 8) to use can be confusing and varies based on multiple factors. This article is meant to help with a starting point for your specific application.
Firstly, if running on a version of 2014.x or older, it is advised to use SMT 4 or lower. SMT 8 with those older versions of Cache' has shown a decline in performance and scaling in benchmarking applications.
There are many storage technologies available today from various vendors. The storage technology and configuration best for your application depends on the application access patterns and workloads.
The attached document discusses the various design considerations and recommendations for various technologies. This guide is to help you during discussions with your storage vendor to determine the appropriate storage technologies and products that will work best to meet the performance goals for your applications.
Several years ago, long before Developer Community Portal was launched, I published a series of Caché tricks at one of Czech web sites. In this article, I’m posting translated version of one of them.
Capturing output of someone else’s methods or routines
Suppose you, or someone else created a useful method or routine, that was producing some computation that you’d like to benefit from, but the routine was writing output to process principal device.
You would like to use the data, but you need it not written to a device, but assigned to a variable. And, for any reason, you can’t modify the code. What can you do?