I am trying to finalize on my application's JDO and ObjectDB archieture. I have done documentation survey (reading JDO books, studying ObjectDB's documents and forum) and have designed what I think is the best architecture for my particular application usage model.
I do have several questions that, if answered, would help me validate, optimize, and finalize my architectural design. In the spirit of sharing the forum wisdom with all, I will break my questions into separate topic threads, but to answer the questions, an understanding of the proposed architecture (i.e. a proper context) is required. So, I will explain my architecture in this forum thread and have my other threads refer to this architecture for their context.
* I attached an architecture diagram that summarizes the approach.
* I attached my objectdb.conf file that shows the configuration option settings I chose.
* My server is running a Java SE application (not a web server) using ObjectDB in embedded mode using JDO (not JPA).
* Database access needs to be super fast, like microsecond times.
* The application has many databases. Each database will be represented by a single PersistenceManagerFactory and a single PersistenceManager.
* All connections to the server will be directed to the requested database. This means all same database connections share that database's single PersistenceManager, which is set for multiThreaded=true.
* There are a limited number of threads to maximize available CPU power but minimize thread context switching overhead. Each thread has queues for the database requests.
* Probably, all persisted instances will be root objects with unique application IDs (StringIdentity, case sensitive). PersistenceManager.getObjectById(myApplicationId, true) may be all that is needed, so no overhead for extend, queries, or indexes.
* Persisted instances mainly contain arrays (or ArrayLists) and embedded objects.
* A big benefit for my application is to minimize access to the disk, which is an Amazon EBS provisioned disk that is optimally accessed at 256KB sized IO requests.
The questions will now be asked in other threads.