Perst
Encyclopedia
Perst is an open source
, dual license, object-oriented
embedded database management system
(ODBMS
), available in two implementations: one that is developed entirely in the Java
programming language
, and another developed in the C# language (for applications that will run within the Microsoft .NET Framework
).
Perst for .NET supports standard and compact
.NET frameworks and can thus be used to develop Microsoft Windows CE
and Pocket PC
applications.
Perst Lite is an implementation of Perst for Java for applications running on cell phones, personal digital assistant
s (PDAs) and other resource-constrained devices based on Sun Microsystems
’ Java ME
. Perst Lite is included in the Perst for Java distribution, and has a memory footprint
approximately 30 percent smaller than standard Perst.
, Russia
, and released in 2003. In 2006, Knizhnik transferred distribution and commercial licensing of Perst to McObject, a for-profit company in Issaquah, Washington, United States
. McObject develops and maintains the system, selling technical support
and service contracts, as well as proprietary-licensed
copies of Perst. Knizhnik is also still closely involved in developing Perst.
McObject develops another DBMS, eXtremeDB, which is an embedded database
from an unrelated codebase
.
as published by the Free Software Foundation
; either version 2 of the License, or any later version. For individuals or organizations that cannot or do not wish to comply with the GPL, a commercial license for this software may be purchased from McObject.
, and its run time random-access memory
(RAM) needs range from 30K to 300K.
support the ACID
properties (atomicity, consistency, isolation, durability) with automatic recovery.
for filtering elements of a container class
. For access to persistent
objects, Perst implements specialized collection classes including:
), 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.
Open-source software
Open-source software is computer software that is available in source code form: the source code and certain other rights normally reserved for copyright holders are provided under a software license that permits users to study, change, improve and at times also to distribute the software.Open...
, dual license, object-oriented
Object-oriented programming
Object-oriented programming is a programming paradigm using "objects" – data structures consisting of data fields and methods together with their interactions – to design applications and computer programs. Programming techniques may include features such as data abstraction,...
embedded database management system
Database management system
A database management system is a software package with computer programs that control the creation, maintenance, and use of a database. It allows organizations to conveniently develop databases for various applications by database administrators and other specialists. A database is an integrated...
(ODBMS
Object database
An object database is a database management system in which information is represented in the form of objects as used in object-oriented programming...
), available in two implementations: one that is developed entirely in the Java
Java (programming language)
Java is a programming language originally developed by James Gosling at Sun Microsystems and released in 1995 as a core component of Sun Microsystems' Java platform. The language derives much of its syntax from C and C++ but has a simpler object model and fewer low-level facilities...
programming language
Programming language
A programming language is an artificial language designed to communicate instructions to a machine, particularly a computer. Programming languages can be used to create programs that control the behavior of a machine and/or to express algorithms precisely....
, and another developed in the C# language (for applications that will run within the Microsoft .NET Framework
.NET Framework
The .NET Framework is a software framework that runs primarily on Microsoft Windows. It includes a large library and supports several programming languages which allows language interoperability...
).
Perst for .NET supports standard and compact
.NET Compact Framework
The Microsoft .NET Compact Framework is a version of the .NET Framework that is designed to run on resource constrained mobile/embedded devices such as personal digital assistants , mobile phones, factory controllers, set-top boxes, etc...
.NET frameworks and can thus be used to develop Microsoft Windows CE
Windows CE
Microsoft Windows CE is an operating system developed by Microsoft for embedded systems. Windows CE is a distinct operating system and kernel, rather than a trimmed-down version of desktop Windows...
and Pocket PC
Pocket PC
A Pocket PC is also known by Microsoft as a 'Windows Mobile Classic device'. It is a hardware specification for a handheld-sized computer, personal digital assistant , that runs the Microsoft 'Windows Mobile Classic' operating system...
applications.
Perst Lite is an implementation of Perst for Java for applications running on cell phones, personal digital assistant
Personal digital assistant
A personal digital assistant , also known as a palmtop computer, or personal data assistant, is a mobile device that functions as a personal information manager. Current PDAs often have the ability to connect to the Internet...
s (PDAs) and other resource-constrained devices based on Sun Microsystems
Sun Microsystems
Sun Microsystems, Inc. was a company that sold :computers, computer components, :computer software, and :information technology services. Sun was founded on February 24, 1982...
’ Java ME
Java Platform, Micro Edition
Java Platform, Micro Edition, or Java ME, is a Java platform designed for embedded systems . Target devices range from industrial controls to mobile phones and set-top boxes...
. Perst Lite is included in the Perst for Java distribution, and has a memory footprint
Memory footprint
Memory footprint refers to the amount of main memory that a program uses or references while running.This includes all sorts of active memory regions like code, static data sections , heap, as well as all the stacks, plus memory required to hold any additional data structures, such as symbol...
approximately 30 percent smaller than standard Perst.
History
Perst was developed by Konstantin Knizhnik, a programmer living in MoscowMoscow
Moscow is the capital, the most populous city, and the most populous federal subject of Russia. The city is a major political, economic, cultural, scientific, religious, financial, educational, and transportation centre of Russia and the continent...
, Russia
Russia
Russia or , officially known as both Russia and the Russian Federation , is a country in northern Eurasia. It is a federal semi-presidential republic, comprising 83 federal subjects...
, and released in 2003. In 2006, Knizhnik transferred distribution and commercial licensing of Perst to McObject, a for-profit company in Issaquah, Washington, United States
United States
The United States of America is a federal constitutional republic comprising fifty states and a federal district...
. McObject develops and maintains the system, selling technical support
Technical support
Technical support or tech support refers to a range of services by which enterprises provide assistance to users of technology products such as mobile phones, televisions, computers, software products or other electronic or mechanical goods...
and service contracts, as well as proprietary-licensed
Proprietary software
Proprietary software is computer software licensed under exclusive legal right of the copyright holder. The licensee is given the right to use the software under certain conditions, while restricted from other uses, such as modification, further distribution, or reverse engineering.Complementary...
copies of Perst. Knizhnik is also still closely involved in developing Perst.
McObject develops another DBMS, eXtremeDB, which is an embedded database
Embedded Database
An embedded database system is a database management system which is tightly integrated with an application software that requires access to stored data, such that the database system is “hidden” from the application’s end-user and requires little or no ongoing maintenance...
from an unrelated codebase
Codebase
The term codebase, or code base, is used in software development to mean the whole collection of source code used to build a particular application or component. Typically, the codebase includes only human-written source code files, and not, e.g., source code files generated by other tools or...
.
Licensing
Users can redistribute and/or modify Perst under the terms of the GNU General Public LicenseGNU General Public License
The GNU General Public License is the most widely used free software license, originally written by Richard Stallman for the GNU Project....
as published by the Free Software Foundation
Free Software Foundation
The Free Software Foundation is a non-profit corporation founded by Richard Stallman on 4 October 1985 to support the free software movement, a copyleft-based movement which aims to promote the universal freedom to create, distribute and modify computer software...
; either version 2 of the License, or any later version. For individuals or organizations that cannot or do not wish to comply with the GPL, a commercial license for this software may be purchased from McObject.
Size
The Perst engine’s size is 5,000 lines of source codeSource code
In computer science, source code is text written using the format and syntax of the programming language that it is being written in. Such a language is specially designed to facilitate the work of computer programmers, who specify the actions to be performed by a computer mostly by writing source...
, and its run time random-access memory
Random-access memory
Random access memory is a form of computer data storage. Today, it takes the form of integrated circuits that allow stored data to be accessed in any order with a worst case performance of constant time. Strictly speaking, modern types of DRAM are therefore not random access, as data is read in...
(RAM) needs range from 30K to 300K.
Transactions
Perst transactionsDatabase transaction
A transaction comprises a unit of work performed within a database management system against a database, and treated in a coherent and reliable way independent of other transactions...
support the ACID
ACID
In computer science, ACID is a set of properties that guarantee database transactions are processed reliably. In the context of databases, a single logical operation on the data is called a transaction...
properties (atomicity, consistency, isolation, durability) with automatic recovery.
Querying
Perst provides a subset of SQLSQL
SQL is a programming language designed for managing data in relational database management systems ....
for filtering elements of a container class
Container (data structure)
In computer science, a container is a class, a data structure, or an abstract data type whose instances are collections of other objects. In other words; they are used for storing objects in an organized way following specific access rules...
. For access to persistent
Persistence (computer science)
Persistence in computer science refers to the characteristic of state that outlives the process that created it. Without this capability, state would only exist in RAM, and would be lost when this RAM loses power, such as a computer shutdown....
objects, Perst implements specialized collection classes including:
- B-treeB-treeIn computer science, a B-tree is a tree data structure that keeps data sorted and allows searches, sequential access, insertions, and deletions in logarithmic time. The B-tree is a generalization of a binary search tree in that a node can have more than two children...
indexesIndex (database)A database index is a data structure that improves the speed of data retrieval operations on a database table at the cost of slower writes and increased storage space... - R-treeR-treeR-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 significant use in both research and real-world applications...
indexes - In-memory database container classesContainer (data structure)In computer science, a container is a class, a data structure, or an abstract data type whose instances are collections of other objects. In other words; they are used for storing objects in an organized way following specific access rules...
based on T-treeT-treeIn computer science a T-tree is a type of binary treedata structure that is used by main-memory databases, such asDatablitz, eXtremeDB, MySQL Cluster, Oracle TimesTen and MobileLite....
s - Radix treeRadix treeIn computer science, a radix tree is a space-optimized trie data structure where each node with only one child is merged with its child. The result is that every internal node has at least two children. Unlike in regular tries, edges can be labeled with sequences of characters as well as single...
indexes - Time seriesTime seriesIn statistics, signal processing, econometrics and mathematical finance, a time series is a sequence of data points, measured typically at successive times spaced at uniform time intervals. Examples of time series are the daily closing value of the Dow Jones index or the annual flow volume of the...
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 schemaLogical schema
A Logical Schema is a data model of a specific problem domain expressed in terms of a particular data management technology. Without being specific to a particular database management product, it is in terms of either relational tables and columns, object-oriented classes, or XML tags...
), 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.
Additional features
- Garbage collectionGarbage collection (computer science)In computer science, garbage collection is a form of automatic memory management. The garbage collector, or just collector, attempts to reclaim garbage, or memory occupied by objects that are no longer in use by the program...
- Multi-threadedThread (computer science)In computer science, a thread of execution is the smallest unit of processing that can be scheduled by an operating system. The implementation of threads and processes differs from one operating system to another, but in most cases, a thread is contained inside a process...
- Detection of hanging references
- XMLXMLExtensible Markup Language is a set of rules for encoding documents in machine-readable form. It is defined in the XML 1.0 Specification produced by the W3C, and several other related specifications, all gratis open standards....
import/export utilitiesUtility softwareUtility software is system software designed to help analyze, configure, optimize or maintain a computer. A single piece of utility software is usually called a utility or tool.... - Master/slave replicationReplication (computer science)Replication is the process of sharing information so as to ensure consistency between redundant resources, such as software or hardware components, to improve reliability, fault-tolerance, or accessibility. It could be data replication if the same data is stored on multiple storage devices, or...
support, with the option to run read-only queries on slave nodes - Integration with AspectJAspectJAspectJ is an aspect-oriented extension created at PARC for the Java programming language. It is available in Eclipse Foundation open-source projects, both stand-alone and integrated into Eclipse. AspectJ has become the widely-used de-facto standard for AOP by emphasizing simplicity and usability...
and JAssist aspect-oriented programmingAspect-oriented programmingIn computing, aspect-oriented programming is a programming paradigm which aims to increase modularity by allowing the separation of cross-cutting concerns...
tools
July 2007
- Integration with Apache LuceneLuceneApache Lucene is a free/open source information retrieval software library, originally created in Java by Doug Cutting. It is supported by the Apache Software Foundation and is released under the Apache Software License....
full-text search engine is added to Perst for Java - Addition of multi-version concurrency control (fine-grain database lockingLock (database)A lock is used when multiple users need to access a database concurrently. This prevents data from being corrupted or invalidated when multiple users try to write to the database. Any single user can only modify those database records to which they have applied a lock that gives them exclusive...
) - Automated updating of indexes when objects/rows of a table are inserted, edited or deleted
January 2008
- McObject announces that Perst for Java has been verified as compatible with the Android mobile device platform backed by GoogleGoogleGoogle Inc. is an American multinational public corporation invested in Internet search, cloud computing, and advertising technologies. Google hosts and develops a number of Internet-based services and products, and generates profit primarily from advertising through its AdWords program...
and the Open Handset AllianceOpen Handset AllianceThe Open Handset Alliance is a consortium of 84 firms to develop open standards for mobile devices. Member firms include Google, HTC, Sony, Dell, Intel, Motorola, Qualcomm, Texas Instruments, Samsung Electronics, LG Electronics, T-Mobile, Nvidia, and Wind River Systems.-History:The OHA was... - Introduction of TestIndex, a demo application showing Perst and Android’s bundled SQLiteSQLiteSQLite is an ACID-compliant embedded relational database management system contained in a relatively small C programming library. The source code for SQLite is in the public domain and implements most of the SQL standard...
database performing the same tasks side by side. TestIndex is offered as a free download, with complete source code, from McObject's website
February 2008
- Support for kd-treeKd-treeIn computer science, a k-d tree is a space-partitioning data structure for organizing points in a k-dimensional space. k-d trees are a useful data structure for several applications, such as searches involving a multidimensional search key...
or k-dimensional tree, a database index with uses in spatial and pattern-matching applications, is added. Kd-trees are useful in handling multi-dimensional data, and in applications where query predicates contain various combinations of object fields (for example, to construct Query by ExampleQuery by ExampleQuery by Example is a database query language for relational databases. It was devised by Moshé M. Zloof at IBM Research during the mid 1970s, in parallel to the development of SQL. It is the first graphical query language, using visual tables where the user would enter commands, example elements...
(QBE) features)
March 2008
- McObject releases ProScout, a demo MIDletMIDletA MIDlet is an application that uses the Mobile Information Device Profile of the Connected Limited Device Configuration for the Java ME environment...
incorporating Perst Lite (for Java ME), as a learning tool. Java.Net Mobile & Embedded Community establishes dedicated pages to offer ProScout with complete source code, screenshots, Getting Started instructions, a file explaining database features used within ProScout, and links to technical articles and database resources
June 2008
- Perst gains built-in full-text search (no longer dependent on Apache Lucene). McObject states benefit as greater efficiency compared to using Lucene, and a smaller footprint (the Lucene .jar file is several hundred kilobytes in size, while including search capability in Perst adds just a few kilobytes).
- On-the-fly data compressionData compressionIn computer science and information theory, data compression, source coding or bit-rate reduction is the process of encoding information using fewer bits than the original representation would use....
is added to Perst Lite, reducing stored data size by three to five times - Support for Language Integrated QueryLanguage Integrated QueryLanguage Integrated Query is a Microsoft .NET Framework component that adds native data querying capabilities to .NET languages, although ports exist for Java, PHP and JavaScript....
(LINQ) is added to Perst for .NET - New 38-page Perst Introduction and Tutorial is published
- Perst for .NET’s API guide is updated to MSDN-like formatting familiar to .NET programmers. The new documentation, generated using Visual Studio’s SandCastle tool, consists of a single Windows help file, which saves space compared to the earlier approach using many HTML pages.
January 2009
- In version 4.0, Perst gains the ability to add persistence to "foreign" objects, or objects not derived from its Persistent class. This enables Perst to be added as storage for existing applications including commercial or open source class frameworks, including graphical user interfaceGraphical user interfaceIn computing, a graphical user interface is a type of user interface that allows users to interact with electronic devices with images rather than text commands. GUIs can be used in computers, hand-held devices such as MP3 players, portable media players or gaming devices, household appliances and...
(GUI) classes, object request brokerObject request brokerIn distributed computing, an object request broker is a piece of middleware software that allows programmers to make program calls from one computer to another via a network...
s, and industry-specific solutions; Unified Modeling LanguageUnified Modeling LanguageUnified Modeling Language is a standardized general-purpose modeling language in the field of object-oriented software engineering. The standard is managed, and was created, by the Object Management Group...
(UML) tools that generate classes from wizardsWizard (software)A software wizard or setup assistant is a user interface type that presents a user with a sequence of dialog boxes that lead the user through a series of well-defined steps. Tasks that are complex, infrequently performed, or unfamiliar may be easier to perform using a wizard...
; and programs whose source codeSource codeIn computer science, source code is text written using the format and syntax of the programming language that it is being written in. Such a language is specially designed to facilitate the work of computer programmers, who specify the actions to be performed by a computer mostly by writing source...
is not available. - New features in Perst Lite include support for full-text search; automatic determination of storage type (JSR-75, which allows access to file systemsFile systemA file system is a means to organize data expected to be retained after a program terminates by providing procedures to store, retrieve and update data, as well as manage the available space on the device which contain it. A file system organizes data in an efficient manner and is tuned to the...
on certain devices; or Java ME’s Record Management SystemRecord Management SystemRecord Management System , is both an implementation and API for persistent storage on Java ME devices, such as cell phones."Record Store" is used to store the Data:RecordEnumeration ,RecordComparator,...
(RMS) persistent storage mechanism); support for weak referencesWeak referenceIn computer programming, a weak reference is a reference that does not protect the referenced object from collection by a garbage collector . An object referenced only by weak references is considered unreachable and so may be collected at any time...
; and improved integration with the EclipseME development framework. - Perst for Java distribution (including Perst and Perst Lite embedded databases) adds an example application that builds on the database's full-text search capability to provide a local search engine for contact management files on a cell phone or other mobile device. The software is available as TestIndex for Java ME (Perst Lite) and as ContactsIndex for Android.
February 2010
- McObject announced Perst for .NET's support for Microsoft Silverlight technology, including storage of Perst databases on users' local file systems. To demonstrate the capability, a Silverlight demo implementing a Web-based customer relationship managementCustomer relationship managementCustomer relationship management is a widely implemented strategy for managing a company’s interactions with customers, clients and sales prospects. It involves using technology to organize, automate, and synchronize business processes—principally sales activities, but also those for marketing,...
(CRM) application is bundled with Perst for .NET. The demo includes complete source code, and can also be launched and downloaded from a dedicated page on McObject's website.
External links
at McObject- Perst download page
- Knizhnik, Konstantin and Gorine, Andrei. “Developing an object-oriented database for J2ME-based embedded devices”, Embedded.com, December 14, 2006.
- Knizhnik, Konstantin. "Porting a Java ME Midlet Between Blackberry and Nokia S40 and S60 Devices", Embedded.com, October 14, 2008.
- Perst - ProScout pages on Java.Net Mobile & Embedded Community website.
- Barr, Terrence. Databases for Java ME, follow up: Check out the new ProScout sample app, Terrence Barr's Blog, March 2, 2008.