One of the key challenges facing Java developers is that their
object-oriented applications use data stored in relational databases. The
result: time- and cost-intensive mapping between the two paradigms.
InterSystems' Corporation develops and markets a post-relational database
management system called Caché that's designed to address this challenge by
eliminating the impedance mismatch between objects and tables.
We set out to test the capabilities of this database software from a
Java developer's perspective. Working with the latest release of the
software, Caché 5, we found the results impressive.
Caché's unique combination of objects and SQL provides a very
interesting development framework for object-oriented programmers that goes
far beyond what pure relational or pure object-oriented databases provide.
Besides eliminating the impedance mismatch between objects and tables,
Caché's unified data architecture allows rapid application development (RAD)
of complex systems and applications. With Caché 5, InterSystems delivers a
powerful, high-performance, massively scalable database system that supports
a plethora of standard protocols, programming languages, and middleware
technologies.
Ready, Set, Go!
For our evaluation, we used the Windows and Linux versions of Caché. In
both cases, we used the single-user license that can be freely downloaded
from InterSystems' Web site. The installation process took only a few
minutes and not even the Windows system had to be restarted. All other tools
and technologies are installed along with the database system, and the Web
server (Internet Information Server or Apache) is reconfigured to
incorporate Caché's Web gateway.
After the installation, we started the Caché Studio (see Figure 1), the
development environment used for editing the classes stored in Caché, and
immediately began to create some classes. Using the integrated wizards, you
can easily create classes with all the features available in Caché.
Programming Caché's internal language, ObjectScript, is very easy,
especially if you are used to coding in Java or JavaScript. If Visual Basic
is your favorite programming language, you can also use Caché Basic, a close
relative to Visual Basic.
What's Behind the Scenes?
The heart of Caché is its multidimensional data engine with a robust
storage system that provides outstanding transactional performance and is
capable of serving very large data volumes. Equipped with transactional
bitmap indices, queries are evaluated in fractions of a second without
sacrificing update and insert performance.
In addition, the multidimensional data model of Caché avoids
time-consuming mapping operations between objects and relations because data
is natively stored in Caché's multidimensional storage. The Unified Data
Architecture (UDA) provides access to the stored data and delivers the
necessary metadata information to the relational or object-oriented client.
In general, there's no difference if the data is accessed in a relational
manner or through objects.
Caché and Java
Our primary focus was on testing the Java features provided by Caché.
With three different ways of connecting to Java, Caché provides optimal
support for Java developers and programmers. Data stored within Caché can be
accessed with SQL via JDBC, and Caché classes can be projected either as
Java classes or as Enterprise JavaBeans. Java developers directly gain data
persistence without a lot of tedious coding.
The JDBC driver is installed along with the database and is fully
compliant with the JDBC standard. To access a Caché class in an
object-oriented manner, all we needed to do was specify that it should be
projected to Java. This ³projection² then automatically generated Java
binding classes that could easily be incorporated into Java applications.
The great advantage of projections is that the binding classes are
automatically generated every time a class is modified and recompiled. So
the programmer is relieved of the cumbersome and error-prone process of
keeping the database schema and the application bindings up-to-date.
For J2EE application servers, we only had to specify an EJB projection
and Caché created entity beans with either bean-managed persistence (BMP) or
container-managed persistence (CMP). In contrast to the simple Java
projection that creates a single Java class, the EJB projection generates
all necessary classes for an EJB entity bean, a deployment descriptor, a
deployment command file, and even a little servlet for testing the created
bean. We tested Caché's EJB support with a standard installation of JBoss
3.0 and did not experience any difficulties. In addition to JBoss, Caché
also directly supports the WebLogic and the Pramati application servers and
automatically creates all necessary configuration files for the specific
server. Other J2EE-compliant application servers should also work with Caché
without any problems.
Summary
We were impressed by Caché's performance, features, and ease of use. We
were both very satisfied with our test results and plan to take an even
closer look at Caché and its technologies. Note that a more detailed review
of Caché, including several code examples, may be found on our Web site
(www.synerva.com). As with any software product, there are some trade-offs. In this
case, the main one is the learning curve that developers who are only
familiar with relational database technology must overcome in order to take
full advantage of Caché. InterSystems has done everything they can to ease
the transition by providing a development environment that has a familiar
look-and-feel and surprisingly complete and usable documentation, but the
curve still exists. Also, there are application areas such as data
warehousing where market gorillas with traditional relational technology
will continue to dominate for the foreseeable future. Caché is worth a very
close look.
InterSystems Corporation
One Memorial Drive
Cambridge, MA 02142 USA
Web: www.intersystems.com
Phone: 617-621-0600
E-mail: webmaster@intersys.com
Specifications
Platforms: Windows 95/98/ME, Windows 2000 Pro/2000 Server/2000 Adv. Server, Windows XP Home/Pro, Mac OS X, Linux, HP/UX, Solaris, IBM AIX, Tru64, OpenVMS
Pricing: $200 in a single-user version and starting at $1,000 for a multi-user configuration
Test Environment
Notebook ASUS L3800 with Mobile Intel Pentium P4 processor, 40GB disk, 1GB
RAM
Operating Systems: Windows 2000 Pro with Service Pack 3/SuSE Linux 8.1
Snapshot
Target Audience: Java programmers, database developers
Level: All levels
Pros:
Combines the object-oriented and the relational paradigm,
eliminates the need for an OO-relational mapping
Easy installation and maintenance, no high-skilled
administrator necessary
Outstanding performance with a small memory footprint
Support for different Java technologies to access the database
(JDBC, Caché object binding, EJB)
Support for a plethora of technologies and standards
Embraces common Java standards (Streams, Collections, JDBC, etc.)
Cons:
No support for polymorphic function signatures
EJB-, Object-, and JDBC-binding in one JAR file
About The Authors
Mathias Kühn is a Java developer and software architect at
SYNERVA, an IT service company for software development, consulting, and
training with a special focus on the realization of complex, distributed
information systems (www.synerva.com).
kuehn@synerva.com
Christian Och is an IT consultant at SYNERVA and has over 10 years of
experience as a software architect and project leader in the areas of
heterogenous database integration, distributed object technologies, and
application development.
och@synerva.com