It seems like a shame to have to even talk about this, but I really have found myself having way too many discussions over the years about how to avoid the use of relational databases.
Today we were talking about replacing database reads and writes in a system design with file system access, XML, just floating the data around in memory, or some combination of the above.
“What time of day will this system be running?” the DBA asked.
“During business hours.”
That’s right! We’re actually planning to do a database write in the middle of the workday!
Why the thought of doing this freaks people out to the degree that it does is something I’ve never been able to figure out, but there’s an idea that persists among the less educated that read-only production access during the business day will max out an RDBMS.
Look . . . a relational database is one of the greatest tools you have as a software developer, for this reason: Relational database technology has been around since the 1970s, and, unlike a lot of other technologies, has not really changed much in all that time.
So what have all the smart database people at IBM, Oracle and Microsoft been doing during the ensuing decades? Sitting idly about?
No, indeed! They’ve been using the time to optimize the technology!
As a result, modern relational database management systems are highly efficient software systems. With few exceptions — and I can’t think of one offhand — any operation that you perform inside the RDBMS will be more efficient, more reliable and more scalable than writing your own code to do it outside the RDBMS.
Is it possible that your home-grown data management algorithm will be better then the combined efforts of thousands of Ph.D.s over the last 25 years?
Yes. Is it probable? No.
Thus spoke The Programmer.