<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: Databases</title>
	<atom:link href="http://cogs.innocence.com/2009/03/databases/feed/" rel="self" type="application/rss+xml" />
	<link>http://cogs.innocence.com/2009/03/databases/</link>
	<description>On the operation of massively multiplayer online games.</description>
	<lastBuildDate>Thu, 26 May 2011 20:53:29 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.3</generator>
	<item>
		<title>By: Bryant</title>
		<link>http://cogs.innocence.com/2009/03/databases/comment-page-1/#comment-108</link>
		<dc:creator>Bryant</dc:creator>
		<pubDate>Sat, 25 Apr 2009 06:30:23 +0000</pubDate>
		<guid isPermaLink="false">http://cogs.innocence.com/?p=29#comment-108</guid>
		<description>Not entirely. I&#039;d say it beats knitting but I&#039;m not sure it does. ;)

Eric Heimburg makes a case for using a database to avoid extra work on the indie scale; for his purpose, yeah, Smart Fox may work out well. I would want to talk to someone who has had problems with their database layer and find out how bad it was. I hate reference customers who have nothing but good things to say -- tell me about how tough it is to fix problems.</description>
		<content:encoded><![CDATA[<p>Not entirely. I&#8217;d say it beats knitting but I&#8217;m not sure it does. <img src='http://cogs.innocence.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Eric Heimburg makes a case for using a database to avoid extra work on the indie scale; for his purpose, yeah, Smart Fox may work out well. I would want to talk to someone who has had problems with their database layer and find out how bad it was. I hate reference customers who have nothing but good things to say &#8212; tell me about how tough it is to fix problems.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Brian 'Psychochild' Green</title>
		<link>http://cogs.innocence.com/2009/03/databases/comment-page-1/#comment-107</link>
		<dc:creator>Brian 'Psychochild' Green</dc:creator>
		<pubDate>Sat, 25 Apr 2009 03:11:13 +0000</pubDate>
		<guid isPermaLink="false">http://cogs.innocence.com/?p=29#comment-107</guid>
		<description>&lt;i&gt;Meridian 59&lt;/i&gt; stores everything in memory.  The server technology is old, but it supported up to 200 simultaneous on a Pentium Pro 200 MHz with 253 MB of RAM.  Not all that scalable, but it worked, it was super-reliable, and the system didn&#039;t suffer from massive lag.  

The downside is that saves are written out to a file, and there was a long save cycle in the game when that happens.  That could probably be avoided by duplicating the memory and having a separate thread write out the data.  The other big problem is that a crash meant that the game state has to be rolled back to the last save file.  But, as you point out, this isn&#039;t exactly unique to M59.

Especially if you are talking about the indie scale of things, a database can cause a lot of headaches.  DBA isn&#039;t something most people pick up as a hobby. ;)</description>
		<content:encoded><![CDATA[<p><i>Meridian 59</i> stores everything in memory.  The server technology is old, but it supported up to 200 simultaneous on a Pentium Pro 200 MHz with 253 MB of RAM.  Not all that scalable, but it worked, it was super-reliable, and the system didn&#8217;t suffer from massive lag.  </p>
<p>The downside is that saves are written out to a file, and there was a long save cycle in the game when that happens.  That could probably be avoided by duplicating the memory and having a separate thread write out the data.  The other big problem is that a crash meant that the game state has to be rolled back to the last save file.  But, as you point out, this isn&#8217;t exactly unique to M59.</p>
<p>Especially if you are talking about the indie scale of things, a database can cause a lot of headaches.  DBA isn&#8217;t something most people pick up as a hobby. <img src='http://cogs.innocence.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Bryant</title>
		<link>http://cogs.innocence.com/2009/03/databases/comment-page-1/#comment-88</link>
		<dc:creator>Bryant</dc:creator>
		<pubDate>Wed, 22 Apr 2009 15:26:26 +0000</pubDate>
		<guid isPermaLink="false">http://cogs.innocence.com/?p=29#comment-88</guid>
		<description>Well, see the comments in the Elder Game trackback link -- there are some good notes there on the perils of database access for a synchronous game. Some of the stuff I&#039;ve said still makes sense for browser-based games, although you&#039;re certainly not dealing with the need to be realtime. On the other hand, you can still shoot yourself in the foot with bad DB design. It&#039;s just harder to do so.</description>
		<content:encoded><![CDATA[<p>Well, see the comments in the Elder Game trackback link &#8212; there are some good notes there on the perils of database access for a synchronous game. Some of the stuff I&#8217;ve said still makes sense for browser-based games, although you&#8217;re certainly not dealing with the need to be realtime. On the other hand, you can still shoot yourself in the foot with bad DB design. It&#8217;s just harder to do so.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Animagnum</title>
		<link>http://cogs.innocence.com/2009/03/databases/comment-page-1/#comment-86</link>
		<dc:creator>Animagnum</dc:creator>
		<pubDate>Wed, 22 Apr 2009 14:46:13 +0000</pubDate>
		<guid isPermaLink="false">http://cogs.innocence.com/?p=29#comment-86</guid>
		<description>This was a very enlightening post.  Thanks for the advice, Bryant.

Would it make sense for an asynchronous MMO-style game (like a browser game) to rely on something other than a relational database?  Regardless of its purpose, I suppose that a browser game would be more like a website than an MMO in terms of database structure, but that might depend on the way the game works.</description>
		<content:encoded><![CDATA[<p>This was a very enlightening post.  Thanks for the advice, Bryant.</p>
<p>Would it make sense for an asynchronous MMO-style game (like a browser game) to rely on something other than a relational database?  Regardless of its purpose, I suppose that a browser game would be more like a website than an MMO in terms of database structure, but that might depend on the way the game works.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Elder Game: MMO game development &#187; SmartFoxServer: The MMO Engine for Indies?</title>
		<link>http://cogs.innocence.com/2009/03/databases/comment-page-1/#comment-76</link>
		<dc:creator>Elder Game: MMO game development &#187; SmartFoxServer: The MMO Engine for Indies?</dc:creator>
		<pubDate>Tue, 14 Apr 2009 09:50:57 +0000</pubDate>
		<guid isPermaLink="false">http://cogs.innocence.com/?p=29#comment-76</guid>
		<description>[...] convince you, how about Bryant Durrell, former Tech Ops director for Turbine? Let&#8217;s see what he thinks:  Relational databases: please [...]</description>
		<content:encoded><![CDATA[<p>[...] convince you, how about Bryant Durrell, former Tech Ops director for Turbine? Let&#8217;s see what he thinks:  Relational databases: please [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Bryant</title>
		<link>http://cogs.innocence.com/2009/03/databases/comment-page-1/#comment-25</link>
		<dc:creator>Bryant</dc:creator>
		<pubDate>Tue, 24 Mar 2009 14:27:35 +0000</pubDate>
		<guid isPermaLink="false">http://cogs.innocence.com/?p=29#comment-25</guid>
		<description>Yep. The whole data collection and analysis task is a really important one that can and should be separated operationally from the critical path of the game. If you follow the sidebar link to Tiny Subversions, you&#039;ll get a guy who does MMO data collection for a living. Really neat topic.

Memcached is a good idea. I should have thought of that. It&#039;s a cheap effective way to get the in-memory data store you want. I know of one MMO which stored everything including world data in SQL, if I&#039;m remembering correctly, specifically for ease of updates. I was always a bit leery of the idea because of the speed issues and such. Memcached would work really well there, unless of course you wanted a user-modifiable world.</description>
		<content:encoded><![CDATA[<p>Yep. The whole data collection and analysis task is a really important one that can and should be separated operationally from the critical path of the game. If you follow the sidebar link to Tiny Subversions, you&#8217;ll get a guy who does MMO data collection for a living. Really neat topic.</p>
<p>Memcached is a good idea. I should have thought of that. It&#8217;s a cheap effective way to get the in-memory data store you want. I know of one MMO which stored everything including world data in SQL, if I&#8217;m remembering correctly, specifically for ease of updates. I was always a bit leery of the idea because of the speed issues and such. Memcached would work really well there, unless of course you wanted a user-modifiable world.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Shiffer</title>
		<link>http://cogs.innocence.com/2009/03/databases/comment-page-1/#comment-24</link>
		<dc:creator>Shiffer</dc:creator>
		<pubDate>Tue, 24 Mar 2009 13:10:46 +0000</pubDate>
		<guid isPermaLink="false">http://cogs.innocence.com/?p=29#comment-24</guid>
		<description>Kirby makes a fair point about wanting some of your data in relational DBs, but you&#039;re going to want to seperate those systems from your operational system anyway. There&#039;s very little reason to keep your operational data in the same DB as your customer management data, even if the two are compatible.

There&#039;s a lot more R/W information then character data - basically anything that moves or can be interacted with. To follow your example, monster info isn&#039;t static - the monster moves, it&#039;s condition (HP, etc) changes, and its behavior changes based on that condition.

Very interesting topic. I never bothered to think about the data model.</description>
		<content:encoded><![CDATA[<p>Kirby makes a fair point about wanting some of your data in relational DBs, but you&#8217;re going to want to seperate those systems from your operational system anyway. There&#8217;s very little reason to keep your operational data in the same DB as your customer management data, even if the two are compatible.</p>
<p>There&#8217;s a lot more R/W information then character data &#8211; basically anything that moves or can be interacted with. To follow your example, monster info isn&#8217;t static &#8211; the monster moves, it&#8217;s condition (HP, etc) changes, and its behavior changes based on that condition.</p>
<p>Very interesting topic. I never bothered to think about the data model.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Kirby</title>
		<link>http://cogs.innocence.com/2009/03/databases/comment-page-1/#comment-20</link>
		<dc:creator>Kirby</dc:creator>
		<pubDate>Tue, 24 Mar 2009 00:41:17 +0000</pubDate>
		<guid isPermaLink="false">http://cogs.innocence.com/?p=29#comment-20</guid>
		<description>Interesting!

If I were at an MMO startup, I&#039;d probably want a relational database for some things.  Account info, for one, and payment information.  This is what they&#039;re for.

And I&#039;d probably want some technology to dump from the custom hot-running dbs periodically to a reporting relational database.  This is what could power web-based data.  And also what you could run ad-hoc data mining queries on for R&amp;D purposes.

For rapid read-only data, like monster info - really, I&#039;d be tempted to just run it all through memcached or something, flush the cash on server patches.  And at that point, eh, you can store it in whatever makes it easier for your tools, since it&#039;s getting served from the cache in active use and that&#039;s _fast_.

And then that just leaves character data, including inventory, as the lightning fast heavy read write element.  And that you optimize like hell.  Yeah, wouldn&#039;t use a heavy relational database.  I _would_ like to be able to dump it to one, and restore from it, because losing this stuff loses customers.

Hmm, I&#039;ve never worked on an MMO, but it&#039;s fun to think about the challenge!  Actually, this is a good interview question, how would you set up the database architecture for an MMO - candidates already know the space, and you can see how they think, which is what I want to know in an interview. :)</description>
		<content:encoded><![CDATA[<p>Interesting!</p>
<p>If I were at an MMO startup, I&#8217;d probably want a relational database for some things.  Account info, for one, and payment information.  This is what they&#8217;re for.</p>
<p>And I&#8217;d probably want some technology to dump from the custom hot-running dbs periodically to a reporting relational database.  This is what could power web-based data.  And also what you could run ad-hoc data mining queries on for R&amp;D purposes.</p>
<p>For rapid read-only data, like monster info &#8211; really, I&#8217;d be tempted to just run it all through memcached or something, flush the cash on server patches.  And at that point, eh, you can store it in whatever makes it easier for your tools, since it&#8217;s getting served from the cache in active use and that&#8217;s _fast_.</p>
<p>And then that just leaves character data, including inventory, as the lightning fast heavy read write element.  And that you optimize like hell.  Yeah, wouldn&#8217;t use a heavy relational database.  I _would_ like to be able to dump it to one, and restore from it, because losing this stuff loses customers.</p>
<p>Hmm, I&#8217;ve never worked on an MMO, but it&#8217;s fun to think about the challenge!  Actually, this is a good interview question, how would you set up the database architecture for an MMO &#8211; candidates already know the space, and you can see how they think, which is what I want to know in an interview. <img src='http://cogs.innocence.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
</channel>
</rss>

