Caché Release Notes and Upgrade Checklist Archive
New and Enhanced Features for Caché 2015.2
This version introduces support for handling CORS (Cross-Origin Resource Sharing) requests via REST. Caché now supports accepting the OPTIONS header and adds a new callback method, HandleCORSRequest(pUrl)
. With this, the user can set the required access control headers to achieve the desired CORS compliance. The default implementation does nothing, but example code is provided in the class documentation for %CSP.REST HandleCORSRequest()
. There is also an additional parameter to control whether or not CORS is allowed for a RESTful application or even for a specific URL.
Additional Parallel Query Support
The processing of the %PARALLEL
keyword has been enhanced to support, where possible, parallel execution of queries partitioned over non-integer fields and their associated indices. Previously, only integer fields were supported. SQL processing will also now intelligently partition the range of the field based on the actual distribution of data in the table or index for both integer and non-integer fields.
Bitslice Index Improvements
The SQL aggregates SUM
, and COUNT
now exploit a bitslice index on the aggregated field in the presence of a WHERE clause. This can result in substantial performance gains when aggregating over large subsets of the rows in a table.
An Additional Two-Factor Authentication Option
Caché now provides an enhancement to the existing SMS-based two-factor authentication mechanism. This new approach uses the time-based, one-time, password algorithm (TOTP) defined by RFC 6238
. An important advantage of this two-factor authentication option is that the user does not need a network connection so it allows many more applications to take advantage of this additional security layer. Additional details are available here
The following major, new features have been added to Caché for this release:
Rapid Application Development
This release provides additional improvements in DeepSee capabilities, namely:
Presentation Of Dashboards
New controls provided by the dashboard editor include:
Title bar: color, opacity, hide/show
Tool bar: color, opacity, hide/show
Widget borders: hide/show
Dashboard background: image, color, opacity
Prior to this release, listings had to be defined as part of a cube. If you wanted to allow someone to create new listings, you had to give them access to edit the cube definition, which would allow them to change anything in the cube definition.
In this release, you can allow someone to create new listings without giving them access to cube definitions. Listings can now be part of a new entity called a Listing Group. A Listing Group is a class that contains 1 or more listings. Listing Groups can be edited with Studio or the new Listing Group Manager that is available in the DeepSee Tools menu. Access to the Listing Group Manager is controlled via security resources. Details on Listing Groups
are available in the DeepSee material.
This release provides a new feature that allows you to upgrade a cube with minimal impact on current users.
Changes to a cube definition require the cube to be rebuilt. Prior to this release, the first step of rebuilding a cube was to always delete the existing cube. So while the cube was rebuilding, queries on the cube were prohibited. When the rebuild completed, you could again query the cube. Depending on the size of the cube and when the rebuild happened, the cube may have been unavailable longer than is acceptable to users.
This release provides a new optional feature for defining cube versions. With cube versions, the existing cube is not deleted at the start of the rebuild. While the new (pending) version of a cube is being built, the current (older) version of the cube is still available for queries. After the new version of the cube finishes building, you run a method that makes the pending cube the current cube and deletes the older cube.
QR (Quick Response) codes have become a popular mechanism for presenting information in an easily-consumed format. They are used for URLs, business cards, setup information, and other short segments. With this release of Caché, application developers can now use the methods of the %SYS.QRCode
class to generate their own QR codes. InterSystems itself uses QR codes in the new two-factor, time-based, one-time password
New iKnow Language Models For iKnow: Russian And Ukrainian
iKnow now includes language models for Russian and Ukrainian, adding to the languages already supported: English, Spanish, Portuguese, German, Dutch, and French. It now also supports stemming, allowing you to work with stems as a level of abstraction above entities in languages with a full case system like Russian and Ukrainian.
Support For Composite Search Strings In iFind
Other Improvements In iKnow And iFind
In this release, iKnow and iFind also include many other improvements and simplifications for working with unstructured data, including the following new features:
iFind now supports stemming and decompounding for all index levels.
You can now define and query iFind Basic indices for any language that uses spaces as word separators if no iKnow language model is specified or available.
Both iKnow and iFind leverage an improved algorithm for calculating the semantic dominance of entities in a record and will consume less disk space for storing these metrics.
You can now customize attribute detection (negation, sentiment) by supplying marker terms the engine should include when identifying the presence and scope of these semantic attributes.
Support For Islamic Calendar Dates
In this release, Caché adds support for dates expressed according to the Islamic calendar
(Hijri). Dates may be specified in accord with either the calculated or observational systems; both are supported. Users can determine and store the observational result to determine the length of a given month. In addition to providing this feature to application developers, DeepSee
also takes advantage of this new capability.
Performance and Scalability
Database Caching Internal Optimizations
This release expands the scalability of database references on large multi-core systems by substantially reducing runtime contention in the management of the database cache.
Dynamic Allocation Of Global Vectors
This release substantially improves the performance of global references for processes that repeatedly access more than 32 different globals. The performance improvement comes from an increase in the number of global vectors that a process allocates. Each global vector contains information about a different global that the process accessed recently, and this information is used to optimize its next reference to that global. Previously, processes were limited to 32 global vectors. Now, processes allocate global vectors dynamically as needed, up to a maximum of 1000. For more detail, see the Upgrade Checklist
ECP Concurrency Improvements
This release expands the scalability of large multi-core ECP data servers. Changes made to the server reduce the runtime contention associated with managing the database cache on behalf of ECP clients.
Use Power 8 Encryption Hardware
When running on the IBM AIX® platform, Caché checks for the presence of encryption hardware. If present, it performs encryption using the new Power 8 In-Core option to maximum performance when processing encrypted data. If the hardware is not present, Caché performs the encryption in software as it does on prior releases.
Reliability, Availability, Maintainability, Monitoring
Fast Verification Of Recent Database Blocks After Host Failure
This release introduces additional verification within Caché startup on Windows and UNIX® to check for physical database inconsistencies on recovery after a host failure. The verification runs for a limited amount of time so as not to impact availability; it does not change normal operating procedures. If inconsistencies are detected, it is typically evidence of a storage device problem, and startup waits for user intervention in order to protect the system from running in an uncertain state. See WIJ Block Comparison
in the Caché Data Integrity Guide
for more information.
This release of Caché has improved mirroring support and capability, namely:
The time for automatic mirror failover to complete has been improved. The improvements are most substantial in the event where the primary host crashes or becomes network-isolated. When that happens, the failover time is reduced by approximately 15 seconds. In many environments, this represents the largest portion of the failover time and reduces the time from detection of an outage to the databases being available on the new primary to several seconds.
Simpler authorization of new members when using SSL/TLS
Async Mirror Members using SSL no longer require manually entering the Distinguished Name to authorize their membership. Instead, they are now added to the mirror in the same way that a second failover member is added: the administrator approves the new async member from the primary.
Starting with this release, the installer for Caché and Ensemble can be run without requiring root or administrator privileges. In this case, the installation belongs to the installing user who has full access to and control of the instance. The registry entries for this instance also belong to this user account only; it is not shared with other users or the root user. Please refer to the Installation Guide
for more detailed instructions and information.
In addition, many more lesser improvements and corrections are also included. In particular, if you are upgrading an existing installation, please review the detailed list of changes in the Upgrade Checklist
Support For Node.js Version v0.12
This version of Caché now supports Node.js version v0.12.
This release enhances the $SYSTEM.Version class to provide additional information on the InterSystems components running on the instance in addition to Caché or Ensemble. In the HealthShare case, applications can now see which HealthShare components are installed and what the version of each component is. At this time, Caché and Ensemble do not have components and do not provide this additional information.
Support TLS Version 1.1 And 1.2
The OpenSSL libraries that ship with Caché have been updated to support TLS version 1.1 and 1.2. This enables customers to control access to earlier versions, which is particularly important when used with other external standards such as the Payment Card Industry Data Security Standard (PCI DSS).