Top Downloads News Highlights

eXtremeDB embedded DBMS proven compatible with AdaCore’s GNAT Pro Toolset for Ada programming language. Learn more.

McObject and partner Lucera Financial Infrastructures set records in first cloud-based STAC-M3 benchmark tests. Get the news.

New eXtremeDB embedded database version 6.0 boosts scalability, speed with distributed query processing. See the press release.

Singapore-based C3S joins McObject as distributor in Southeast Asia. Get details.

Printable Version

Perst embedded database specification

Supported Platforms

Product

Platform

Language

Perst Java

Java

Perst.Lite Java

  • J2SE 1.1.*
  • J2ME MIDP 2.0/CLDC 1.1

Java

Perst.Net

  • .NET Framework (1.0, 2.0, 3.0, 3.5, 4.0)
  • .NET Compact Framework (1.0, 2.0)
  • Silverlight
  • Windows Phone 7 (WP7)
  • Mono

C#, J#, Managed C++, VB.NET and all other managed .NET languages

Persistence

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

Transparency

  • Controlled recursive loading of objects (able to stop recursive loading for the particular 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

Flexibility

  • 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

Queries

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)

Collections

  • 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)

Transactions

Implementation

    Shadow objects

Features

  • 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

Performance

Caching

  • 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

  • Maximal number of objects: 2,000,000,000
  • Maximal 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

Scalability

  • 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)

Reliability

Recovery

Automatic recovery in case of application, system or hardware failure

Data replication

Asynchronous or synchronous data replication (master-slave model)

Backup

Online of offline backup

Data protection

Database encryption

Schema evolution

Change scalar field type

Automatic

Add/remove field

Automatic

Move/rename fields

By means of XML export/import

Custom transformations

Load/store object handles, database version information

Internationalization

Default string encoding

UTF-16

Explicit specification of encoding

Available

Custom comparator

Many Perst collections allow user to specify a comparator class

Advanced features

XML import/export

Available

Database encryption

Available

Database compression

Available

Portable database format

Available

Multiversioning

Available

Full text search

Available

Fast database upload on mobile devices

Available