Caché Release Notes and Upgrade Checklist Archive
New and Enhanced Features for Caché 2013.1
The following new features have been added to Caché for this release:
In addition, many more localized 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
Rapid Application Development
Support for %FIND in WHERE Conditions
With this release we implement a new SQL Condition with the following syntax:
<f> %FIND <x> [ SIZE <const>]
<x> represents a set of values S used as a filter for <f>, or more precisely, the condition is satisfied if <f> is a member of S.
This version of Caché contains the following improvements and extensions to XEP:
It has expanded support for inheritance, references, interfaces, and synchronous indexing.
It supports simpler options for persistence modes.
XEP now has two types: XEP TCP/IP and XEP JNI.
A new @Id annotation for both Java & .NET allows a field to be a database ID.
New mechanisms are available for calling Cache Object Script class methods.
XEP now has support for calling Cache ObjectScript functions, procedures with multiple arguments, and return types.
Performance improvements have been made to array-based data inserts
There is a new parallel storage API to maximize multicore machine capabilities, and further increase performance of inserts.
InterSystems enhanced JDBC-based queries to replace previous custom query functionality.
XEP now has enhancements that reduce the amount of JNI usage across platforms.
This release now includes the Java 7 libraries as well as those for Java 6. In addition, Caché now supports JDBC 4.1.
The version of GLOBALS $query is now supported for both Java and .NET APIs. The Globals ValueList now support decimal values. Globals methods can now call Cache Object Script function, procedures with multiple arguments and return types; and Globals methods can now call Cache Object Script class methods. Support for Visual Basic is now available along with a sample that demonstrates its use.
The RETURN statement is now available for application developers to optimize code execution and readability. Its definition is analogous to the QUIT statement, but it returns from an enclosing subroutine to its caller.
Support Arguments By Reference With Args...
The args... syntax for receiving and passing a variable number of arguments can now be used when passing an argument by reference.
The CSP Gateway now includes support for the HTML 5 specification for Web Socket connections between the web server and an HTML 5 compliant browser. This is available for Apache 2.2 and above, and will be available for IIS 8.0 which is part of Windows Server 2012.
There is a base class that must be extended by the user to handle / create WebSockets called %CSP.WebSocket
Improved FrameStack Handling
<FRAMESTACK> errors can now be handled in error traps. Caché will no longer remove items from the execution stack before calling an error trap.
Third-Party Library Upgrades
In this release, ANTLR has been upgraded to version 3.4; Xerces has been updated to version 3.1.1 on UNIX®.
Studio assist now recognizes the following syntax elements:
Caché Basic: "ClassName".ME.
Caché Basic: "ClassName".ME. MV BASIC: "ClassName"->@ME->
XML Support For List of Streams
A list of streams will be projected correctly to XML. A list of streams may be specified by either using 'list Of' syntax or creating class which is a sublcass of %ListOfObjects
with ELEMENTTYPE specifying a streamclass.
InterSystems made a major enhancements to our public JSON APIs. We now have non-internal function calls that can generate JSON strings from objects, arrays, or SQL statements. These can be subsequently be used to drive a third party client interface that supports JSON as a data transport mechanism. In addition to converting internal structures to JSON, we also support taking JSON sent by the client and converting it into a COS array that can then be consumed within an application.
DeepSee includes a new editor for creating and editing dashboards. The new dashboard editor takes advantage of improved ZEN charts and other new ZEN components. To edit a dashboard, you click on the bar along the left side of the dashboard. The new dashboard editor provides many more options for controlling the display of charts and tables.
The DeepSee User Portal also includes a new "Covers" view option which displays items on the home page as images. The new covers editor allows you to configure the covers (images, text, colors, etc.). Also, the types of items listed on the User Portal home page now include reports and URL links (in addition to dashboards and pivots).
Performance And Scalability
Performance for XML has been improved by improving the handling of XML between Caché and Xerces. Customers may see improvements of up to 50% for %XML.Reader
imports, and up to 25% with SOAP messages.
This release of Caché adds support for Keep-Alive with HTTP 1.1. It enables clients to keep the TCP/IP socket to the web server active so that multiple requests can be made via the same socket rather than constantly closing the socket and opening a new one for each request.
Improved De-Journaling Performance
InterSystems has improved de-journaling performance in this version by further optimizing the pre-fetching algorithms used. De-journaling - used by Shadowing, Mirroring, and journal roll-forward during startup recovery - uses a pre-fetching mechanism to speed up the actual roll forward of sets and kills to the databases. These pre-fetchers are responsible for "reading ahead" blocks into the buffer pool so that the actual updater process can move through very quickly and apply updates, and not be slowed down by waiting for disk reads to finish. This version includes a supplementary algorithm that allows the pre-fetchers to read in additional supporting (link) blocks, further speeding up the overall de-journaling performance.
Improved ROLLBACK Performance
In this release, ROLLBACK performance is roughly 10%-30% faster than in previous versions. This improvement applies to rolling back single (large) transactions, as well as bulk rollback (as would occur during startup recovery).
AES Encryption On Intel Hardware
Intel support AES-NI with their latest processors, which greatly improves encryption and decryption for AES. Early benchmarks have shown significant performance improvements over software execution of AES, which greatly minimizes the performance overhead for encrypted databases with high a high frequency of physical I/O.
Improved Async I/O Performance
This version includes improvements to asynchronous I/O that benefits sequential workloads. The new algorithm detects multiple sequential updates and performs larger coalesced writes, and has been measured to speed up sequential workload-related writes by a factor of 1.6 to 1.8.
Improved Encryption Performance
Previously, a performance feature called "parallel WIJ encryption" was enabled on the AIX platform. This feature has now been enabled on HP-UX, Linux, and Solaris, and can increase the speed of database encryption during write cycles by up to a factor of 4.
MultiCompile On By Default
Caché now uses MultiCompile for class compilation as a default, which will decrease compile time on multi-core processors.
This release removes some older case-specific functions used to optimize multi-column joins in favor of a more generic approach that results in much greater performance across all types of multi-column join statements.
Export/Import TuneTable Statistics
With this release, Caché SQL has added support for exported and importing TuneTable Statistics for a given namespace. This allows one to export TuneTable Data, Selectivity, and ExtentSize details from a given system and reload it without having to ship a class definition and compile it.
Improve Concurrent Update Performance
This version contains an optimization for concurrent updates on very large-scale systems. With this optimization, benchmarks have demonstrated 20% to 30% improvement in overall database access scalability.
Add Indices To A Class With Minimal Downtime
This version introduces a new feature, %Library.IndexBuilder
. This class and its methods permits one or more indexes to be added to an existing class. It is specially designed to address the circumstances where:
the normal %BuildIndices
method will take a long time because of the amount of data involved, and
the application is running on a system where downtime must be kept to a minimum.
Lock Escalation Improvements
This release introduces a new locking mode, E
, whose goals are to automate lock management and provide better management of the lock table. In this mode, when the number of existing locks held by a transaction crosses a threshold, and Caché determines it is safe to do so, the lock will be consolidated
as a higher level lock. The lower level locks will then be released thus freeing space in the lock table.
Reliability, Availability, Maintainability, Monitoring
Support Advanced Format (4K) Disk Drives
This version includes support for native 4KB disk sectors as implemented by Advanced Format (AF) disk drives.
TIFF Output In Zen Reports
Zen Reports now has the capability to create content in TIFF format in addition to our previously released formats such as HTML, XML, PDF, Excel, and so on.
Application Specific Licensing
Some Caché customers wish to license their own applications as a whole or in functional units. Among the challenges they facein doing so is the proper accounting for license units in the face of varying application workflow and abnormal terminations. In addition, some customers desire to link their licenses to the underlying system license provided by InterSystems.
With Application Specific Licensing
, InterSystems provides mechanisms to support the customer need to create, deploy and use application licenses. InterSystems itself uses this form of licensing for its products HealthShare and TrakCare.
Very Large Global Buffer Size
This version includes support for a very large global buffer pool. Previously, the limit was around 107 GB; global buffers can now be configured up to 16 TB.
This version includes support for a very large shared memory heap. Previously, the limit was around 4GB; the shared memory heap can now be configured up to 1 TB.
Eliminate Configuration-Related Restarts
The following Caché configuration options can now be updated dynamically, and do not require the system to be restarted for the new setting to take effect:
MaxServers: Maximum number of connections to ECP servers from this (client) machine.
VMSConsoleTerminal: Name of the console terminal device for logging messages on an OpenVMS system.
netjob: Enable/disable remote job requests.
wijdir: Write Image Journal file directory.
console: Console log file name.
LineRecallBuffer: Total size (in bytes) of all input strings to be stored in the command line/read line buffer.
LineRecallEntries: Maximum number of entries held in the command line/read line recall buffer, subject to the space limitation in the LineRecallBuffer setting.
bbsiz: The maximum memory allocation to permit for a process (in kilobytes).
Autostart Pre-Fetch Daemons As Needed
The block pre-fetching mechanism ($PREFETCHON / $PREFETCHOFF) requires system-wide pre-fetch daemons to be initialized. This version of Caché automatically ensures that the pre-fetch daemons are started as needed, and are stopped when no longer needed, thereby eliminating the need to manually start and stop these daemons.
Improved SQL Performance Tools
With this release Caché contain additional utilities that provide useful functions for analyzing SQL behavior on production data: how many times an Index is used; identify Queries that result in table scans, or that have dependencies on building temporary structures; and identify queries based on Joins and rank how well supported they are by existing indices.
Simpler Disaster Recovery Failover And Failback
In previous releases, Caché Database Mirroring has provided an Asynchronus Mirror configuration for Disaster Recovery purposes. In this release, InterSystems has made it easier to switch over to an Asynchronous DR Mirror node in the event of a disaster (or for testing purposes); and also made it easier to switch back to the main production failover mirror at a later date.
With this release Web Services Reliable Messaging can be used to reliably (identify, track and manage) deliver messages between a source and a destination.
This category is new with this release. It is intended as a way of introducing and providing access to new software capabilities that InterSystems believes will be useful in enhancing the effectiveness of existing and future applications.
The capabilities listed here are ready for use by customers, but they are not yet complete in functionality and design. Customers who take advantage of these capabilities must understand:
InterSystems makes no backward compatibility guarantee with future updates;
Customers may incorporate these capabilities in deployed applications, but must first check with InterSystems to determine best course of action;
Customers who deploy these capabilities in their applications must commit to upgrading to the final released version.
InterSystems stongly encourages those who incorporate these items in their software to provide feedback on their experiences.
Rapid Application Development
iKnow - Customized Summaries
This release of Caché contains the capability to generate custom summaries for sources. Custom summaries are developed for those who desire to tune the content of iKnow generated summaries to their specific needs.
Main parameters for tuning the summaries are the following:
The user can indicate the number of the sentences he wants always to be included in the custom summary, e. g. when summarizing a newspaper article it can be beneficial to always include the first two sentences.
The user can enumerate a list of words and/or sentence parts he wants to use as absolute triggers, this means that sentences containing one of the elements in the list will always be included in the summary or always be excluded from the summary.
The user can give more or less importance to certain words and/or sentence parts. In this case the weight of sentences containing one of the elements in the list will be adapted in accordance with the weight instructions specified by the user. These adaptations will influence the sentence rankings used in the summarization and include or exclude the elements specified by the user if the context of the text allows to do so.
The options for custom summaries can be set by means of an extra parameter in the SourceAPI.GetSummary method.
iKnow Support For Negation
This release of Caché introduces iKnow negation detection. The uniqueness of iKnow negation detection resides in the fact that not only linguistic markers of negation in a sentence such as not
are detected, but that iKnow also marks their semantic scope. In the example:
John has no signs of headache but has a fever.
the linguistic negation marker is no. iKnow negation detection will not only detect the marker, but also detect the semantic span of the negation. This means it will establish that John has no signs of headache
is the negative part of the sentence. The span of the negation is indicated by negation attribute markers that can be accessed and used by the following method calls:
EntityAPI.GetOccurrenceAttributes(): to see whether an occurrence of an entity contains a negation marker or not.
SentenceAPI.GetHighlighted(): to highlight the negative parts in sentences
SentenceAPI.GetAttributes(): to get the positions of negation markers and their scope markers at the level of the sentence
PathAPI.GetAttributes(): to identify the negative parts of pathway
SourceAPI.GetAttributes(): to get all negations for a source.
Beginning in this release InterSystems has included the first support for the refactoring of code in the Studio. Initially, the available options will be:
Additional options will be incorporated in future releases.
In this release, refactoring is only available on Windows systems.