freshmeat.net: Editorials - You Say You Want a Revolution (or Dude, Where’s My Database?)
freshmeat.net: Editorials - You Say You Want a Revolution (or Dude, Where’s My Database?)
Ok this is a very bad article I’m linking here, but the reason for it is I think things have come on quite some. I’m not going to do any testing of new features, or speed comparisons. I’m going to point out a few things obvious to me (to be completed)!.
- MySQL as a data structure - well, I’ve always thought it would be faster to actually build the data structure yourself and not go through all the restrictive table re-formatting of data. Maybe that’s because I’m a competent programmer (more on this later). The more modern data structure player though, would be sqlite. Those speed comparisons, particular for things like simple web sites, are clear, although I need to find some links on that, or generate some to back it up (TODO)!
- MySQL as ‘basic’ - I think this is somewhat a true statement. I think some of it’s growth was it’s supposed “simplicity”. Some people see this as a lack of features. Now, quite often I think some of the readers will be thinking, but Visual Basic is full .NET, so what are you on about? Ok here goes… VB as a language lacks certain features which can be applied to even simple systems to make the program code more concise, without reducing readability (provided you understand the syntax, is the only exception (n.b. I said ‘can’, I’m not saying ‘will’ or ‘in all cases’, I can write ‘good’ VB too)). Most VB / PHP programmers don’t understand metaprogramming, lambda *, …. (insert ‘advanced’ features here) …., (and now for some that shouldn’t be here, but it’s still true!) finite state machines, general data structures, pointers, references, procedures, blah blah blah. Seriously go ask some. You work in an office of web developers? Go ask some of the developers to point out an FSM they’ve used somewhere, or somewhere they’ve built their own data structure. My bet is, 50% of the ‘grunt coders’ out there don’t have a clue, and that includes your office. What you have to really decide now, is if you really agree with me that this is a bad thing, and this may not be so easy, depending on whether or not you have the true vision of what a good effort on a programming solution for particular problem domains should be, besides from any technical reason though, there’s also the cost of expertise, and cost of potential failure due to lack of expertise aswell as other things to be considered.
- Community support - If you program more complex applications, you’re going to often find that you have to program decent solutions to problems in more general cases, and really produce some more sophisticated code. In general, observation of the communities of the currently leading open source databases, postgresql community support provides some really strong and widely available technical strength, which is lacking in the swamp of the mysql community. This might be related to the above.
We use PostgreSQL currently (currently means, no religion here really, other than you should be coding properly, bad code is dangerous, and bad for other people(especially if it’s open source, or interacting with the real world)), because it’s free for commercial use, and it does everything we want at a stable version. I understand MySQL has many of the features in it’s most recent version, however, they’ve only just been introduced, and PostgreSQL is fffaaasssttt these days for complex tasks built out of general case designs. It’s given us a wonderful and complete API for data management, as a whole. We perform all of our business logic _inside_ the database, and this means it really does manage all of our data, and it’s realistically capable of being maintained in an Enterprise grade fashion now, with the smallest of development tasks.
Now as I said, we use PostgreSQL to do all of our data logic, it does all of the manipulation, storage, and reporting of data. We treat it as an RPC system for holding arbitrary data and we do use a number of complex interfaces, not just your traditional “table view” approach. When we started the project, there really was no viable alternative, when taking into account prices and features, along with our high demands. We even have people working on extending it for our needs, utilising for the first time commercially (for us), the nature of open source, and naturally, useful portions of that our developer will be open sourcing too. (via -> water powered <-)