Perst is an
open source
Open source is source code that is made freely available for possible modification and redistribution. Products include permission to use the source code, design documents, or content of the product. The open-source model is a decentralized sof ...
, dual license,
object-oriented
Object-oriented programming (OOP) is a programming paradigm based on the concept of "objects", which can contain data and code. The data is in the form of fields (often known as attributes or ''properties''), and the code is in the form of pro ...
embedded database management system
In computing, a database is an organized collection of data stored and accessed electronically. Small databases can be stored on a file system, while large databases are hosted on computer clusters or cloud storage. The design of databases span ...
(
ODBMS
An object database or object-oriented database is a database management system in which information is represented in the form of objects as used in object-oriented programming. Object databases are different from relational databases which are ...
). Both the
Java
Java (; id, Jawa, ; jv, ꦗꦮ; su, ) is one of the Greater Sunda Islands in Indonesia. It is bordered by the Indian Ocean to the south and the Java Sea to the north. With a population of 151.6 million people, Java is the world's List ...
programming language
A programming language is a system of notation for writing computer programs. Most programming languages are text-based formal languages, but they may also be graphical. They are a kind of computer language.
The description of a programming ...
, and the
C# programming language versions are compact and Perst has been implemented on smart phones running the
Android
Android may refer to:
Science and technology
* Android (robot), a humanoid robot or synthetic organism designed to imitate a human
* Android (operating system), Google's mobile operating system
** Bugdroid, a Google mascot sometimes referred to ...
and
Windows Phone
Windows Phone (WP) is a discontinued family of mobile operating systems developed by Microsoft for smartphones as the replacement successor to Windows Mobile and Zune. Windows Phone featured a new user interface derived from the Metro design la ...
(WP7)
operating systems
An operating system (OS) is system software that manages computer hardware, software resources, and provides common services for computer programs.
Time-sharing operating systems schedule tasks for efficient use of the system and may also inc ...
.
History
Perst was launched in 2003, in Russia. It was designed to achieve high-performance by tightly integrating the database with the programming language: Perst directly stores data in the language objects. In 2006 McObject LLC, based in Issaquah, WA took over the development of Perst. It continues to offer free downloads and has added commercial license options.
Perst was first written in Java, and ported to C#. Although originally designed for desktop- and server-based software, Perst has also found usage in providing database management for mobile applications running on devices such as
smartphone
A smartphone is a portable computer device that combines mobile telephone and computing functions into one unit. They are distinguished from feature phones by their stronger hardware capabilities and extensive mobile operating systems, whic ...
s. These mobile devices typically have hardware constraints, with limited RAM and few CPU cycles available and non-standard (for database systems) operating requirements (such as support for
Java ME
Java Platform, Micro Edition or Java ME is a computing platform for development and deployment of portable code for embedded and mobile devices (micro-controllers, sensors, gateways, mobile phones, personal digital assistants, TV set-top ...
, or
Silverlight
Microsoft Silverlight is a discontinued application framework designed for writing and running rich web applications, similar to Adobe Inc., Adobe's Run time environment, runtime, Adobe Flash. A plugin for Silverlight is still available for a v ...
in the Windows Phone 7 mobile platform).
Versions
Currently available versions of Perst are Perst for
.NET, Perst for Java and Perst Lite. Perst for Java and Perst Lite are bundled in a single software distribution.
Perst for .NET supports C# versions 1.0 and 2.0 with the same source code. Support for specific C# 2.0 features (such as template classes) is provided at compile time. It is compatible with both standard and compact .NET frameworks, as well as Silverlight, and can operate on both Microsoft Windows Phone 7 (WP7) and
Windows Embedded Compact
Windows Embedded Compact, formerly Windows Embedded CE, Windows Powered and Windows CE, is an operating system subfamily developed by Microsoft as part of its Windows Embedded family of products.
Unlike Windows Embedded Standard, which is base ...
(formerly Windows CE).
Perst for Java supports
J2SE
Java Platform, Standard Edition (Java SE) is a computing platform for development and deployment of portable code for desktop and server environments. Java SE was formerly known as Java 2 Platform, Standard Edition (J2SE).
The platform uses Jav ...
/
J2EE versions 1.3 and 1.4, as well as J2SE/J2EE version 5. It is compatible with the Android smartphone environment.
Perst Lite is the Perst for Java implementation that runs on devices (such as BlackBerry smartphones) based on the Java ME (J2ME) mobile device platform. It has a
memory footprint
Memory footprint refers to the amount of main memory that a program uses or references while running.
The word footprint generally refers to the extent of physical dimensions that an object occupies, giving a sense of its size. In computing, the ...
approximately 30 percent smaller than standard Perst.
In detail
Size
The Perst engine’s size is 5,000 lines of
source code
In computing, source code, or simply code, is any collection of code, with or without comments, written using a human-readable programming language, usually as plain text. The source code of a program is specially designed to facilitate the wo ...
, and its
run time
Run(s) or RUN may refer to:
Places
* Run (island), one of the Banda Islands in Indonesia
* Run (stream), a stream in the Dutch province of North Brabant
People
* Run (rapper), Joseph Simmons, now known as "Reverend Run", from the hip-hop group ...
random-access memory
Random-access memory (RAM; ) is a form of computer memory that can be read and changed in any order, typically used to store working Data (computing), data and machine code. A Random access, random-access memory device allows data items to b ...
(RAM) needs range from 30K to 300K.]
Transactions
Perst
database transaction, transactions support the
ACID
In computer science, ACID ( atomicity, consistency, isolation, durability) is a set of properties of database transactions intended to guarantee data validity despite errors, power failures, and other mishaps. In the context of databases, a sequ ...
properties (atomicity, consistency, isolation, durability) with automatic recovery.
Querying
Perst provides a subset of
SQL for filtering elements of a
container class. For access to stored objects, Perst implements specialized collection classes including:
*
B-tree indexes
Index (or its plural form indices) may refer to:
Arts, entertainment, and media Fictional entities
* Index (''A Certain Magical Index''), a character in the light novel series ''A Certain Magical Index''
* The Index, an item on a Halo megastru ...
*
R-tree
R-trees are tree data structures used for spatial access methods, i.e., for indexing multi-dimensional information such as geographical coordinates, rectangles or polygons. The R-tree was proposed by Antonin Guttman in 1984 and has found sign ...
indexes
*
In-memory database
An in-memory database (IMDB, or main memory database system (MMDB) or memory resident database) is a database management system that primarily relies on main memory for computer data storage. It is contrasted with database management systems that e ...
container classes based on
T-tree
In computer science a T-tree is a type of binary tree data structure that is used by main memory database, main-memory databases, such as Datablitz, eXtremeDB, MySQL Cluster, TimesTen, Oracle TimesTen and MobileLite.
A T-tree is a Height-balan ...
s
*
''k''-d tree indexes
*
Radix tree
In computer science, a radix tree (also radix trie or compact prefix tree or compressed trie) is a data structure that represents a space-optimized trie (prefix tree) in which each node that is the only child is merged with its parent. The resul ...
(Patricia trie) indexes
*
Time series
In mathematics, a time series is a series of data points indexed (or listed or graphed) in time order. Most commonly, a time series is a sequence taken at successive equally spaced points in time. Thus it is a sequence of discrete-time data. Exa ...
class to deal efficiently with small fixed-size objects, such as stock quotes
* Specialized versions of collections for thick indexes (indexes with many duplicates) and bit indexes (keys with a restricted number of possible values)
Schema evolution
To facilitate changes to an existing database design (
database schema
The database schema is the structure of a database described in a formal language supported by the database management system (DBMS). The term "schema" refers to the organization of data as a blueprint of how the database is constructed (divide ...
), Perst implements “lazy” database schema evolution. When an object instance is loaded from the database, its class descriptor is compared with the format of the class in the application. If they are not identical, and the object is to be changed, then the object is converted and stored in the new format. With an “eager” schema evolution format changes would sweep through the database all at once.
Additional features
*
Garbage collection
Waste collection is a part of the process of waste management. It is the transfer of solid waste from the point of use and disposal to the point of treatment or landfill. Waste collection also includes the curbside collection of recyclable m ...
*
Multi-threaded
In computer science, a thread of execution is the smallest sequence of programmed instructions that can be managed independently by a scheduler, which is typically a part of the operating system. The implementation of threads and processes dif ...
* Support for
Language Integrated Query (LINQ)
*
XML
Extensible Markup Language (XML) is a markup language and file format for storing, transmitting, and reconstructing arbitrary data. It defines a set of rules for encoding documents in a format that is both human-readable and machine-readable. T ...
import/export
utilities
A public utility company (usually just utility) is an organization that maintains the infrastructure for a public service (often also providing a service using that infrastructure). Public utilities are subject to forms of public control and r ...
*
Master/slave replication support, with the option to run
read-only queries on slave nodes
* Full text search
* Integration with
AspectJ and JAssist
aspect-oriented programming tools
Example Implementations
ProScout is a demo midlet for using Perst Lite in the Java ME environment. The demonstration is of a discrete note-taking facility for a sports recruiter. Originally implemented for the
Blackberry
The blackberry is an edible fruit produced by many species in the genus ''Rubus'' in the family Rosaceae, hybrids among these species within the subgenus ''Rubus'', and hybrids between the subgenera ''Rubus'' and ''Idaeobatus''. The taxonomy of ...
, it has also been deployed on the
Nokia S60
The S60 Platform (formerly Series 60 User Interface) was a platform (computing), software platform for Mobile app, smartphones that runs on top of the Symbian operating system. It was created by Nokia based on the 'Pearl' user interface from S ...
.
McObject provides a demo app of a
CRM system using Perst for .NET, including a fully text-searchable contact database that runs in the desktop browser in Silverlight. Andy Wigley, of appamundi, ported this demo app to Windows Phone and described the project in a series of blog postings.
Perst - a database for Windows Phone 7 Silverlight
/ref>
Licensing
Users can redistribute and/or modify Perst under the terms of the GNU General Public License
The GNU General Public License (GNU GPL or simply GPL) is a series of widely used free software licenses that guarantee end users the Four Freedoms (Free software), four freedoms to run, study, share, and modify the software. The license was th ...
(version 2 or later) as published by the Free Software Foundation
The Free Software Foundation (FSF) is a 501(c)#501(c)(3), 501(c)(3) non-profit organization founded by Richard Stallman on October 4, 1985, to support the free software movement, with the organization's preference for software being distributed ...
. For individuals or organizations that cannot or do not wish to comply with the GPL, a commercial license is available from McObject.
References
External links
* {{official website, www.mcobject.com/perst at McObject
Perst - ProScout
pages on Java.Net Mobile & Embedded Community website.
Object-oriented database management systems
Free database management systems
Android (operating system) development software
Embedded databases