Symisc Vedis

An Embeddable Datastore Engine

Distinctive Features.

The following page enumerates distinctive features of the Vedis Datastore Engine.

We describe now, some of the important Vedis features in details.

Transactional (ACID) datastore

A transactional database is one in which all changes and queries appear to be Atomic, Consistent, Isolated, and Durable (ACID). Vedis implements serializable transactions that are atomic, consistent, isolated, and durable, even if the transaction is interrupted by a program crash, an operating system crash, or a power failure to the computer.

Serverless datastore Engine

Most datastore engines (i.e.Redis, memcache) are implemented as a separate server process. Programs that want to access the datastore communicate with the server using some kind of interprocess communication (typically TCP/IP) to send requests to the server and to receive back results. Vedis does not work this way. With Vedis, the process that wants to access the database reads and writes directly from the database files on disk or in-memory. There is no intermediary server process.


Vedis does not need to be "installed" before it is used. There is no "setup" procedure. There is no server process that needs to be started, stopped, or configured. There is no need for an administrator to create a new database instance or assign access permissions to users. Vedis uses no configuration files. Nothing needs to be done to tell the system that Vedis is running. No actions are required to recover after a system crash or power failure. There is nothing to troubleshoot.

Single Database File

A Vedis database is a single ordinary disk file that can be located anywhere in the directory hierarchy. If Vedis can read the disk file then it can read anything in the database. If the disk file and its directory are writable, then Vedis can change anything in the database. Database files can easily be copied onto a USB memory stick or emailed for sharing.

Cross-Platform File Format

The Vedis file format is cross-platform. A database file written on one machine can be copied to and used on a different machine with a different architecture. Big-endian or little-endian, 32-bit or 64-bit does not matter. All machines use the same file format.

Standard Key/Value Store

Vedis is a standard key/value store similar to BerkeleyDB, Tokyo Cabinet, LevelDB, etc. but, with a rich feature set including support for transactions (ACID). Under the KV store, both keys and values are treated as simple arrays of bytes, so content can be anything from ASCII strings, binary blob and even disk files. The KV store layer is presented to host applications via a set of interfaces, these includes: vedis_kv_store(), vedis_kv_append(), vedis_kv_fetch_callback(), vedis_kv_append_fmt(), vedis_kv_delete(), etc.

Self-Contained Library

Vedis is a self-contained C library without dependency. It requires very minimal support from external libraries or from the operating system. This makes it well suited for use in embedded devices that lack the support infrastructure of a desktop computer. This also makes Vedis appropriate for use within applications that need to run without modification on a wide variety of computers of varying configurations.

Pluggable Run-time Interchangeable Storage Engine

Vedis works with run-time interchangeable storage engines (i.e. Hash, B+Tree, R+Tree, LSM, etc.). The storage engine works with key/value pairs where both the key and the value are byte arrays of arbitrary length and with no restrictions on content. Vedis come with two built-in KV storage engine: A Virtual Linear Hash (VLH) storage engine is used for persistent on-disk databases with nearly O(1) lookup time and an in-memory hash-table or Red-black tree storage engine is used for in-memory databases. Future versions of Vedis might add other built-in storage engines (i.e. LSM).

Symisc Systems
Copyright © Symisc Systems