RDM Server
RDM Server is ACID-compliant client/server embedded database system designed for both disk based and in-memory embedded systems and applications.
History
Raima Corporation, established in Washington DC in 1982, started working on the db_Vista product, envisioning a high performance, zero administration embedded database. db_Vista was first released in 1984, and As of 1988 its third major release was out. It was later renamed to Raima Database Manager, or RDM. The product grew in popularity, and in order to keep the pace with the rising client/server architecture Raima released of Velocis, a Client/Server version of RDM, in 1993. Velocis was later renamed RDM Server. Raima was acquired by Centura Software Corporation in 1999. Centura software drove the decision of launching a open source version of the RDM Embedded, called db.*, in 2000. Under Linux the db.* product got named db.linux. In 2001 Birdstep Technology ASA, a Norwegian based company, acquired the Raima assets and has since made 3 major releases of RDM Server.
Technical features
Data Models
The product offers various different data models. The network data model manages relationships between data objects through list of pointers called sets. The network model is defined to allow very flexible relationships between objects making it perfect to structuring complex data relationships. If you think of a hierarchical structure with parent-child relationships, the network model allows for the same structure except there is no limitation on the number of parents a child has nor how many children a certain parent has between objects. This allows for extremely efficient modeling of data graphs and data hierarchies. The relational data model manages relationships between data objects through value matching, and usually primary key/foreign keys. Relationships are limited to include two record types compared to the network model where no limitation is imposed. RDM Server allows for mixing both the network model and relational model in the same database definition giving the application vendor full flexibility.
Indexes
RDM Server supports regular B-tree based indexes. An index can contain a single or multiple segments. In addition, it supports optional indexes where the application controls the index population.
Architecture
The architecture is client/server, with the ability to run in a heterogeneous environment. The database server sub-system can be linked directly with an application, removing the need for client/server communication and operating system context switching, and allowing for high performing database operations. An ACTIVE/passive replication capability is also available, maintaining an identical copy of a master database for application failover. The sub-system implements an asynchronous single master multi slave replication engine based on its supporting client/server transports (among which TCP/IP).
Data Storage
Databases can be disk resident, or memory resident. In the first case, all access to disk resident structures (both data or data index information), happens through an in-memory data cache maintained by the database server sub-system. Alternatively, the application can define database structures to reside in-memory. An application can also define a database with mixed disk based or memory resident data structures. The data definition language of the engine supports mixing different storage types for any data structure.
Data Integrity
The ACID transaction model is used to ensure data integrity, and reliability, ensuring that the database image is always in a readable and non-corrupt state. However, the application can relax some of the properties to increase performance. Both table and row level locks are implemented, and can be controlled by the application to manage concurrent access to any database. Dirty-read isolation level is also supported.
API and Development Languages
The native C API is an extensive library functions for all database operations. Timestamps, concurrence control, transaction control, database configuration, data navigation, and data changes are supported.A native C administration API is an extensive library functions for all database administration operations such as login, backup, defragmentation, consistency checks etc. A SQL API is implemented as a SAG CLI interface giving access to the supported SQL92 standard. All these APIs are available as part of the client libraries or as part of the server libraries in application linked mode. Moreover, RDM Server has full support for ODBC v3.51, JDBC v3 and v4 through a Java type 4 implementation, ADO.Net and even PHP. RDM Server therefore supports C, C++, and JAVA applications.
Data Types
RDM Server supports for the following native data types: signed and unsigned char; signed and unsigned int16; signed and unsigned int32; signed and unsigned int64; w_char_t (Unicode); float; double; DB_ADDR (Internal database address); BLOB (binary large objects); BCD (Binary Coded Decimal); date; time; timestamp. In addition it has native support for structs and multi-dimensional arrays based on the above list of base types.
It also supports the following SQL data types: signed and unsigned char; signed and unsigned short/smallint; signed and unsigned int/integer/long; signed and unsigned int64; wchar (Unicode); varchar; wvarchar; float; double; real; decimal; date; time; rowid; c_data (read access to native array and struct data types).
Transaction Logging
The product implements a fully ACID compliant transaction logging system with automatic recovery capability. An application vendor can hook into the transaction system and do its own real-time transaction logging for any purpose. This facility is also used for asynchronous replication.
Extension Modules
RDM Server has a pluggable sub-system to allow the application vendor to add their own business logic to the database server sub-system. The extension modules logic gives the system the ability to act as a application server in addition to being a high-performing embedded database engine.
Supported Platforms
The product is available both as object code and as source code, and it is currently supported on most 32- and 64- bit enterprise and RTOS operating systems .
Examples of Applications
- HP - OpenView Data Protector
- Johnson & Johnson - Vitros Product Line
- Cognos - Business Intelligence Software Suite
- Lockheed Martin - Test Stands and F2 Flight Simulator