Kevin Teague
Posts: 15
Nickname: wheat
Registered: Mar, 2006
|
|
Re: Gavin King: In Defence of the RDBMS
|
Posted: May 27, 2007 4:45 PM
|
|
Having used the ZODB (Zope Object Database), a Python object database, for many years, as well as a number of relational databases/ORMs, I thought I'd respond to some of these points from the perspective of a Python developer.
complexity There is a lot of complexity in using a relational database with an ORM. Keeping a seperate RDBMS running, configuring, learning and optimizing the ORM. It's a lot more code than an ODB.
The converse is that it's that understanding a relational database schema is a ubiquitous skill, so you can have increased developer complexity in understanding the modeling of objects.
It can be a real joy to just work with objects though, as you have to much less thinking about how to persist those objects. You are also free to make your objects as complex as you desire, complex issues such as model inheritance and complex attributes are just handled so cleanly.
performance This is really going to depend upon what your data model looks like. Sometimes object databases will perform better and sometimes relational databases will outperform better. It seems like there are some rather pointed benchmarks that set off Gavin to posting his rant, and any sort of statement such as "object databases are X times faster than relational databses" is just silly.
It is worth noting that the ZODB can run in-process or stand-alone, listening on a TCP/IP port, just like a RDBMS. This kind of flexibility is a good benefit if you ever need to deploying a client application that needs it's own local persistence.
You can scale the ZODB across as many servers as you need using ZEO (Zope Enterprise Objects), and have mutliple redundant primary object stores. All following the same principals as a RDBMS. Object databases by their nature do make it much easier to handle changes to the schema across your database cluster though.
integration It really depends upon what kind of system you are building, but when I use the ZODB it's often to support a web application, where you are going to need some a web service API. Often these are more democratic than a relational database, as they are often easier to expose outside your internal network.
Conversely, many people are still much more familiar with SQL than web services, and SQL gives you a very good 'for free' API, so this just comes down to the nature of your particular projects goals.
I have also witnessed the curious nature of how the management of even smaller relational databases can end up falling across multiple departments. Developers whose hands are tied because management of relational databases is handled by another group. Where as object databases are not recognized as a 'database', and so other developers using that technology are free to manage their data as they see fit (for better or worse).
security This is a good benefit for object databases, as they are inherently more secure than a relational database, as you do not have to worry about SQL injection attacks.
enterprise The ZODB has been around for about 8 years, so it's reasonably mature. It is always a trade-off, as tools for working with it are just not going to compare to the ecosystem that has grown up around Oracle or MySQL.
The ZODB is the data storage for Plone, which is making it's way into a few enterprise-sized organizations. There are a few of Fortune 500 companies using this technology, so while adoption of object database technology in the enterprise is low, it's not zero. This is partly a political thing, if your organization has invested X millions of dollars in a J2EE/Orcale solution, and you come out and say, 'we replaced a relational database backed stack with an object database one, and we got much better performance with the object database backed technology', when you next go back to your vendors to renew your contracts, they aren't going to be so eager to negotiate on price.
|
|