Archive for April, 2007

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 <-)

rBuilder Online - Release: raggi’s linux

rBuilder Online - Release: raggi’s linux

AV-Comparatives

AV-Comparatives

Link for safe keeping….

Should Database Manage The Meaning? Multi-tier architecture and Cleverness…

Here’s the discussions:

1. Should Database Manage The Meaning?
2. Choose a single layer of cleverness

Here’s my opinion / comments:

  • “I think the cognitive discrepancy lies in equating RDBMS with an operating system. Nothing justifies that parallel.” (1) - He’s comparing access restrictions, and it’s true to say that in rails, there are no restrictions on your applications management of your data.
  • “If we step back and look at what RDBMS is, we’ll no doubt be able to conclude that, as its name suggests (i.e. Relational Database Management System), it is a system that specializes in managing the data in a relational fashion. Nothing more.” (1) - But what you use *contains* an RDBMS, it’s not an RDBMS in it’s own right. It’s an RDBMS, plus DDL, plus various many other features.
  • “Your procedural ambitions will bear no fruit and you’ll have to pry that logic from my dead, cold object-oriented hands.” (2) - My DDL hands ARE object oriented. You poor poor poor mysql user.
  • If you utilise the features of your DB, then your domain model can be reduced to ONE function, and you can treat your DB as a remote procedure call system.
  • Using a Database system as an arbritrary store of FLAT data is SLOW AS A SNAIL. So why oh why oh why would you use a database for this? Like seriously, why not use flat files for storing each of your activerecord models? If they don’t do anything but store data, then files are truly more appropriate, and can be implemented A LOT faster than any DB link will achieve.
  • “Folks, it’s important to keep in mind that it manages the data, not the MEANING of the data!” (1) - Excuse me? my constraints and stored procedures completely manage the meaning of the RPC calls I make to the DB. The strict object oriented type system I use there means that my db objects are in fact carrying more solid meaning than ANY single ruby class or object, whose meaning may change depending on who ducks…
  • “A word processor (such as the much maligned MS Word, or a much nicer WordPress, for example) specializes in managing words. It does not specialize in managing the meaning of the words.” (1) - Except most people rely on their grammar checkers, automatic contents page creation, and so on. These things are features missing from activerecord, and available in my RDBMS
  • “it uses the RDBMS to manage that data in a relational fashion.” (1) - Oh really, because selecting data from one table at a time is relation use and relational management? No. That’s row based management, and is better suited to flat files.
  • “You’d toss that piece of junk out the window in no time.” (1) - Unless actually you’re a lawyer, and by not structuring your document properly you will loose a case, or make a to-be infamous mistake in a lawful document. In fact, your abstraction is as poor as that to which you have been responding. Data consistency is about rigid unbendable rules. Artistic creation is a different process and belongs in a different tier.
  • “Why should we tolerate RDBMS opinions on our data?” (1) - Why should be tolerate rails lack of regard for data consistency and relationship complexity? You claim that in this case opinionation is bad, and yet…. “Active Record is opinionated software, just like the rest of Rails” (2).

Get a grip you lot. So you built something that is really simple stupid, and that makes it easy to coerce and teach to others. That DOES NOT mean you should go to such great lengths to protect immature and unproven ideas as if they are some kind of evangelical movement to enlightenment. You have your place, but it’s not appropriate for everyone.

When two people talking about the same thing completely contradict each other, and make the same abstraction-al mistakes as their opponents, I really start to doubt the sincerity of their claims. Realistically there are a lot of scenarios where you need to ensure that your data is made available through an RPC api, and that your data is held consistently. I know this is out of the scope of the pure web development domain, but it’s still in the application domain. To ignore this is genuinely short sighted, not loud thinking. If you weren’t ignoring it, there would be better support for other methodologies of building or discovering data models in rails, rather than making those of us that like the functionality, build large wrappers to compensate for poor extensibility.

N.B. Unfinished and very directly opinionated right now. More to come and more succinct and backed up examples to come.

IT Department Of The Middle Ages - SHOUTfile.com

IT Department Of The Middle Ages - SHOUTfile.com

priceless.