db4o can be used in a wide range of production and educational software. The primary focus is on embedded usage, like mobile systems (phones and handhelds), device electronics (printers, cars, robots), SCADA systems etc. The following table provides many (but not all) possible implementations with an explanations of the benefits of db4o in the selected environment:
Environment |
Benefits |
Educational systems |
One-line persistence, Object-oriented model, intuitive programming interface make db4o an ideal educational tool. It is easy to use and it provides a meaningful example of object-oriented world. It is also native to most widely used OO languages: Java and .NET |
Prototypes |
Using db4o to build a prototype system is much quicker
than using an RDBMS |
SCADA |
Using db4o in SCADA systems allows to achieve high performance in caching and replay of the events. Another benefit is a small footprint and easy integration with Java and .NET programming languages. db4o can also be run as a memory database, providing better performance though minimizing disk access. |
Mobile applications |
Mobile applications can benefit from in-process database,
which requires zero-administration. Synchronization with the main server can
be done with the help of dRS |
Device applications |
Device applications enjoy the same benefits as Mobile applications. In addition, smaller footprints can be achieved by using the minimal Micro edition. |
Open-source software |
GPL, open-source compatibility licence. Native to Java and .NET. Easily integrates with any Java and .NET open-source products. |
Web-applications |
open-source, reporting support from several Java open-source reporting frameworks and .NET reporting API |
However, other applications might not be well suited for db4o.
For example, in situations where you have increasing amounts of data ( over 10 Gigabytes ) and high concurrency ( over 20 concurrent users/processes ) along with your complex models. In these cases, the Versant database is likely a more appropriate choice. Versant's customer applications span a wide range of use including those exhibiting 1000's of current transactions ( 100's of thousands of concurrent tx per second ) to 100's of gigabytes with some Versant customers in the 25T+ sized database. For more information visit http://www.versant.com/
Another case is when you have simple and flat data model, primarily used for reporting. Simple table-like models of tuple records may be better supported by an RDBMS. In this case, adhoc data access would be more important to your application than well defined use cases using an object model. Typically this is complimented with the need let your users to be able to grab one of the plethora of commercial tools to poke at the database in an adhoc fashion.