120 likes | 249 Views
Development Approach. Traditional DBMS Developed decade ago To handle large amount of data Evolved over time Full of layers/functionalities coupled with monolithic engines Embedded DBMS are built Slimmed down version of large DBMS Ground up
E N D
Development Approach • Traditional DBMS • Developed decade ago • To handle large amount of data • Evolved over time • Full of layers/functionalities coupled with monolithic engines • Embedded DBMS are built • Slimmed down version of large DBMS • Ground up • We reject policy of slimmed down version for embedded DBMS
Introduction • Basic database management system • Simple access API: put, get, delete of (key, value) pairs • All data in one „table“, no columns → design for extensibility • Using feature-oriented programming (FC++) • Build software by composing features that are expressed in a modular way • Feature: basic block of user-relevant functionality • Platform • Windows • NutOS (BTnode) • Linux/Any platform supporting C++
Why FOP in embedded domain • To support • Small footprint • Multi-platform support • To manage • Complexity • To achieve • Re-configurability
System Characteristics • Feature-oriented implementation (FC++) • Highly re-configurable • Low complexity • Reduced footprint • Multi-platform support • API based access
Embedded System: BTnode • Developed at ETH Zurich • Microcontroller: Atmel ATmega 128L (8 MHz @ 8 MIPS) • Memories: 64 +180 Kbyte RAM, 128 Kbyte FLASH ROM, 4 Kbyte EEPROM • Support for bluetooth and low-power radio • PC connectivity via Serial/Com over USB • Terminal input/output via standard C functions printf/scanf
High-Level System Design • OS-Abstraction Layer • Hides platform dependent implementation • Buffer Layer • Page buffering • Management of used and free pages • Access/Storage Layer • Provides API based access • Un-indexed sorted file implementation • B+-Tree Index • Page Implementation
Binary Size Results • Windows: • Un-indexed: Binary size = 17 KB • Indexed: Binary size = 19 KB • Linux: • Un-indexed: Binary size = 47 KB • Indexed: Binary size = 63 KB • NutOS (BTnode): • Un-indexed: Binary size = 40 KB • Indexed: Binary size = 41 KB
Problems Identified • Lack of support for C++ usage in embedded environment • Existing sample codes for BTnode only available for C • Different behaviour of code in embedded environment and on different operating systems • Consideration of embedded environment constructs in code • Limited stack size of BTnode
Current State • API based access • Supports B+-Tree index • Single table database • Currently supports three platforms • Windows • Linux • NutOS (BTnode) • Records stored as key-value pairs • Alternative page replacement strategies • LFU • LRU
Future Directions • Development in progress • Multiple tables • Multiple columns • Transaction manager • Feature-oriented query processing support • Next presentation by Sagar Sunkle • Planned extensions • Features for distributed DBMS • Recovery manager • More Indexes • Alternative implementations