Perst
From Wikipedia, the free encyclopedia
Perst | |
---|---|
Developed by | McObject |
OS | Cross-platform |
Genre | ODBMS |
License | GPL or Commercial License |
Website | http://www.mcobject.com/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 therefore be used to develop Microsoft Windows CE and PocketPC applications.
Perst Lite is an implementation of Perst for Java for applications running on cell phones, PDAs and other resource-constrained devices based on Sun Microsystems’ Java Platform, Micro Edition (Java ME, formerly called Java 2, Micro Edition, or J2ME). Perst Lite is included in the Perst for Java distribution, and has a “code footprint” approximately 30 percent smaller than standard Perst.
Contents |
[edit] 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 from an unrelated codebase. Its a type of Embedded database.
[edit] 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.
[edit] Product features
[edit] Size
The Perst engine’s size is 5,000 lines of code, and its run-time RAM needs range from 30K to 300K.[1]
[edit] Transactions
Perst transactions support the ACID properties (Atomicity, Consistency, Isolation and Durability) with automatic recovery.[2]
[edit] Querying
Perst provides a subset of SQL for filtering elements of a collection class.[1] For access to persistent objects, Perst implements specialized collection classes including:
- B-tree indexes
- R-tree indexes
- Main-memory database Container classes based on T-trees
- Patricia Trie indexes
- TimeSeries 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)[2]
[edit] 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]
[edit] Additional Features
- Garbage collection[2]
- Multi-threaded[4]
- Detection of hanging references[2]
- XML import/export utilities[2]
- Master-slave replication support (with the option to run read-only queries on slave nodes)[5]
- Integration with AspectJ and JAssist aspect-oriented programming tools.[6]
[edit] 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
[edit] External links
- Perst information on McObject Web site
- Knizhnik, Konstantin and Gorine, Andrei. “Developing an object-oriented database for J2ME-based embedded devices”, Embedded.com.
|