<!-- MHonArc v2.4.4 --> <!--X-Subject: [MUD-Dev] Re: Databases --> <!--X-From-R13: "F. Oyrknaqre Bbcvry" <cbcvryNjbysfxrrc.pbz> --> <!--X-Date: Sun, 16 Jan 2000 10:59:15 -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> [ <a href="../">Other Periods</a> | <a href="../../">Other mailing lists</a> | <a href="/search.php3">Search</a> ] <br clear=all><hr> <!--X-Body-Begin--> <!--X-User-Header--> <!--X-User-Header-End--> <!--X-TopPNI--> Date: [ <a href="msg00099.html">Previous</a> | <a href="msg00097.html">Next</a> ] Thread: [ <a href="msg00097.html">Previous</a> | <a href="msg00104.html">Next</a> ] Index: [ <A HREF="author.html#00100">Author</A> | <A HREF="#00100">Date</A> | <A HREF="thread.html#00100">Thread</A> ] <!--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" <<A HREF="mailto:popiel#wolfskeep,com">popiel#wolfskeep,com</A>></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> >Message-ID: <<A HREF="msg00096.html">01BF5F7A.CD766340.charles.hughes#bigfoot,com</A>> >From: Charles Hughes <charles.hughes#bigfoot,com> >Date: Sat, 15 Jan 2000 17:06:02 -0500 >At the risk of being slapped by a mackerel, who here really thinks they >can do a better database design than those afforded by the likes of the >free or commercial databases? [I'll ask those here who've actually >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 <gmiller#classic-games,com></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><Possible follow-up(s)><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> [ <a href="../">Other Periods</a> | <a href="../../">Other mailing lists</a> | <a href="/search.php3">Search</a> ] </center> <hr> </body> </html>