I came across db4o OODB database and wondering how it compares to a traditional stack with an RDBMS or an ORM like Hibernate/EclipseLink. The application is a workflow system and will expand over time. Not sure if an OODB like db4o fits well. I never worked on an OODB so I can't tell. Any suggestions?
Using an Object Oriented Database (db4o) for a medium scale application
631 Views Asked by user6123723 At
2
There are 2 best solutions below
Related Questions in DATABASE
- Redirect inside java interceptor
- Spring RestTemplate passing the type of the response
- spring-integration-dsl-groovy-http return null when i use httpGet method
- Custom Spring annotation for request parameters
- Spring - configure Jboss Intros for xml with java config?
- HTTP Status 404 - Not Found in Spring 3.2.7
- AndroidAnnotations how to use setBearerAuth
- android I/O error: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found
- Show login dialog when not authenticated yet
- Spring Data Rest supporting json and xml
Related Questions in ORM
- Redirect inside java interceptor
- Spring RestTemplate passing the type of the response
- spring-integration-dsl-groovy-http return null when i use httpGet method
- Custom Spring annotation for request parameters
- Spring - configure Jboss Intros for xml with java config?
- HTTP Status 404 - Not Found in Spring 3.2.7
- AndroidAnnotations how to use setBearerAuth
- android I/O error: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found
- Show login dialog when not authenticated yet
- Spring Data Rest supporting json and xml
Related Questions in RDBMS
- Redirect inside java interceptor
- Spring RestTemplate passing the type of the response
- spring-integration-dsl-groovy-http return null when i use httpGet method
- Custom Spring annotation for request parameters
- Spring - configure Jboss Intros for xml with java config?
- HTTP Status 404 - Not Found in Spring 3.2.7
- AndroidAnnotations how to use setBearerAuth
- android I/O error: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found
- Show login dialog when not authenticated yet
- Spring Data Rest supporting json and xml
Related Questions in DB4O
- Redirect inside java interceptor
- Spring RestTemplate passing the type of the response
- spring-integration-dsl-groovy-http return null when i use httpGet method
- Custom Spring annotation for request parameters
- Spring - configure Jboss Intros for xml with java config?
- HTTP Status 404 - Not Found in Spring 3.2.7
- AndroidAnnotations how to use setBearerAuth
- android I/O error: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found
- Show login dialog when not authenticated yet
- Spring Data Rest supporting json and xml
Related Questions in OODB
- Redirect inside java interceptor
- Spring RestTemplate passing the type of the response
- spring-integration-dsl-groovy-http return null when i use httpGet method
- Custom Spring annotation for request parameters
- Spring - configure Jboss Intros for xml with java config?
- HTTP Status 404 - Not Found in Spring 3.2.7
- AndroidAnnotations how to use setBearerAuth
- android I/O error: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found
- Show login dialog when not authenticated yet
- Spring Data Rest supporting json and xml
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
Popular # Hahtags
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
Hi! Here is some information based on my own experiences with DB4O.
There are plenty of choices these days for so called OODB's (Object Oriented Databases). Instead of writing a list of these similar solutions, I can tell you how it works as opposed to using a regular RDBMS, because that was your actual question.
You can read a pretty good comparison of some of the most used systems over at Wikipedia: Comparison of OODB's
If you use an ORM persistent methology with a tool like NHibernate, you're giving yourself an easier time when it comes to querying and updating the database behind the persisted objects. You could think of a tool like NHibernate as a "hybrid" solution, while with pure Object Databases like the one you mentioned (one I've done some work with myself) DB4O from Versant / Actian you can choose to work directly with a file on the file-system or opt for a Client/Server kinda solution. DB4O supports both.
The most common scenario would probably be the former mentioned scenario, where you would use a file on the local system to keep persisted copies of your application's objects.
DB4O now exists as a free for non-commercial use product and has both a Java and a .Net version. They both work the same, and from my personal experience they work pretty good for anything from simple 2-10 Mega-Byte databases to files weighing in at around 10-12 GB's.
As a rule of thumb, according to the DB4O developers, if you expect your application's database needs to be larger than around 15-16 GigaBytes, you should consider other approaches.
DB4O is single threaded, and therefor requires a rather speedy CPU Core to handle large amounts of transactions. But, it manages to run really well considering this obvious limitation.
DB4O is easy to expand and should cover most needs for an Object Oriented Database.
Here is a short example that shows how easy it is to connect to and write a series of custom Objects to the DB taken from one of my own projects: (DbPath is a string constant)
So as you can see there is a quite simple way to create a new database and populating it with objects, without needing any form of serialization code in the class definitions themselves.
There are support for many of the traditional RDBMS functions in many of the OODB's and in some scenarios the overhead of implementing a regular SQL database is way bigger than simply embedding the database directly into the source.
Hope this clears things up a bit.
Chris