Professional Documents
Culture Documents
1. architecture specification: the OMG Object Manage- Because of the great diversity of the OODBMS, the Object
ment Architecture (OMA). The major components of Data Management Group (ODMG) [11] has been created
this architecture are the clients, the servers and the Ob- in the early 1990 whose aim is to specify and promote a
ject Request Broker (ORB) which is the inescapable standard for the OODBMS. ODMG gathers the main actors
mediator between clients and servers. of the OODBMS. ODMG standard (currently version 2.0)
specifies mainly the following points:
2. interface specification: services provided by servers
to clients are described in a platform independent in- 1. an object model,
terface language named Interface Definition Language
(IDL), 2. an object definition language (ODL),
3. protocol specification: object are distributed accross 3. an object query language (OQL),
the network using a standard protocol named Internet
Inter-ORB Protocol (IIOP). 4. C++, Java and Smalltalk language bindings.
ODMG specifies several level of compliance: object model 2.4. Distributing CORBA Views from an OODBMS
compliance, ODL compliance, OQL compliance, C++
binding compliance and so on. 2.4.1 What is a CORBA View?
Several product databases are currently partially compli-
ant with the ODMG standard: O2[2], ObjectStore [10], A database CORBA view (named CORBA view for
POET [24], VERSANT [12], ONTOS [4], Objectivity [16], shortcut) allows the user to manipulate database objects
E YE DB [30] and so on. through an ORB. A CORBA view is mainly composed of
an interface definition (using the IDL language) and an
implementation of this IDL dealing with an OODBMS.
2.3. The E YE DB OODBMS
We call this a view by analogy to the well known relational
database management systems (RDBMS) view concept,
The E YE DB OODBMS [30] is an OODBMS based on but there are some conceptual differences between an
the ODMG concepts. It is currently used in several projects RDBMS and a CORBA view.
related to genetics and molecular biology and undergoes An RDBMS view is a table-oriented exportation of the
testing in several locations, including industrial companies. RDBMS content through an SQL statement: a relational
Online information and a trial version of E YE DB can be view denotes a set of rows on which queries can be
obtained from http://www.eyedb.com. performed.
The key features of the E YE DB OODBMS are A CORBA view is essentially an instance-oriented interface
to the DBMS: objets are built on the fly by the CORBA
standard OODBMS features [2, 26, 14]: persistent server and one cannot restrict the extension of a class,
typed data management; client/server model; trans- every instance in the DBMS from a mapped class will
actional services; recovery system; expressive object be accessible through the interface. Differently said, the
model; inheritance; integrity constraints; methods; production rules are separated from the view and reside
triggers; query language; application programming in- in factories, where the filtering is done if needed. As a
terfaces, consequence, no query is possible in CORBA views.
language orientation: a definition language based on
The main other differences between are:
the ODMG [11] Object Definition Language (ODL);
a query language based on the ODMG Object Query 1. the CORBA view allows for the distribution of
Language (OQL); C++ and Java bindings; PHP and database objects,
PERL bindings,
2. the CORBA view allows for the manipulation of object
genericity and orthogonality of the object model: in different databases with different schemas,
inspired by the SmallTalk, LOOPS, Java and ObjVlisp
object models (i.e. every class derives from the class 3. the CORBA view allows read and write access to the
object and can be manipulated as an object); type database objects,
polymorphism; binary relationships; literal and ob-
4. the CORBA view does not depend on the DBMS used,
ject types; transient and persistent objects; method and
trigger overloading; template-based collections (set, 5. the creation of a CORBA view is done outside the
bag and array); multi-dimensional and variable size di- DBMS.
mensional arrays,
To define and distribute CORBA views from an OODBMS,
support for data distribution: CORBA binding; we provide two approaches whose spirit differ fundamen-
multi-database objects, tally. The first approach is driven by the OODBMS source
schema, while the second is driven by the target CORBA
support for large databases: databases up to several view defined in IDL. The first approach is named source
Tb (terabytes), schema driven and the second one is named target view
driven.
efficiency: database objects are directly mapped
within the virtual memory space; object memory
copies are reduced to the minimum; clever caching 2.4.2 Source Schema driven CORBA views
policies are implemented, From a database schema, one defines, using the IMDL lan-
guage, hints about the view to be built, for example:
scalability: programs are able to deal with hundred of
millions of objects without loss of performance. class, attribute or method visibility restrictions,
class, attribute or method renaming, 1. to hide database classes, database class attributes or
methods in the target CORBA view,
interface attribute or method mapping to an OQL con-
struct, 2. to rename database classes, database class attributes or
method in the target CORBA view,
interface attribute or method mapping to a C++ con-
struct, 3. to extend database classes in the CORBA view by
adding new attributes or methods in the target CORBA
addition of attributes or methods in a target interface. view,
In this case, as shown in Figure 1, the starting point is: 4. to map an IDL interface attribute from a specific
database class attribute,
1. a database schema,
5. to map an IDL interface attribute from an Object Query
2. hints about the view to be built expressed as an IMDL
Language (OQL) construct,
construct.
6. to map an IDL interface attribute from a C++ expres-
the result is:
sion or C++ code.
1. a generated IDL,
7. to map an IDL interface method from a database
2. a full or partial CORBA implementation. method,
hints about the way to map the target view from the The main actor of IMS is the IMS compiler which gen-
input schema expressed as an IMDL construct. erates an IDL and a full or partial CORBA implementation
for a given ORB from a database schema and an IMDL con-
the result is: struct (Figure 1) or which generates a full or partial CORBA
a full or partial CORBA implementation of the IDL. implementation from a target IDL, a database schema and
an IMDL construct (Figure 2). The IMS compiler may gen-
The mapping hints are expressed using IMDL and the erate also a standard interface factory to build instances of
CORBA view is generated using IMS services. any generated interface.
The IDL generated with IMS does not depend on the
OODBMS nor on the ORB used; but the generated C++
3. CORBA view distribution: Actors of the so-
code depends on both the OODBMS and the ORB. IMS
lution has been implemented for the Orbix and Orbacus ORBs
and for the E YE DB [27, 30] OODBMS.
3.1. The Interface Mapping Definition Language
(IMDL) 3.3. CORBA View Runtime Architecture
IMDL is a strict superset of the OMG IDL [17, 18]. A The main actors of the runtime architecture of a CORBA
few constructs have been added to specify the mapping from view are (Figure 3):
the database schema to the IDL view. These constructs al-
low the user to give the following directives to IMS com- 1. the clients of the CORBA view using the services de-
piler: fined in the IDL,
Database IMDL
Schema
IDL CORBA
Implementation
CORBA
Implementation
2. the Object Request Broker, oodbms object in the server side for each oodbms
object in the client side. Those objects are denoted
3. the server implementing the CORBA IDL; the clients as client and server oodbms object s.
dialog with this server through the ORB layer; this
server is a client of the OODBMS server,
3. The OODBMS database objects residing in a database.
4. the OODBMS server. Those objects are denoted as database object s.
Note that the oodbms object s and the database
Clients manipulate CORBA objects while the server ma- object s are tightly linked together through the
nipulates both CORBA and OODBMS objects. More pre- OODBMS runtime layer.
cisely, there are three kind of objects: (Figure 3):
1. The CORBA objects, instances of the IDL interfaces: A corba object cobj is said to be mapped from an
for each client CORBA object, there is one corba oodbms object iobj when:
object in the server side which is the implementa-
tion of the client corba object . Those objects are 1. at least one attribute selection or modification on cobj
denoted as client and server corba object s. refers to iobj or
2. The OODBMS runtime objects, instances of the ODL
classes, bound to the database objects. There is one 2. at least one method invocation on cobj refers to iobj.
CORBA Client 1
corba object
corba object
ORB oodbms protocol oodbms object database
object
oodbms object
CORBA Server OODBMS Server
corba object
CORBA Client 2
To illustrate this paper and give more details on the This ODL construct defines one enumerated type,
principles of IMS, lets consider a simple schema that CivilState , and four classes, Address , Person , Car
is described here using the E YE DB Object Definition and Employee . The class Adress is composed of a vari-
Language (ODL) close to the ODMG ODL [11]. able size literal attribute, street , and one fixed size lit-
eral attribute town . As specified by the ODMG, a literal
4.1. A Simple Schema attribute value has no identifier, while an object attribute
value has an identifier.
enum CivilState { The class Person is composed of four literal attributes,
Lady = 0x10, name , age , addr , and cstate , a relationship object at-
Sir = 0x20, tribute, spouse , a collection object attribute, cars , and a
Miss = 0x40 variable size object attribute array, children . Note that
}; as the spouse attribute is a relationship, the OODBMS
maintains its referential integrity. This means that if an ob-
class Address { ject that participates in a relationship is removed, then any
attribute string street; traversal path to that object is also removed.
attribute string<32> town;
As the object attributes cars and children are not re-
};
lationships, the OODBMS does not maintain their referen-
class Person { tial integrity. Such a unidirectionnal reference is called an
attribute string name; object-valued attribute.
attribute int age;
attribute Address addr; 4.2. Source Schema driven study
attribute CivilState cstate;
relationship Person * spouse 4.2.1 Creating a CORBA view with IMDL
inverse Person::spouse;
attribute set<Car * > * cars; From the previous database schema, we want to build a
attribute Person * children[]; CORBA view where several attributes are hidden, some oth-
ers are renamed and some methods are created; for example, map readonly attribute
we want: PersonList same_age_persons
from %oql{select x from Person x where
to hide the following attributes: x.age = this.age; %};
};
cstate and children in the class Person ,
street in the class Address . extend Employee {
map boolean is_he_rich() from
to rename the following attributes: expr("return salary() > 10000");
map attribute euro_salary from
name in the class Person renamed as // get C++ expression
lastname , expr("salary() / 6.55957")
: // token delimiter
age in the class Person renamed as
// set C++ expression
how old is he expr("salary(euro_salary * 6.55957)");
};
to add an updatable attribute in the class Person
};
named spname mapped from the name of the
spouse of the calling instance of Person ,
Lets explain each detail of the previous IMDL construct:
to add a readonly attribute in the class Person named
same age person list which gives the list of the this IMDL construct is composed of an IDL module,
instances of Person which have the same age as the named People , in which view hints are defined.
calling instance of Person .
the first statement within the module declaration is
to add a method in the class Employee named implicit * . This statement means that all the
is he rich() which returns true if the salary of database schema types defined in the input ODL will
the instance of Employee is greater than a constant be mapped in an implicit way. An implicit mapping
amount. for an ODL class is a one-to-one mapping:
to add an updatable attribute in the class Employee the ODL class has a corresponding generated
named euro salary mapped from the salary at- IDL interface with the same name,
tribute converted to the euro currency, each of its attributes (resp. methods) has a corre-
IMDL and IMS allow the user to implement such a CORBA sponding attribute (resp. method) within the gen-
view in a quite automatic and simple way. The user only has erated IDL interface with the same name and the
to define hints in IMDL and to invoke IMS compiler to gen- corresponding type (resp. signature).
erate both the target IDL and the CORBA implementation
For example, the implicit mapping of the ODL class
of that IDL for Orbix or Orbacus .
Address is:
Using IMDL, the description of the hints for the CORBA
view proposed above is as follows:
interface Address {
module People { attribute string street;
// mapped from Address::street
implicit *; attribute string town;
// mapped from Address::town
hide Person::cstate, };
Person::children,
Address::street; The directive implicit * ensures a one-to-one
mapping between each ODL class and each gener-
rename Person::name to Person::lastname; ated IDL interface. Nevertheless, the IMDL directives
rename Person::age to hide , rename and extend may be used to alter this
Person::how_old_is_he; implicit mapping.
typedef sequence<Person> PersonList; the hide directive allows the user to hide an ODL
class, an ODL class attribute or method: this means
extend Person { that the pointed class, attribute or method will not
map attribute spname be present in the generated IDL. In our example,
from spouse.name; three attributes are hidden in the generated IDL view:
Person::cstate . Person::children and The attribute spname is also mapped from an at-
Address::street . This means that the previously tribute, more exactly from an attribute path expression
shown IDL interfaces becomes: (path expression for shortcut): spouse.name . A
path expression is a sequence of attribute names
interface Address { separated by dots. It can also contain array modifiers
attribute string town; under the form [const int expr] . For instance,
}; the following path expression mapping construct is
valid:
interface Person {
attribute string name; map attribute long xage from
attribute long age; spouse.children[(2+3)>>1].spouse.age;
attribute Address addr;
attribute Person spouse; Note that an IDL attribute mapped from an ODL
attribute CarList cars; path expression is always updatable unless it has the
// ... readonly qualifier.
the rename directive allows the user to rename an 2. mapping from an OQL construct:
ODL class, an ODL class attribute or method: this
means that the pointed class, attribute or method will map readonly attribute
be renamed in the generated IDL. In our example, the PersonList same_age_persons
interface Person becomes: from %oql{select x from Person x
where x.age =
interface Person { this.age; %};
attribute string lastname;
// mapped from Person::name This construct means that the same age persons
attribute long how_old_is_he; attribute is assigned to the evaluation of the OQL
// mapped from Person::age statement select x from Person x where
... x.age = this.age where this denotes the
corresponding database object. For instance, if the age
the extend directive allows the user to extend an of the database person object is 32 , the executed OQL
existing mapping by adding some attributes or meth- statement select x from Person x where
ods to it. In our example, an attribute named x.age = 32 will return the list of persons in the
same age persons of type sequence of Person database whose age is equal to 32 , including of
is added to the interface Person and a method named course, the calling person; this returned list will be
is he rich() is added to the interface Employee . bound onto the attribute same age persons .
the map from IMDL directive allows the user to map
Contrary to the mapping from an attribute, such
an IDL attribute or method from one of the following
an attribute is not updatable for two reasons:
constructs:
this attribute is readonly . Although this rea-
1. an ODL attribute,
son is sufficient to forbid the update, this is not
2. an OQL construct, the structural reason.
3. a C++ expression, the structural reason is that this attribute is
4. some C++ code. mapped from an arbitrary OQL construct (in this
case a select statement) and the system is not
This example introduces the first, the second and the able to convert automatically any OQL statement
third mapping: to a reverse update statement. Furthermore,
even if it will be able, the update of all the person
1. mapping from an attribute: instances in the list is perharps not wanted.
As we have seen previously, the attributes of the To allow the user to update the same age persons
Person IDL interface are mapped from attributes attribute, one has to give explicitely the OQL construct
of the ODL Person class thanks to the implicit for update in the IMDL. For example:
* and rename directives. These view attributes
are updatable as they are directly mapped to well map attribute
identified mono valued database attributes. PersonList same_age_persons
from // the get OQL construct: AddressList;
%oql{ select x from Person x where typedef sequence<People::Employee>
x.age = this.age; %} EmployeeList;
: // token delimiter
// the set OQL construct: enum CivilState {
%oql{ for (x in Lady,
(select x from Person x Sir,
where x.age = this.age)) Miss
x.age := same_age_persons; %} };
Note that the IMS does not perform any semantic con- interface Address : EyeDB_ORB::idbStruct {
trol of the update function: you can do whatever you attribute string town;
want in the update function. };
(d) the method Address AddressCreate(db) // storing martin into the database
creates an empty runtime Address instance. p->store();
4.2.3 Using the generated CORBA view 5. Related work and approaches
To use the CORBA view, the user must:
There have been other proposals for view support in the
1. generate the CORBA view by giving the database context of OODBMS [1, 21, 22, 3].
schema and the IMDL construct to the IMS compiler.
The O2 approach [1] is based on the concept of vir-
2. generate the CORBA stubs and skeleton by giving the
tual class: a virtual class is populated with objets selected
generated IDL to the ORB IDL compiler,
through a query in the OQL language on the root class
3. compile all the generated code, extension. Part of the information visible in the original
base class may be hidden in the view and some renaming
4. write and compile the client programs. may also take place. Furthermore, virtual attributes, defined
Here is a simple example of a client program to get, display by OQL constructs, may be added to the view. This view
and update all the instances of the class Employee : mechanism (O2 Views) is based on the query language -
at least to define the extension of the virtual class - and on
// making a OQL query a specific view language to add virtual attributes, hide or
EyeDB_ORB::idbObjectSeq_var obj_seq = rename attributes in the original base class. A mechanism
db->queryObjects("select Employee"); for updating views in OODBMS, implemented on top of
O2 Views, is exposed in [3].
for (int i = 0; i < obj_seq->length(); i++) {
// building an IDL SpecialEmployee from
// an ODL Employee Another view approach, implemented on top of the
People::Employee_var empl = COCOON model, is presented in [22] and [21]: contrary to
person_factory->asEmployee(obj_seq[i]); the O2 Views approach, this view system uses the standard
// displaying Employee attributes way of defining views by nothing else than query language
cout << "Employee #" << i << endl; expressions.
6. Conclusion
In those both approaches, as in the traditionnal RDBMS
view approach and contrary to our approach, the view We have defined a powerful language, IMDL, and tools
gathers production and filtering rules: named IMS that enable the distribution of CORBA views
from an OODBMS. As opposed to the traditional RDBMS
the production rules, expressed in the query lan- views, our approach allows one to customize with flexibility
guage, are used to select objets from one or several the CORBA views, and to offer several different views or to
classes. map a database schema onto a pre-existing IDL definition.
Another important improvement on traditional views lies in
the filtering rules are used to filter objets by, for in-
a mechanism that enables an update access to the objects
stance, adding virtual attributes, hiding or renaming at-
mapped in the view.
tributes in the original base class. The filtering rules
The IMDL language and IMS service were used at In-
are expressed in the query language or in a specific
fobiogen to develop a standard interface to a database of
language depending on the system.
human genome maps: HuGeMap [8, 6]. This database
In our approach, the production rules are separated from was built with the EyeDB OODBMS. A common IDL for
the filtering rules: the production rules reside in factories genome maps was defined as a consensus by the genome
while the filtering rules reside in the view interface. The community [7] and HuGeMap had to offer a CORBA view
production mechanism is orthogonal to the filtering (or implementing this IDL. This target IDL consists of 19 in-
view) mechanism: one produces an object using a factory terfaces that were mapped to the database schema in a 170
and then one applies the filter (view) to this object, keeping line IMDL file. The resulting generated implementation of
its original database identifier. the CORBA server contains about 1,500 lines of code. Only
About this point, our approach is conceptually more similar two man-days were spent to implement this CORBA view
to aspects [19] which provides mechanisms to extend using the IMDL language and IMS compiler. Without this
existing objects with new state and new behavior while tool, the realization of such an implementation is estimated
maintaining the same object identity. to take about two man-weeks.
IMS was implemented for the E YE DB OODBMS and
On the other hand, our approach for the update of the Orbix and Orbacus ORBs. But IMDL is a language
views is close to the O2 one described in [3]. In the both that does not depend on the ORB or on the DBMS. The
approaches: concepts and the language presented here can be used with
any ORB and any DBMS, relational or object-oriented.
one keeps the original database identifier (OID) in the We now plan to extend IMDL and IMS to allow for the
viewed object: this is the core of the update process. definition and implementation of a single and integrated
CORBA view of several databases with different schemas.
some attributes can be straightforwardly updated: O2 This will achieve a real interoperation of multiple databases
allows update of any attribute for which the reverse with heterogeneous and complementary semantics.
mapping method can be automatically derived from More information on the IMDL language, the Interface
the mapping expression. Our approach allows update Mapping Services and the E YE DB OODBMS can be found
of any attribute mapped from an ODL path expression, at the E YE DB home page [27, 30]. This page contains the
which is, in a certain sense, more restrictive than the full online programming manual, links to related publica-
O2 approach. tions and a trial version for Solaris can be downloaded. The
page http://www.eyedb.com/corba views [29]
the user must supply update methods for other at- encloses material related to this paper: the IMDL gram-
tributes: in our approach, the user must supply an up- mar, the source schema driven example given in this pa-
date method for the attributes mapped from an OQL or per, a target view driven example, the common IDL for
a C++ expression. genome maps and the IMDL file used to map the HuGeMap
database to this IDL.
Lastly, our approach has a structural difference with the pre-
vious ones: our view management is done outside the
DBMS, thus, our system is structurally more independent 7. Acknowledgements
from the DBMS used than the other systems and it can
be - more or less easily - ported to other DBMS included The Interface Mapping Definition Language (IMDL) and
relational DBMS. Futhermore, the choice of CORBA as the Interface Mapping Services (IMS) have been devel-
our view architecture made our viewed objects easily and opped at CRI Infobiogen [25] with funding from the Eu-
standardly distributable. ropean Commission (BIO4-CT96-0346).
The E YE DB OODBMS has been developped at Sysra [28] [24] P. Software. Data management for the Internet Age.
with partial funding from the Agence National de la Valori- http://www.poet.com/.
sation de la Recherche (ANVAR) [5] and the Conseil Re- [25] I. Staff. The I NFO B IOGEN Home Page.
gional dIle de France [13]. http://www.infobiogen.fr/, 1998.
[26] M. Stonebraker and J. M. Hellerstein, editors. readings in
database systems. Morgan Kaufmann, 1998.
References [27] E. Viara. The E YE DB Home Page. http://www.eyedb.com/,
1998.
[1] S. Abiteboul and A. Bonner. Objects and views. pages 238 [28] E. Viara. The S YSRA Home Page. http://www.sysra.com/,
247, 1991. 1998.
[2] M. Adiba and C. Collet. Objets et bases de donnees, le [29] E. Viara. Material for the article Distributing CORBA Views
SGBD O2. Hermes, 1993. from an OODBMS. http://www.eyedb.com/corba views/,
[3] S. Amer-Yahia, P. Breche, and C. S. dos Santos. Object 2001.
views and updates. [30] E. Viara, E. Barillot, and G. Vaysseix. The E YE DB
[4] T. Andrews and all. The ONTOS Object Database. Onto- OODBMS. IEEE publications, 1999. Interna-
logic, Inc, Burlington, Massachusetts, 1989. tional Database Engineering and Applications Symposium
[5] ANVAR. LAnvar, votre partenaire pour linnovation. (IDEAS), Montreal, 2-4 August 1999.
http://www.anvar.fr/, 1998.
[6] E. Barillot. The Hugemap Home Page.
http://www.infobiogen.fr/services/Hugemap/, 1998.
[7] E. Barillot, U. Leser, P. Lijnzaad, C. Cussat-Blanc,
K. Jungfer, F. Guyon, G. Vaysseix, C. Helgesen, and
P. Rodriguez-Tome. A proposal for a CORBA interface for
genome maps. BIOINFORMATICS, 15, 1999.
[8] E. Barillot, S. Pook, F. Guyon, C. Cussat-Blanc, E. Viara,
and G. Vaysseix. The HuGeMap database: Interconnection
and Visualisation of Human Genome Maps. Nucleic Acids
Research, 27:119122, 1999.
[9] R. Ben-Natan. CORBA a Guide to Common Object Request
Broker Architecture. Computing McGraw-Hill, 1995.
[10] C. Lamb et al. The objectstore database system. Communi-
cations of the ACM, 34(10), pages 5063, 1991.
[11] C. G. Cattell and al. Object Database Standard, ODMG 2.0.
Morgan Kaufmann, 1997.
[12] V. Corporation. Versant Corporation.
http://www.versant.com/.
[13] CRIF. Conseil Regional dIle de France. http://www.cr-ile-
de-france.fr/, 1998.
[14] H. F. Korth and A. Silberschatz. Database system concepts.
MacGraw-Hill, 1991.
[15] T. J. Mowbray and R. Zahavi. The Essential CORBA. John
Wiley & Sons, Inc., 1995.
[16] Objectivity. Welcome to objectivity.
http://www.objectivity.com/.
[17] OMG. Object Management Group Home Page.
http://www.omg.org/, 1997.
[18] A. L. Pope. The CORBA Reference Guide. Addison Wesley,
1998.
[19] J. Richardson and P. Schwarz. Aspects: Extending objects to
support multiple, independent roles. pages 298307, 1991.
[20] D. H. Robert Orfali and J. Edwards. The Essential Dis-
tributed Objects, Survival Guide. John Wiley & Sons, Inc.,
1996.
[21] M. H. Scholl, C. Laasch, and M. Tresch. Updatable Views
in Object-Oriented Databases. (566), 1991.
[22] M. H. Scholl and H.-J. Schek. Supporting views in object-
oriented databases. Data Engineering Bulletin, 14(2):4347,
1991.
[23] J. Siegel. CORBA Fundamentals and Programming. John
Wiley & Sons, Inc., 1996.