In system programming, objects are made up of executable code and data. Instead of storing data in the form of integers, strings, or real numbers, object oriented databases store object attributes and object methods. Attribute data defines the characteristics of an object. This type of data could be a simpler series of integers, strings, and real numbers or complex code to describe object attributes. Object methods will explain the behavior of the object. These are the executable code functions or procedures that define how the object performs. Classes are a term used in object oriented databases to describe the categories of data and methods that the object may contain. Their role is to create an object template. Classes can be used to recreate portions of the object that are not stored in the object database. Methods are commonly stored outside the database as they are long strings of executable code, but can be recreated using the object’s specific class [1].
While relational databases store data in 2D tables, an object is defined by its methods and attributes. Relational databases will use unique strings to identify a column corresponding to a particular dataset. In order for an object to be placed into a relational database, it must first be described by simple integers or strings of real number data [1]. A separate table would be used for each component, with rows of data describing each of the object’s attributes such as dimensions and characteristics. Object oriented databases are less complex in that respect, since the objects’ methods and attributes do not need to be translated into simpler tabulated data.
Most traditional databases prevent the application from modifying data which has been stored on the database. Transient data is manipulated through the application, but persisted data is seen as locked in the database. Object oriented databases allow the application to have access to both transient and persisted data. Object databases can manipulate what would be treated as permanent for a traditional relational database. Object oriented databases can also be referred to as Object Database Management Systems (ODBMS).
Coding software that use objects like C++, Java, and GemStone write in object oriented languages. Object databases are most useful for complicated methods and attributes – wherever there is complex relationships or dependencies between datasets. The coder can control a certain hierarchy of objects and navigate easily between distributed architectures [1]. CAD programs utilize object oriented databases because modifying one parameter may affect other objects in the project.
References:
1. http://www.comptechdoc.org/independent/database/basicdb/dataobject.html
2. Challenges of BIM for Facilities Managers http://site.ebrary.com.ezproxy2.library.drexel.edu/lib/drexel/reader.action?docID=10677855
3. http://www.odbms.org/wp-content/uploads/2013/11/035.05-Grossniklaus-ODBMS-Lecture-ODMG-Standard.2009.pdf
James,
You made some great points in your post, I agree that databases are characterized by being able to access information in multiple ways rather than a table organized by one or two categories. Like you mentioned, this is more practical for energy analysis software and more useful to design engineers in the building industry. My post focused on object-oriented databases used in 3D modeling, but I think your topic is more practical for generating schedules. One of the most useful features of Revit is quick summation of piping, mechanical equipment, and conduit used for cost estimating which is easily derived from a relational database.
Byran,
Very clear description of structured query language. It’s interesting that most websites are based on this platform of relational databases. Since it is a universal language, I would agree that many other applications use this type of database. I think relational databases are more common in generating schedules, while the 3D model is largely based on object oriented databases. My group’s topic was on ODBMS, object database management systems. These systems classify objects by their specific attributes and methods of behavior rather than breaking each component up into rows and columns with unique keys. It is much easier to retrieve and manipulate the parameters of an object this way.
I had not heard of object-oriented databases before, so your post was good to read. I can certainly see why object-orientation is good for BIM. A strait relational database would get very complicated in a strait relational database. Grouping information into families where family properties or individual attributes can be modified makes a lot of sense.
ReplyDeleteAlexis,
ReplyDeleteI like the your comparison between relational database and object oriented databases. From your information, I am able to deduct that object oriented databases could and should be used for more complex situations/operations. I was able to find that, although object oriented databases are really good for complex operations they are not reliable for simple operations. For this reason, it is recommended that relational databases to be used for simple operations. Going along with the fact that CAD uses object-oriented databases, I believe that Revit also uses it specially for creating families.