This page is for design of a scalable back end for a JDO front end using the JDO 1.0 Reference Implementation front end as a starting point. This is in the svn repository in the fostore20 project.
There are several challenges in JDO backend design that are illustrated by FOStore. The first is that FOStore back end uses Netbeans MDR repository, which is an open source key/value datastore but has no query capability. Another challenge in working with FOStore is the lack of readily available documentation, and advanced features found in normal production grade databases, like data store management tools. FOStore is simply not intended to be used as a production database.
But, the design approach and feature set of FOStore is an important influence on this project, and will serve us well. To begin with, it will be very useful to have an object data store written in Java that JDO can interface to. Second the FOStore project provides some useful design patterns. On other fronts, the NIO API and other features of Java as of November 2007 have improved performance of the Java VM also make this project a reasonable idea.
The development of the ScalableBackend will be done under the Agile development methodology. It is beyond the scope of this Wiki to explain Agile development methodology itself, so it is strongly suggested you research Agile and familiarize yourself with it.
As part of the design process the following activities will take place:
- a thorough review of the current and past literature on data base and data store design (see ScalableBackEndLiterature)
- a review of the current Java VM specification
- a review of the J2ME specification to determine if a J2ME version of the ScalableBackend is appropriate
Here are some key design features that the end product will have:
- written in Java
- data store management and monitoring tools
- a stabilized Java API useful for building clients that connect to the data store
- tool sets and/or APIs that facilitate interoperability using CORBA and .NET
- a test suite that generates benchmarks for the data store's performance
- manuals, tutorials, and user guides
- deployment and installation using Java Webstart
- remote management tools
- ScalableBackEndLiterature - bibliography of all literature researched for this project.
This is a list of projects that have source code/implementations that might help this project:
- http://xml.apache.org/xindice/dev/guide-internals.html#3.2.+The+B-Tree+storage+format - for b-tree storage implementation
- http://sourceforge.net/projects/sanchez-gtm/ - for b-tree storage implementation
- http://www.postgresql.org - for b-tree storage implementation
- http://www.mysql.org - for b-tree storage implementation
- http://www.openemed.org - for a data storage implementation that utilizes qualified data to store objects.