To enable development of infinitely scalable games, Yahoo Games Network provides BigDB; a database solution built especially for games, that scales transparently with any amount of usage and load.
BigDB is not a relational SQL database, but is much closer to a NoSQL document database like MongoDB or CouchDB. Partitioning and scaling is automatically handled by BigDB, without any developer interaction.
BigDB is a great choice for persisting data such as Character configuration, Levels, World-state, save games, Quiz questions, auctions, ban-lists, highscores , ranking lists, game configuration, items and anything else a game would like to have persisted between game sessions.
BigDB tables for each game are configured in the Games Control Panel like everything else. Here you can create new tables, add indexes, browse and edit the stored objects, truncate and export tables, and set up access rights.
Database objects are very similar to JSON objects. For instance, a racing game could store the car-configuration of a player in a table called “cars” with a database object similar to this:
If you want to look up objects by some of its properties and not just its key, or if you want to get a range of objects sorted by their properties, you need to create indexes.
An index is a list of property names, and for each property you also have to specify a type and sort order. You can then use these indexes to do range queries or sorted queries and retrieve stored objects that have the properties described in the index.
The absolutely most common use-case for BigDB is to store data on a per-player basis, and making sure that one player cannot read or modify the data of another player.
All games have a table called PlayerObjects with those access rights, and there are convenience methods in the APIs for accessing this table. Perfect for when you just want to store something per player to get started quickly.
BigDB supports optimistic locking for when you want fine-grained concurrency control over your data.
To get the best performance, both the server-side and client-side API uses asynchronous methods.
If you just want to get started using BigDB, we have written a large example walkthrough that shows you all steps you need to take to put the pieces together for your first game using BigDB.