1277 words

ObjectDB Object Database Features

ObjectDB provides a rich set of features. Many features are implemented as part of ObjectDB support of the JPAJPA Reference (JavaDoc)Java/JPA API Reference (based on the JPA 3 JavaDoc)
See JavaDoc Reference Page...
and JDOJDO Reference (JavaDoc)Java/JDO API Reference (based on the JDO 2.2 JavaDoc)
See JavaDoc Reference Page...
APIs. Features that are common in relational databases (e.g. primary keys, automatically generated values, grouping queries and aggregate queries) but are usually missing from Object Oriented Databases - are also supported by ObjectDB. The combination of object database features with relational database features brings you the best of both worlds.

Capabilities & Scalability

ObjectDB can manage efficiently databases of various sizes, ranging from kilobytes to terabytes.

Platform Requirements
  • Windows, Linux, Unix, Mac OS, or any other environment with Java SE support.
  • Java SE 5 / Java EE 5 or higher (Java 6 is recommended).
  • Tested on various JVMs: HotSpot, JRockit and IBM J9.
  • Tested integration with Tomcat, Jetty, GlassFish, JBoss and Spring MVC.
Operating Modes

Capabilities and Limitations

  • Database file size up to 128 TB (= 131,072 GB = 134,217,728 MB).
  • Up to 2,147,483,648 entity classes per database file.
  • Up to 2,147,483,648 indexes per database file.
  • Up to 9,223,372,036,854,775,808 entity objects per database file.
  • Unlimited database connections (limited only by operating system resources).
  • Unlimited CPUs and cores.
Reliability and Stability
  • Recovery from failure by using a recovery file and double writing.
  • Additional recovery layer - support full transaction recording and replaying.
  • Automatic diagnosis and repair of corrupted database files (the ObjectDB Doctor).

Standard Persistence APIs

ObjectDB is the only Object Oriented Database with built in support of JPA 2.

Java Persistence API (JPA)
  • Most features of JPA 2 are supported.
  • Support of remaining features is in progress - see issue tracking (requires login).
Java Data Objects (JDO)
  • Complete JDO 2 support (passed the JDO 2 TCK).
  • Support of JDO 3 new features is in progress - see issue tracking (requires login).

Performance and Speed

ObjectDB is extremely fast - much faster than any other JPA solution.

General
Connection Pooling
  • Automatic connection pool managed by EntityManagerFactory.
  • Configurable - minimum / maximum connections and timeout.
Caching
  • L1 entity object cache (per EntityManager).
  • L2 shared entity data cache (per EntityManagerFactory).
  • Database file page cache.
  • Query program cache (for repeating queries with different arguments).
  • Query result cache (for repeating queries with the same arguments).
  • Many other internal caches.
Indexing
Lazy/Eager Loading

Ease of Use and Learning

ObjectDB is very simple to use and easier to learn than any competitive product.

Simplicity
  • Database is a single file - easier backup, transfer and management.
  • Single runtime JAR (including JPA/JDO) - no external dependency.
  • Simple (code less) configuration using XML and annotations.
  • Zero administration.
Documentation
Tutorials
Easy Learning Curve
  • SQL like (but object based) query language - familiar to most developers.
Friendly API
Schema evolution
  • Fully automatic schema evolution and type versioning.
  • Class hierarchy changes are handled automatically.
  • New added fields are handled automatically.
  • Removed fields are handled automatically.
  • Most field type changes are handled automatically.
  • Moving fields up and down in the class hierarchy is transparent.
  • Support of types, fields and properties renaming.

Object Model & Data Types

ObjectDB support persisting complex Java data structures very efficiently.

User Defined Classes
Persistent System Types
(for persistent fields)
  • Primitive types (boolean, byte, short, char, int, long, float, double).
  • Wrapper types (Boolean, Byte, Short, Character, Integer, Long, Float, Double).
  • java.lang.String
  • Date types: java.util.Date, java.sql.Date, java.sql.Time and java.sql.Timestamp.
  • Math types: java.lang.BigInteger and java.lang.BigDecimal.
  • Collection types: Collection, List, Set, ArrayList, Vector, Stack, LinkedList, ArrayDeque, PriorityQueue, HashSet, LinkedHashSet, TreeSet.
  • Map types: HashMap, Hashtable, WeakHashMap, IdentityHashMap, LinkedHashMap, TreeMap and Properties.
  • Arrays, including multidimensional arrays.
  • Any other serializable type.
Lifecycle Events

Primary Keys

Support of primary keys in ObjectDB is unique when compared to other Object Oriented Databases.

Primary Key Modes
Primary Key Data Types
  • Primitives: boolean, byte, short, char, int, long, float and double.
  • Wrappers: Boolean, Byte, Short, Character, Integer, Long, Float and Double.
  • java.lang.String
  • Dates: java.util.Date, java.sql.Date, java.sql.Time and java.sql.Timestamp.
  • Math: java.lang.BigInteger and java.lang.BigDecimal.
Auto Value Generation Modes (for primary Key fields)
  • Database IDs - automatic allocation of global object database IDs.
  • Sequence IDs - IDs are allocated automatically by application defined sequences.
  • Application IDs - Primary key values are set explicitly by the application.

Query Support

ObjectDB supports two object oriented query languages - JPQL and JDOQL.

Query Languages
  • JPQL - Java Persistence (JPA) Query Language - SQL like syntax.
  • JDOQL - Java Data Objects (JDO) Query Language - Java/SQL like syntax.
Query Definition and API
  • Dynamic query definition including using JPA Criteria Query API.
  • Static definition (named queries) in annotations (@NamedQuery) and XML.
  • Query parameters for efficient reuse of one query for multiple executions.
  • Result range settings (first, max) - for paging.
Query Structure
Query Expressions

Multi User Support

ObjectDB can be very effective in a heavy loaded multi user system.

Transactions
Processes and Threads
  • All API classes and interfaces are thread safe.
  • Support of efficient real multithreading.
  • Support of efficient real multiprocessing.
Locking

Database Tools and Utilities

ObjectDB provides the following database tools and utilities.

Database Explorer
  • Visual GUI tool for viewing and editing database content.
  • Query execution using JPA JPQL and JDO JDOQL + query execution plan explanation.
  • Schema tree for browsing the database schema (classes, fields, indexes).
  • Table view for browsing the content of entity objects.
  • Tree view for navigation between entity objects.
Database Server
  • Available as Windows EXE and Unix/Linux/Mac OS executable script.
  • Easily managed from a system tray icon.
  • Can also be managed (start, restart, stop) from the command line.
Class Enhancer
  • Boosts performance by avoiding reflection and by using smart tracking.
  • Non enhanced classes are also supported (by using reflection).
  • On the fly enhancement by using a Java agent.
Replication (Cluster)
  • Master-Slave replication (clustering) with unlimited number of slave nodes.
  • Dynamic composite database connections for high availability and fault tolerance.
Online Backup
  • Online backup by a simple query on an EntityManager / PersistenceManager.
  • Support of automatic download of created backups from the server to the client.
Database Doctor
  • Diagnoses if a database file is healthy and identifies any possible problem.
  • Automatically repairs damaged database files with minimum data loss (if any).
Transaction Replayer
  • Transactions and database operations can be recorded.
  • Recorded operations can be replayed starting from a database snapshot.
BIRT Reports
  • ObjectDB databases are valid BIRT data sources.
  • BIRT data sets can be defined using JPA and JDO queries (JPQL, JDOQL).