db4o Object Database

db4o is the open source object database that enables Java and .NET developers to store and retrieve any application object with only one line of code.

Platforms

Java
  • J2EE
  • J2SE
  • Android (Open Handset Alliance)
  • Supported Frameworks: Spring, OSGi, DataNucleus, Restlet, Griffon, Guice
.NET
  • .NET Framework (3.5, 4.0)
  • .NET Compact Framework (2.0-3.5)
  • Windows (XP, Vista)
  • Windows Mobile / PocketPC, Windows Phone
  • Mono (partial)
  • Supported Frameworks: Castle, Eiffel, Spring.net

Languages

Java
  • JDK 5+
  • Scala
.NET
  • C#
  • Visual Basic

Commands

Sessions
  • Start and end
Database files
  • Create, open, close, and delete
Transactions
  • Commit and Rollback
Objects
  • Store, retrieve, update (incl. cascaded), replicate, delete (incl. cascaded)
Messaging
  • TCP/IP

Transparency

Language constructs
  • Primitive types
  • Strings
  • Arrays
  • Multi-dimensional arrays
  • Inner classes
  • Java/C# collections
  • Classes without public constructors
  • .NET structs
  • Blobs (stored outside of DB file)
Non-Intrusive
  • Without deriving from a specific base class
  • Without implementing a specific interface
  • Without modifications to source code
  • Without implementing Serializable
Private Fields
  • Storable
File I/O
  • Pluggable
Reflector
  • Pluggable
  • Generic
Aliases
  • Class aliasing for class-to-class mappings
Transparent Persistence
  • Programmatic or via byte-code instrumentation

Query Languages / APIs

Object oriented
  • LINQ
  • Native Queries (NQ)
  • Query By Example (QbE)
  • S.O.D.A.
SQL
  • Only via replication to many relational databases
  • With Third-Party products (e.g. DataNucleus' Sql4o)
XML
  • With Third-Party products (e.g., Xstream)

Modes / Concurrency

Operation Modes
  • Local
  • Client/Server
Threads
  • Multiple
Transactions
  • Multiple, parallel
Semaphores
  • Available
Read-Only Mode
  • Available

Scalability and Performance

Performance benchmark
In-Memory Mode
  • Available
Client-side
  • Single-process execution available
Server-side
  • Server-side query execution available
DB-aware Collections
  • Available
Object Caching
  • Available
Pagination
  • Server-side cursors (lazy queries)
Indexing
  • BTree field indexes
BTree Query Processor
  • Big Sets

Replication

db4o Replication System (dRS)
  • 100% object-oriented: simply replicate objects, not tables
  • Uni- and bi-directional
  • db4o to db4o
  • db4o to relational databases (RDBMS), via Hibernate (Java only)
  • db4o to Versant Object Database (VOD, Java only)
UUID
  • Unique Universal Identity over all DB instances
Synchronization
  • Querying
  • Update
  • Delete
  • Conflict resolution

Reporting

For Java objects
For .NET objects

Security and Encryption

DB file Encryption
  • Pluggable File I/O for custom encryption
  • With Third-Party products (e.g. XTEA)

Availability, Reliability, Zero-Admin

Transactions
  • ACID
  • Commit-recovery on system failures
Thread Safety
  • Available
Automatic Recovery
  • Available
Online-Backup
  • Available
Free Space Management
  • Defragmentation API available

Internationalization

Unicode
  • Available

Refactoring

Schema Versioning
  • Automatic recognition and maintenance
Renaming
  • Classes, fields by API
  • Access to values of removed fields by API or with ObjectManager UI

Memory and File Size

DB library footprint
  • ~1 MB
Minimal RAM footprint
  • Application-dependent; deterministic; typically < 3 MB
Maximum DB file size
  • 254 GB / database file