Object database: Difference between revisions

Content deleted Content added
Reverted good faith edit(s) by 92.62.114.146 using STiki
Re-wrote Characteristics section to use better English, provide more clarity in explanations, have a more logical ordering, and be more respectful of dynamic and diverse systems.
Line 78:
The efficiency of such a database is also greatly improved in areas which demand massive amounts of data about one item. For example, a banking institution could get the user's account information and provide them efficiently with extensive information such as transactions, account information entries etc. The [[Big O Notation]] for such a database paradigm drops from O(n) to O(1), greatly increasing efficiency in these specific cases.
 
==ODBMS Characteristics==
{{cleanup section|date=October 2011}}
The characteristics of ODBMS are separated into three groups as follows:
 
Object database systems commonly possess these characteristics, a certain subset of which are mandatory for being considered an "object database".
=== Mandatory ===
These are the characteristics which system satisfies in order to be an object database. This includes the characteristics like:
 
=== MandatoryMajor ===
* '''Encapsulation''': Encapsulation has two views: programming language view and the database adaptation of that view. Encapsulation is the representation of the data object by its attributes and the various methods specified to manipulate those data objects. In this, the operations performed on the data objects are visible but the data and the implementation are hidden in those objects.
These are features which are common to many ODBMS's and are considered central to their respective implementing systems.
* '''Types and Classes''': '''Type''' refers to the particular set of Objects in the system, which has two parts,interface and the implementations. Generally interfaces are visible to the user and the implementations are hidden. '''Class''' is a template for creating the objects of a particular types having their own implementations. The new objects can be created by performing ''new '' operation on the class.
 
* '''Inheritance''': Inheritance is the most important feature of the object database as it gives the hierarchical relationships between different objects at different levels and gives code reusability. It helps in factoring and out shared the implementations and specifications in system. There are different types of inheritance like substitution inheritance, constraint inheritance, inclusion inheritance and specialization inheritance.
* '''Persistence''': Like any database, it must have the ability to insure the data's survival between sessions, after shutdown and subsequent restart of the server software/hardware.
* '''Complex Objects''': Complex objects are built by using the basic data objects like integers, strings, reals, and booleans. There are various complex data objects such as array, list, indices, tuples, etc. We can define methods to manipulate these new complex types.
* '''Object Identity''': It is important that each object is uniquely identified fromacross the whole database. orEach similarobject kindsmust ofbe objects.able Eachto objectbe hasaddressed aand accessed by this unique identity. and weIt can accessbe andexternally editvisible theas objecta byvariable, usingname, theid, same.or Itit can be variableinternal, namesuch oras fromthe aprimary physicalmemory address spaceat inwhich memorythe object resides (which has very limited scalability).
* '''Encapsulation''': Encapsulation hasmandates two separate views of an object: the programming language view and the database adaptation of that view. Encapsulation is the representation of thea data object by its attributes and the various methods specified to manipulate thoseand interact with that data objectsobject. In this, the operations performed on the data objects are visible but the data and the implementation are hidden in those objects.
* '''Extensibility''': Database system has its own predefined set of data types, which we can use to write new types and there is no usage difference between the one which system has and the one we written, but there may be strong difference in the way two are supported.
* '''Persistence''': It is the ability of the system data to preserve or survive during execution so that it can be further used by another process. Persistency provides the reusability.
* '''Overriding and overloading''': The use the same name for implementation of the object methods or operations to represent the same data in different ways.
* '''Computational completeness''': This property says that we can define or implement any kind of computable function for the ODB, using DML of database system. Computational complete system almost gives all the operation implementation.
* '''Complex Objects''': Complex objects are built by using the basic data objects like integers, strings, reals, and booleans. There are various complex data objects such as array, list, indices, tuples, etc. We can define methods to manipulate these new complex types.
* '''Secondary storage management''': The data in system is managed, so as to get the quick and easier access. It is supported using different techniques, including data clustering, indexing, query optimization, data buffering and access path selection. These all are invisible to user. It has two levels of management: logical and physical.
* '''Extensibility''': DatabaseAny database system has its own predefined set of data types, which we can use to writebuild new types and(see thereComplex Objects), but a purely extensible system is designed such that there are no usagelogical differencedifferences between thebuilt-in one(or which'primitive') systemdata hastypes and the'custom' onedata we writtentypes, butthough there may be strong differencedifferences in the way the two are supportedimplemented.
* '''Concurrency''': A good system must have concurrency techniques. When number of users interacting with the user, the database system must provide same level of service to all the users. It should avoid the system failure, incomplete transactions.
* '''Types and Classes''': '''Type''' refers to the particular set of Objects in the system, which has two parts, the interface and the implementationsimplementation. Generally, interfaces are visible to the user and the implementations are hidden. A '''Class''' is a template for creating the objects of a particular typestype, having their own implementations. The new objects can be created by performing the [[instantiation|Instance (computer science)]] or ''new '' operation on the class.
* '''Recovery''': This feature also provides same level of service and should recover itself to original state if system suffers from the hardware or software failures.<ref>K.R. Dittrich, ``Object-Oriented Database System : The Notions and the issues'', in : Dittrich, K.R. and Dayal, U. (eds): Proceedings of the 1986 International Workshop on Object-Oriented Database Systems, IEEE Computer Science Press</ref><ref>K. R. Dittrich, ``Preface'', In : Dittrich, K.R. (ed): Advances in Object-Oriented Database Systems, Lecture Notes in Computer Science, Vol, 334, Springer-Verlag, 1988</ref><ref>W. Kim, ``A foundation for object-oriented databases'', MCC Technical Report, 1988</ref>
* '''Inheritance''': Inheritance is often considered one of the most important featurefeatures of the object database, as it givesclearly defines the hierarchical relationships between different types of objects at different levels and givesprovides code reusability. It helps in factoringseparating the specifications and outimplementations sharedof the implementationssystem andat specificationsa inhigh system.level, Thereas arewell differentas typesin ofsharing inheritancethe likeoverall substitutionintended inheritance,structure constraintof inheritance,the inclusiondata inheritancein anda specializationteam inheritancesetting.
* '''Overriding and overloading''': The intentional use of the same name for multiple implementations of an object's method or operation to represent the same data in different ways, for conciseness when multiple similar operations are involved, and/or to alter the implementation of an inherited method to make it more suitable for the narrower definition of the object's data.
 
* '''Secondary storage management''': TheUnlike relational databases, the lower-level management considerations of the data inare systemseparated isfrom the logical data definition for clarity in manageddesign, soease asof toprogramming getin the quickaccessing application, and easierseparation access.of Itconcerns isin supportedadministration. using different techniques,Examples includinginclude data clustering, indexing/keying, query optimization, data buffering and access path selection. These all are all invisible to userthe application[s] using the database. It has two levels of management: logical and physical.
=== Optional ===
* '''Transactions and Concurrency''': Modifications should be grouped into logical 'transactions' both for concurrency and rollback. Concurrency: multiple simultaneous accesses to the database which don't conflict with each other should be able to actually execute simultaneously (to some degree). Rollback: if, during the transaction, the application decides to cancel the transaction, the system should be able to logically 'undo' any modifications already made during it. Another provision commonly granted by transactions is atomicity--the insurance that if not all of the modifications in the transaction are completed, none of them will be (by effectively rolling back the partial transaction).
This category includes properties which are not mandatory but can be added to make the object database more efficient to achieve more functionalities. This includes:
* '''Recovery''': ThisIn featurethe alsocase providesof samea levelcatastrophic ofsoftware serviceor andhardware failure, barring excessive data corruption, the system must shouldlater recover itself tointo originala well-defined state, ifthough systemusually suffersat fromthe expense of some of the hardwaredata orcurrently softwarein-use failuresat the time. <ref>K.R. Dittrich, ``Object-Oriented Database System : The Notions and the issues'', in : Dittrich, K.R. and Dayal, U. (eds): Proceedings of the 1986 International Workshop on Object-Oriented Database Systems, IEEE Computer Science Press</ref><ref>K. R. Dittrich, ``Preface'', In : Dittrich, K.R. (ed): Advances in Object-Oriented Database Systems, Lecture Notes in Computer Science, Vol, 334, Springer-Verlag, 1988</ref><ref>W. Kim, ``A foundation for object-oriented databases'', MCC Technical Report, 1988</ref>
 
 
* Type checking and inferencing
=== OptionalAncillary ===
This category includes ancillary features which can be added to give the object database greater functionality and applicability.
 
* Type checking and inferencinginference
* Distribution
* Design transactions
* Versioning of data (objects)
* Versions
 
 
=== OpenMeta ===
This category deals with implementation issues and holistic system issues.
This category deals with programming issues and system representation. Along with the mandatory and non-mandatory features of the ODMBS, designing such systems we still have a lot of design choices to improve our modelling to build a good system. This category includes:
 
* System
* Programming paradigm
* Representation system
* Uniformity.
 
==Standards==