Try something different
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”.
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]
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.
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.
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]
@ 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]
It implies your software will never be crossplatform. And it implies the developer is likely a moron.A C# developer almost always chooses MS SQL Server as the preferred database. What does that decision imply?
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]
Comments are closed