<!-- MHonArc v2.4.4 --> <!--X-Subject: Re: Of disk swapping, database structure & project management.. --> <!--X-From-R13: pynjerapNphc.uc.pbz --> <!--X-Date: from tacitus.globecomm.net [207.51.48.7] by mx01.ca.us.ibm.net id 861034606.3387-1 Mon Apr 14 16:16:46 1997 --> <!--X-Message-Id: 199704141615.JAA12659#xsvr3,cup.hp.com --> <!--X-Content-Type: text/plain --> <!--X-Reference: 199704120607.GAA344071#out1,ibm.net --> <!--X-Head-End--> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN"> <html> <head> <title>MUD-Dev message, Re: Of disk swapping, database structure & project management.</title> <!-- meta name="robots" content="noindex,nofollow" --> <link rev="made" href="mailto:clawrenc#cup,hp.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="msg00130.html">Previous</a> | <a href="msg00131.html">Next</a> ] Thread: [ <a href="msg00121.html">Previous</a> | <a href="msg00132.html">Next</a> ] Index: [ <A HREF="author.html#00129">Author</A> | <A HREF="#00129">Date</A> | <A HREF="thread.html#00129">Thread</A> ] <!--X-TopPNI-End--> <!--X-MsgBody--> <!--X-Subject-Header-Begin--> <H1>Re: Of disk swapping, database structure & project management..</H1> <HR> <!--X-Subject-Header-End--> <!--X-Head-of-Message--> <UL> <LI><em>To</em>: "Multiple Recipients of MUD Design Mailing List" <<A HREF="mailto:mud-dev#null,net">mud-dev#null,net</A>></LI> <LI><em>Subject</em>: Re: Of disk swapping, database structure & project management..</LI> <LI><em>From</em>: <A HREF="mailto:clawrenc#cup,hp.com">clawrenc#cup,hp.com</A></LI> <LI><em>Date</em>: Sun, 13 Apr 97 08:58:24 -0700</LI> <LI><em>Reply-to</em>: <A HREF="mailto:claw#null,net">claw#null,net</A></LI> </UL> <!--X-Head-of-Message-End--> <!--X-Head-Body-Sep-Begin--> <HR> <!--X-Head-Body-Sep-End--> <!--X-Body-of-Message--> <PRE> In <199704120607.GAA344071#out1,ibm.net>, on 04/12/97 at 02:05 AM, "Jon A. Lambert" <jlsysinc#ix,netcom.com> said: >> From: Greg Munt <greg#uni-corn,demon.co.uk> >> Has anyone experimented with swapping unused parts of the mud database to >> disk, reading it back in when needed? What sort of format is it stored in >> (eg binary, ASCII, etc)? >Yes! Take a look a the COLD project for this in action. It works >remarkably well. Their DB is binary, with a compression option. It >uses NDBM as an indexing method,( a glorified? ISAM). It also uses >an object caching mechanism that implements reference counting and >writing of dirty objects. A backup mechanism is in place and works >semi-asynchronously. Recovery of a corrupted database is not for >the faint of heart. Practical use of the database by external >applications is not likely. The DB can be decompiled and recompiled >to ascii files. There are some good ideas here. Some very good ideas -- many of which I tried to steal. The tack I'm taking now is a little different however (and partly illuminated in a couple recent posts to the r.g.m.* loop vs event driven thread). As mentioned earlier everything is lives in the DB. This encludes all the event data, such as the Event Queue. Fairly obviously however with a decently high event rate, the physical IO rate to the DB would become extreme. Soo, my database code is getting reworked for the umptieth time. The background is that I want a fully transactional database which supports nested transactions, rollbacks, and what I call dependancy-specific rollbacks (ie the ability to rollback a compleat backward dependancy tree of events, each of which was required for a later event WITHOUT having to rollback the entire DB. Thus one specific object (and everything it interacted with) could be rolled back while leaving all the rest of the game untouched), How this is going to work: The DB of course caches aggressively. I want to change mere aggression into flat out ferocity. This thing is going to cache like its bleedin' life depended on it. An important side effect is that the maximum life of a cache member without being written to disk is going to grow to the multi-decaminute mark. The primary candidate for such long cache length will of course be the objects containing the Event Queue and Event List data. Alligned with this will be a periodic full cache flush (hourly?) -- everything in the cache will be commited, but the cache entries will remain. Now, presuming that the server is so silly as to crash, or someone trips over the power cord and yanks it out, what will happen is that the server will load the DB and rollback the entire DB to the last the last full cache flush. Bingo! Everything restarts exactly as it was then, with all the pending/processing event data restored. The reason for the dependancy-specific rollbacks is purely for debugging. It allows the question of, "How did this object get into this state?" to be resolved without bring the entire rest of the game to a stop. With the very loosely assocaited event model I have (ie little to no ability to track the physical or causal source of logged events) this seems necessary. >I am working on similar ideas that involve integrating an object >persistent store with a relational database. *This* I am interested in, but have yet to see a persistant store I like. Texas has a really good base idea with its runtime pointer swizzling, but a few of the philips are real killers. -- J C Lawrence Internet: claw#null,net (Contractor) Internet: coder#ibm,net ---------------(*) Internet: clawrenc#cup,hp.com ...Honorary Member Clan McFUD -- Teamer's Avenging Monolith... </PRE> <!--X-Body-of-Message-End--> <!--X-MsgBody-End--> <!--X-Follow-Ups--> <HR> <!--X-Follow-Ups-End--> <!--X-References--> <!--X-References-End--> <!--X-BotPNI--> <UL> <LI>Prev by Date: <STRONG><A HREF="msg00130.html">Re: Just a bit of musing</A></STRONG> </LI> <LI>Next by Date: <STRONG><A HREF="msg00131.html">Re: Unique id's</A></STRONG> </LI> <LI>Prev by thread: <STRONG><A HREF="msg00121.html">Re: Of disk swapping, database structure & project management..</A></STRONG> </LI> <LI>Next by thread: <STRONG><A HREF="msg00132.html">Re: Of disk swapping, database structure & project management..</A></STRONG> </LI> <LI>Index(es): <UL> <LI><A HREF="index.html#00129"><STRONG>Date</STRONG></A></LI> <LI><A HREF="thread.html#00129"><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: Of disk swapping, database structure & project management..</STRONG>, <EM>(continued)</EM> <ul compact> <LI><strong><A NAME="00102" HREF="msg00102.html">Re: Of disk swapping, database structure & project management..</A></strong>, Jon A. Lambert <a href="mailto:jlsysinc#ix,netcom.com">jlsysinc#ix,netcom.com</a>, Sat 12 Apr 1997, 12:57 GMT </LI> <LI><strong><A NAME="00107" HREF="msg00107.html">Re: Of disk swapping, database structure & project management..</A></strong>, Chris Gray <a href="mailto:cg#ami-cg,GraySage.Edmonton.AB.CA">cg#ami-cg,GraySage.Edmonton.AB.CA</a>, Sun 13 Apr 1997, 00:16 GMT </LI> <LI><strong><A NAME="00117" HREF="msg00117.html">Re: Of disk swapping, database structure & project management..</A></strong>, coder <a href="mailto:coder#ibm,net">coder#ibm,net</a>, Sun 13 Apr 1997, 23:55 GMT </LI> <LI><strong><A NAME="00121" HREF="msg00121.html">Re: Of disk swapping, database structure & project management..</A></strong>, Jeff Kesselman <a href="mailto:jeffk#tenetwork,com">jeffk#tenetwork,com</a>, Mon 14 Apr 1997, 02:45 GMT </LI> <LI><strong><A NAME="00129" HREF="msg00129.html">Re: Of disk swapping, database structure & project management..</A></strong>, clawrenc <a href="mailto:clawrenc#cup,hp.com">clawrenc#cup,hp.com</a>, Mon 14 Apr 1997, 23:16 GMT </LI> <LI><strong><A NAME="00132" HREF="msg00132.html">Re: Of disk swapping, database structure & project management..</A></strong>, clawrenc <a href="mailto:clawrenc#cup,hp.com">clawrenc#cup,hp.com</a>, Mon 14 Apr 1997, 23:27 GMT </LI> </ul> </LI> <LI><strong><A NAME="00083" HREF="msg00083.html">short absence</A></strong>, Chris Gray <a href="mailto:cg#ami-cg,GraySage.Edmonton.AB.CA">cg#ami-cg,GraySage.Edmonton.AB.CA</a>, Sat 12 Apr 1997, 02:16 GMT <UL> <li><Possible follow-up(s)><br> <LI><strong><A NAME="00116" HREF="msg00116.html">Re: short absence</A></strong>, coder <a href="mailto:coder#ibm,net">coder#ibm,net</a>, Mon 14 Apr 1997, 00:01 GMT </LI> </UL> </LI> <LI><strong><A NAME="00082" HREF="msg00082.html">Hello!</A></strong>, Ross Nicoll <a href="mailto:rnicoll#lostics,thenet.co.uk">rnicoll#lostics,thenet.co.uk</a>, Fri 11 Apr 1997, 22:14 GMT </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>