Caché Release Notes and Upgrade Checklist Archive
New and Enhanced Features for Caché 2015.2
[Back] [Next]
Go to:

Important New Features
Support For CORS
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) to %CSP.REST. 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, AVERAGE, 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.
Major Developments
The following major, new features have been added to Caché for this release:
Rapid Application Development
DeepSee Improvements
This release provides additional improvements in DeepSee capabilities, namely:
Presentation Of Dashboards
New controls provided by the dashboard editor include:
Listing Groups
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.
Cube Versions
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.
Support For QR Codes
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 (TOTP) implementation.
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
When using iFind for full-text search, you can now submit composite search strings, using parentheses and Boolean operators (AND, OR, and NOT) to express complex criteria in a single search string. For example, passing the string “(long strings) AND (memory OR disk*) AND NOT {error reference}” to the search_index() method in SQL will yield all records that contain the word sequence “long strings” as well as the word “memory” or a word starting with “disk”, excluding the records that contain the entity “error reference”.
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:
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.
Mirroring Improvements
This release of Caché has improved mirroring support and capability, namely:
Non-Root Installations
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.
Other Items Of Note
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.
$SYSTEM.Version Enhancements
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).