RDM Embedded
Encyclopedia
RDM Embedded is a high performance, ACID
-compliant embedded database
management system designed to be linked into C/C++ application programs. RDM Embedded has been designed to utilize multi-core computers, networking (local or wide area), and in-memory or on-disk storage. It provides a low-level C API and a higher level SQL API. It has been ported to Windows, Linux, Unix and several real-time
or embedded
operating systems.
, first released db_Vista, a single-user DBMS for C programmers in 1984. The database has been known as dbVISTA and RDM through the 90's. When Raima introduced a client-server version of the database the distinction was made between RDM Embedded and RDM Server. RDM Embedded was released in version 10 in 2010. An open source version of RDM, called db.*, was launched in 2000. Under Linux the db.* product was named db.linux.
application. It is accessed by a low-level C API, and performs the basic DBMS functionality of data navigation and transactional updates. ACID properties, as defined by Jim Gray, are fully supported by the low-level engine.
to the core functionality. A mirror copy of a database is the basis for failover
or switchover
operations, allowing a system to continue operation in the event of certain types of system failures. Functions that report disruptions in the synchronization of a database can be reported to a High Availability
Manager.
, where any given record type may be "owned" by multiple set types, distinguishing a network structure from a simpler hierarchical structure. Raima's implementation of the network model is a simplification of the CODASYL
DBTG Model, which is supported today in a few old mainframe DBMSs.
) is used to implement read-only-transactions in RDM Embedded, meaning that a virtual snapshot of a database is marked for a reading task, and this snapshot is readable until the read-only-transaction is terminated by the task, even if it is being concurrently updated. The purpose of the functionality is to avoid read locks, thus improving multi-user performance.
fields.
ACID
In computer science, ACID is a set of properties that guarantee database transactions are processed reliably. In the context of databases, a single logical operation on the data is called a transaction...
-compliant embedded database
Embedded Database
An embedded database system is a database management system which is tightly integrated with an application software that requires access to stored data, such that the database system is “hidden” from the application’s end-user and requires little or no ongoing maintenance...
management system designed to be linked into C/C++ application programs. RDM Embedded has been designed to utilize multi-core computers, networking (local or wide area), and in-memory or on-disk storage. It provides a low-level C API and a higher level SQL API. It has been ported to Windows, Linux, Unix and several real-time
Real-time operating system
A real-time operating system is an operating system intended to serve real-time application requests.A key characteristic of a RTOS is the level of its consistency concerning the amount of time it takes to accept and complete an application's task; the variability is jitter...
or embedded
Embedded operating system
An embedded operating system is an operating system for embedded computer systems. These operating systems are designed to be compact, efficient, and reliable, forsaking many functions that non-embedded computer operating systems provide, and which may not be used by the specialized applications...
operating systems.
History
Raima Inc.Raima
Raima is a provider of high-performance, real time, always on database technology for both in-memory database usage and persistent storage devices. The company has offices in Seattle, USA and London, UK.- History :...
, first released db_Vista, a single-user DBMS for C programmers in 1984. The database has been known as dbVISTA and RDM through the 90's. When Raima introduced a client-server version of the database the distinction was made between RDM Embedded and RDM Server. RDM Embedded was released in version 10 in 2010. An open source version of RDM, called db.*, was launched in 2000. Under Linux the db.* product was named db.linux.
Core Database Engine
The Core database engine is implemented as a linkable library, allowing it to become an embedded part of a CC (programming language)
C is a general-purpose computer programming language developed between 1969 and 1973 by Dennis Ritchie at the Bell Telephone Laboratories for use with the Unix operating system....
application. It is accessed by a low-level C API, and performs the basic DBMS functionality of data navigation and transactional updates. ACID properties, as defined by Jim Gray, are fully supported by the low-level engine.
High Availability
The High Availability package adds database mirroringMirror (computing)
In computing, a mirror is an exact copy of a data set. On the Internet, a mirror site is an exact copy of another Internet site.Mirror sites are most commonly used to provide multiple sources of the same information, and are of particular value as a way of providing reliable access to large downloads...
to the core functionality. A mirror copy of a database is the basis for failover
Failover
In computing, failover is automatic switching to a redundant or standby computer server, system, or network upon the failure or abnormal termination of the previously active application, server, system, or network...
or switchover
Switchover
Switchover is the manual switch from one system to a redundant or standby computer server, system, or network upon the failure or abnormal termination of the previously active server, system, or network, or to perform system maintenance, such as installing patches, and upgrading software or...
operations, allowing a system to continue operation in the event of certain types of system failures. Functions that report disruptions in the synchronization of a database can be reported to a High Availability
High availability
High availability is a system design approach and associated service implementation that ensures a prearranged level of operational performance will be met during a contractual measurement period....
Manager.
Replication
The Replication package (AKA "Data Flow") adds the ability to move database updates from the RDM Embedded database to other types of databases through the use of action-for-action logs. This permits database aggregation from one or more RDM Embedded databases into SQL-based database servers.Database Unions
The Database Union package (AKA "Distributed") adds the ability to view multiple identically-structured databases from multiple locations as though they are one database.Interoperability
The "Interop" package adds ODBC, JDBC and ADO.NET access to the RDM Embedded databases, allowing third-party tools to access the data.Database Definition Language
The structure of a database is defined in a C-like language called DDL, or Database Definition Language. The language defines record types and their fields (contents), indexing, and set relationships. DDL is compiled into a binary dictionary file that accompanies the database files.Indexing
RDM Embedded supports B-tree and hash indexes. The index’s can contain a single or multiple segments (simple or compound).Data Models
A DBMS represents and structures data so that it "models" some sort of real-life data. RDM Embedded mixes two conventional data modelling approaches: network and relational.Network Data Model
The network data model manages parent/child relationships between database records through sets, which consist of direct links from owner to members, next/previous members, and back to the owner. The term "network model" refers to data structuring, as in a Bachman diagramBachman diagram
Bachman diagrams are diagrams which are used to design the data using a network or relational "logical" model, separating the data model from the way the data is stored in the system. The model is named after database pioneer Charles Bachman, and mostly used in computer software design...
, where any given record type may be "owned" by multiple set types, distinguishing a network structure from a simpler hierarchical structure. Raima's implementation of the network model is a simplification of the CODASYL
CODASYL
CODASYL is an acronym for "Conference on Data Systems Languages". This was a consortium formed in 1959 to guide the development of a standard programming language that could be used on many computers...
DBTG Model, which is supported today in a few old mainframe DBMSs.
Relational Data Model
The relational data model manages relationships between data objects through value matching, and usually primary key/foreign keys.Data Storage
RDM Embedded historically provided storage of data only on a disk drive, but now provides in-memory storage as an option. A permanent-storage device such as a disk drive provides recoverability if there is any kind of failure in the software or loss of power. As memory capacities have increased, in-memory databases have become feasible. In-memory databases are faster than disk-based databases, but do not have the same degree of durability and recoverability as disk-based databases. When an application can tolerate the loss of one or more transactions, then in-memory is a desirable option because of its speed advantage.Transactions
For data integrity, RDM Embedded supports the ACID transaction model ensuring a set of changes are applied atomically as a group, or none of them are applied, resulting in a database always being in a consistent state.Multi-User Support
Multi-User access is facilitated by running a separate TFS (Transactional File Server) process that manages the database files and which acts as a server to multiple applications that have linked the RDM Embedded runtime library int their process space. The TFS requires locking so that one application cannot overwrite updates made by another. This is the Isolation part of ACID. Runtimes connect to a TFS (more than one may be used by a runtime) through TCP/IP, so it may be on the same computer as the TFS, or visible through a domain name.Multi-Version Concurrency Control
Multi-Version Concurrency Control (MVCCMultiversion concurrency control
Multiversion concurrency control , in the database field of computer science, is a concurrency control method commonly used by database management systems to provide concurrent access to the database and in programming languages to implement transactional memory.For instance, a database will...
) is used to implement read-only-transactions in RDM Embedded, meaning that a virtual snapshot of a database is marked for a reading task, and this snapshot is readable until the read-only-transaction is terminated by the task, even if it is being concurrently updated. The purpose of the functionality is to avoid read locks, thus improving multi-user performance.
Native C API
RDM Embedded’s core C API is over 150 library low-level functions for all database operations.SQL API
RDM Embedded SQL has been designed for embedded systems applications. As such, it provides a subset of the ANSI/ISO standard SQL that is suitable for running on a wide variety of computers and embedded operating systems many of which have limited computing resources.C++ API
A database DDL (Database Definition Language) can be compiled to produce a set of C++ objects with methods that allow navigation and manipulation of a database in an intuitive C++ API.Data Types
RDM Embedded supports signed and unsigned integer (16, 32 or 64 bit), character string (UTF-8 or UNICODE), float, double, and BLOBBlob
- In biology :* Blob , sections of the visual cortex where groups of color-sensitive neurons assemble* Globster, an unidentified organic mass that washes up on the shoreline of an ocean or other body of water...
fields.