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
641 views Asked by user6123723 At
2
There are 2 answers
Related Questions in DATABASE
- How to add the dynamic new rows from my registration form in my database?
- How to store a date/time in sqlite (or something similar to a date)
- Problem with add new attribute in table with BOTO3 on python
- When an E-R attribute should be perceived as a relationship attribute or as an entity set attribute?
- SQLAlchemy: efficient relationship loading in 3-way many-to-many relationship
- Cannot connect to Postgres Database when running Quarkus Tests with Gitlab ci
- Local or remote database with react-native?
- I want to edit a specific row in database
- How to enter data in mongodb array at specific position such that if there is only 2 data in array and I want to insert at 5, then rest data is null
- Open Web Library
- database login.py and register.py error showing 404 file not found and doesn't work
- SQL71561: SqlComputedColumn: When column selected
- Liquibase as SaaS To Configure Multiple Database as Dynamic
- Updated max input vars but table still shows error
- Spring does not map set of roles
Related Questions in ORM
- SQL schema for a fill-in-the-blank exercise
- ERROR: column "country" is of type text[] but expression is of type record (SQLSTATE 42804)
- JPA Hibernate OneToOne Mapping
- query in objects with django orm with a containing sentence
- peewee: SQLite - peewee Create() is forcing integer in PrimaryKeyField if leading character is numeric (even if there is a non-numeric in the middle)
- PHP ORM DOCTRINE
- Error appending to array oOnConflictUpdaste using Drizzle ORM (Postgresql)
- Sequelize foreign key vs SQL how to implement it
- How do i work with a potentially nullable field in prisma ORM and MongoDB that references the id of another model?
- record doesn't exist error when creating a new record
- Several relationships in one model in Laravel
- SQLALCHEMY ORM - error when using variables both for column, value in WHERE
- How to exclude instances with empty querysets in prefetch_related?
- Optimize SqlAlchemy ORM DB models
- What are the best practices regarding SSR, Django and temprarly changed data?
Related Questions in RDBMS
- Prisma Many to Many relationship with at least one value
- Precedence of operators in SQL
- How do I create columns that add a tag if it matches with a keyword from a different dataset?
- Does replacing string column with repeating values at some point with an int FK have any performance benefits in RDBMS?
- How will Spring boot work with Sql Response?
- How to replicate the "Script as Create" functionality from Azure Data Studio in python using pyodbc?
- How to properly connect GCP Cloud Functions with Relational Databases
- Unable to run pg_buffercache_pages() function
- Does it make sense to continue looking for comparison table where I could see the difference between completely different DB types?
- Extracting values from JSON list
- Difference between local, session and shared preload library in PostgreSQL and use of LOAD command
- Google Android Management API - mapping Map<K,V> fields
- What is the design logic for postgresql to not provide the construct as 'create database IF NOT EXISTS dbname'?
- RDBMS Many To Many Relationships Django
- How many entity tables should I have? User table attribute role or three tables for the roles?
Related Questions in DB4O
- Java is not able to access my enum attribute
- Why does it always outputs empty even when the database is not?
- How to display List<string> property in DataGridView in Windows Form
- How to link two classes and then output class using DB4O as Database and C# as language?
- Why i get DatabaseClosedException(DB4o) trying to insert/delete/show 2 times in one run?
- Adding .jar to Eclipse 2018-09 project
- db4o native query in C#: how to find by first number?
- Java db4o Storing and Retrieving
- Implement a relation using db4o
- use lib db4o on android studio
- DB4O: limit a query by range
- How can I control cache of the DB4O
- db4o prototype for querybyexample query
- Add db4o database to monodevelop in linux
- Setting up db4o in android
Related Questions in OODB
- How to update reference oracle
- How to define user-defined types (Object-Oriented Database) in SQL Server 2017?
- Using an Object Oriented Database (db4o) for a medium scale application
- PHP - Calling Object in an object
- db4o enumset exception
- Make class names independent via db4o renaming api
- How do I create a reference in my DB to a user from the ASP.NET build in usersystem?
- hierarchical nested data structure in db4o (or any other oodb)
- Retrieve an object in one DB4O session, store in another ('disconnected scenario')
- Benefits of switching from SQL Server to Versant OODB
- Need to store LOTS of data on Android device, thinking of going OODB
- why everyone wants NOSQL other than large-scale Oracle Clusters?
- How the existing data to be if entity structure modified or deleted on GAE?
- What is the best way to schedule a task in gemstone?
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?
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)
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