RDM Server: A Client/Server DBMS Developed by Software Engineers for Software Engineers

Posted by Randy Merilatt on October 08, 2013

There are many database servers available on the market from open source systems such as MySQL and PostgreSQL to large, enterprise-oriented systems like MS SQL Server, IBM DB2, and Oracle. With all of these options, why would anyone choose to use Raima’s RDM Server?

Traditional Database Servers vs. RDM Server

RDM Server is not designed for enterprise applications, in which a wide variety of diverse applications share the database server. It is designed to be tightly integrated with specific applications providing high-performance database management support for one database or a family of interrelated databases.

With traditional database servers, the application is kept at “arms-length” (or further) from the server itself. This does protect the database server from reliability problems that can result from errant application code. But there is a performance cost associated with doing that as all database operations incur latency from all of the remote procedure calls (RPC) between the client application program and the database server.

And, yes, as a database server, RDM Server must also support client applications through RPCs. But RDM Server provides a wide range of on-server application programming support that allows the application to become one with the server. The performance benefit that can result from applications that take advantage of these features is significant.

The on-server application support features provided in RDM Server include the following

  • C-based server extension modules callable from a client application through RPCs. Designing significant portions of your application’s database processing in extension modules can greatly reduce the number of needed RPCs.
  • SQL and C-based user-defined procedures (UDP) are similar to extension modules but are called from SQL.
  • SQL C-based user-defined functions (UDF) allows you to extend the scalar and aggregate functions that can be used in an SQL statement.
  • Application-link technology allows RDM Server to be directly linked into your application completely eliminating the need for RPCs between the application and RDM Server.


RDM Server also provides high-performance data access methods including both Btree and hash indexes. Moreover, RDM Server includes the unique ability to create pre-defined joins on tables related through foreign and primary key declarations that provides optimal, direct access retrieval of the joined rows.

High performance multi-user access and transaction performance is also supported in RDM Server through row-level locking plus the ability to have in-memory tables for tables that need the maximum possible access performance.

All of RDM Server’s own, platform-independent operating system API functions are available for use by application developers. These APIs provide calls that allow portable multi-threaded programs to be developed which can run on any of the operating systems supported by RDM Server.

Database administration capabilities are designed to be embedded as part of your application. Your users do not even need to know that there is a third-party DBMS present. This is certainly not the case with most other SQL database servers. All of this database technology is provided in a small-footprint.

SQL and RDM Server

RDM Server applications are not dependent on SQL. You can build a database application that uses only SQL standards, one that only uses SQL for queries, or one that does not use SQL at all. Using more basic, albeit proprietary, database management function calls directly from your application program avoids the overhead associated with interpreting SQL statements yielding the highest possible performance. You have a choice.

RDM Server is designed by software engineers for software engineers. There are a wide range of database and application design choices available that will allow you to have the highest performing application you can have. But this does not make it easy. Hard work and a thorough understanding of the available tools is necessary in order to produce that kind of application. As such, Raima’s professional services organization is here to help you get the most out of your use of RDM Server by offering you training, consultation, and application development expertise.

Summary of RDM Server Performance-Related Features

  • Three record/row access methods supported:
    • fast: btree indexes,
    • faster: hash indexes,
    • fastest: direct access via rowid primary keys.
  • Ability to pre-define foreign/primary key joins using the create join statement
    • provides optimal, direct access join processing performance.
  • Ability to specify high accessibility tables or indexes to be in-memory.
  • Row-level locking support for concurrent, multi-user database access.
  • Ability to locate significant application C modules on the RDM Server to reduce the performance costs due to client/server remote procedure calls.
  • Ability to open a database for exclusive use with transactions disabled in order to provide high speed, batch processing support.
  • Developer control over a variety of system parameters which can affect performance including:
    • ability to locate database files on separate physical devices,
    • ability to specify page sizes for individual tables and indexes,
    • ability to control the size of the RDM Server database cache,
    • options that allow you to trade off of reliability for performance.
  • Multi-threaded server architecture that utilize separate threads for:
    • user/client connections
    • network communications
    • transaction logging
    • database checkpoints
    • database file reads

Other Important RDM Server Features

  • Dynamic DDL support allows schema changes to be made to an existing database.
    • Table columns can be added or dropped.
    • New tables can be created.
    • Indexes can be added or dropped.
    • Supported through SQL or core runtime API functions
  • Hot Online Database Backup Support
    • Places the server into hot backup mode allowing database files to be safely copied to a backup medium. The backup itself is not done by RDM Server.
    • Provides API function calls to:
      • start and end hot backup mode,
      • get complete list of database files that need to be backed up,
      • to report incremental backup progress as a percentage of the file;
        • allows RDM Server to end backup mode for the backed up portion of file thus incrementally improving system throughput while the backup is proceeding.
  • Drivers provided for ODBC, JDBC and ADO.NET applications and 3rd party database access tools.
    • ODBC is the standard (i.e., native) API for SQL use on RDM Server
  • Multi-protocol Network Communication Processor.
    • Local (same computer) support through shared-memory transport
    • MS Windows named pipes
    • TCP/IP
    • UNIX domain sockets
    • Some or all can be supported at the same time on a single server
  • User and Database Security
    • Selective database access user security provided for non-administrator users (e.g., using SQL grant and revoke)
    • Options provided to encrypt database content and/or network transmissions.
  • Database Replication
    • Replicate data from one RDM Server to another
      • Synchronous: for backup purposes as an alternative to hot online backup that provides must faster fail over in the event the master fails.
      • Asynchronous: to allow one or more copies of database to be replicated to read-only slaves for data analysis and reporting use.
    • Replicate selective data from RDM Server to another, 3rd party DBMS