2007
04.17

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.

Share and Enjoy:
  • Print
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google Bookmarks
  • HackerNews
  • LinkedIn
  • Reddit
  • StumbleUpon
  • Technorati
  • Twitter

No Comment.

Add Your Comment