Why Object Databases will always be Tomorrow's Technology

  • vliet,

    It is certainly interesting to hear more from you on this,. I expect it requires some preparation to give a solid picture of your experience and findings, then you can do in a single quick reply. Don't consider your input bloat tho....you will understand why not when you read my 60 row posts 😉

  • GSquared (6/17/2009)


    Actually, some of the uses I've seen for Cache (http://www.intersystems.com/cache/) are quite functional. It's a pain to work with, at least what little I've done and from what I've read, but as far as scalability, stability, security and performance, it seems to be a very solid product.

    Rows and columns are very easy on the human mind. Breaking them down into normal forms takes training, discipline and experience, but the basic concept is easy. On the other hand, in the class object-model, does a door inherit characteristics from a car or is it the other way around? Do all doors have the same methods and properties? Does the presence of a lock on a door come about through polymorphism, or are locks their own object with their own methods and properties? Where does one even start?

    Having worked with Mumps and Cache for quite a few years (more than I really want to admit :)), I have to say that it is a very solid database. With the newer versions of Cache out, they have moved away from the direct global access and have built a fairly strong DBMS on top of it. If you stay away from directly access the global structures - there really is not a lot of difference between a SQL database and Cache.

    However, what Cache does give you is a native object access to the tables. Well, actually you design the class object which then has a SQL projection - but it really is just semantics.

    In Cache (again, this is new development - not legacy stuff), you can query the database with the same SQL that you are already using. Tables can be created the same way also - and the class object is then built/projected out.

    Once that is done - a programmer has access to either use SQL queries or class objects to access the data.

    In other OODBMS systems that I have seen, this type of access is not possible. Where they do say it is possible, they actually duplicate the data in two separate data stores. But in Cache it is all stored the same.

    Jeffrey Williams
    “We are all faced with a series of great opportunities brilliantly disguised as impossible situations.”

    ― Charles R. Swindoll

    How to post questions to get better answers faster
    Managing Transaction Logs

  • cy (6/17/2009)


    Fyi...for those needing a basic understanding of object databases (like me), this page is a good start:

    http://www.service-architecture.com/object-oriented-databases/articles/index.html

    OMG! Thank you for this link! The white paper describing AODB algebra was extremely enlightening. Given the ability to maintain orthoganility, I guess there's no longer a good reason to choose one over the other, and there should be a transform to convert freely. Assuming, of course that the AODB was in some type of 4th normal form equivalent.

    I'm gonna have to digest this a bit, but that one paper may have just removed any thoughts I had of perceived advantage in using RDB and swayed me slightly in favor of AODB.

  • Jeffrey Williams (6/17/2009)


    GSquared (6/17/2009)


    Actually, some of the uses I've seen for Cache (http://www.intersystems.com/cache/) are quite functional. It's a pain to work with, at least what little I've done and from what I've read, but as far as scalability, stability, security and performance, it seems to be a very solid product.

    Rows and columns are very easy on the human mind. Breaking them down into normal forms takes training, discipline and experience, but the basic concept is easy. On the other hand, in the class object-model, does a door inherit characteristics from a car or is it the other way around? Do all doors have the same methods and properties? Does the presence of a lock on a door come about through polymorphism, or are locks their own object with their own methods and properties? Where does one even start?

    Having worked with Mumps and Cache for quite a few years (more than I really want to admit :)), I have to say that it is a very solid database. With the newer versions of Cache out, they have moved away from the direct global access and have built a fairly strong DBMS on top of it. If you stay away from directly access the global structures - there really is not a lot of difference between a SQL database and Cache.

    However, what Cache does give you is a native object access to the tables. Well, actually you design the class object which then has a SQL projection - but it really is just semantics.

    In Cache (again, this is new development - not legacy stuff), you can query the database with the same SQL that you are already using. Tables can be created the same way also - and the class object is then built/projected out.

    Once that is done - a programmer has access to either use SQL queries or class objects to access the data.

    In other OODBMS systems that I have seen, this type of access is not possible. Where they do say it is possible, they actually duplicate the data in two separate data stores. But in Cache it is all stored the same.

    I used Cache about 5 years ago, for one project. My main issue with it was the nearly complete lack of tools for building and managing the database, viewing the structures in it, etc. Have they improved that?

    If so, I'll have to take another look at it. I remember it being extremely easy to build a simple VB.NET app with Cache as the back end, and the performance was quite impressive.

    Their lack of a portable/personal version, comparable to MSDB (at that time) or Express Edition (currently) was also a major weakness. One of the things I wanted to use it for was to have a two-tier client-server app, with the main database on the server, and a bunch of other persistence on the client. Piloted it with Cache on the workstation and the server, and it flew, but they didn't have any sort of license that made it even vaguely cost-effective. I'll have to check if they've done anything about that. (Was much better and more secure than local "ini" type files or registry controls.)

    - Gus "GSquared", RSVP, OODA, MAP, NMVP, FAQ, SAT, SQL, DNA, RNA, UOI, IOU, AM, PM, AD, BC, BCE, USA, UN, CF, ROFL, LOL, ETC
    Property of The Thread

    "Nobody knows the age of the human race, but everyone agrees it's old enough to know better." - Anon

  • GSquared (6/17/2009)


    I used Cache about 5 years ago, for one project. My main issue with it was the nearly complete lack of tools for building and managing the database, viewing the structures in it, etc. Have they improved that?

    Yeah - the quote you will get is that they are not a tools shop. There are some other tools available, but not anywhere near the level you would expect. That is definitely one of the drawbacks I have seen. However, for managing the database they have moved everything to a web based solution which does appear to be a lot better - but I have not used it myself so I am not sure how useful it really is. The system we have is not current - in fact, it would be like running SQL 7.0.

    If so, I'll have to take another look at it. I remember it being extremely easy to build a simple VB.NET app with Cache as the back end, and the performance was quite impressive.

    Yes - can be very fast to build, and performance can be very good.

    Their lack of a portable/personal version, comparable to MSDB (at that time) or Express Edition (currently) was also a major weakness. One of the things I wanted to use it for was to have a two-tier client-server app, with the main database on the server, and a bunch of other persistence on the client. Piloted it with Cache on the workstation and the server, and it flew, but they didn't have any sort of license that made it even vaguely cost-effective. I'll have to check if they've done anything about that. (Was much better and more secure than local "ini" type files or registry controls.)

    I tried to argue the same thing several years ago - but found that most in the community didn't see why that would be useful. And, no - it has not changed and I don't see it changing any time soon.

    Your issues with it are the same ones I have and are the reason why I don't use it anymore myself. If they would work on those items - I could see them really competing strongly with Oracle and Microsoft, but then again - what do I know. 😎

    Jeffrey Williams
    “We are all faced with a series of great opportunities brilliantly disguised as impossible situations.”

    ― Charles R. Swindoll

    How to post questions to get better answers faster
    Managing Transaction Logs

  • Jeffrey Williams (6/17/2009)


    GSquared (6/17/2009)


    I used Cache about 5 years ago, for one project. My main issue with it was the nearly complete lack of tools for building and managing the database, viewing the structures in it, etc. Have they improved that?

    Yeah - the quote you will get is that they are not a tools shop.

    [font="Verdana"]Heh. That's the same kind of approach that Oracle and DB2 used to have. Then along came this little upstart called Microsoft who dared to ship a little SQL database system with a great toolset, and it took off! Forced Oracle and IBM to think "oh, maybe the tools are actually important too?" I think it's a maturity thing. It's also one of the reasons that I find MySQL and PostGress harder to work with.

    In terms of the actual editorial:

    My issue with object databases is that they rely on the application being a silo. From an architectural point of view, when is that ever true? Maybe for a pure web service, okay -- there the application is not a silo, but the interfaces are all via SOAP and no other interface is necessary. But for most database backed enterprise applications, you need to worry about things like interfacing, reporting, consolidation and so on. So the reality is that the application database itself is not truly a silo. We move back into a repository scenario.

    RDBMSes are well-proven technology for both serving as application respositories and for integrating data across an enterprise. Why fix something that isn't broken?

    I find things like Cache promising, because they allow the data to be viewed as both object and relational data. We come to a "hub and spoke" kind of architecture, where the hub is a more traditional enterprise level RDBMS, and the spokes are a combination of middleware and object/relational databases. Again, that all makes sense.

    So I don't really believe that object databases have no place, and I think they are already in use. But neither do I believe that they will replace the RDBMS. Augment perhaps.

    Anyway, good discussion piece. 🙂

    [/font]

  • Jeffrey Williams (6/17/2009)


    GSquared (6/17/2009)


    I used Cache about 5 years ago, for one project. My main issue with it was the nearly complete lack of tools for building and managing the database, viewing the structures in it, etc. Have they improved that?

    Yeah - the quote you will get is that they are not a tools shop. There are some other tools available, but not anywhere near the level you would expect. That is definitely one of the drawbacks I have seen. However, for managing the database they have moved everything to a web based solution which does appear to be a lot better - but I have not used it myself so I am not sure how useful it really is. The system we have is not current - in fact, it would be like running SQL 7.0.

    If so, I'll have to take another look at it. I remember it being extremely easy to build a simple VB.NET app with Cache as the back end, and the performance was quite impressive.

    Yes - can be very fast to build, and performance can be very good.

    Their lack of a portable/personal version, comparable to MSDB (at that time) or Express Edition (currently) was also a major weakness. One of the things I wanted to use it for was to have a two-tier client-server app, with the main database on the server, and a bunch of other persistence on the client. Piloted it with Cache on the workstation and the server, and it flew, but they didn't have any sort of license that made it even vaguely cost-effective. I'll have to check if they've done anything about that. (Was much better and more secure than local "ini" type files or registry controls.)

    I tried to argue the same thing several years ago - but found that most in the community didn't see why that would be useful. And, no - it has not changed and I don't see it changing any time soon.

    Your issues with it are the same ones I have and are the reason why I don't use it anymore myself. If they would work on those items - I could see them really competing strongly with Oracle and Microsoft, but then again - what do I know. 😎

    If they move towards being more friendly to DBAs (better tools, better documentation, something akin to Dev Edition), they'll definitely gain market share. If they also include a lightweight version for free or a nominal fee, they'll gain even more. Guess that's not part of their business model, so they must be happy with the business they are getting with their current model.

    - Gus "GSquared", RSVP, OODA, MAP, NMVP, FAQ, SAT, SQL, DNA, RNA, UOI, IOU, AM, PM, AD, BC, BCE, USA, UN, CF, ROFL, LOL, ETC
    Property of The Thread

    "Nobody knows the age of the human race, but everyone agrees it's old enough to know better." - Anon

  • I've not had to work with an object database and I quit being a GUI programmer a long time ago when a manager told me to put white lettering on a pale yellow background as a "caution" field. So, I've looked up several articles on the subject and nearly every article claims that object databases are faster than "relational" databases such as SQL Server. They even give an example here and there and one of them even said that one simple task will do 2*n physical reads and 2*n logical reads in an RDBMS and only n physical reads and n logical reads using an object database.

    Such examples remind me of the infamous argument between procedural code (specifically, Cursors and While Loops) vs. set based code. Think of all the examples we've seen where someone writes some really, really bad "set based" code (like a Triangular Join or Recursive CTE) and then they write a Cursor to do the same task and the Cursor wins. Is it because Set Based code in general is actually bad or slow? No, it's because the author of any given such article just doesn't know how to write set based code for the given task.

    I don't believe that object databases are going to solve performance problems but that will be the perception for a while. I believe that people think object oriented databases are better than relational databases only because the underlying "optimizer" for an object database won't allow the programmer to make as many mistakes and they won't actually have to know much of anything about the database to use it. Of course, that's a good thing but I believe the cost of such abstraction will be high. The only reason why it'll look good is for the same reasons that some folks believe that Cursors are easier to write than good set based code.

    I also believe that object databases will someday succeed in replacing relational databases for one and only one reason. The GUI's rule and, therefore, right, wrong, or indifferent, object oriented programmers will find it easier to write code against (what they think is) an object oriented database than a relational one. That will promulgate the perception of coding efficiency. Since perception is reality for most, object databases will win out. It'll be like VHS vs. Beta. 😉

    --Jeff Moden


    RBAR is pronounced "ree-bar" and is a "Modenism" for Row-By-Agonizing-Row.
    First step towards the paradigm shift of writing Set Based code:
    ________Stop thinking about what you want to do to a ROW... think, instead, of what you want to do to a COLUMN.

    Change is inevitable... Change for the better is not.


    Helpful Links:
    How to post code problems
    How to Post Performance Problems
    Create a Tally Function (fnTally)

  • I think one big issue is that so many people are looking to share data and aggregate it in warehouses or reporting systems. How well does an OODBS allow the sharing of data to other systems or moving to a warehouse? You might lose any gains you make trying to translate things back.

    Granted, I suppose you could build an object warehouse, but I haven't seen any technologies to build BI systems on OODBMS platforms.

  • Steve Jones - Editor (6/19/2009)


    I think one big issue is that so many people are looking to share data and aggregate it in warehouses or reporting systems. How well does an OODBS allow the sharing of data to other systems or moving to a warehouse? You might lose any gains you make trying to translate things back.

    Granted, I suppose you could build an object warehouse, but I haven't seen any technologies to build BI systems on OODBMS platforms.

    The thing here is the Intersystems Cache is marketed as an OODBMS. It is not a true OODBMS because you can also use it as an RDBMS or just a persistence engine.

    I have seen Cache used as a data warehouse and a reporting system. It works very well and can really accomodate a lot of the structure necessary for a DW system that is not necessarily easy to accomplish in a relational design.

    Jeffrey Williams
    “We are all faced with a series of great opportunities brilliantly disguised as impossible situations.”

    ― Charles R. Swindoll

    How to post questions to get better answers faster
    Managing Transaction Logs

  • Question to anybody with OODB experiences:

    Don't they become a little bit obsolete with today's and with tomorrow's editions of OR-Mappers like (N)Hibernate and Entity Framework 4.0 (next year)?

  • Heh... I absolutely love the original version of Hibernate for Java... it keeps writing slow code in HQL and I have a never ending source of code that I can optimize. 😛

    --Jeff Moden


    RBAR is pronounced "ree-bar" and is a "Modenism" for Row-By-Agonizing-Row.
    First step towards the paradigm shift of writing Set Based code:
    ________Stop thinking about what you want to do to a ROW... think, instead, of what you want to do to a COLUMN.

    Change is inevitable... Change for the better is not.


    Helpful Links:
    How to post code problems
    How to Post Performance Problems
    Create a Tally Function (fnTally)

  • Jeff Moden (6/19/2009)


    Heh... I absolutely love the original version of Hibernate for Java... it keeps writing slow code in HQL and I have a never ending source of code that I can optimize. 😛

    Don't forget, "Java" = "Slow" :-P. That's why I included the "(N)" which means the .Net version ;-).

    Anyway very correct. It will take a long time (if ever) that those OR-Mappers create really good SQL for more complicated things. But I just read some articles about Entity Framework and one of its major features is that you can inject almost everything with custom SQL. Means the really standard queries like "give me data by one column criterion" or "give me data depending on a referenced column criterion" should be handled well by EF, if you need more complex queries you can always call your custom TVF/SP/whatever.

    I think the clue of new OR-Mapper is the publishers know that they cannot handle everything. They create nice client-side object models mapped to some real or virtual server-side database models but keep you able to include your own solutions.

  • Granted, I suppose you could build an object warehouse, but I haven't seen any technologies to build BI systems on OODBMS platforms.

    To quote Ralph Kimball a few brains that dream in calculus needed to create a standard for BI systems because as he puts every implementation is proprietary with various MDX scripting tools. And we know OO people hates RDBMS because of the math.

    Don't they become a little bit obsolete with today's and with tomorrow's editions of OR-Mappers like (N)Hibernate and Entity Framework 4.0 (next year)?

    Actually no because these people don't want know how to do the mapping, these users want to dump the objects in storage read RDBMS. Now that Borland is in the belly of a Cobol company Micro focus and Data Management Tools company Embarcadero, they become Microsoft's problem because Microsoft always leaves the math in foot notes that math people will know what they are actually developing.

    Microsoft and Borland enables these people and Microsoft is thriving so they will be around just in less number because Microsoft makes them to do some work. You know they are in the RDBMS business.

    Kind regards,
    Gift Peddie

  • Off topic, but since we're talking slow, I saw a talk Joel Spolsky gave to Google about StackOverflow. He said they went on a C#/SS2K8 platform. He joked about search being "only SQL Server", but there was one interesting thing.

    He said despite the fact that he has to pay Windows licensing fees and SQL Server fees, he found that the performance of the .NET stack resulted in 10% of the hardware from open source, so the hardware difference pays for the MS stack.

Viewing 15 posts - 16 through 30 (of 42 total)

You must be logged in to reply to this topic. Login to reply