Want to read Slashdot from your mobile device? Point it at m.slashdot.org and keep reading!


Forgot your password?
Databases Programming Software IT

F/OSS Flat-File Database? 702

Leemeng writes "I'm looking for a simple, free, and F/OSS flat-file database program. I'm storing info about Wi-Fi access points that I come across, maybe 8-9 fields per entry. I've outgrown Notepad. This info is for my own reference only; it is not going on a Web server. Googling was unhelpful, with results skewed towards SQL, Access (MS), and Oracle, all of which would be overkill for my purposes. My criteria are: it must be simple, F/OSS, must work in Windows Vista, preferably use a portable format, must not be an online app, and must not require Java. Does such a beast exist?"
This discussion has been archived. No new comments can be posted.

F/OSS Flat-File Database?

Comments Filter:
  • Python? (Score:5, Informative)

    by fyngyrz ( 762201 ) * on Tuesday May 20, 2008 @06:59PM (#23484234) Homepage Journal

    Can't be Java... well, how about Python?

    Here is [ideaspike.com] a completely free (PD, not GPL-style "you're free to do as we tell you") database engine that will do what you have described thus far.

    The database engine is about 19k bytes (not a typo), has no dependencies (other than Python itself), supports a useful subset of SQL so you can actually create flexible queries that produce well-sorted results from your database, and it works everywhere Python does, which is to say, it works pretty much everywhere. It's just as happy operating on a command line as it is on a web server. The results (the actual databases) are 100% portable from OS to OS. I use it on various linuxes, OS X, and Windows for tasks very similar to yours.

    Comes with tutorial examples, sample databases and extensive docs. In a 13k (not a typo) archive.


  • Err ... (Score:4, Informative)

    by Anonymous Coward on Tuesday May 20, 2008 @07:01PM (#23484264)
    Comma Separated Variable Text Files, as exported and imported by Excel. You can get libraries to read and write these, and search these in most languages.

    Otherwise what's wrong with a simple database like MySQL or PostgreSQL on your computer?
  • OOO? (Score:5, Informative)

    by iamhigh ( 1252742 ) * on Tuesday May 20, 2008 @07:02PM (#23484272)

    it must be simple, F/OSS, must work in Windows Vista, preferably use a portable format, must not be an online app, and must not require Java. Does such a beast exist
    Maybe this will do? [openoffice.org] I think it meets all your needs. You can even use it with a web app if desired. Some functionality may need Java, but most doesn't. I don't know what parts of OOO are Java-driven, but I am sure somebody here does!
  • sqlite (Score:5, Informative)

    by nguy ( 1207026 ) on Tuesday May 20, 2008 @07:02PM (#23484276)
    Sqlite is used in many apps (including Firefox), it's small, and it's efficient. It also has bindings to just about every imaginable language.

    I find it amazing that you didn't come across it in Googling...
  • SQLite (Score:5, Informative)

    by kcbanner ( 929309 ) * on Tuesday May 20, 2008 @07:03PM (#23484280) Homepage Journal
    Get it http://www.sqlite.org/ [sqlite.org] here.
    There are GUI clients that work fine for this sort of thing, SQL is simple for doing basic things. One file, one database.
  • SQLite (Score:2, Informative)

    by elhedran ( 768858 ) on Tuesday May 20, 2008 @07:03PM (#23484300)
    Have you looked at SQLite?

    C based, no client-server. Very small, quite fast. And a very permissive license.
  • sqlite of course (Score:2, Informative)

    by cats-paw ( 34890 ) on Tuesday May 20, 2008 @07:08PM (#23484386) Homepage
    I think this would be perfect, I found it when I was looking for a DB which met similar criteria. I don't care about windows, but it does work under windows AFAIK.

      http://www.sqlite.org/ [sqlite.org]

    Use it all the time for everthing from trivial databases to several 10s of megabytes. Since query's can be entered on the command line it's quite simple to write an ascii results grabber.
  • by edisrafeht ( 1199347 ) on Tuesday May 20, 2008 @07:10PM (#23484416)
    In addition to Calc, there is also Base, the alternative to MS Access. Check it out here: http://www.openoffice.org/product/base.html [openoffice.org] It's gotta be way easier to work in OpenOffice than a whole database system (making up accounts, tables, reports, and all).
  • Spreadsheet (Score:4, Informative)

    by benwb ( 96829 ) on Tuesday May 20, 2008 @07:11PM (#23484418)
    Open office should do the trick.
  • SQLIte or BDB (Score:4, Informative)

    by willyhill ( 965620 ) <pr8wak@gm[ ].com ['ail' in gap]> on Tuesday May 20, 2008 @07:11PM (#23484424) Homepage Journal
    I'd recommend SQLite or Berkley DB. I've used BDB on a couple of projects where I needed to basically store an enormous hashtable that could be read quickly by key, and I don't think anything else comes close to the speed of that thing.

    BDB is *not* a relational database though, it's just a storage/indexing engine, which is used most notably by MySQL as a backend. SQLite on the other hand is a full file-based RDBMS with a small runtime, so it might be a bit of overkill for you in this particular scenario.

    But both of them run on Windows, Linux and the BSDs, so you won't have portability problems. And most languages have bindings for them.

  • Re:SQLite (Score:3, Informative)

    by Quartz25 ( 1195075 ) on Tuesday May 20, 2008 @07:12PM (#23484434) Homepage
    Python 2.5 comes with SQLite3, so you don't even have to install it separately.
  • GDBM (Score:5, Informative)

    by jschmerge ( 228731 ) on Tuesday May 20, 2008 @07:13PM (#23484450)
    If you're doing simple Key,Record storing, try GDBM (or one of its analogs: DBM, NDBM). IIRC, it's included as part of glibc. The interface for it is analogous to that of a hash table... In fact there's even native Perl support for tying hash tables to GDBM.

    If that doesn't satisfy your need, take a look at Berkley DB. It offers a more sophisticated interface than DBM.

  • Re:SQLite (Score:3, Informative)

    by edalytical ( 671270 ) on Tuesday May 20, 2008 @07:16PM (#23484502)
    Yeah, you can't really get more permissive than public domain [sqlite.org].
  • by diamondsw ( 685967 ) on Tuesday May 20, 2008 @07:17PM (#23484520)
    For a small number of fields like that, why re-invent the wheel? Grab OpenOffice and just create a spreadsheet. Easily searchable, sortable, extendable, and all with zero maintenance on your part.

    I recently moved my collection of serial numbers out of a defunct proprietary program and into a spreadsheet - couldn't be happier.
  • Re:Err ... (Score:3, Informative)

    by djmurdoch ( 306849 ) on Tuesday May 20, 2008 @07:20PM (#23484576)

    Comma Separated Variable Text Files, as exported and imported by Excel.
    Don't use CSV with Excel, it will by default change values on import.

    For example, if you ask it to read and write this:

    May 20,5/20,1.000

    you get this:


    That might be okay if those were really two dates and a number, but I was never asked if they were. (OOO Calc is just as bad: it asks, and by default modifies the data).
  • by KenSeymour ( 81018 ) on Tuesday May 20, 2008 @07:24PM (#23484632)
    Have you used OO Base?

    I was using it about a year ago and I found it buggy and hard to use. I was using it to access

    I like the other parts of OpenOffice that I use, Write, Calc, Draw.
    Of course, I have not had time to look at it since then.
  • Re:sqlite (Score:5, Informative)

    by kingbyu ( 682024 ) on Tuesday May 20, 2008 @07:25PM (#23484660) Homepage Journal
    There is an add-on to Firefox called SQLite Manager that makes managing your own little database quite a bit easier than typing sql commands on a command line:
    https://addons.mozilla.org/en-US/firefox/addon/5817 [mozilla.org]
  • by spookymonster ( 238226 ) on Tuesday May 20, 2008 @07:25PM (#23484662)
    Just get Python, and use the version of SQLite that comes with it:

    import sqlite3
    mydb = sqlite3.connect('sample.db')
    mydb.execute("create table contacts (fname text, lname text, email text)")

    mydb.execute("insert into contacts values('Spooky','Monster','spook@spammity.spam')")


    You can then use the free and open SQLite database browser [sourceforge.net] to browse, edit, and print your table.

    You may think you're keeping it simple by using a flat file, but you're really not. It may be somewhat easier to manually edit, but it's also easier to screw up, and I've never heard of one with the ability to undo changes.
  • Try Metakit (Score:4, Informative)

    by kawabago ( 551139 ) on Tuesday May 20, 2008 @07:26PM (#23484666)
    Metakit is a small footprint database that might fit your needs. Metakit [equi4.com]
  • by mikelieman ( 35628 ) on Tuesday May 20, 2008 @07:28PM (#23484706) Homepage
    echo "badger, badger, badger, badger, snake" >> my_file

  • Re:Err ... (Score:4, Informative)

    by pthisis ( 27352 ) on Tuesday May 20, 2008 @07:29PM (#23484718) Homepage Journal
    We have even worst problems; it'll turn



    The latter being 703 minus 555 minus 5555.
    when importing a CSV file. No joke. There are ways around it, but the default is pretty braindead.
  • Re:Python? (Score:3, Informative)

    by fyngyrz ( 762201 ) * on Tuesday May 20, 2008 @07:32PM (#23484776) Homepage Journal

    No, it isn't just that. It is used to show that what you are quoting is verbatim, for instance in cases where an assertion is unique, questionable, or worded unusually. This also works for obvious spelling errors, of course.

  • by Doofus ( 43075 ) on Tuesday May 20, 2008 @07:37PM (#23484850)
    There are a number of XML databases, several free and open source, that will rely only on "flat-files". You could probably get by with Microsoft's xml libraries, though there are a number of ways to manipulate and query a set of xml documents. Several of these XML databases implement XQuery which may help if your dataset grows beyond effective queries by visual inspection in Notepad.

    eXist [sourceforge.net] is one alternative; while I haven't personally used it the home page indicates it's a fairly capable project.

    Sedna [ispras.ru] also appears to be feature-rich.

    There was a similar discussion on Slashdot specifically with reference to XML databases, here [slashdot.org].

    Happy hunting -
  • Re:Python? (Score:5, Informative)

    by fyngyrz ( 762201 ) * on Tuesday May 20, 2008 @07:39PM (#23484894) Homepage Journal

    Why not sqlite?

    • SQLite isn't present or compiled in, in all Python installations, 2.5 or otherwise
    • At 800k, it's about 50x the size of class dbtxt (executable)
    • Source is huge compared to class dbtxt, so maintainance is not easy
    • SQLite is considerably more difficult to use (it's also more capable, though)

    That's all I have for ya, offhand. ;-)

  • Re:Python? (Score:5, Informative)

    by ehrichweiss ( 706417 ) on Tuesday May 20, 2008 @07:42PM (#23484928)
    Well that assertion was a massive FAIL. I make quite a living thanks to the GPL and I know tons of others who do the same.
  • Re:Python? (Score:2, Informative)

    by Nwallins ( 1059978 ) on Tuesday May 20, 2008 @07:48PM (#23485002)

    I can't legally utilize GPL'd source code within a commercial application without doing some very specific (and not always possible) things that the GPL license instructs me I must do.
    You can use the software all you want. Just don't distribute it.
  • Re:No Java? (Score:1, Informative)

    by Anonymous Coward on Tuesday May 20, 2008 @07:49PM (#23485016)
    CSQL only supports in-memory databases. It doesn't even have an on-disk representation -- it's strictly a memory-only cache thing.
  • Re:Python? (Score:3, Informative)

    by fyngyrz ( 762201 ) * on Tuesday May 20, 2008 @07:52PM (#23485068) Homepage Journal

    Yes, that's pretty much what I said, only with more details. What's your point?

  • PCFile (Score:3, Informative)

    by Linker3000 ( 626634 ) on Tuesday May 20, 2008 @07:59PM (#23485180) Journal
    1993 called to recommend PCFILE!

    http://www.umich.edu/~archive/msdos/database/pcfile/ [umich.edu]

    Mind you, you'll have to toss Jim Button $10 as it's shareware!
  • by SixDimensionalArray ( 604334 ) on Tuesday May 20, 2008 @08:13PM (#23485378)
    Nobody has yet mentioned that MySQL has a CSV storage engine [mysql.com] - just create a table with type CSV and away you go. It does require the MySQL engine though.

    Otherwise, I agree with most posters who say just use a simple text and/or xml file if the data volume is relatively small. That should be more than enough!

  • Requirements (Score:3, Informative)

    by jd ( 1658 ) <imipak.yahoo@com> on Tuesday May 20, 2008 @08:15PM (#23485416) Homepage Journal
    The poster didn't want SQL, so I'm guessing they ruled out SQLite on those grounds. QDBM and Oracle/Sleepycat/Berkley DB-4 would be the smallest, fastest "pure" flat-file databases that are also cross-platform - at least, that I know of.
  • by pbhj ( 607776 ) on Tuesday May 20, 2008 @08:22PM (#23485502) Homepage Journal
    I'm still using it for a customer database, it's two main problems are it's buggy and hard to use, and slow.

    So really it's 3 main problems are being buggy, hard to use, slow* and totally bloated ...

    Actually it's not half as buggy as it was a few releases back - I can actually use it now to fill in a form without it crashing. Just tried opening a windows XP made odb file in Ubuntu (OOo 2.4) and it's slow as hell and bugged to death, so you might add portability to that list of main problems.

    [Yes I've filed bug reports].

    * slow for searching, takes about 2 mins to do a straight text search on 500 records.
  • Re:Python? (Score:5, Informative)

    by dixonpete ( 1267776 ) on Tuesday May 20, 2008 @08:25PM (#23485524)
    There's an add-on for Firefox that makes SQlite use fairly painless: SQLite Manager. Brilliant work.
  • by tknd ( 979052 ) on Tuesday May 20, 2008 @08:25PM (#23485528)

    He doesn't need python. He just needs a database. He can download a precompiled binary for windows [sqlite.org] that allows one to work with the database at the command line [sqlite.org]. Python is not necessary.

    And if the command line is too much, as others have noted there is already a convenient firefox extension [mozilla.org] for graphically interacting with a sqlite database.

  • Re:Python? (Score:1, Informative)

    by legutierr ( 1199887 ) on Tuesday May 20, 2008 @08:43PM (#23485722)
    OK, dbtxt looks interesting, but SQLite is very stable (it's used as the data storage in the iPhone, in Firefox, and in Skype, for example), and has a ton of features, like:

    - mostly ACID compliant (i.e. transactions w/rollback)
    - standard SQL (or close enough to it; de facto, there's no such thing), including joins
    - indexes and primary key generation
    - concurrent use by multiple processes w/locking
    - extremely cross-platform, including many OSs and most languages
    - a great command-line editing tool

    I'm not surprised that most of the posts here site SQLite, because it is great. And it's public domain, so it can be used by anyone, anywhere, for any commercial or private purpose.

    Having a db that is human readable can be a good thing--and a bad thing (anyone can change its contents manually?). Being small is a good thing. But even if you are doing embedded programing, is 800k such a burden that you would give up this feature set?
  • by adonisv1 ( 993122 ) on Tuesday May 20, 2008 @08:57PM (#23485852)
    Why not the pickle/cPickle module? Not a flat-file but easier to manipulate since your just serializing native Python objects.


    import cPickle
    class Record:
    def __init__(self, fname, lname, email):
    self.fname = fname
    self.lname = lname
    self.email = email
    # ---
    # Write out the data
    records = list()
    records.append(Record("John", "Doe", "jd@email.com"))
    output = open("records.db", "wb")
    cPickle.dump(records, output)
    # ---
    # Read back the data
    inputFile = open("records.db", "rb")
    data = cPickle.load(inputFile)
    for record in data:
    print record.fname, record.lname, record.email
  • Berkeley? (Score:3, Informative)

    by mindstrm ( 20013 ) on Tuesday May 20, 2008 @08:59PM (#23485882)
    Berkely DB?
  • Re:Python? (Score:4, Informative)

    by smilindog2000 ( 907665 ) <bill@billrocks.org> on Tuesday May 20, 2008 @09:15PM (#23486068) Homepage
    I'll throw out a shameless plug for something totally unsuitable for what the poster wants: datadraw [slashdot.org]. It's an in-memory super-high-performance (think raw C code or better - not SQL), database generator that I've not only had a lot of fun with, but which now supports well over 1M lines of algorithmic code - some of the most high performance stuff around.
  • Re:Python? (Score:5, Informative)

    by smilindog2000 ( 907665 ) <bill@billrocks.org> on Tuesday May 20, 2008 @09:17PM (#23486084) Homepage
    Grr... some shameless link! Should have checked it: datadraw [sf.net]
  • Re:Python? (Score:3, Informative)

    by QuasiEvil ( 74356 ) on Tuesday May 20, 2008 @09:48PM (#23486356)

    Use it in any project that isn't GPL'd.
    Agreed - this is a particular problem when it comes to library code that folks have either intentionally or ignorantly GPL'd. If I'm not modifying the library code, just using it, I don't want to have to jump through hoops on the calling interface. I don't want to have to build as a shared library with a runtime link. It's a pain, and an unnecessary headache. I'm more than happy to help distribute the source I built against, but I don't want it GPLing my app in the process.

    So, the freedom I want is the freedom to license my code as I see fit, while still making use of the high quality of free software (libraries) and supporting them with bugfixes, patches, and another distribution point. With the GPL, you're really only free to make more GPL software. Part of freedom is allowing people to do things you don't like and/or don't agree with. That part seems to have been lost here.

    I've been moving my own personal released code to BSD lately, and my professional code, well, is largely internal apps for my employer.

  • Re:Python? (Score:3, Informative)

    by MSG ( 12810 ) on Tuesday May 20, 2008 @09:59PM (#23486448)
    I'm sure it's just me.

    It's not just you. Python exposes the locking mechanisms of the underlying platform and doesn't try to abstract any further than that.

    If you want simple, portable locking, use this recipe from ASPN:
    http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/65203 [activestate.com]
  • by Just Some Guy ( 3352 ) <kirk+slashdot@strauser.com> on Tuesday May 20, 2008 @10:14PM (#23486598) Homepage Journal

    I don't know if the python bindings are of that same quality; if they are, they're top notch.

    The sqlite3 module as shipped with Leopard says that it supports question mark substitution, so his example would be better written like:

    mydb.execute("insert into contacts values(?, ?, ?)", ('Spooky', 'Monster', 'spook@spammity.spam'))

    BTW, the same could be written for PostgreSQL like:

    mydb.execute("insert into contacts values(%(first)s, %(last)s, %(email)s)", {'first': 'Spooky', 'last': 'Monster', 'email': 'spook@spammity.spam'})

    Hopefully sqlite3 will get the same standard substitution in the future, but at least it is possible to do it safely today.

  • by SpectateSwamp ( 904617 ) on Tuesday May 20, 2008 @10:31PM (#23486780) Homepage
    Been searching flat files with this open source VB5 program since 1999. Searches flat files at 20,000,000 cps displaying hi-lited hits in matching lines only or full context mode. Results can be exported to a results file. Append txt files together. Search and replace option. Run multiple versions with various default settings. I have been yapping and yapping about flat files, only to get great amounts of resistance from the Geeks. The search uses lots of defaults and quick keys (for typists). From startup to shutdown nothing is faster. Channel9 and thedailyWTF.com have the best threads. Check it out. It's the only program you'll ever need
  • Re:Err ... (Score:4, Informative)

    by CheeseTroll ( 696413 ) on Tuesday May 20, 2008 @10:40PM (#23486860)
    Another way around that is to open Excel first, then do File > Open to open the .csv file. That should force Excel to use the import Wizard, which lets you specify those columns as text, rather than assuming that they're numbers or an equation.

    That's what I do in Excel 2003, anyway, to stop it from stripping the leading zeros in SSNs.

  • Re:Python? (Score:3, Informative)

    by fyngyrz ( 762201 ) * on Tuesday May 20, 2008 @10:40PM (#23486870) Homepage Journal

    But sqlite is on a totally different level of reliability; the fact that it is at the core of the iPhone's data management points to the level of confidence that people have in it.

    Wait a sec... That's not reliability; that's confidence. Reliability is a performance metric; confidence is not. I suspect — looking at some relevant SQLite pages [sqlite.org] — that dbtext might actually be more reliable, because my bug list is at zero and has never moved off zero since release, though it is used thousands of times every day just in my own venues. I have no idea how much others use it, though. ;-)

  • by ubernostrum ( 219442 ) on Tuesday May 20, 2008 @10:43PM (#23486890) Homepage

    Actually, the Python SQLite adapter supports the standard Python DB API (PEP 249 [python.org]), and so you can just follow its recommendations (which includes using placeholders).

  • Re:Try Metakit (Score:3, Informative)

    by slackergod ( 37906 ) on Tuesday May 20, 2008 @11:13PM (#23487204) Homepage Journal
    Much as I like sqllite, I agree with you completely... metakit is definitely what he wants.

    For those not familiar with metakit,
    it straddles a very interesting (to me at least)
    line between "some csv files i threw together" and "full on sql db" in terms of it's storage
    and query semantics, while at the same time being
    a flat file like sqllite.

    And it really deserves to be better known from a
    theoretical standpoint, in how it structures the
    data... especially some of the more interesting
    applications it's been put to, such as a
    graph-theory style database written as a layer on
    top of metakit (can't remember the name).

    Also, it's bound to a number of languages (python
    and tcl are the only ones i've played with).

    Perhaps if there weren't SO MANY responses saying
    "sqllite" over and over, your response would have
    gotten the informative rating it needs.
  • Re:Python? (Score:4, Informative)

    by jhol13 ( 1087781 ) on Tuesday May 20, 2008 @11:38PM (#23487418)
    dbtxt can only handle ASCII (<128 so even ISO-8859-1, etc. are no-no). This can be killer (it is for me).

    Other than that the dbtxt looks very nice indeed.
  • Re:Python? (Score:4, Informative)

    by Binary Boy ( 2407 ) on Tuesday May 20, 2008 @11:41PM (#23487434)
    Never used a self join? I mean I'm no relational database theorist, so maybe you're correct on some level, but one can certainly create relationships between data stored in a single table.
  • Re:Python? (Score:2, Informative)

    by kjots ( 64798 ) * on Wednesday May 21, 2008 @01:35AM (#23488366)

    (God, I don't know why I keep reading Slashot comments, I really don't; but I guess an eleven year habit habit is hard to break...)

    Let's start with the obvious, shall we?

    With the GPL, you're really only free to make more GPL software.

    That's the whole bloody point, except that instead of that second 'GPL' you should be saying 'copyleft'. The GPL and other copyleft licenses are specifically designed to prevent covered code from being used in non-copyleft projects. It's a basic design principal!

    ... the freedom I want is the freedom to license my code as I see fit ...

    You still have that freedom, you just don't have the freedom to relicense other people's code. Not even the BSD style licenses allow you this so-called 'freedom'.

    ... when it comes to library code that [other] folks have ... [I'm] just using it ...

    I added that [other] above to emphasize my point - that it's other people's code that you want to use. You didn't write it, so you can have no expectations that you should be allowed to use it. In this case, these other folks have decided to let you use the code that they have written, but only under their terms. You either have to agree to these terms, rewrite the library so that you can release the code under your own license, or bitch and moan about how unfair it is that you can't just do whatever the fuck you want with other people's hard work (you appear to have chosen the latter).

    Freedom does not mean being able to do whatever the fuck you want to do - that's anarchy, and it doesn't work. Freedom is having a set of universally recognized rights, and the means to enforce those rights on those that seek to trespass against them. Like copyright - it gives you (and only you) the freedom to do whatever you like with your work, and the power to prevent other people from doing whatever they like with your work. In this instance, QuasiEvil, you are the other people.

    Until everyone can be trusted to just 'do the right thing' (whatever the hell that is), freedom will always mean trading some small convenience (like the ability to walk into my neighbours house and take his stuff) for a larger convenience (like not having people walk into my house and taking my stuff). The GPL is no different.

    The truth is that is is possible to circumvent the GPL (i.e. to mix GPL and non-GPL code in the same project) - you just have to ensure that, when you are running the non-GPL code, the CPU's instruction pointer never refers to a block of GPL-covered code. You can achieve this by using networking and/or message passing techniques to pass information from one module to another, without requiring your non-GPL module to be linked with the GPL module. Yes, it's a fuck around, but one again we are simply trading a small convenience for a larger one.

    This post is from someone who releases code under the GPL to everyone in this forum that bashes the GPL at every opportunity (like the first poster). I've made my decision and I'm comfortable with it, so you might as well just shut the fuck up - you're bitching about something that no-one has any intention of changing.

  • Re:Python? (Score:3, Informative)

    by poopdeville ( 841677 ) on Wednesday May 21, 2008 @01:37AM (#23488380)
    No, he's completely wrong. A relation is a subset of the Cartesian product of sets. And one can form the Cartesian product of a set with itself. For example, the plane is realized by the product RxR.
  • Metakit (Score:2, Informative)

    by hkuiper ( 170334 ) on Wednesday May 21, 2008 @03:38AM (#23489248)
    Take a look at Metakit. http://www.equi4.com/metakit/index.html [equi4.com]. Its single file, small, fast and it has proven itself over many years. It is written in C++ and bindings for Python and Tcl are available. Instead of tables, rows and fields it uses similar concepts called view, index and property. Interestingly, a property may also be a subview thus allowing a mix of a relational database (flexible) and a hierarchical database (fast).
  • by youngdev ( 1238812 ) on Wednesday May 21, 2008 @10:16AM (#23492138)
    I use hsql. It has many options: flat file, memory just to name 2.

    I have also heard good things about H2 and apache derby. These have been especially valuable for embedded apps

Information is the inverse of entropy.