Client applications connect to the server through the network, or through a local transport.
The client and server can reside on different systems or in the same device;
there is no limit to the number of clients that can communicate with a single
server. The various modules and interfaces are described below:

Matisse Server
The Matisse server performs the back-end processing of queries and language binding calls including access to objects and database administration. It interfaces directly with the storage subsystem(s). The Matisse Server is a general purpose object manager, managing a repository of persistent objects.

Database Administration Services.
The database administration module implements an API and a set of administrative functions including backup, disk management, and version collection.

Object Manager.
This module performs basic object operations such as creation, updates, and deletion of objects. It guarantees consistency and bi-directional referential integrity of the objects.

SQL Engine.
The SQL engine implements the SQL standard including stored procedures.
The Matisse SQL engine is unique in that it natively operates on objects.

Server Cache.
The Server Cache serves as a buffer in order to achieve performance gains.

Matisse Client Modules
The Matisse client provides a set of interfaces for programmers and 3rd
party software tools. Generally, the Matisse database is accessed either
by a programming language such as C#, Java, C++ or SQL through a standard
ODBC, JDBC or ADO.NET interface.

XML.
Matisse provides tools for loading and exporting XML data.
Generally, the XML loader, mt_xml, generates a schema using an XML DTD and then loads the XML documents or records into the database. Data objects can also be exported to XML format.

Languages.
Language bindings have been written for the most popular languages including
C++, Java, C#, Eiffel and the leading scripting languages including Python
and PHP.

ODBC/JDBC.
Matisse supports both ODBC and JDBC interfaces. The client SQL query processor validates the syntax of the query and generates a query plan to be executed on the server. This module is also responsible for generating a SQL projection from the objects selected.

Client cache.
The client serves as a buffer in order to achieve performance gains.

Matisse In-Memory Database is a memory-optimized database that empowers applications with
the instant responsiveness and very high throughput required by real-time industries. Matisse
In-Memory Database operates on databases that fit entirely in physical memory using standard Matisse APIs.
Matisse In-Memory Database exploits this property for breakthrough performance.

Matisse In-Memory Database was designed from the ground up to leverage large memory size on 64-bit
commodity hardware, along with the processing scalability provided by multi-core, multi-processor
architectures. By managing all data in memory and using algorithms tailored for that environment,
Matisse In-Memory Database can operate much more efficiently, and thus offer dramatic improvements
in performance. Matisse In-Memory Database uses disks for persistence and recovery rather than as
the primary database storage location. Matisse In-Memory Database conforms to the atomicity,
consistency, isolation, and durability (ACID) properties of data management systems. Durability
is achieved by periodically updating a disk image of the database, called a checkpoint. The
database is checkpointed to disk automatically based on user-defined frequency and transaction volume.

The decreasing cost of memory-rich 64-bit computing platform is driving the in-memory database
technology's use in simulation, analytics, in trend and pattern discovery, in caching and other
systems that demand instantaneous sorting, retrieval and manipulation of massive databases.

Matisse In-Memory shares with Matisse the same set of APIs thus eliminating the developer's
learning curve. It also shares the same datafile format, making your application fully compatible
in both environments.

An existing Matisse application can be converted to a true real-time application by simply restarting
your database with a Matisse In-Memory database server.

Matisse Lite, the embedded version of Matisse DBMS, is a compact library that
implements the server-less version of Matisse DBMS. Matisse Lite provides
a transactional, multi-user database engine self-contained in a user-application
process.

Matisse Lite was designed from the ground up to function at peak in a
resource-limited architecture and to integrate seamlessly inside any application
process without the need to start up and to shut down separate database
processes.

Matisse Lite shares with Matisse the same set of APIs thus eliminating
the developer's learning curve. It also shares the same datafile format,
making your application fully compatible between both environments.

Matisse Lite is ideally suited for rich gadget applications on electronic
devices and hardware appliances, which require zero configuration, no
administration and a small footprint.
Matisse Lite also provides a reliable, scalable and fast solution to cache
rich information served by application servers in web farms.
Matisse Lite can also be used to build easy-to-deploy Evaluation or Demo
Edition of enterprise-class database applications.