MongoDB is good for non-flat data if you can live with "transactions" that operate only <i>within</i> one "document". (You can do a surprising amount with this, using complicated select-and-alter primitives.) And it has indexes.<p>The "mmap and update in place" design has upsides and down. Up: it's very fast and it doesn't allocate any new space for simple updates. Down: data will be trashed if the DB is shut down rudely, so you need a replica of each node just to keep ACID.