# eXtremeDB Embedded User's Guide

> For application developers new to eXtremeDB we recommend reading the fundamental concepts and the Getting Started topics, then building and running the SDK samples to become familiar with eXtremeDB essentials and the APIs appropriate for your development environment. The Product Overview and Objectives pages provide a detailed introduction to eXtremeDB features and extension modules.

> The following topics explain general principles of eXtremeDB application design and implementation:

> Database schema | Defining the database schema
> Runtime Control | Starting and terminating the eXtremeDB runtime; setting runtime options and fatal error handler
> Database Control | Creating and closing, connecting to and disconnecting from databases; monitoring and extending memory, backing up and loading database snapshots
> Database Object Interfaces | Creating and modifying database objects
> Creating Class Relationships | Implementation techniques for connecting (joining) database classes
> Indexes and Cursors | Defining and using indexes for optimal data access and managing cursors representing selections of database objects
> Search Methods | Implementing lookups of individual database objects and searches for selections of objects
> Events and TTL | Database event triggers and automatic deletion of obsolete database objects through the Time-To-Live (TTL) feature
> Concurrency and Transaction Control | Strategies and implementation details for managing database transactions and concurrency
> Database Backup and Restore | Incremental online backup and restore and file based backup of in-memory and persistent databases
> Data Export and Import | Backup and restore, saving and loading database snapshots, metadata and dictionaries, XML export / import
> Transaction Logging | Using Transaction Logging for persistence, recovery and "Data Relay"
> Vertical_Data_Storage | Using the sequence data type to store data in vertical or columnar form
> Network_Communications | Managing network connections and security
> Monitoring Storage | Database statistics interfaces and monitoring storage space consumption
> Persistent Database IO | How eXtremeDB manages cache and persistent media I/O operations
> Transaction Log Files | Setting transaction log file type and parameters
> Error Handling | Return status and error codes and how to handle fatal and non-fatal runtime errors
> Tracing_Debugging_Framework | Output tracing and debugging information to a log file
> Database Recovery | Database recovery from failed processes
> Database Encryption | Encrypting database memory
> Database Compression | Using data compression techniques
> Database Design and Programming Considerations | Database design considerations with respect to eXtremeDB
> Programming Examples | Example code illustrating the use of eXtremeDB APIs
> Shared Memory Applications | Use of databases in shared memory for multi-process applications
> Uniform Database Access | Uniform Database Access (UDA) - a predefined generic navigational API to access eXtremeDB databases
> Database Browser | An HTML-based database browser / editor that can be used to examine any eXtremeDB database.
> Optimizations | Techniques and tips for optimizing eXtremeDB Embedded database application performance