For those concerned about databases and especially setup, the proposed engine is SQLite:
http://www.sqlite.org/The main logic behind using databases is that 2DAs basically are database tables already, just in a hard to work with format (from a code perspective). SQL, on the other hand, is a lot faster and more flexible. With the possibility to add new 2DAs and add columns to existing ones, it's imperative we have a system that can handle that. That's where SQL, backed by the SQLite engine and exposed to scripts if necessary, comes in. Both the engine itself and scripts can look things up. You can even do plenty of crazy things with SQL, like finding all human NPCs in a module from script.
Now, the difference between SQLite and, say, MySQL is this:
SQLite is a software library that implements a
self-contained,
serverless,
zero-configuration,
transactional
SQL database engine.
SQLite is the
most widely deployed
SQL database engine in the world.
The source code for SQLite is in the
public domain.
I've used it before, and I know this is true. SQLite can handle over 10,000 inserts per second, unoptimized. Retrieving a row out of 300,000 takes less than 1/20th of a second. The database is a single file and SQLite itself is
1 DLL. There just isn't any setup, so there won't be any compatibility problems.
In fact, you're probably already using SQLite. If you use Firefox, Photoshop, Adobe Acrobat, Adobe Air, run a Mac, have a Symbian, Android or Blackberry-based cellphone or iPhone (actually, I think most Verizon phones use it too), you already use it. It's so small, fast and out-of-the-way that you just don't know. If I hadn't said it, we probably could've worked it into this engine and nobody would've noticed.
'>
So, no worries about databases. But if you have a better idea, by all means....