GinTon wrote: > I have seen that for web applications is best far using a ODBMS: > > 1- Objects in an OODBMS can store an arbitrary number of atomic types > as well as other objects. The fact that an OODBMS is better suited to > handling complex,interrelated data than an RDBMS means that an OODBMS > can outperform an RDBMS by ten to a thousand times depending on the > complexity of the data being handled.
This is a bit off-topic, but I just wanted to share some experiences that brought me to Django, a choice I'm very happy with so far. Having spent more than 6 years with Zope and ZODB I'll have to say I'll never touch an OODBMS ever again. I realize ZODB may be perfectly fine for some situations, and there are other OODBMS's out there that are probably better, but it struck me that a lot of what makes databases cool are not yet solved well in Zope 2 / ZODB. For example: * optimization tools * dependable recovery tools and my favorite examples are inlined in responses below. > 2- Data in the real world is usually has hierarchical characteristics. > The ever popular Employee example used in most RDBMS texts is easier to > describe in an OODBMS than in an RDBMS. Django models are pretty darn straightforward. Seems like everyone in our organization, even non-programmers, feel pretty comfortable creating model files! (Not that we let everyone do it :) At least with ZODB the concept of a schema is not that strong. You can pretty much put anything you want into the database. That sounds great at first, but try debugging a program running on a 3-year-old database with 5 different versions of the same object, all lacking different attributes or storing differently typed versions of the same attribute. True, you can solve this with migrations, but at least with an RDBMS you can make the assertion that "all data is this way and will stay this way" very easily, and being to make that assertion is essential to achieve peace of mind. > 3- A query language is not necessary for accessing data from an OODBMS > unlike an RDBMS since interaction with the database is done by > transparently accessing objects. It is still possible to use queries in > an OODBMS however. A QUERY LANGUAGE You'll always want to search objects and RDBMSs are excellent at indexing and searching/ querying. ZODB doesn't really deal with this; you do that at the application level, which just isn't as robust or efficient, and you'd want something as basic as this robust and efficient. The best way to do cataloging for an OODBMS is probably to store all the metadata in an RDBMS, and in this case I have to ask: so why do you even need the OODBMS? http://www.faqs.org/docs/ZopeBook/SearchingZCatalog.html > 4- In a typical application that uses an object oriented programming > language and an RDBMS, a signifcant amount of time is usually spent > mapping tables to objects and back. This "impedance mismatch" is > completely avoided when using an OODBMS. This is taken care of by the ORM. > 5- The user of an RDBMS has to worry about uniquely identifying tuples > by their values and making sure that no two tuples have the same > primary key values to avoid error conditions. WELL-DEFINED REFERENCES RDBMSs are all about references, and ORMs can map those to "pointers". The identity of an object is well defined and understood. For Zope programmers at least, storing pointers in ZODB was pretty much black magic. Again, people would create application-level (products) solutions for pointers, something that basic should really be rock solid, well-defined, and implemented in the database itself. Oh the horrors of past... > 6- With an RDBMS it is not possible to model the dynamic operations or > rules that change the state of the data in the system because this is > beyond the scope of the database. With an OODBMS there is no disconnect > between the database model and the application model because the > entities are just other objects in the system. It is pretty easy to store anything you want in a RDMBS, including methods, just pickle it. After all, that's what ZODB does. Sorry for the Zope/ ZODB bashing. I guess I'm really *REALLY* just hoping Django stays away from mimicing Zope too much; the mixing of admin interface and model stuff is already too close for my liking (polluting the schema, IMO). To end on a good note: Zope's got good full-text indexers. I hope Django can improve in this respect. Rgds, Bjorn --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Django developers" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/django-developers -~----------~----~----~----~------~----~------~--~---
