Perst is a compact embedded database, with a core consisting of 5,000 lines of code that supports transactions with the ACID (Atomic, Consistent, Isolated and Durable) properties, and expands developers' coding efficiency by making Java objects as easy to use as possible. Perst stores data directly in Java objects, eliminating the need for data-packing or unpacking code to map between the application's data model and the database's data model, as is required by relational and object-relational databases.
For example, for access to objects, Perst implements specialized collection classes optimized for different data layouts and access patterns, including:
- Classic B-Tree implementation
- R-tree indexes for spatially-oriented applications such as GIS and navigation
- Main-memory database containers, based on T-Tree indexes, optimized for real-time memory-only access
- Patricia Trie index, which speeds searches in networking and telephony applications
- TimeSeries class to efficiently deal with small fixed-size objects
- Specialized versions of collections for thick indices (indices with many duplicates), and bit indices (keys with a restricted number of possible values).
In addition to its core functionality, Perst provides garbage collection, detection of hanging references, automatic schema evolution, XML import/export utilities, master-slave replication support (with the option to run read-only queries on slave nodes), an SQL subset to filter elements of any collection, and integration with the AspectJ and JAssist AOP tools.