Here's what I currently envision for a new database parser. Abstract objects and plenty of hiding. Little internals known, big flexibility, and much re-use. Comments welcome, it's a pretty large system to start immediately and includes large amounts of dependencies. This is a scratch design from my previous work. Current modules planned: DIO - Data I/O Basically, "open this, read that, close it", nothing fancy. You get what you asked for in one big clump. Keeps things simple. 1) dio_mmap mmap() 2) dio_fread malloc()+fread() 3) dio_sql [DBD] Use SQL queries to retrieve information. DFP - Data Format Parser Translates what it gets from the data I/O into something usuable by the database world. 1) dfp_circle CircleMUD format files. 2) dfp_mudpp Some other world format (mud++ is this example) DBD - Database Driver Basically an SQL language to SQL client convertor. The dio_sql and dbw_sql would form all the queries. 1) dbd_mysql MySQL client. 2) dbd_odbc ODBC client (if I can get an ODBC server working) DBF - Database Format Various methods of allocating structures. The dbf_struct would be basically what CircleMUD does now and the dbf_shm would be similiar but allocate in shared memory instead, allowing fast reboots. 1) dbf_shm Shared memory allocations. 2) dbf_struct Current structure based elements. DBW - Database World What the "game" would talk to in order to manipulate the world. 1) dbw_hash Hash table (via glib) 2) dbw_berkeley Using the Berkeley database. 3) dbw_linklist Linked list (via glib, single or double) 4) dbw_btree Binary tree (via glib) 5) dbw_sql [DBD] SQL requests, using DBD drivers. IDX - Index Basically loads the index files and figures out what else to call. Nothing fancy. Module flow of control on bootup: idx -> dio -> dfp -> dbw -> dbf All C, with Glib currently. -- George Greer | The Ceramic Mouse & Snippets greerga@circlemud.org | http://developer.circlemud.org/ +------------------------------------------------------------+ | Ensure that you have read the CircleMUD Mailing List FAQ: | | http://qsilver.queensu.ca/~fletchra/Circle/list-faq.html | +------------------------------------------------------------+
This archive was generated by hypermail 2b30 : 12/15/00 PST