logo slogan

Perst embedded database specifications

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)

  • .NET Compact Framework (1.0, 2.0)

  • 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