Select Page

Perst Embedded Database Specifications

Learn more about Perst open source, object oriented database specifications.

Supported Platforms

Perst Java
  • J2SE 1.4 and higher
  • J2EE 1.4 and higher
  • Android (Open Handset Alliance)
  • J2ME/CDC
Perst.Lite Java
  • J2SE 1.1.*
  • J2ME MIDP 2.0/CLDC 1.1
Perst.NET.NET Framework (1.0, 2.0, 3.0, 3.5, 4.0)C#, J#, Managed C++, VB.NET and all other managed .NET languages




  • Controlled recursive loading of objects (able to stop recursive loading for a specified class). All persistence-capable classes should implement IPersistent interface
  • Persistence by reachability
  • Fully transparent persistence using AOP tools such as AspectJ and JAssist
  • Almost transparent persistence for .NET classes using generator of derived class overriding virtual properties of the class
Supported Types
  • All primitive types
  • Strings
  • Arrays
  • Enums
  • .NET structs and embedded objects (objects with value semantic) in Java
  • GUID, decimal and DateTime types
  • BLOBs
  • Raw types (objects serialized using system or custom serializers)
  • Generic (parameterized) types
  • User-defined class loaders
  • User-defined memory allocators
  • Custom serializers
  • Custom full text search components (stemmer, parser, …)
  • Explicit or implicit memory allocation (garbage collection)
  • Abstract file interface to provide specific file implementations


Indexing algorithms
  • B-Tree
  • T-Tree (optimized for in-memory database)
  • R-Tree (spatial index)
  • Patricia Trie (prefix search)
  • KD-Tree (multidimensional index)
  • Time series (large number of fixed size objects with timestamp)
  • List
  • Map
  • Index (range search)
  • Field index (extracts keys from object)
  • Multidimensional index
  • Set
  • Scalable set (uses array for small set and B-Tree for large set)
  • Spatial index
  • Multidimensional index
Search kinds
  • Object-oriented using various search and iteration methods of Perst collection classes
  • Query-by-example (including range search) – implemented using multidimensional indexes
  • JSQL – object-oriented subset of SQL
  • Full text search: built-in full text search engine or integration with Lucene
  • Native queries and LINQ (search predicate specified in native code)



Shadow objects

  • ACID
  • No log file
  • Fast recovery
Locking granularity
  • File-level locking
  • Database-level locking
  • Fine grain (object-level) locking
Locking models
  • Pessimistic (resource is locked before access)
  • Optimistic (conflicts are detected at commit stage)
Isolation levels
  • Cooperative transactions
  • Repeatable reads
  • Serializable transactions


  • Object cache (LRU, weak, strong…)
  • Page pool
  • In-memory database
Performance benchmark
  • Leads category of Java/.NET object-oriented embedded database systems for storing and retrieving objects
  • Superior performance is documented in multiple benchmarks including PolePosition (asynchronous and ACID versions) and TestIndex.
Large volumes of data
  • Maximum number of objects: 2,000,000,000
  • Maximum database size: 1 terabyte
Small footprint
  • Library size from 250KB (Perst.Lite) to 500KB (Perst Java/.NET).
  • Proven on mobile phones with heap size limited to less than 1MB
  • High level of concurrency because of fine grain locking in pessimistic mode or use of optimistic transaction mode
  • Can split data between several physical devices
  • Possible to store BLOBs in separate storage locations, making object-caching more efficient
Load balancing
  • Master-slave replication provides read-only access to primary database by multiple replicas
  • Access to the same database permitted from multiple processes (JVMs)


RecoveryAutomatic recovery in case of application, system or hardware failure
Data replicationAsynchronous or synchronous data replication (master-slave model)
BackupOnline or offline backup
Data protectionDatabase encryption

Schema evolution

Change of scalar field typeAutomatic
Add/remove fieldAutomatic
Move/rename fieldsBy means of XML export/import
Custom transformationsLoad/store object handles, database version information


Default string encodingUTF-16
Explicit specification of encodingAvailable
Custom comparatorMany Perst collections allow user to specify a comparator class

These advanced features are also available:

  • Multiversioning

  • Full text search

  • Fast database upload on mobile devices

  • XML import/export

  • Database encryption

  • Database compression

  • Portable database format

Please email us at or call us at 425-888-8505 if you have any questions about Perst open source, object oriented database specifications.