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?"
No Java? (Score:5, Insightful)
I would have recommended HSQL, but you don't want Java. Frankly, usually, when we're talking databases I won't say "use a spreadsheet", but with 10 fields, you might as well use a spreadsheet. Of course OpenOffice.org Base is out, because it uses HSQL.
Something like CSQL [sourceforge.net] might fit, but I have no experience with it.
how about... (Score:4, Insightful)
Umm... just write a few one-liner perl scripts to get info out.
Flat file is useless (Score:5, Insightful)
Re:sqlite (Score:4, Insightful)
Re:Python? (Score:5, Insightful)
Re:OOO? (Score:5, Insightful)
For your reference only (Score:5, Insightful)
So why not simply write out a tab-delimited file? Retrieval is as simple as reading every line, splitting by the delimeter, and regexp'ing whichever field you're examining. 15'000 records takes about two seconds on a modern machine. Of course, for anything more complicated, that same file gets easily imported into your favourite spreadsheet application.
You don't need to worry about locking because you're the only one using it. And otherwise, your application simply locks the file handle, or creates & destroys a traditional lock-file.
It's a thirty-line perl script (of legible perl). You can do it in JScript as a local HTA if you want the benefit of html etc. interfaces.
Re:Python? (Score:5, Insightful)
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. Any other ways I can help with your basic F/OSS education? I'll be here all day.
Re:Python? (Score:3, Insightful)
You're more than welcome to use with any other software, you just can't distribute.
Re:VIM seems to fit the description (Score:2, Insightful)
It would help if the OP had posted the current number of records and projected growth. Size of the database and how it will be utilized goes a long way to determining a 'best' solution.
Re:Flat file is useless (Score:4, Insightful)
Well... XML is human readable in the same way as a sand is edible.
If the OP wants to use a tool better than notepad for editing, he probably should try Open Office.
Re:Python? (Score:5, Insightful)
IMO, the people who still, after all these years, haven't figured out how to make money with GPL software are the failures, not the GPL.
Its just a software license; it doesn't preclude you from charing money for your work, and it doesn't mandate you make your work avaiable to the general public. I can't fathom why some seemingly intelligent people have such a hard time grasping this concept.
Re:No Java? (Score:3, Insightful)
Must not be "online" -- does that rule out web apps? Even if they'll run on your local machine?
And why no Java? Can't be for efficiency, otherwise you wouldn't be running Vista. Maybe something's broken with your Java?
Also, what are the required features? You may have outgrown Notepad, but have you outgrown vim, grep, and friends? That's probably why there's not much F/OSS for this kind of thing. Just a guess.
Sounds like he wants an APPLICATION not a framewrk (Score:4, Insightful)
Re:Python? (Score:2, Insightful)
I'm a huge fan of the GPL, but when I refer someone to BSD software I don't stick in useless remarks about it being the license that's "free for selfish pricks who want to enjoy the benefits of freedom for themselves while depriving others of same".
Give it a rest -- that chip on your shoulder is neither useful nor attractive. There's nothing wrong with choosing to share unconditionally, and there's nothing wrong with choosing to share with those who choose to share.
Plus you've mischaracterized the GPL -- it remains free to *use* unconditionally, the strings are attached only to redistribution.
Re:Python? (Score:4, Insightful)
Yes, you missed the point. You can do it with PD software, specifically with the software in the post that this thread depends from (class dbtxt.) PD source allows you more freedom(s) at the user end. GPL source allows you (a lot) more control at the author end.
Re:Err ... (Score:5, Insightful)
Re:Err ... (Score:3, Insightful)
I work at an investment firm, and we get CSVs from our vendors with SEDOLs in them. Excel will helpfully (and silently) strip the leading zeros on UK securities, for example. Oops.
use a spreadsheet (Score:3, Insightful)
Re:Python? (Score:5, Insightful)
IOW, SQLite, as "lite" as it is compared to Oracle, MySQL, PostgreSQL, etc. is still overkill.
I'm with the GP -- dbtxt looks really cool. Although, I do gotta say that OpenOffice.org would fit the bill just fine for what his requirements are: Calc can be used as a flat-file database, and I think there is support for simple CSV databases in Base.
Re:Python? (Score:4, Insightful)
Proprietary licensing is specifically designed to make the licensee dependent on the licenser. If there's bugs in the software then the licensee can't fix it and there is only one place the licensee can go to get the bugs fixed, the licenser, who is free to refuse to fix the bugs or demand exhorbinate fees to do so. Same with new features or support.
If you wouldn't do this to someone directly then giving code to someone else so they can do it is unethical.
Firebird? (Score:2, Insightful)
Re:Python? (Score:2, Insightful)
Codepoints, eh? Cool!
Actually, dbtext, as is, can be made to store anything you like; this is a natural consequence of the fact that there are lots of fun and interesting ways to put codes of 8-bit and greater sizes into multiple 7-bit containers, including approaches that maintain readability for the base ASCII set.
I will grant you, however, that such exotic and deeply complex programming feats may be beyond your own abilities. In that case, and presuming you want to store such objects, dbtext is surely not for you. I am deeply, deeply saddened. Well, not really. But you can think so if you like.
Or... and I know this is a crazy, crazy idea... if you need such a thing, you could always ask the author if they would be willing to implement it for you. They might do it. Sort of boggles the mind, doesn't it? Polite and respectful human interaction. Seems... wrong, somehow, doesn't it?
Re:Python? (Score:2, Insightful)
In before "Use LGPL": we'll never see ZFS in the Linux kernel because of the above problem, unless Sun decides to get rid of the clauses that make you immune to patent suit from them.
Re:Python? (Score:5, Insightful)
To be fair, a proprietary licenser is also free to fix the bugs ASAP and well, provide such fixes for free, also to provide new features for free if they like. I do this all the time with a commercial application. A PD author also retains such freedom. These are not benefits that exclusively arrive via the GPL. And it is well to consider that with a GPL, PD or commercial application, one is free to demand money to fix something, to add features to it, to explain or teach its use, or even to simply use it. Doesn't mean you'll get it, but it doesn't mean you won't, either.
I don't think you've really analyzed this far enough. Giving someone something, and then telling them what they can and cannot do with it, carries ethical problems in the form of imposing your will on someone else (and it also devalues the gift, in my personal opinion.)
"Here's a gift of a book; but you can only read it if you use LED lights." "Here's a gift of a cat; but you can only have it if you'll eat it." "Here's a gift of a some money, but you must spend it upon me."
You see? This is why the term "freedom" has always seemed to go so poorly with the coercive requirements that the GPL applies to the various recipients in the chain of "gifts."
Re:Python? (Score:1, Insightful)
His point is blindingly obvious and it's well known to anybody familiar with the GPL, so I can only imagine you are being dense on purpose. You are going around saying that the GPL has restrictions on use. It does not. It restricts distributing copies. You are free to use GPLed software any way you see fit. It is only when you distribute copies that you need to follow the rules laid out in the GPL. If all you are doing is using the software, you don't need to agree to the GPL at all.
Re:Python comes with SQLite (Score:2, Insightful)
Re:No Java? (Score:5, Insightful)
This guy wants a spreadsheet, he just doesn't know it. Excel--or the free alternative from OpenOffice.org--will do everything he could possibly want, and although it saves as its own infernal file format, it exports competently into a tab or comma-delimited format.
All the extra "requirements" are just pseudo-intellectual mumbo-jumbo that have no bearing on reality.
Re:Python? (Score:4, Insightful)
Your imagination, not to put too fine a point on it, has failed you.
Yes, in fact, it does.
I have come across a snippet of GPL'd source code. I want to use it in my gigabyte of source code commercial app, which, prior to such inclusion, is legally mine to distribute, which is a use I make of this object, that is, my application. However, as quite common in commercial efforts, I cannot legally distribute the source code of my application. So, one day I use the GPL'd source code by compiling said GPL source into the commercial app. I mod it to better suit my use of it. My app is suddenly subject to a change in usability, imposed by the GPL, such that I no longer have the option of using the same way (which act can also be characterized as distribution) to earn money, and my customers no longer have the option to use my altered application. This viral alteration of the usability of my application is entirely courtesy of the GPL. In order to reverse this alteration and keep the code snippet in use in the application, I must perform actions that I actually do not have the option of choosing due to previously existing obligations (essentially source code distribution.) The end result is that the GPL'd code cannot be used if the commercial application is to remain usable.
To be blunt, the word "use", (as well as all of its natural permutations) which you depend upon so heavily in your flawed analysis, doesn't have the limited meaning you wish it had — nor has it ever, or will it ever, have such a limited meaning. This is why your argument is specious.
Re:Python comes with SQLite (Score:4, Insightful)
2) He's explicitly mentioned several times that this is for his own private non-web use.
3) Your fly is open.
Re:Python? (Score:3, Insightful)
It isn't obvious? (Score:1, Insightful)
Re:Python? (Score:3, Insightful)
In other words: get some perspective. People who get raped or murdered are victims. People who use proprietary application software run the spectrum from happy users to suckers, but that's about it.
Re:Python comes with SQLite (Score:2, Insightful)
I know that feeling.
Re:Python? (Score:5, Insightful)
Why should the GPL hackers share with you if you aren't willing to share with them?
You don't like their license. That's fine, they don't like your license either.
Re:Python? (Score:4, Insightful)
It's my code; I chose to make it PD; and I do get something for it, I get to add a shoulder to the wheel, as it were, if anyone will accept my contribution... and I enjoy the idea that the time I spent saves someone else some of theirs, hopefully such that they can create something above and beyond what I already did. Sometimes that's enough. I've gotten lots of help off the net, no strings at all -- so I don't find it at all peculiar to offer something back likewise sans strings.
Some works we contribute; some things we ask a return for. I'm ok with both approaches, really, it is the ones in the middle (supposedly "free", but with substantial strings) that don't attract me either as a user or a contributor. That's just me. What seems to rile people up is if I talk about the reality of those strings. That's when we get these threadfests.
Re:Python? (Score:4, Insightful)
In what specific ways does the supposed "bloat" of SQLite affect the user, exactly?
What kind of "maintenance" does the user need to do on the SQLite source code? It's maintained well enough for some some pretty big users [sqlite.org]. Who maintains your code and why should I trust you with my data?
How can SQLite be "difficult to use" when it's just standard SQL with a standard Python DBAPI interface?
It's really nice that you wrote a cute little datastore. But there's no need to badmouth what you perceive as the competition.
Re:Python? (Score:2, Insightful)
Otherwise just use CSV and be done with it. I bet anyone here, in their language of choice, could write a fairly fully featured CSV based datastore (create/read/update/delete) tool in a few hours, especially if the application just reads it in at start, manipulates the dataset in memory, then writes it out.
Re:Python comes with SQLite (Score:3, Insightful)
Why should he shut up? (Score:3, Insightful)
Yes, authors who use the GPL have decided that we can use their code in a certain way, and that's their privilege. However, it can be a dumb choice, because as the grandparent poster points out, those of us who do rely on proprietary licensing models for our revenue (and that would be the majority of us) are often unable to give anything back to the community as a result. I'd love to be able to use some GPL'd libraries in our stuff, and I'd love to be able to piss in those libraries to contribute bug fixes and help out in general. But the GPL forces me in another direction, usually to reinvent the wheel or to use something that's closed source and potentially less capable.
If you author a library, think hard about the licensing model. The GPL may not be the best choice -- unless, of course, you have a religious belief that all software should be GPL, which is your decision to make. I don't get into religious arguments, so that would be the end of the discussion.
Re:Python? (Score:3, Insightful)
Besides, you don't think it's a bit rich to try to restrict "the community" to what you want it to mean, rather than the natural interpretation of the word?
Re:Python? (Score:3, Insightful)
In response to the mentions of DB engines that use a human-readable format, my experience with those is that I gain practically nothing because I rarely end up reading the DB directly, but it is horrendously slow for many operations. Not much to gain, a lot to lose. When I do want a plaintext backup or something to read, it's a sqlite dump away. If the databse access are exceedingly rare, a plaintext may be 'enough', but at the end of the day, a solution like SQLite or a bdb setup is much more widely used and tested.
Re:Python? (Score:2, Insightful)
Following the rules of the GPL is the price for using GPL code. If you don't like the price then either renegotiate it with the copyright owner or don't use it. This is no different to the licencing cost of a tiny part of a proprietry component suite.