Native Objects and SQL
Matisse is the Next-Generation of data management products that offers
native object storage and support for SQL. The principal benefits of
this hybrid approach is that Matisse decreases code complexity by eliminating
the need to perform object-relational (O/R) mapping, and increases performance
by eliminating the overhead associated with O/R mapping. Matisse customers
have reported reductions in code size by as much as 40% and performance
increases as much as 30X.

Native object support means that Matisse was designed from the ground up to
support all standard object constructs and capabilities including polymorphism,
inheritance, encapsulation, true navigation, unique object identifiers and
bi-directional links between objects at the system level.

Matisse's direct manipulation of objects allows Matisse to speed object-oriented
development by enabling developers to map objects directly to the database
from their applications. Developers working directly with a Java, C++,
VB, C#, PHP, Eiffel, Python or other languages can directly access and
manipulate objects in the database. Matisse's object-to-object mapping
avoids the overhead of O/R mapping which is complex and imposes performance
penalties when objects have to be deconstructed into relational tables
then later re-assembled.

Matisse SQL statements can be embedded directly into any of the numerous
object-oriented languages that are supported by Matisse. A Matisse SQL statement
manipulates object instances of Matisse classes, which are qualified by their class name.
A Matisse SQL statement can access both the relationships and the attributes of
Matisse objects. 3rd party tools (reporting, OLAP, monitoring and etc.) can use
Matisse's standard SQL implementation to deliver native SQL ODBC/JDBC connectivity
between powerful tools and the Matisse DBMS.

Matisse's support for standard SQL makes it possible to easily migrate existing
SQL programs to use Matisse. The performance of SQL-based applications is often
substantially better on Matisse than on relational databases because Matisse's
architecture eliminates the need for de-normalization and processing-intensive
complex joins when accessing related data since Matisse doesn't need to maintain
multiple indices for each table, as required by a relational database.

Reusable SQL Components
In Matisse, SQL is a complete, component-oriented programming language,
which allows the database programmers to design and implement reusable
and extensible SQL components. Matisse SQL Stored Methods are giving you
the benefit of an abstract layer to access objects, which lets you extend
features of an application by simply adding classes to the class hierarchy
without the need to modify any of the source code already released.

Matisse unique SQL technology is a break-through for server-side database
programming. By unifying the extensible data type system and the Relational
data model into a simple extensible component-oriented model, Matisse has
pushed the envelope of SQL programming beyond relational capabilities.

Data Transformation Services
Matisse Data Transformation Services provides a set of graphical tools,
command line utilities and programming interfaces to help administrators
and developers solve data exchange, including the extraction, transformation,
and consolidation of data from disparate sources to single or multiple destinations.

Matisse has now extended capabilities for extraction, transformation
and loading of data from Relational or XML sources into a Matisse database,
thus streamlining the migration path from/to external database management
systems.

The transition between a relational database and Matisse is a straightforward two-step
process, which consists of (1) importing relational data in a table format into Matisse,
then (2) regenerating the semantic links between data elements that have been lost in
the process of transforming the logical model into its relational counterpart.

Matisse Data Transformation Services can also be used to export data
from a Matisse database to participate in data consolidation of disparate
departmental applications into a central repository running a legacy database
server.

Matisse Data Transformation Services also allows developers and administrators to manipulate
data in XML format to participate for example in web services transactions.

Database Enterprise Manager
The new Database Enterprise Manager tool has been designed to better expose
the simplicity and self-healing capabilities built in the product. Matisse
Database Enterprise Manager makes administrators more productive by ensuring
the optimum level of performance all the time and thus removing tedious
administration tasks from DBAs daily routines.

Matisse Database Enterprise Manager simplifies the transition from relational
products to Matisse by using familiar relational terminology to present
database objects. The Database Enterprise Manager tool promotes Matisse
superior technology for modeling real-world applications, and for processing
large volumes of data as well as for analyzing and reporting on complex
business data.

Matisse Enterprise Manager includes an integrated suite of management tools that cover
the needs of both database administrators and database developers in terms of:

Designing with a richer data model featuring inheritance and relationships

Building and extending application faster with reusable SQL components

.NET Platform Integration
Fully integrated with Microsoft Visual Studio .NET, Matisse enables developers to
manipulate Matisse database content in a table format through OLE DB as well as in
an object format through ADO.NET.

Matisse's extension of ADO.NET, demonstrates that ADO.NET can evolve beyond the
Microsoft architecture to benefit .NET developers. Unlike the standard ADO.NET data provider,
which returns data in a table format to integrate seamlessly with relational products,
Matisse has extended the ADO.NET architecture to also return data as .NET objects. This feature
alone eliminates 30% to 50% of your application code benefiting reducing development and
maintenance costs by a significant factor.

To further integrate business logic based upon SQL components in your .NET applications,
the Matisse .NET binding allows for the execution of stored methods from .NET objects
using standard .NET method calls taking advantage of polymorphism.

Matisse is also providing 'Data Classes' for .NET. Typically Data Classes are used to
cache data in a connection-less environment, or to serialize objects for transfer over the network.

Minimal Administration
Self-administering and always running, Matisse was designed to require no
dedicated DBA, and instead only require minimum administration once in operation.
Many of the tasks that require downtime with the leading relational databases,
such as adding or removing disks, modifying the database schema, or performing
bulk loads are done concurrently with database activity since no significant
performance degradation or downtime is incurred when performing these administrative tasks.

Matisse's versioning engine guarantees database recovery, but it does not use a
transaction log file like most other databases. Thus, Matisse eliminates all of the
burdensome tasks associated with administering log files, including:

Backing up the transaction log or journal files needed for recovery

Monitoring the growth of the journal or transaction log file (which contains a replica of every update performed in the system)

Running frequent backups in order to be able to truncate the log.

Matisse's minimal administration means that the Matisse database is ideal for embedded
or remote systems, or sites with limited IT staff, where administrator intervention is
either difficult or impossible.

24x365 Proven Reliability
The Matisse DBMS has been used in mission-critical process control applications
in nuclear power plants and complex chemical manufacturing applications for over a decade.
In these situations, the Matisse DBMS is required to be available 24x365 with predictable
response times and to provide uninterrupted service even while schema and storage changes
are being implemented.

Matisse is one of the few database management systems that allows the schema to be modified
during processing. This feature, termed dynamic schema evolution, improves availability
and is of critical importance in constantly changing environments, such as Web services,
network infrastructure, process control and financial services where the data model changes
as new services and storage is added or removed. Dynamic schema evolution allows for the addition
or removal of classes or properties while Matisse is online and is possible due to the fact
that the Matisse application schema is stored in the database.

Matisse offers two key features to ensure fault tolerance: disk and
database mirroring:

Matisse utilizes automatic disk mirroring
in order to provide uninterrupted service in the event of disk crashes.
The system automatically reconfigures itself; so no system administration is
required to implement this capability in the case of a primary system failure.

The database mirroring mechanism
allows a Matisse database to be automatically replicated to one or more
systems. The Matisse DBA can specify the replication interval, from
immediate (synchronous) to a specific time interval (asynchronous) based
on the needs or the application.

Beyond simply surviving systems failures, providing reliability also means being
able to provide predictable response times and service levels by meeting the
daily usage challenges encountered in today's dynamic computing environments.
To meet this additional reliability challenge, Matisse tunes itself by automatically
adjusting to changes in the environment, such as disk load imbalance, and changing usage
patterns. This means that Matisse is always running at its most efficient without constant
tinkering from a DBA - a difficult task for administrative-heavy relational databases.

Versioning Engine
The Matisse server's unique versioning engine differentiates Matisse from
other database management systems. When an object is updated, the versioning
engine creates a new version of the object in a new location, instead of updating
the old version in place. Applications are able to read the previous version of
the object while the new version is being created, and because all references
are left intact, applications see a consistent view of the database at all times.
Once the new version has been created, and the transaction is complete, subsequent
read requests are directed to the new version. If the transaction fails,
requests simply continue to be directed to the previous version; there is no need
to incur downtime by rolling back the database in order to achieve a consistent state.

The Matisse versioning engine improves performance, compared to other databases,
by avoiding the overhead of transaction log operations and administration.
In write-intensive (update and load) environments with numerous users,
Matisse shows an overwhelming performance advantage without the loss of
database integrity, recovery, or throughput. Matisse can perform 2 to 10 times
better than relational databases in situations where large volumes of data
are being loaded or updated at the same time as other applications are reading data.

Maintaining multiple versions of an object provides an additional powerful
advantage that isn't available with other databases. Because multiple versions
of the objects are maintained, historical reporting can be performed.
This means that reports can be easily generated that reflect the state of the
data for a given point-of-time effortlessly, no messy point-in-time recreation
of the database is required. This allows a single report to create an "audit trail"
of changes to the data, without requiring IT to cut-and-paste multiple reports
generated over days/months. But if disk space is at a premium, then
Matisse's "collect versions" mechanism can run automatically to reclaim
disk space -- preserving the most recent object version and the versions
that have been explicitly saved.

Comprehensive Standards Support
Matisse is language independent, so data created using one programming
language can be accessed by applications using other object-oriented or
scripting languages. Matisse provides support for most popular programming
languages: SQL, Java, C++, VB.NET, C#, Perl, Python, PHP, Eiffel and C
in addition to ODL and DDL. Matisse supports the JDBC, ODBC & ADO.NET
standard for SQL access from applications in Java and other languages
and supports the EJB standard and the J2EE and .NET frameworks. Developers
using native programming languages to manipulate persistent data can build
and deploy applications quickly and easily, as there is no proprietary
language learning curve.

Matisse is a natural database for handling XML documents since XML hierarchical
elements can be mapped directly to Matisse object structures, greatly simplifying
and future proofing development. Matisse provides an object API to manipulate XML
documents, as well as an XML utility, referred to as mt_xml, that provides automatic
loading and generation of XML documents through SQL queries. The utility maps
XML documents to a pre-defined schema and performs batch loading into Matisse or
exporting from Matisse. The utility validates the structure of the XML documents
against the Matisse schema.

High Performance and Scalability
Matisse provides a high degree of scalability because the Matisse server is implemented
on top of kernel threads, and scales linearly on SMP (symmetric multi processing) architectures
as new CPUs and disks are added.

To facilitate this high-degree of parallelism, Matisse utilizes database partitioning,
where the objects in a single class can be transparently distributed across multiple disks.
This reduces the possibility of disk "hot spots" and allows single queries to access multiple
partitions simultaneously, ensuring optimal parallel query performance for applications.

Matisse also supports a fast join capability to improve performance of complex queries.
Relational databases typically suffer performance problems when data is retrieved from
multiple tables, due to the processing-intensive joins required to match related data
between tables. Matisse fast joins use pre-computed relationships to rapidly locate and
access related data from multiple classes. Unlike relational databases that must define
the relationships within the SQL queries, Matisse SQL-based application developers do not need
to know about these relationships to take advantage of them.

All the Matisse APIs are thread-safe in order to exploit the multi-threading capabilities
of the most recent operating systems. Matisse takes full advantage of its optimized cache
and versioning architecture in order to maximize database performance with existing hardware.