Perst
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 assistants (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.
History
Perst was developed by Konstantin Knizhnik, a programmer living in Moscow, 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.
Licensing
Users can redistribute and/or modify Perst under the terms of the GNU General Public License 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.
Product features
Size
The Perst engine’s size is 5,000 lines of source code, and its run time random-access memory (RAM) needs range from 30K to 300K.[1]
Transactions
Perst transactions support the ACID properties (atomicity, consistency, isolation, durability) with automatic recovery.[2]
Querying
Perst provides a subset of SQL for filtering elements of a container class.[1] For access to persistent objects, Perst implements specialized collection classes including:
Schema evolution
To facilitate changes to an existing database design (database schema), 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.[3]
Additional features
Updates
July 2007
- Integration with Apache Lucene full-text search engine is added to Perst for Java
- Addition of multi-version concurrency control (fine-grain database locking)
- Automated updating of indexes when objects/rows of a table are inserted, edited or deleted[7]
January 2008
- McObject announces that Perst for Java has been verified as compatible with the Android mobile device platform backed by Google and the Open Handset Alliance
- Introduction of TestIndex, a demo application showing Perst and Android’s bundled SQLite database performing the same tasks side by side. TestIndex is offered as a free download, with complete source code, from McObject's website[8]
February 2008
- Support for kd-tree 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 Example (QBE) features)[9]
March 2008
- McObject releases ProScout, a demo MIDlet 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[10]
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 compression is added to Perst Lite, reducing stored data size by three to five times
- Support for Language Integrated Query (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.[11]
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 interface (GUI) classes, object request brokers, and industry-specific solutions; Unified Modeling Language (UML) tools that generate classes from wizards; and programs whose source code 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 systems on certain devices; or Java ME’s Record Management System (RMS) persistent storage mechanism); support for weak references; 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.[12]
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 management (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.[13]
References
- ^ a b http://www.mcobject.com/downloads/perstdatasheet.pdf
- ^ a b c d e perst: Home
- ^ Perst Open Source Object-Oriented Embedded Database for Java and .NET
- ^ Embedded Object Oriented Database Systems For Java And Csharp
- ^ Embedded.com - Real-time database support comes to embedded Java and C# designs
- ^ http://www.garret.ru/~knizhnik/eoodbms.html, http://www.garret.ru/~knizhnik/eoodbms.html#jassist
- ^ Embedded Database Gains Full-Text Search Via Apache Lucene, Perst: A Java Embedded Database blog, July, 2007
- ^ Perst Verified for Android Mobile Platform; Offered With TestIndex Performance Benchmark, Perst: A Java Embedded Database Blog, January, 2008
- ^ With KD Trees, McObject Sharpens its Edge in Java Database Indexes, Perst: A Java Embedded Database Blog, February, 2008
- ^ 'ProScout' Demo on java.net Illustrates Databases Use in Java ME Apps, Perst: A Java Embedded Database Blog, March, 2008
- ^ Perst Embedded Database Version 3.0 Adds Major New Features, Embedded Computing, June, 2008
- ^ McObject grants Perst persistence to all objects, SD Times, January 29, 2009
- ^ Embedded Database for Silverlight, Dr. Dobb's Journal, January 25, 2010
External links
- Official website 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.