<?xml version="1.0" encoding="UTF-8"?><!-- generator="wordpress/2.2.3" -->
<rss version="2.0" 
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	>
<channel>
	<title>Comments on: AGDC 2007 - Day 3</title>
	<link>http://programmerjoe.com/2007/09/15/agdc-2007-day-3/</link>
	<description>Joe Ludwig\'s blog</description>
	<pubDate>Mon, 01 Dec 2008 17:24:47 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.2.3</generator>

	<item>
		<title>By: Joe</title>
		<link>http://programmerjoe.com/2007/09/15/agdc-2007-day-3/#comment-37782</link>
		<dc:creator>Joe</dc:creator>
		<pubDate>Wed, 26 Sep 2007 17:22:20 +0000</pubDate>
		<guid>http://programmerjoe.com/2007/09/15/agdc-2007-day-3/#comment-37782</guid>
		<description>SWG _did_ make Oracle cry, but that was more of a design problem than a limitation of Oracle.  Every stat on every item could be overridden on every instance of that item. They had to deal with a tremendous amount of data scattered across many different tables.  One of the guys from the SWG server team is now building the database layer for the Bioware MMO, and seems to be doing things differently.  In fact he gets a horrified look on his face whenever the SWG object scheme comes up in conversation, so I think maybe he was scarred by the experience. :)</description>
		<content:encoded><![CDATA[<p>SWG _did_ make Oracle cry, but that was more of a design problem than a limitation of Oracle.  Every stat on every item could be overridden on every instance of that item. They had to deal with a tremendous amount of data scattered across many different tables.  One of the guys from the SWG server team is now building the database layer for the Bioware MMO, and seems to be doing things differently.  In fact he gets a horrified look on his face whenever the SWG object scheme comes up in conversation, so I think maybe he was scarred by the experience. <img src='http://programmerjoe.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: BugHunter</title>
		<link>http://programmerjoe.com/2007/09/15/agdc-2007-day-3/#comment-37347</link>
		<dc:creator>BugHunter</dc:creator>
		<pubDate>Wed, 26 Sep 2007 00:33:00 +0000</pubDate>
		<guid>http://programmerjoe.com/2007/09/15/agdc-2007-day-3/#comment-37347</guid>
		<description>I'd wondered what you game devs used in terms of a DB. I'd heard rumor that SWG made oracle cry, so I wasn't sure what you guys used. I'm glad to here it's the same stuff we use out in business land. I've never heard of any successful usage (the old MUMPS system that the VA hospitals run on doesn't count, since it's older than dirt) of anything other than the standard 3 in business either (and Navision doesn't count either, man that thing sucked...fast, but painful).</description>
		<content:encoded><![CDATA[<p>I&#8217;d wondered what you game devs used in terms of a DB. I&#8217;d heard rumor that SWG made oracle cry, so I wasn&#8217;t sure what you guys used. I&#8217;m glad to here it&#8217;s the same stuff we use out in business land. I&#8217;ve never heard of any successful usage (the old MUMPS system that the VA hospitals run on doesn&#8217;t count, since it&#8217;s older than dirt) of anything other than the standard 3 in business either (and Navision doesn&#8217;t count either, man that thing sucked&#8230;fast, but painful).</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Joe</title>
		<link>http://programmerjoe.com/2007/09/15/agdc-2007-day-3/#comment-37166</link>
		<dc:creator>Joe</dc:creator>
		<pubDate>Tue, 25 Sep 2007 16:39:45 +0000</pubDate>
		<guid>http://programmerjoe.com/2007/09/15/agdc-2007-day-3/#comment-37166</guid>
		<description>CoH was published and operated by NCsoft, so they're the ones with the licenses.  As I understand it, Cryptic was pushed into using SQL server late in the development of CoH and never really appreciated what they had.  CoH came out in 2004, so they were obviously using the 2000 version at that time.

We're using 2005 for Pirates and it's working just fine.  Our objects are stored as BLOBs, which is fairly lame, but the performance is fine.  Given enough time to write a strong object-sql mapping, I'm confident it would handle that too.

What sort of schema are you using to store objects in SQL?  One table per class? One table per field type?</description>
		<content:encoded><![CDATA[<p>CoH was published and operated by NCsoft, so they&#8217;re the ones with the licenses.  As I understand it, Cryptic was pushed into using SQL server late in the development of CoH and never really appreciated what they had.  CoH came out in 2004, so they were obviously using the 2000 version at that time.</p>
<p>We&#8217;re using 2005 for Pirates and it&#8217;s working just fine.  Our objects are stored as BLOBs, which is fairly lame, but the performance is fine.  Given enough time to write a strong object-sql mapping, I&#8217;m confident it would handle that too.</p>
<p>What sort of schema are you using to store objects in SQL?  One table per class? One table per field type?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Rich Bryant</title>
		<link>http://programmerjoe.com/2007/09/15/agdc-2007-day-3/#comment-36999</link>
		<dc:creator>Rich Bryant</dc:creator>
		<pubDate>Tue, 25 Sep 2007 09:54:07 +0000</pubDate>
		<guid>http://programmerjoe.com/2007/09/15/agdc-2007-day-3/#comment-36999</guid>
		<description>Sorry I got to the party late, but...

That's really weird, Joe.  They HAVE Sql Server licenses already and they're writing something new to handle base object storage and retrieval?

Something tells me somebody's either using the 2000 version or, and this is more likely, is not fully exploiting the capabilities of their DB platform, because I can get absolutely cracking performance out of SQL Server 2005 in object creation, storage and retrieval, even to the point of indexing on object IDs when objects are stored to a single field.

SQL Server has become much more a programmer's platform with 2005 than a DBA's.  I think maybe Cryptic haven't spotted that yet.</description>
		<content:encoded><![CDATA[<p>Sorry I got to the party late, but&#8230;</p>
<p>That&#8217;s really weird, Joe.  They HAVE Sql Server licenses already and they&#8217;re writing something new to handle base object storage and retrieval?</p>
<p>Something tells me somebody&#8217;s either using the 2000 version or, and this is more likely, is not fully exploiting the capabilities of their DB platform, because I can get absolutely cracking performance out of SQL Server 2005 in object creation, storage and retrieval, even to the point of indexing on object IDs when objects are stored to a single field.</p>
<p>SQL Server has become much more a programmer&#8217;s platform with 2005 than a DBA&#8217;s.  I think maybe Cryptic haven&#8217;t spotted that yet.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Joe</title>
		<link>http://programmerjoe.com/2007/09/15/agdc-2007-day-3/#comment-33756</link>
		<dc:creator>Joe</dc:creator>
		<pubDate>Tue, 18 Sep 2007 19:04:51 +0000</pubDate>
		<guid>http://programmerjoe.com/2007/09/15/agdc-2007-day-3/#comment-33756</guid>
		<description>It seems that DB4Objects is actually both embedded (like in a photocopier) AND an object DB.  If you have a cache server as part of your architecture anyway, it may not be too big a deal to embed the database directly into that instead of having it talk over the network to a DB server.

Versant has been trying to sell their object DB at AGC for years.  I don't know of anyone who has actually licensed it, or even evaluated it.  I haven't looked very closely, so  I don't know if that's because "it sucks" or "nobody else has licensed it so I'm not going to either."  The database is such a critical component that I'd be reluctant to be the first one to license some unknown database.

The database layer seems to be a weak spot for the general MMO middleware providers too.  I've heard from one Big World licensee that their database layer is pretty weak and is causing the licensee to work around it for a lot of things.</description>
		<content:encoded><![CDATA[<p>It seems that DB4Objects is actually both embedded (like in a photocopier) AND an object DB.  If you have a cache server as part of your architecture anyway, it may not be too big a deal to embed the database directly into that instead of having it talk over the network to a DB server.</p>
<p>Versant has been trying to sell their object DB at AGC for years.  I don&#8217;t know of anyone who has actually licensed it, or even evaluated it.  I haven&#8217;t looked very closely, so  I don&#8217;t know if that&#8217;s because &#8220;it sucks&#8221; or &#8220;nobody else has licensed it so I&#8217;m not going to either.&#8221;  The database is such a critical component that I&#8217;d be reluctant to be the first one to license some unknown database.</p>
<p>The database layer seems to be a weak spot for the general MMO middleware providers too.  I&#8217;ve heard from one Big World licensee that their database layer is pretty weak and is causing the licensee to work around it for a lot of things.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jeff Freeman</title>
		<link>http://programmerjoe.com/2007/09/15/agdc-2007-day-3/#comment-32988</link>
		<dc:creator>Jeff Freeman</dc:creator>
		<pubDate>Mon, 17 Sep 2007 04:49:13 +0000</pubDate>
		<guid>http://programmerjoe.com/2007/09/15/agdc-2007-day-3/#comment-32988</guid>
		<description>Great link, thanks.

All I'd read about object db's before seemed to talk about an entirely different sort of thing, totally irrelevant to what we've been needing.

Case in point, from today:
&lt;a href="http://www.informationweek.com/news/showArticle.jhtml?articleID=201806547" rel="nofollow"&gt;Startup City: DB4Objects Takes A Run At The Object Database Market&lt;/a&gt;

...but reading that, it seems that when they say "object-oriented db" they mean "a db which is embedded in an "object", such as a photocopier or a cellphone, for example.

Hell of an opportunity for a db software developer to sell everyone in the entire MMO industry a db, there.

How did all those middleware merchants miss that one?</description>
		<content:encoded><![CDATA[<p>Great link, thanks.</p>
<p>All I&#8217;d read about object db&#8217;s before seemed to talk about an entirely different sort of thing, totally irrelevant to what we&#8217;ve been needing.</p>
<p>Case in point, from today:<br />
<a href="http://www.informationweek.com/news/showArticle.jhtml?articleID=201806547" rel="nofollow">Startup City: DB4Objects Takes A Run At The Object Database Market</a></p>
<p>&#8230;but reading that, it seems that when they say &#8220;object-oriented db&#8221; they mean &#8220;a db which is embedded in an &#8220;object&#8221;, such as a photocopier or a cellphone, for example.</p>
<p>Hell of an opportunity for a db software developer to sell everyone in the entire MMO industry a db, there.</p>
<p>How did all those middleware merchants miss that one?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Joe</title>
		<link>http://programmerjoe.com/2007/09/15/agdc-2007-day-3/#comment-32748</link>
		<dc:creator>Joe</dc:creator>
		<pubDate>Sun, 16 Sep 2007 15:23:52 +0000</pubDate>
		<guid>http://programmerjoe.com/2007/09/15/agdc-2007-day-3/#comment-32748</guid>
		<description>MMO state is usually represented at runtime by a hierarchy of objects.  An entire object is either in memory or out of memory, and most transactions operate on an object by ID. It's relatively uncommon to need to look up an object by any of its fields apart from its ID. Character name is the obvious exception.

Relational databases are all about flat tables of records. SQL queries are very good at gathering that data up in lots of different ways based on any of the data, but they really only support a list of flat records as their output. The simplest implementation of storing objects into a relational database would be to have a table for each object type and have each object field be a column.  Depending on how you do the lists, that might involve a query per sub-object, which for a character and his inventory could be hundreds of queries.

Ben Zeigler, another engineer from Cryptic, &lt;a href="http://www.jzig.com/blog/development/sql_sucks.html" rel="nofollow"&gt;posted his take on the subject&lt;/a&gt; last year.</description>
		<content:encoded><![CDATA[<p>MMO state is usually represented at runtime by a hierarchy of objects.  An entire object is either in memory or out of memory, and most transactions operate on an object by ID. It&#8217;s relatively uncommon to need to look up an object by any of its fields apart from its ID. Character name is the obvious exception.</p>
<p>Relational databases are all about flat tables of records. SQL queries are very good at gathering that data up in lots of different ways based on any of the data, but they really only support a list of flat records as their output. The simplest implementation of storing objects into a relational database would be to have a table for each object type and have each object field be a column.  Depending on how you do the lists, that might involve a query per sub-object, which for a character and his inventory could be hundreds of queries.</p>
<p>Ben Zeigler, another engineer from Cryptic, <a href="http://www.jzig.com/blog/development/sql_sucks.html" rel="nofollow">posted his take on the subject</a> last year.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jeff Freeman</title>
		<link>http://programmerjoe.com/2007/09/15/agdc-2007-day-3/#comment-32567</link>
		<dc:creator>Jeff Freeman</dc:creator>
		<pubDate>Sun, 16 Sep 2007 07:31:05 +0000</pubDate>
		<guid>http://programmerjoe.com/2007/09/15/agdc-2007-day-3/#comment-32567</guid>
		<description>&lt;blockquote&gt;The big shocker in the talk is that Cryptic is writing its own database server for Marvel. &lt;/blockquote&gt;

Uhm... wow.

Can you clarify what "the object relational problem" is? Or post a link?</description>
		<content:encoded><![CDATA[<blockquote><p>The big shocker in the talk is that Cryptic is writing its own database server for Marvel. </p></blockquote>
<p>Uhm&#8230; wow.</p>
<p>Can you clarify what &#8220;the object relational problem&#8221; is? Or post a link?</p>
]]></content:encoded>
	</item>
</channel>
</rss>
