Native Objects and SQL
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
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 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
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:
.NET Platform Integration
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.
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:
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
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:
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.
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 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
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.
About Matisse | Products | Services | Customers | Partners | Developers
© 2014 Matisse Software Inc.