nosqlrdbmsobject-oriented-database

What is the current viability of an OODBMS in game development?


So, I've been researching for quite some time now, but it seems that all the results I'm getting are fairly outdated. I'd like to know what the current state of object-oriented database management systems (OODBMS) are in relation to fairly large games, such as an MMORPG, especially when comparing them to relational database management systems (RDBMS).

Obviously, the data model would depend on the data in question (i.e. the players vs. the world state, such as currencies and such).

So what are your thoughts? What are the current advantages of OODBMSs vs. RDBMSs? Have RDBMSs overcome some of the struggles that were evident a decade ago, such as scalability, performance, and cost?


Solution

  • Let's start with a general discussion of relational databases vs. object databases and then we can delve into the specifics of using an object database for game development.

    Disclaimer: I work for Objectivity, Inc., where we build and sell a massively scalable object/graph database to our customers.

    First, as you've observed, object databases do not have anywhere near the market adoption as relational databases, in general or in game development. This is true for a number of reasons, some technical and some non-technical but you could boil it down to a "good enough" and/or "cheap enough" explanation. Relational database are "good enough" for the vast majority of problems the people need to solve on a daily basis, and there are many free open-source relational databases available.

    At Objectivity, we like to say that we have two kinds of customers: The brilliant and the desperate. Our brilliant customers understand that their data will be too complex to put into a relational database. It may be that their data model includes type inheritances that are difficult to express in a relational database product or that the performance degradation of an object-relational mapping layer is unacceptable. With a big enough hammer, you can always pound a square peg into a round hole, but at the end of the day, if performance matters, our brilliant customers understand that they need to choose a technology that aligns with their data model and performance requirements.

    Our desperate customers are usually 2nd generation developers, people who show up to fix a project after the first team got tired of trying to pound the square peg into the round hole. These people are looking for solutions that provide high-speed data persistence, navigational queries, and potentially distributed databases to solve mission-critical problems.

    The vast majority of our customers use our object database for four reasons:

    1. The database allows them to easily model complex data.
    2. The database allows them to link objects together and then navigate those connections orders of magnitude faster than relational databases.
    3. The database is distributable and massively scalable.
    4. The database is incredibly fast for both ingest and query.

    Today we are seeing the dramatic emergence of graph database. I believe that this due to the growing importance of the relationships between data items in databases. Relational database are not called relational because of their ability to efficiently handle relationships, but because they are designed to support relational algebra. Object and graph database are specifically designed to support relationships between objects and are typically much faster at navigating across dozens or hundreds of nodes and edges (relationships) in an appropriately designed object/graph database.

    Now let's discuss the applicability of object databases to game development...

    There's absolutely no reason why a object database wouldn't be great for game development. Objectivity got its start as the database inside of an industrial CAD/CAM/CAE software architecture. It was the first time all three domains, CAD, CAM, and CAE were all seamlessly joined together using the same database. Objectivity has been and is still being used to run complex simulations on 3-D CAD models. Creating a multi-dimensional game world in an object database would be much more natural than trying to accomplish the same thing in a relational database. So yes, it would be possible to build a MMORPG using a graph database. You could start by creating the game universe in the database. Then you manage all of the players and their interactions as event updates from the game engine to the database. Our product has a memory caching feature where you only keep in memory those segments of the database that you are currently working on. In an MMORPG, you could have many different servers all hosting different parts of the game universe and they'd all be running unimpeded against different parts of the database. This what some of our industrial customers do now.