relational for what? [was: Design Principles Behind Smalltalk,
Revisited]
Todd Blanchard
tblanchard at mac.com
Wed Jan 3 22:44:38 UTC 2007
Based on the thoughtful responses I've gottten, I'll be taking a new
look at some oodb technologies - but I'm pretty sure I've made the
right move for my current project. Honestly, working with glorp is no
more or less complex than working with an oodb - they feel about the
same to me - especially since I derive the schema from the meta model
anyhow.
On Jan 3, 2007, at 12:47 PM, J J wrote:
> A big +1 to most of this message (just not the anti-OODB stuff.
> They have not had any poison for me yet)
>
>
>> From: Todd Blanchard <tblanchard at mac.com>
>> Reply-To: The general-purpose Squeak developers list<squeak-
>> dev at lists.squeakfoundation.org>
>> To: The general-purpose Squeak developers list<squeak-
>> dev at lists.squeakfoundation.org>
>> Subject: Re: relational for what? [was: Design Principles Behind
>> Smalltalk,Revisited]
>> Date: Tue, 2 Jan 2007 17:28:25 -0800
>>
>>
>> On Jan 2, 2007, at 1:36 PM, goran at krampe.se wrote:
>>
>>> Using the RDB as a sharing ground for applications is IMHO really,
>>> really bad. Sure, it *works* kinda, but very fast you end up with
>>> replicated SQL statements all over the place. Then someone says
>>> "stored
>>> procedures" and hey... why not consider OBJECTS? There is probably a
>>> reason why people are so worked up about Services these days. :)
>>
>> So if it is objects instead of tables - how is this different?
>> Uh, and the alternative would be what? Take a typical company
>> that makes and sells stuff.
>>
>> They have customers (hopefully).
>>
>> The marketing guys want the customer's demographics and contacts
>> to generate targeted messages.
>> The accounting people what to know their credit status, payments,
>> and order totals.
>> The inventory/production planning guys don't really care who is
>> buying what, but they want to see how much of each thing is going
>> out the door.
>> The product development people are looking for trends to spot new
>> kinds of demand trends.
>> The sales guys want recent order history, contact event logs, etc.
>>
>> There are many cross cutting concerns.
>>
>> If you take the naive object model you probably have
>> Customers->>Accounts->>Orders->>Items-----(CatalogItem)-
>> >InventoryStatus
>>
>> Works for most traversals, you put the customers in a dictionary
>> at the root by some identifier.
>> But for the people who process orders or do shipping, this model
>> is a drag. They just want orders, and items and navigating to
>> all the orders by searching starting at customers is nuts. So
>> maybe you add a second root for orders for them. Then there's
>> the inventory stuff....
>>
>> Everybody wants a different view with different entry points.
>> I'm talking enterprise architecture here - bigger than systems
>> which is bigger than applications.
>>
>> Relational databases don't care about your relationships or roots
>> - anything can be a root. Anything can be correlated. Any
>> number of object models can map to a well normalized.
>>
>> RDBMS systems have a couple nice properties - you can produce lots
>> of different views tailored to a viewpoint/area of
>> responsibility. They guarantee data consistency in integrity.
>> Something I find lacking from OO solutions.
>>
>> Here's a fun game. Build an OO db. Get a lot of data.
>> Overtime, deprecate one class and start using another in its
>> place. Give it to another developer who doesn't know the entire
>> history. One day he deletes a class because it appears not to be
>> referenced in the image anymore. 6 months later try to traverse
>> the entire db to build a report and find errors 'no such class
>> for record'. What will you do?
>>
>> This has happened BTW to me. If I have long lived data, with
>> different classes of users and different areas of
>> responsibilities, I want the RDBMS because it is maximally
>> flexible while providing the highest guarantees of data integrity
>> and consistency. The problems I've heard described are the
>> result of poor design and unwillingness to refactor as the
>> business changes and grows.
>>
>> FWIW I have worked at everything from 5 person Mac software
>> companies (anyone remember Tempo II?) to telcos, aerospace,
>> government agencies, and the world's largest internet retailer (a
>> scenario where the relational database turns out to be not the
>> best fit overall). My solution selection hierarchy as the amount
>> of data grows runs:
>>
>> 1) In the image
>> 2) Image segments or PLists in directories
>> 3) RDBMS/ORM like glorp
>> 4) RDBMS with optimized SQL
>> 5) SOA
>>
>> I'm pretty sour on OODBMS's based on my long running experiences
>> with them.
>>
>> -Todd Blanchard
>
>
>>
>
> _________________________________________________________________
> Get live scores and news about your team: Add the Live.com Football
> Page www.live.com/?addtemplate=football&icid=T001MSN30A0701
>
>
More information about the Squeak-dev
mailing list
|