Well, by limiting yourself in this way you are basically stuck with either MLDBM (using GDBM or DB_File), or one of the text-based things you mentioned. If you really think performance is going to be a big issue, use MLDBM. If you can't live without SQL support and still need performance, you have to bite the bullet and get a real database.