DeviceSQL Runtime Services
DeviceSQL Runtime Services provide data management features for storage, memory management, indexing for fast data access, transaction processing, streams-based communications services and more.
These runtime services are packaged as modular libraries and executables. With DeviceSQL’s services-based architecture, only the services required by your application are linked in at build time, achieving a memory footprint as low as 24KB.
For many data management applications, you simply program in DeviceSQL and the DeviceSQL Compiler will generate calls to the specific runtime services required for your application. In other cases, you may also want to select additional runtime services such as a Dynamic C interface.
DeviceSQL Runtime Services are validated for each target platform, which is defined as a specific CPU, target operating system and tool chain combination. DeviceSQL can work with 8, 16, 32 and 64-bit CPUs, including multicore processors. DeviceSQL works with a wide variety of target operating systems including Linux, Windows, VxWorks, u-Itron, QNX and others.
Two Types of Runtime Services
DeviceSQL Runtime Services are separated into two types: Base Runtime Services and Extended Runtime Services. Base services are included with every runtime services license. Extended services are not needed for all applications and are packaged separately.
Base Runtime Services
Storage Services
Provide data compaction, de-fragmentation, error recovery, rollback, and reliable data commits to any persistent storage device, such as flash, disk, NVRAM or other types of media. Note: A storage service is not used if all data and tables are in-memory.
Index Services
DeviceSQL provides several different types of indexing services for high-speed access to table data. Indexing algorithms include multiple forms of Hash, B-Tree and AVL Tree for both paged and non-paged data. Customized indexing algorithms are also supported. Different indexing algorithms can be selected on a per-table basis.
Page Service
Reads and writes table and index data to and from any storage device in “pages”. Includes page management features for configuring page sizes and buffering.
Memory Service
Provides in-memory access to data and indexes and the ability to control allocation and de-allocation of memory for table data.
Thread-Safe Service
Enables applications to protect thread access to data and data management functions.
Dynamic C API
Allows applications to manage services and access to data using fixed C calls that are evaluated at runtime.
Interpreted SQL API
Allows applications to manage services and access to data using SQL statements that are interpreted at runtime.
Extended Runtime Services
Shared Access Service
Allows multiple processes to access the same shared data using read- and write-level transactions.
Data Streams (Communication) Service
Enables streams-based communication and data sharing between threads, processes, processors, applications, devices or networks.
Compression Service
Enables persistent storage data writes to be compressed, and reads to be uncompressed, page-by-page. Only required pages are loaded and uncompressed in memory, not the entire file. Compression algorithms currently supported are GZIP and BZIP but additional algorithms can be supported. Compression typically reduces data store and/or files sizes by 50%.