Try something different

By mOrPhie on Thursday 30 September 2010 10:45 - Comments (10)
Categories: software engineering, techrelated, Views: 8.298

Sometimes a software developer makes a fundamental decision without even realizing it. A C# developer almost always chooses MS SQL Server as the preferred database. What does that decision imply? The data is stored in a relational manner. The data isn’t easily transferable. The model is fixed. You need a license. To install the software, you need to install a SQL Server. The database must be maintained in some sort of way, ect... The implications of such a decision are so big; only an architect should make that decision, shouldn’t he? And he should be very explicit about it.

The reality is that in most C# projects the choice of RDBMS isn’t a logical decision, but based on what the team is used to. That concerns me. Think about it. What if SQLite would fit my needs just perfectly? That would save me the time of installing the server, I am able to copy the database as a file and it is free. I’m not saying you should use SQLite in all of your projects. I am saying you should consider alternatives and ask yourself why you should use it and what part of your software problem it fixes. Maybe XML could fit your needs. Maybe you don’t need a relational database and a document-based database like MongoDB is something to consider.

I’m sure you can imagine this can be applied to more than just databases. The language, the framework, the runtime, the tooling, the software architecture… Surprise yourself and maybe, just maybe you’ll find yourself doing an IronPython project with Django, the .NET DLR, persisting your data in MongoDB. Although I highly doubt that you’ll come up with that combination through a logical decision process ;), it helps you think about the “way to go”.

http://twitter-badges.s3.amazonaws.com/follow_me-a.png

Volgende: Easy Access 10-'10 Easy Access
Volgende: Subconscious prototyping 09-'10 Subconscious prototyping

Comments


By Tweakers user anti-rsca, Thursday 30 September 2010 10:53

This sounds familiar... at SwingGroup we also work with MS SQL, but recently we noticed SQLite, when we find time for it, we'll start some testing, it looks like a real costs-cutter to us :)

By Tweakers user IStealYourGun, Thursday 30 September 2010 11:01

What about knowledge?

I remember a story of my old teachers that a group of students that had allot of difficulties with their end-project (not sure if its correctly translated) because they used Oracle DB in a .net environment. Even though their is good support for oracle DB in .net

In the end they failed the project because of this trouble, so changing to an other database sounds good on paper. But can be a nightmare (as in: expensive) in reality.

Same story with XML, even though is a good language to store small data, it takes a wile to learn and master it. If you don't have the knowledge in house. It can become expensive project. For that last one it might be interesting to use the express version of MS SQL.

[Comment edited on Thursday 30 September 2010 11:02]


By Tweakers user Soggney, Thursday 30 September 2010 11:08

Routine choices are indeed not the best choices, it just requires less thinking.
Maar spijtig genoeg kan je deze keuzes enkel maken bij nieuwe projecten, en niet bij projecten die moeten worden aangepast, of projecten waar de prerequisites sowieso de keuzes beperken.
Ook ervaring is een punt, als de keuze valt op een nieuwe architectuur, die leer je niet even zomaar en het kostenplaatje kan dan ook snel oplopen in ontwikkelingsuren. Maar als je dit erbij rekend en het komt goedkoper uit dan de standaard keuzes, dan is het natuurlijk de betere om zo'n risico te nemen. Ja het is en blijft een risico om een project aan te vangen in een omgeving waar je minder ervaring hebt. Gelukkig win je altijd de ervaring op het einde van een project.

By Tweakers user Apache, Thursday 30 September 2010 11:19

I think this is mostly true for dotnet environments. As a java dev it's very common to use hsql while running unit tests/locally, having mysql locally and using an actual oracle db in test/prod.

It's only important that the ITT/UAT/PROD have the same stack, but DEV/CI we usually don't care that much.

Since the datasource is configured through spring/jndi it's easy to have a specific one that fits perfectly for the stage we need it. Everything else is abstracted through jdbc/jpa/hibernate dialects. This also decouples your app from the db making it more portable.

Only time when it starts to get annoying is when you use db specific features, but we avoid things like that as much as possible, triggers are replaced by JPA listeners, full text search can be handled through hibernate search/lucene instead of db specific solutions etc.

By Tweakers user Herko_ter_Horst, Thursday 30 September 2010 11:44

TBH, unless you're using very specific functionality available only in a particular RDBMS, I don't consider choosing one a fundamental decision. It's pretty easy to transfer relational data from one database to another. Even easier if a database abstraction, such as NHibernate, is used.

Of course, deciding between an RDBMS and a non-RDBMS is a much bigger choice, that will have architectural and commercial impact.

[Comment edited on Thursday 30 September 2010 11:45]


By Tweakers user YopY, Thursday 30 September 2010 12:03

I wonder why this blog's title is 'Try something different' while it should be 'Choose your storage software according to your current project's requirements instead of adjusting the requirements to the RDBMS you're used to or you believe to be the One RDBMS to Rule them All'.

By Tweakers user i-chat, Thursday 30 September 2010 12:11

what i find the strangest is all the people that tend to chose a database and than not usering, its 'special' features why would you do that, isn't mysql slower if you dont use its 'own best features' - i understand that its a B* to not be able to have a portable app ... But shouldn't you than use a db framwork with plugins so you A can still use the best features, on X db for Y reason, and than just load a diferent DB module with diferent set of optimisations for Alpha DB with Bravo features.

@ Yopi - if you dont understand, you probably should wonder about what you would do if i am telling you what to do 'like a know-it-all' -Ars - this is just another way to 'STOP' and think for 1 sec.

[Comment edited on Thursday 30 September 2010 12:13]


By Tweakers user Mentalist, Thursday 30 September 2010 15:59

A C# developer almost always chooses MS SQL Server as the preferred database. What does that decision imply?
It implies your software will never be crossplatform. And it implies the developer is likely a moron.

You should pick software based on your needs, no difference here. You shouldn't use a big fat Oracle DB to hold the database for your weblog about your pet. You shouldn't store the eBay or Amazon database in a .txt file and interpret it with PHP.

Don't go after a fly with a bazooka and don't go after an elephant with a toothpick. Is it that hard?

[Comment edited on Thursday 30 September 2010 16:00]


By Aamodhini, Sunday 25 August 2013 12:15

abarbara on This is the work of Grace Anne Muscat for the YRE cotepmitionabarbara on This is the work of Nicole Buttigied for the YRE cotepmitionabarbara on This is the work of Chanice Mercieca, Rhianydd Demanuele and Shaznay Graham for the YRE competition

By life insurance today, Wednesday 28 August 2013 00:46

who think Greg is “out of touch”.Greg’s out of touch because he doesn’t know your particular situation? That’s a bit silly, isn’t it? At every development shop, regardless of size, someone is responsible for choosing what architectures/systems/IoC/ORMs/OSS projects/Coding Standards/Kitchen Sink that the developers use to write new systems. If you don’t don’t have influence on those decisions, you have a few options:1) Find a way to get that influence2) Find another job where you have that influenceor3) Just grin and take it.There really are no other options. If you can’t be the somone (or on the team of “someones”) making important decisions, and don’t want to be, then there’s really nothing to complain about.When I started where I am now, I came in with a bunch of wacky ideas like Unit Testing, following the SOLID Principles and adopting OSS projects to speed up/improve our development. I got some huge resistance, but I’ve gone 3 for 3 in about 18 months. I had to drag some of the old guard kicking and screaming, but if I’d listened on day one when I was specifically told by a “Senior” dev: “Unit Testing, yeah, we don’t want to do that here” I might as well have gotten my ball and went home.A smart developer who can present ideas well (especially if there is a business case) can do wonders. For example, just find out how many LoC you have in hand rolled DAL/Stored Procedure code and start there.

Comments are closed