Have You Jumped On The Bandwagon Yet?
Posted by Davy Brion on February 18th, 2010
I’m not sure if this is related to the time of the year, but i (and undoubtedly quite a few of you as well if you’re honest) am once again getting pretty annoyed with the fact that the blogosphere is once again filled with “you gotta do this or you’re just not cool”-kinda posts. The weird part is that the last time i complained about this was pretty much exactly a year ago.
These days, you’re an absolute moron if you’re still using a relational database. And forget about getting invited to the best parties if you’re not developing according to the Command and Query Responsibility Segregation (CQRS) pattern. And if you’re not doing Lean then you’re really not worth listening to. Oh no wait, talking about Lean isn’t hot anymore since the Toyota recalls so we can scratch that off the list, sorry about that one folks.
Now, i’m not saying that the whole NoSQL and CQRS thing is worthless. I actually find them both very interesting. But to all of you who are now pushing these things as if they are the greatest things since sliced bread, i would just like to ask one thing: can we get some more real-world examples? You do use these things in real-world projects before proclaiming that these approaches will fix all (or most) of our current problems, right? You’re not just trying to be cool on the internet, are you? Honestly, of all the people that i hear talking about these things lately i only really believe about a handful of them when they say they use these things in real world projects. I’ll leave it to you to figure out who the real ones are, and who is just jumping on the bandwagon.
And no, i’m definitely not going to claim that using an RDBMS for every system is the best choice. I complain about databases every day, but i’m not just going to claim that going with a NoSQL database is going to solve all our problems either. I’d actually feel rather silly doing so, unless of course i’d be able to actually back up what i’m saying. Which i haven’t really seen happen yet.
The thing is… there simply is no one-size-fits-all approach to software development and it’s pretty sad to see that some idiots actually appear to believe that there is. Sometimes an RDBMS makes sense, and sometimes it doesn’t. Sometimes MVC makes sense, and sometimes it doesn’t. Sometimes DDD makes sense, and sometimes it doesn’t. Sometimes CQRS makes sense, and sometimes it doesn’t. That goes for every tool, library, architectural style, or whatever other buzzword you can think of. Use what makes sense for what you need, and let’s not pretend to be someone or something that you’re not, ok?

February 18th, 2010 at 9:22 pm
Well, what used to be IBM UniVerse (and is know Rocket owned) is a non relational database used all over the place… But then again, it also started long before the current NoSQL movement.
http://en.wikipedia.org/wiki/UniVerse
February 18th, 2010 at 9:22 pm
I’m not touting CQRS as the hottest thing today, but I most definitely think it’s awesome. I agree about the cool guy crap though.
Even though I’m using RDBMS for storage (local SQLite for domain, remote SQL Server for reporting), I’m deploying a system built on CQRS this week and it was SO simple to develop. I’ll be continuing with this arch in the future.
February 18th, 2010 at 10:57 pm
@Davy +1000 on the “code or it didn’t happen” and “more examples please”
@Clayton UniVerse / UniData is complete junk. It’s only non-relational because IBM didn’t bother enforcing referential integrity. As for multi-value fields, 0NF is NOT a feature, it’s a design flaw.
February 18th, 2010 at 11:07 pm
@Jason
i want more than just code… i also want anecdotes of problems they ran into (not too much to ask if they used it for real instead of just, say, a webcast they prepared in about a week), or at least some motivations as to why certain choices were made, etc… anything to show that the author is not just a fanboi and that he has indeed used it for real, or at the very least seriously thought things through
February 19th, 2010 at 7:03 am
I think CQRS should be advertised more and more, just because it is quite a new idea. Only if it will become more popular, we would be able to see more real-life examples. You are absolutely right that there is not silver bullet and CQRS it obviously not one, but I think it deserves more attention from mainstream developers.
I am gradually and carefully putting CQRS ideas into production systems: I started with ‘single database-dual model’ version which is the simplest one. And this alone let me produce more cleaner and more performant code than classic ways. I hope in the next system I will be able to test full-blown ‘Udi-style’ (based on RDBMSs) CQRS.
February 19th, 2010 at 9:11 am
Um. Thank you for being a voice of reason. Right tool for the job folks.
February 19th, 2010 at 10:26 am
Lets face it most teams still report off their OLTP database and consider you weird if you suggest have a second database for OLAP, so to imagine these types of team are going to jump stright a CQRS implementation is laughable…
CQRS is not a new solution to problem – companies have been employing these techniques for ages.
It’s funny how the DDD group has become the CQRS group, I get the feeling there is a real ‘fanboy’ movement around this…
And haven’t you rewritten Agatha in F# yet with DSL strapped on the side
February 19th, 2010 at 10:32 am
@Awkward Coder
that’s actually planned for the 2.x cycle… right after i make it run on the Cloud
February 19th, 2010 at 12:03 pm
Amen.
February 21st, 2010 at 8:36 pm
I don’t think anyone is saying that someone is a moron for using a relational database. Besides, NO SQL stands for ‘Not Only SQL’ which is the actual spirit of the movement.
Do you really need real-world proof before learning or understanding something? When I’m learning a new programming language, say Clojure, I don’t need it to be used in real-world scenario’s. I find this to be a very interesting language and because I’m learning this other language, I’m also becoming a better C# developer as well. Is someone jumping the bandwagon if he decides to learn something
new and blogs about it? There’s a lot of buzz lately around these topics and some of this stuff is good and some other is bad. I for one am glad that this stuff is finally getting into the open compared to roughly a year ago.
Totally agree on the Ssilver bullet thing. One-size fits all isn’t real life. That’s why I get all sort of allergic reactions when people assume an RDBMS without thinking, or N-tier architectures because that’s what Microsoft tells us to do, or people who claim that all web apps should be built
using Silverlight and I could go on like this.
If you want to see code, then look at Mark Nijhof’s sample and there’s also the Abacus sample
http://www.ebenroux.co.za/page/Abacus.aspx
February 21st, 2010 at 8:59 pm
@Jan
“I don’t think anyone is saying that someone is a moron for using a relational database.”
Rob Conery’s post about Reporting In NoSQL says pretty much exactly that on two occasions. One of those quotes made it into your blog post… your own language on the usage of an RDBMS is sometimes pretty strong as well as i’m sure you know all too well
“Do you really need real-world proof before learning or understanding something?”
of course not, i learn or try to understand something as soon as i find it interesting enough to spend time on… QuickNet has no real-world proof but i was pretty interested in that from the beginning just because i thought it would improve the quality of my work. But i also never claimed that it was guaranteed to solve your problems and that classical unit testing isn’t worth the effort. I do want to see at least some kind of indication that a blogger has indeed used a certain piece of technology or approach for more than a few hours of experimenting (or worse, just reading a few posts) and that said author can really, truthfully form an opinion about it which can’t possibly be mistaken for “just jumping on the bandwagon”. My general rule of thumb on that is: “if you can’t say something bad about something you like, you just don’t know it well enough”
There is obviously nothing wrong with looking into these (or any other) subjects, or blogging or talking about them. But the manner in which you communicate about them should be somewhat more reserved until you really do know enough about it to back up any claims that you may have made while you were still just an easily-impressed beginner.
February 21st, 2010 at 9:36 pm
I did use that comment in my blog post, but what I actually wanted to bring across (and failed miserably) is to contrast this with a more pragmatic approach (from my post):
“You can get away with this for small to medium-sized applications, but when you start working on mission-critical solutions with higher volumes, this compromise isn’t going to cut it anymore.”
That’s where NoSQL DB’s really start to shine. The actual point is to stop using relational models by default. I think Greg’s latest post nicely describes what I actually wanted to get at, which is wath you mentioned as well: no one-size fits all communistic crap.
Do recognize that NoSQL is a very wide-spread phenomenon. Besides CouchDB, MongoDB, key-value stores and other document DB’s, it can just as well mean an RDBMS without a relational model (like Friendfeed did with their data architecture). From my point of view, these can be of use in smaller apps as well. That’s why I consider it so important to learn about this stuff as well, because these techniques can be applied in real-world apps.
PS: if you read that post of Rob Connery a couple of times, you’ll find out that the only thing he wanted to accomplish is to write a shocking blog post about the topic (which worked out pretty well
).
February 21st, 2010 at 9:44 pm
@Jan
Oh i know about how wide-spread it is, and that the true relational model fails in many ways at a certain point. But like i said, the ways some people chose to communicate about these things are often misleading and in some cases downright ignorant. That actually does more damage than not talking about these things IMO.
i’m far from a relational database-fanboi (like i said, i probably complain about it daily) but even i try to put things like that in perspective as much as possible
and i’m well aware of Rob’s trollish-tendencies that doesn’t mean i have to like it though
March 2nd, 2010 at 6:41 pm
Thing is though…it takes a guy like Rob with readers who are probably 95%+ .Net only, SQL only (no matter what the problem they are trying to accomplish) to introduce the concept. Your average .Net developer reading the weblogs.asp.net sites and blogs, would probably *never* be exposed to anything but SQL. Did he rattle some cages? Sure. It’s bloggers like Rob, Ayende and yourself that are passionate enough about their craft that they want others to learn too, that push the industry forward.
Besides hyperbole and generalizations are the only things .Net developers understand lol.
I disagree with the statement it does more harm than good. It takes people pushing the edges of what a product/technique/pattern is capable of in order to really improve it. If someone is willing to jump into something like the NoSQL thing and cut themselves on the rough edges, more power to them.
We are a very ‘trendy’ industry…not all of them will stick, but if the best parts of each are discovered and pushed forward, while the bad parts are highlighted and marked to avoid…we’re all better for it. But that can’t happen without people willing to jump.
March 5th, 2010 at 6:42 pm
Speaking of generalizations… I mean, I’ve listened to Udi Dahan and Greg Young talking about CQRS and DDD and I’ve sat in ALT.NET sessions with Greg and Ayende discussing the merits of NoSQL too. I have yet to hear any of these people suggest any of these are a “one sized fits all” solution. In fact it seemed to me that the whole point was to argue against the commonly held belief that things like SQL and N-Tier are OSFA solutions. “No silver bullet” should be a mantra for software developers and I think for most of the good ones it is. I also wonder about how many of the bad ones are reading this blog (or many blogs for that matter).
If jumping on the bandwagon means being excited and enthusiastic about exploring new ideas and testing them out in the real world, then count me among the wagon people.
March 6th, 2010 at 4:39 pm
“I mean, I’ve listened to Udi Dahan and Greg Young talking about CQRS and DDD and I’ve sat in ALT.NET sessions with Greg and Ayende discussing the merits of NoSQL too. I have yet to hear any of these people suggest any of these are a “one sized fits all” solution”
like i mentioned in the post: there’s a handful of people that i _do_ believe when it comes to stuff like this…
“If jumping on the bandwagon means being excited and enthusiastic about exploring new ideas and testing them out in the real world, then count me among the wagon people.”
that doesn’t really fit the description nor the attitude that i talked about in the post
May 5th, 2010 at 8:33 pm
Um. Thank you for being a voice of reason. Right tool for the job folks.