Download Matisse



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 server-based SQL implementation complies with the entry-level SQL standard (with object extensions and support for referential integrity, stored procedures). Matisse also supports ANSI SQL filtering, sort, projection, and aggregates.

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
  • Accessing your data seamlessly in both .NET and J2EE
  • Augmenting operational efficiency with the integrated self-healing capabilities

Database Enterprise Manager
View Screenshot

.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.