Jump to content

User:Jasonf RAIMA/sandbox

From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by Jasonf RAIMA (talk | contribs) at 20:43, 3 April 2012. The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.
RDM System
Developer(s)Raima Inc.
Stable release
10.1
Operating systemCross-platform
TypeDBMS
LicenseCommercial license
WebsiteRDM Embedded

RDM System (for Raima Database Manager) is a high performance, ACID-compliant database management system divided into three packages for three environments; Mobile, Embedded and Desktop & Server. The RDM System 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.

RDM System Packages

The RDM System consists of the packages RDM Mobile Edition, RDM Embedded Edition and RDM Workgroup Edition for the different environments. RDM Mobile Edition is a database management system for a smartphone or tablet device. RDM Embedded Edition is a database management system for embedded devices. RDM Workgroup Edition is a database management system for desktop and server environments.

History

Raima Inc., 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.

Product Features

Core Database Engine

The Core database engine is implemented as a linkable library, allowing it to become an embedded part of a C 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,[1] are fully supported by the low-level engine.

Optional Packages

High Availability

The High Availability package adds database mirroring 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.

Replication

The Replication package 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 diagram,[2] 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,[3] 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 (MVCC)[4] 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.

APIs

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 BLOB fields.

RDM Embedded Applications

RDM Embedded based applications are used today in all major industries including Aerospace & Defense, Automotive, Business Automation, Financial, Government, Industrial Automation, Medical, and Telecommunication.

References

  1. ^ Gray, Jim, and Reuter, Andreas (1993), Distributed Transaction Processing: Concepts and Techniques, Morgan Kaufmann, ISBN 1-55860-190-2{{citation}}: CS1 maint: multiple names: authors list (link)
  2. ^ IRS Resources. Part 2. Information Technology, Chapter 5. Systems Development, Section 13. Database Design Techniques and Deliverables. Retrieved 02 July 2009.
  3. ^ David M. Kroenke (1995). "14 The CODASYL DBTG Model". Database Processing: Fundamentals, Design, and Implementation. Prentice-Hall. pp. 406–441. ISBN 0-02-366881-4.
  4. ^ Gerhard Weikum (2002). "5 Multiversion Concurrency Control". Transactional Information Systems. Morgan Kaufmann. pp. 211–213. ISBN 1-55860-508-8. {{cite book}}: Unknown parameter |coauthors= ignored (|author= suggested) (help)

Articles