OOMEGA is an object database management system. Object-oriented databases are the perfect match to object-oriented programming. There’s a natural way to interact with an ODBMS. There’s no impedance mismatch.
Explicit Data Modeling
An explicit data modeling language is key for successful database technologies. You know that from SQL. Our data definition language M2L has no dependency to programming languages, but realizes object-oriented concepts like inheritance and polymorphism. It enables the very exact definition of object-oriented database schemas.
Our data models support multiple inheritance, which is awesome for object-oriented data modeling. Please notice this little piece of magic as our database system is implemented in pure Java, which does not support multiple inheritance.
Decoupling Objects and Classes
An object is an instance of a class, right? It’s impossible to create an object without a class definition. The OOMEGA ODBMS acts totally different to that well-known pattern. Following a semi-structured approach an object can be created without difficulty even though there’s no class definition in place.
The ODBMS comprehensively supports transaction management that conforms to the ACID paradigm, i.e. we guarantee atomicity, consistency, isolation and durability. Every change is done in the context of a transaction, it is isolated from concurrent transactions.
Our transaction synchronization mechanism requires no locks at all, isolates concurrent transactions from each other, immediately distributes changes to concurrent transactions when they are committed, and successfully merges those changes into already running transactions.
Caching and Preloading
Due to our server-side and client-side caching strategy in combination with the automatic preloading of objects in the background, a remote database does not only act and behave the very same way like a local database, but is also comparably fast as we systematically avoid network latency.
Object Query Language
The Edge Algebra is an object-oriented query language that is used when designing data models, e. g. for defining additional constraints, but also when querying the database. The Edge Algebra is very powerful. Please note, that you can even navigate into the opposite direction of a uni-directional property.
There are Tons of Other Features
It’s impossible to mention all of them. Think of a very comfortable and exact data modeling language supporting multiple inheritance, uni- and bidirectional associations, property overloading, exact multiplicities, and so on. Think of a very powerful transaction management module supporting commits, rollbacks, as well as nested transactions. Think of an object-oriented database that naturally integrates into your object-oriented programming paradigm. Think of a database system that does not only simplify your data management, but also your software application development.
OOMEGA is written in Java. The product is not dependent on any third-party software. Apart from using the standard JDK, it is a self-sufficient system.
Database schemas are stored within the database and can be altered like any other data. There’s no code generation, compilation and deployment necessary for changes to take effect.
You can do arbitrary schema evolution without any limitations of the ODBMS and you can do such migrations at runtime – with zero downtime.
A comfortable Java API can be generated for your database schema in order to interface with data objects from a Java application in a typed manner.