Top Downloads News Highlights

eXtremeDB In-Memory Database System paired with ThreadX RTOS in technology alliance for deeply embedded systems. Get details.

McObject CEO Steve Graves chosen as Flash Memory Summit speaker. Learn more.

Benchmark: McObject & EMC technologies combine to boost in-memory database speed, durability & scalability. Read the
press release.

Compass-EOS integrates eXtremeDB High Availability DBMS in breakthrough photonics-based core router. Learn more.

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