DeviceSQL Applications
DeviceSQL allows you to build a variety of data management applications, including:
Embedded Databases
The DeviceSQL SDK makes it easier to build fast, compact, ACID-compliant embedded databases for your applications. Databases can be tailored for each application by allowing data to be stored in-memory, paged-in from any type of persistent storage, accessed using indexes, and configured to run in-line with your application or as a client-server database. Data can be accessed with three different interfaces for the ultimate in design flexibility.
Data Loggers
Data logging typically requires a large amount of data to be written extremely quickly, and then accessed when needed. The DeviceSQL SDK contains specialized storage services optimized for rapid data collection. A FIFO storage service is also available that provides a circular buffer approach for minimizing storage overhead. Combined with DeviceSQL’s rapid search capability and device-to-device/device-to-server communications capabilities, host machines gain the ability to quickly query the active log to obtain the requested data.
Metadata Management
Systems such as CE devices need to manage growing amounts of audio and video metadata. These devices require solutions for storing different types of metadata that can be quickly searched and modified by the end-user. The DeviceSQL SDK allows fast development of procedures and functions that provide full control over stored data using cursors, loops and data structures. Faster GUI interactions are made possible through DeviceSQL’s outstanding query performance and use of iterative searches that can retrieve rows of data tailored to the output screen size. In addition, DeviceSQL supports both data compaction and data compression to minimize storage and I/O requirements.
Search Engines
Effective searches can be a complex task that must appear simple to end-users. The DeviceSQL SDK allows you to create responsive search capabilities for embedded devices, including searches with the capability to:
- Distribute searches across different devices, servers and host machines
- Perform multi-source searches across persistent storage, network storage, in-memory tables, remote sensors and streaming data
- Search across devices and media that might be temporarily connected or disconnected
Device-to-Device/Server Communications
Devices increasingly require interaction with other devices or servers. The DeviceSQL SDK contains the necessary building blocks for enabling inter- and intra-device communication. DeviceSQL data streams technology provides APIs to establish connections with remote applications and share data between them. Results obtained from any query can then be passed across the connection. A remote query tool packages this technology together into a single application that allows data from any DeviceSQL data file to be queried from any remote source.
Stream Data Processing
For applications that require real-time processing of stream data, such as dynamic data from sensors or network I/O, DeviceSQL provides advanced data stream processing capabilities. A MONITOR command iterates through streams of data, performs processing of that data (such as data aggregation), and provides an output stream that can be stored, perform specific actions or events, or fed into another monitor for additional processing. Data streams are extensively used by monitors to provide extremely fast inter- and intra-process communication that takes full advantage of multi-core processors.
Multiple Language Support
If your device application needs to support multiple UI language, DeviceSQL can simplify the task. Multiple language applications often need to store translated strings for a variety of languages so that an end-user can quickly switch to their preferred language. The DeviceSQL SDK provides Unicode support for storing multi-byte languages. Storage services have also been optimized for embedded devices by allowing language strings contained in one table to be quickly swapped in while swapping the other language out to conserve memory.