2000Q1/
<!-- MHonArc v2.4.4 -->
<!--X-Subject: [MUD&#45;Dev] Re: Databases -->
<!--X-From-R13: "F. Oyrknaqre Bbcvry" <cbcvryNjbysfxrrc.pbz> -->
<!--X-Date: Sun, 16 Jan 2000 10:59:15 &#45;0800 -->
<!--X-Message-Id: 200001161638.IAA08248#cashew,wolfskeep.com -->
<!--X-Content-Type: text/plain -->
<!--X-Head-End-->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<html>
<head>
<title>MUD-Dev message, [MUD-Dev] Re: Databases</title>
<!-- meta name="robots" content="noindex,nofollow" -->
<link rev="made" href="mailto:popiel#wolfskeep,com">
</head>
<body background="/backgrounds/paperback.gif" bgcolor="#ffffff"
      text="#000000" link="#0000FF" alink="#FF0000" vlink="#006000">

  <font size="+4" color="#804040">
    <strong><em>MUD-Dev<br>mailing list archive</em></strong>
  </font>
      
<br>
[&nbsp;<a href="../">Other Periods</a>
&nbsp;|&nbsp;<a href="../../">Other mailing lists</a>
&nbsp;|&nbsp;<a href="/search.php3">Search</a>
&nbsp;]
<br clear=all><hr>
<!--X-Body-Begin-->
<!--X-User-Header-->
<!--X-User-Header-End-->
<!--X-TopPNI-->

Date:&nbsp;
[&nbsp;<a href="msg00099.html">Previous</a>
&nbsp;|&nbsp;<a href="msg00097.html">Next</a>
&nbsp;]
&nbsp;&nbsp;&nbsp;&nbsp;
Thread:&nbsp;
[&nbsp;<a href="msg00097.html">Previous</a>
&nbsp;|&nbsp;<a href="msg00104.html">Next</a>
&nbsp;]
&nbsp;&nbsp;&nbsp;&nbsp;
Index:&nbsp;
[&nbsp;<A HREF="author.html#00100">Author</A>
&nbsp;|&nbsp;<A HREF="#00100">Date</A>
&nbsp;|&nbsp;<A HREF="thread.html#00100">Thread</A>
&nbsp;]

<!--X-TopPNI-End-->
<!--X-MsgBody-->
<!--X-Subject-Header-Begin-->
<H1>[MUD-Dev] Re: Databases</H1>
<HR>
<!--X-Subject-Header-End-->
<!--X-Head-of-Message-->
<UL>
<LI><em>To</em>: <A HREF="mailto:mud-dev#kanga,nu">mud-dev#kanga,nu</A></LI>
<LI><em>Subject</em>: [MUD-Dev] Re: Databases</LI>
<LI><em>From</em>: "T. Alexander Popiel" &lt;<A HREF="mailto:popiel#wolfskeep,com">popiel#wolfskeep,com</A>&gt;</LI>
<LI><em>Date</em>: Sun, 16 Jan 2000 08:38:05 -0800</LI>
<LI><em>cc</em>: <A HREF="mailto:popiel#cashew,wolfskeep.com">popiel#cashew,wolfskeep.com</A></LI>
<LI><em>Reply-To</em>: <A HREF="mailto:mud-dev#kanga,nu">mud-dev#kanga,nu</A></LI>
<LI><em>Sender</em>: <A HREF="mailto:mud-dev-admin#kanga,nu">mud-dev-admin#kanga,nu</A></LI>
</UL>
<!--X-Head-of-Message-End-->
<!--X-Head-Body-Sep-Begin-->
<HR>
<!--X-Head-Body-Sep-End-->
<!--X-Body-of-Message-->
<PRE>
&gt;Message-ID: &lt;<A HREF="msg00096.html">01BF5F7A.CD766340.charles.hughes#bigfoot,com</A>&gt;
&gt;From: Charles Hughes &lt;charles.hughes#bigfoot,com&gt;
&gt;Date: Sat, 15 Jan 2000 17:06:02 -0500

&gt;At the risk of being slapped by a mackerel, who here really thinks they
&gt;can do a better database design than those afforded by the likes of the
&gt;free or commercial databases?  [I'll ask those here who've actually
&gt;worked on these databases not to chime in. :)]

For the limited problem set of a MUD world, yes, I think that I can
design a better database than one of the free or commercial ones.
There is a simple reason for this: commercial databases want to
pretend that you are the only person using the database at this time,
while a MUD wants to glorify the fact that there's a lot of other
people there that you are (forced into?) interacting with.

Getting a little more specific, the commercial databases (and
generally the free ones that I've seen, too) are optimized for
relatively few large transactions where there is relatively little
overlap and contention, frequently with rollback as the contention
handling mechanism.  A MUD world has extremely small transactions
(open/close of a door, get the contents list of a room) with
contention being extremely frequent, and rollback is a very
unsatisfying contention handling mechanism.

There's also (for the user-programmable MUDs at least) an issue
of ease-of-use, since many of the people writing code for the
MUD will _not_ be experienced coders who think through all the
special cases.  In commercial databases (at least the ones that
I've seen), you have to make at least token acknowledgement that
some operation may fail, either by explicitly asserting a lock
to prevent contention, or by setting up a retry loop to handle
rollback, or by breaking up your transactions into less contentious
pieces.  These things _are not obvious_ to the novice coder, and
thus lead to unsafe code being written, and failures that utterly
confuse the users.  Even worse, when the novice coders learn of
some of this, they are likely to try writing retry loops without
any limiting factors (or other similar fax pass), turning a simple
failure or deadlock into CPU-eating starvation.

A good MUD database will make the common operations easy, and
will protect the user from the obvious mistakes.  This often
takes the form of making player and mob movement atomic, giving
easy access to contents lists as a single unit, etc.  The exact
operations that need to be protected will vary greatly based on
the physics of your MUD world (the presence or lack of long-range
effects will greatly effect whether or not you need global
synchronization of the database, for instance).  Because of this
variability, I strongly believe that there is no one right solution
to the MUD database design problem, and moreover that the extant
commercial and free databases don't come even close to providing
what most MUDs need.

- Alex



_______________________________________________
MUD-Dev maillist  -  MUD-Dev#kanga,nu
<A  HREF="http://www.kanga.nu/lists/listinfo/mud-dev">http://www.kanga.nu/lists/listinfo/mud-dev</A>

</PRE>

<!--X-Body-of-Message-End-->
<!--X-MsgBody-End-->
<!--X-Follow-Ups-->
<HR>
<ul compact><li><strong>Follow-Ups</strong>:
<ul>
<li><strong><A NAME="00104" HREF="msg00104.html">Re: [MUD-Dev] Re: Databases</A></strong>
<ul compact><li><em>From:</em> Greg Miller &lt;gmiller#classic-games,com&gt;</li></ul>
</UL></LI></UL>
<!--X-Follow-Ups-End-->
<!--X-References-->
<!--X-References-End-->
<!--X-BotPNI-->
<UL>
<LI>Prev by Date:
<STRONG><A HREF="msg00099.html">Re: [MUD-Dev] Databases (was Re: Commercial-use Restrictions on Code Bases)</A></STRONG>
</LI>
<LI>Next by Date:
<STRONG><A HREF="msg00097.html">[MUD-Dev] Mud-Dev FAQ part I</A></STRONG>
</LI>
<LI>Prev by thread:
<STRONG><A HREF="msg00097.html">[MUD-Dev] Mud-Dev FAQ part I</A></STRONG>
</LI>
<LI>Next by thread:
<STRONG><A HREF="msg00104.html">Re: [MUD-Dev] Re: Databases</A></STRONG>
</LI>
<LI>Index(es):
<UL>
<LI><A HREF="index.html#00100"><STRONG>Date</STRONG></A></LI>
<LI><A HREF="thread.html#00100"><STRONG>Thread</STRONG></A></LI>
</UL>
</LI>
</UL>

<!--X-BotPNI-End-->
<!--X-User-Footer-->
<!--X-User-Footer-End-->
<ul><li>Thread context:
<BLOCKQUOTE><UL>
<LI><STRONG>Re: [MUD-Dev] Valhalla license?</STRONG>, <EM>(continued)</EM>
<ul compact>
<LI><strong><A NAME="00126" HREF="msg00126.html">Re: [MUD-Dev] Valhalla license?</A></strong>, 
Matthew Mihaly <a href="mailto:diablo#best,com">diablo#best,com</a>, Tue 18 Jan 2000, 20:37 GMT
</LI>
<LI><strong><A NAME="00143" HREF="msg00143.html">Re: [MUD-Dev] Valhalla license?</A></strong>, 
Richard Woolcock <a href="mailto:KaVir#dial,pipex.com">KaVir#dial,pipex.com</a>, Wed 19 Jan 2000, 02:56 GMT
</LI>
</ul>
</LI>
<LI><strong><A NAME="00098" HREF="msg00098.html">[MUD-Dev] Mud-Dev FAQ part II</A></strong>, 
Marian Griffith <a href="mailto:gryphon#iaehv,nl">gryphon#iaehv,nl</a>, Sun 16 Jan 2000, 18:59 GMT
<LI><strong><A NAME="00097" HREF="msg00097.html">[MUD-Dev] Mud-Dev FAQ part I</A></strong>, 
Marian Griffith <a href="mailto:gryphon#iaehv,nl">gryphon#iaehv,nl</a>, Sun 16 Jan 2000, 18:59 GMT
<LI><strong><A NAME="00100" HREF="msg00100.html">[MUD-Dev] Re: Databases</A></strong>, 
T. Alexander Popiel <a href="mailto:popiel#wolfskeep,com">popiel#wolfskeep,com</a>, Sun 16 Jan 2000, 18:59 GMT
<UL>
<LI><strong><A NAME="00104" HREF="msg00104.html">Re: [MUD-Dev] Re: Databases</A></strong>, 
Greg Miller <a href="mailto:gmiller#classic-games,com">gmiller#classic-games,com</a>, Mon 17 Jan 2000, 19:54 GMT
</LI>
</UL>
<UL>
<li>&lt;Possible follow-up(s)&gt;<br>
<LI><strong><A NAME="00108" HREF="msg00108.html">RE: [MUD-Dev] Re: Databases</A></strong>, 
Sellers, Michael <a href="mailto:MSellers#maxis,com">MSellers#maxis,com</a>, Mon 17 Jan 2000, 22:02 GMT
<UL>
<LI><strong><A NAME="00111" HREF="msg00111.html">Re: [MUD-Dev] Re: Databases</A></strong>, 
Greg Miller <a href="mailto:gmiller#classic-games,com">gmiller#classic-games,com</a>, Mon 17 Jan 2000, 22:27 GMT
<UL>
<LI><strong><A NAME="00112" HREF="msg00112.html">Re: [MUD-Dev] Re: Databases</A></strong>, 
Laurent Bossavit <a href="mailto:bossavit#cybercable,fr">bossavit#cybercable,fr</a>, Mon 17 Jan 2000, 23:51 GMT
</LI>
</UL>
</LI>
</UL>
</LI>
</UL>
</LI>
</UL></BLOCKQUOTE>

</ul>
<hr>
<center>
[&nbsp;<a href="../">Other Periods</a>
&nbsp;|&nbsp;<a href="../../">Other mailing lists</a>
&nbsp;|&nbsp;<a href="/search.php3">Search</a>
&nbsp;]
</center>
<hr>
</body>
</html>