• No results found

Method Transformations for Vertical Partitioning in Parallel and Distributed Object Databases

N/A
N/A
Protected

Academic year: 2021

Share "Method Transformations for Vertical Partitioning in Parallel and Distributed Object Databases"

Copied!
9
0
0

Loading.... (view fulltext now)

Full text

(1)

Partitioning in Parallel and Distributed Object Databases

Gajanan S. Chinchwadkar and Angela Goh School of Applied Science,

Nanyang Technological University, Singapore 639798

[email protected], [email protected]

Abstract. Vertical partitioning is a useful technique for performance improvement in parallel and distributed object oriented database sys- tems (POBSs and DOBSs). Arising from partitioning, there is a need to modify methods in a user defined schema for correct execution in the partitioned domain. A partitioning scheme should also support applica- tion transparency in order to make schema definitions and vertical parti- tioning independent. We have followed an approach of method transfor- mations for dealing with these problems. A complete taxonomy for the method types arising from vertical partitioning of a class is presented with transformations for each of these types. The role of the transforma- tions in determining the cost of methods is also briefly presented.

Keywords Vertical partitioning, Parallel object database, Distributed object database, Object oriented database

1 I n t r o d u c t i o n

The popularity of object oriented database systems ( O D B S s ) has inspired re- searchers to find techniques for improving their performance. The growing per- formance demands from modern applications such as CAD, CAM and multi- media will make the use of POBSs and DOBSs inevitable in the near future.

Support for parallelism and distribution has been the focus of many ODBSs projects. Class partitioning is often used as a means to achieve better perfor- mance in such systems. Various reported ways of class partitioning in ODBSs include vertical, horizontal, mixed and path partitioning [4, 5].

In this paper we consider the problem of vertical partitioning. In particular, we discuss a way to handle methods in a vertically partitioned ODBS which is useful in both POBSs and DOBSs. Most of the reported vertical partitioning work has been carried out in the context of DOBSs. A form of vertical partition- ing has also been used in a POBS [8]. In relational databases vertical partitions are defined as subsets of attributes in a relation [7]. The task of partitioning al- gorithms is to find the best subsets with respect to certain performance criteria.

This definition of vertical partitions does not hold good in ODBSs since a class consists not only of attributes but also of methods. Hereafter, we refer to the

(2)

definition of vertical partitions as P a r t i t i o n i n g Scheme [5] and the procedure for partitioning as P a r t i t i o n i n g Algorithm.

One way to vertically partition a database class is to partition the meth- ods in the class into different sets and insert attributes in these sets afterwards [1, 2]. The other way is to partition the attributes first and insert the methods afterwards [4]. In both cases, there exist some methods which do not find all the required attributes in a single partition. Further, we assume that the ob- ject oriented (OO) data model allows complex methods [2]. After partitioning the class, a complex method should invoke the other method from the appro- priate partition. Thus, the execution paths of methods change depending upon the partitioning scheme. An idea of providing transparency to the applications using method transformations has been introduced in [6]. However, they con- sidered only a few (and simple) types of methods. In this paper we present method transformations for several (and general) types of methods. The main contributions of the paper include presentation of a unified view of the vertical partitioning problem, a taxonomy of the possible method types, transformations for all these types and a brief discussion on the transformation based determi- nation of method costs.

We assume an OO data model which supports features such as objects, unique object identifiers (OIDs), encapsulation, classes, simple and complex m e t h o d s and ISA and class-composition hierarchies [2]. A con- taining class accommodates complex attributes which can be instantiated to point to the objects of contained classes. The parallel model is based upon the shared nothing architecture. User queries arrive at a node designated as the root which distributes them among different methods. These methods are executed on the nodes where the classes containing them reside. Each method returns results, if any, to the root.

In the next section, a review of related work is presented. In Sect. 3, a unified view of the vertical partitioning problem is covered. Method transformations are described in Sect. 4. An example and applications of method transformations are discussed in Sect. 5. The paper is concluded in Sect. 6.

2 R e l a t e d W o r k

Several fundamental issues related to partitioning an ODBS are described in [4]. It defines various method types, transparency, types of method accesses and existence/access constraints. Vertical, horizontal and path partitioning schemes are defined for ODBSs in [5]. For vertical partitioning, the approach suggested is to partition the attributes in the first place and associating methods with each partition afterwards. Method-induced partitioning schemes and a discussion about application transparency using method transformation has been provided in [6]. It presents transformations for four methods: to create/destroy objects and read/write attributes. Algorithms for generating method based vertical par- titions are proposed in [1, 2]. The use of vertical partitioning in POBS is reported

(3)

in [8] wherein each class is vertically partitioned into OID-attribute pairs and all partitions corresponding to a class are mapped onto a single processor.

3 U n i f i e d V i e w o f V e r t i c a l P a r t i t i o n i n g

The schema in Fig.1 contains classes DEPT, EMPLOYEE and DATE. Class DEPT contains two simple attributes DName and DNo and a complex attribute DHead.

Class EMPLOYEE contains two simple attributes EName and Salary and one com- plex attribute DateBirth. Class DATE contains three simple attributes. First three methods in class DEPT retrieve attributes. Method m4 invokes a simple method m7 in class EMPLOYEE. Method m5 is a complex method which invokes a com- plex method m9 in class EMPLOYEE (which in turns invokes a simple method m13 in class DATE). It also accesses the attribute DName for comparing it with the department name passed as an argument. Suppose attributes in DEPT are to be partitioned in two sets DEPTI{DName, DNo} and DEPT2{DHead}. Methods ml and m3 can be associated with the first partition. Methods m2 and m4 can be associated with the second partition. The partitions become new classes DEPT1 and DEPT2 and contain local methods[5]. Method m5 accesses attributes from different partitions so it is associated with class DEPT' and is referred to as a global method[5]. The complex attributes D1 and D2 of class DEPT' point to the partitions DEPT1 and DEPT2 respectively. The class-composition hierarchy rooted at DEPT' represents the logical equivalent of the class DEPT.

ml. getJ3Name(I m6: get~NameO ml0" get_Day0

m2' get_DHead0 m7:get_Salad0 ml 1' get_Month0

m3: get_DNoO m8: get_DateBirthO m12:get_year0

m4:get_DHead_Salary0 m9.get_DOB(Char *) m13: geLDOB_St~(I mS: get_DHead_DOB(Ch~ *)

m4. DEPT.:get_DH~d Salaey0 "-lIt" EMPLOYEE::get_Salary 0

mS: DEPT::getDH~d_DOB(strl) "lll~ EMPLOYEE::get_DOB(str2) ~ DATE::get_DOB_Str(

DEPT' DEPTI

mS" get_DH~d_DOB(Char *) ml: get_DNa~0 m3: get DNo0

Partitions of Class DEPT

m2: get DHead0 m4: get_DH~d_Salary 0

Fig. 1. Department Schema and Partitions of Class DEPT

The main components of the query processing architecture of Fig. 2 are the query processor and the partition catalogue. A query targeted at the user de- fined schema is submitted to the query processor which identifies and invokes the methods needed to complete the query. It locates relevant global and/or lo- cal methods by referring to the partition catalogue. These methods may access attributes or invoke methods from other partitions. Hence they need transfor- mations for correct execution in the partitioned domain.

A unified view of the vertical partitioning problem is shown in Fig. 3. The user defined class acts as an input to the partitioning processor and the class in the partitioned domain is its output. The partitioning processor consists of a partitioning algorithm and a transformation processor. The partitioning algo- rithm forms subsets of attributes and methods. It also generates the partition

(4)

User Query Targe im] I 9 [Partmon t..atalogue [ . . ~ . . . C ass in the Partitioned Domain

at user defined Cl~sl I Partitioned Equivalent Class ~ Subset of Attributes

, :

I Query Processor M2 Local Mcthod~ • / Subset of Attllbutesl

[ . . .

I

-- " Local Method II Local Methods

Mn . . . "~ . . . ~ Partition n

| ]- . . .

Fig. 2. Query Processing Architecture

catalogue. The transformation processor transforms the methods so that they

p~ldoaing Processor . . . Cla_ss In ~ ePa2t iti o n_ed_ D_om...~ n - . . .

I I 3~ Partition 1 Partitioned Equivalent Class

Usex Defined C ass I Partitioning Algorithm l -.*

I Patution n Complex Atmbutes Pointing to Each Partition .

I I /' I PanitionCatalouue I t ' I-''- ' . . . . . . . - - - -'

I :.1 ¢ . , I Subset of Attributes \ Subsel of Alll~bules ]

, , r-"l ... -~ M0~o~A~ingLoc~A~bu~ I "'/ M~ed~A~ing~At,.ti.,~ 1

I . . . Transformauon Froccssor I I / . . . P_a~ ,...U o_n fl . . . .. P anl_ao_n 1__ . . .

Fig. 3. Unified View Of Vertical Partitioning Problem

can execute correctly in the partitioned domain. This transformation involves replacing attribute accesses and method invocations in the original method def- initions with appropriate path expressions. The transformation processor uses the partitioning catalogue to determine whether a method is local or global.

4 M e t h o d T r a n s f o r m a t i o n s

First, we present some assumptions and notations. Without loss of generality it can be assumed that a method performs some computation, accesses one or more attributes of the same class and invokes other methods. For brevity, we do not show the arguments and return values of methods in the following discus- sion. For any class C(I, M), I = {a, b , . . . , n} is the set of attributes and M = {ml, m 2 , . . . , ink} is the set of methods. In more general terms, the partitioning scheme described above can be expressed as, V = {C1 (11, Mi), C2 (12, M2), ..., Cp(I p, MP)}, where p is the number of partitions. Class C'(I', M t) (similar to DEPT' in Fig.l) represents the root of class-composition hierarchy equivalent to

C(I, M) such that,

1. I' = {A1,... ,Ap} and M' C_ M. Each Aj is a complex attribute which is bound to class Cj(IJ,MJ), 1 <_ j < p. Each method from M' is a global method.

2. IJ C_ I and MJ C_ M. Each class Cj(IJ,M j) is a vertical partition, where 1 < j _~ p. Each method from M j is a local method of the partition.

(5)

An object O of class C(I, M) is denoted by Oc and retrieval of attribute

"a" from this object is denoted by Oc'a. Paths consisting of multiple dots have been interspersed by "1". The subscripts of "1" indicate the class of OIDs which are retrieved by the path preceding the "1" symbol. For example the expression, c I = Oc, • Arlc~ " riD, • AClDc " c, indicates that, complex attribute Ar of object Oc, is retrieved, resulting in an object of class Cr. From the object of class Cr, attribute r which gives object of class D' is retrieved and so on. Finally, attribute c of the object of class Dc is retrieved. Xc(a, b, c) denotes a simple method X belonging to class C that accesses attributes a,b and c. Xc(a, b, c, ]I.) denotes a complex method X of class C that accesses attributes a,b and c of the same class and invokes method ]I.. ]I. may be a method of class C or other class. Hence, '*' should be substituted by name of the class to which method 'Y' is bound. When there are two methods belonging to unspecified classes in the same expression,

"**" is used to indicate the placeholder of the second class. 'X' and 'Y' are replaced by 'L' when referring to local methods and by 'G' when referring to global methods. Oc -+ Xc(a, b, c) indicates invocation of a method X on object O of class C. In some expressions, method execution paths are denoted by Z i and Z 2. The symbol "=" ( to be read as "expands to"), is used to denote the full paths corresponding to Z 1 and Z 2. The left and right hand sides of the symbol

"-,z" (to be read as "transformed to") indicate the method execution paths in the user defined and the partitioned schema, respectively.

For simplicity, a complex method is shown to be invoking only one method.

But the transformations can easily be extended to cover methods that invoke multiple methods. The O 0 model allows simple and complex methods. Verti- cal partitioning causes local and global methods. As a result, several types of methods exist in a vertically partitioned ODBS. We present these types and corresponding method transformations below. We assume that all methods are safe [6]. Our work differs from [6] in that, it assumes a general method structure (simple and complex) and it covers several types of methods.

4.1 Transformation of Local Methods

Local Simple Methods: Let Cr be a partition of C(I, M) and contains at- tributes a,b,c and method L of C(I, M). Then,

Oc -~ L c (a, b, c) -,z Oc, " Ar Ic~ --+ Lc~ (a, b, c) (1) This is the simplest case in which only the method invocation path changes.

Local Complex M e t h o d s Invoking Local Simple Methods: Let attributes a, b and method L i belong to class C(I, M). After partitioning, say attributes a, b, and method L 1 belong to class Ca. Method L i invokes another simple method L 2 which accesses attributes c and d. Then,

Oc -4 Lic(a,b, 2 n.(c,d)) ,,-* Oc, "A~]co --+ L ~ ( a , b , Z i) (2) There are two ways in which Z 1 can be expanded depending upon whether L 2 belongs to class C or another class.

(6)

Casel (L 1 and L 2 belong to the same class): Before partitioning, attributes c, d and method L 2 belong to C(I, M). After partitioning, they belong to partition C~ . In (2) above, '*' should be replaced by C. Therefore,

Z 1 = Oc, • A~Ic~ --+ L2v~(c,d).

Case2 (L 1 and L 2 belong to different classes): Before partitioning, attributes c, d and method L 2 belong to D(I, M). After partitioning, attributes c, d and method L 2 belong to class Dd. In (2) above, '*' should be replaced by D. L 1 invokes other method L 2 which accesses attributes c and d. Assume that r is a complex attribute of C(I,M) with D(I,M) as its domain and it belongs to class Cr after partitioning. Therefore, Z 1 = Oc, • Ar]c~ " rl D, • Ad]Dd --+ L2Dd (C, d).

If C(I,M) is not a containing class of D(I,M) then Dd should be reachable through OD,. Therefore, Z 1 = OD, • AdIDd --~ L2 Dd (C, d).

Local C o m p l e x Methods Invoking Local Complex Methods: Let at- tributes a, b and method L 1 belong to C(I, M). After partitioning, they belong to class Ca. Then,

O c _ ~ LZc(a,b, 2 L.(c,d,L**(...))) -,z Oc, " Aalc. -+ n i c. ( a , b , Z l) 3 (3) Similar to (2), there are two ways in which Z 1 can be expanded.

Casel (L 1 and L 2 belong to the same class): Before partitioning, attributes c, d and methods L 2, L 3 belong to C(I, M). After partitioning, attributes c, d and method L 2 belong to class Cc and L 3 belongs to Cj. In (3) above, both '*' and '**' should be replaced by C.

Z 1 = Oc, "Ac[co --+ L2c~(c,d, Z 2) and Z 2 = Oc, "Aj]cj --+ n ~ ( . . . ) .

Case2 (L 1 and L 2 belong to different classes): Before partitioning, attributes c, d and method L 2 belong to D(I, M) and L 3 belongs to E ( I , M ) . After par- titioning, attributes c, d and method L 2 belong to class Dd and method L 3 belongs to E~. Hence in (3) above,'*' should be replaced by D and '**' should be replaced by E. Assume that r is a complex attribute of C(I,M) with D(I,M) as its domain and it belongs to class Cr after partitioning. Similarly, q is a complex attribute of D(I,M) with E(I,M) as its domain and it belongs to class Dq after partitioning. Therefore, Z 1 = Oc, • Ar]c~ • riD, • Ad]Dd --+ L2Dd (c, d, Z 2) and Z 2 = Oc, " Arlc~ "riD, " Aq]Dq "alE' " Ae]E~ -~ L3E~ (" ").

If D(I,M) is not a containing class of E(I,M), L 3 will be reachable through OE,.

Therefore, Z 2 = OE, • AelE~ "+ L3 ").

Similarly, if C(I,M) is not a containing class of D(I,M) Z 1 should be reachable from OD,. In that case again Z 2 will take two forms depending upon whether D(I,M) is a containing class of E(I,M) or not.

4.2 Transformation of Global M e t h o d s

G l o b a l S i m p l e M e t h o d s : Let attributes a, b and c and method G belong to class C(I, M). After partitioning, say attribute a belongs to class C~, attribute

(7)

b belongs to Cb and attribute c belongs to Co. Then,

O c --+ G c ( a , b, c) .,z Oc, --+ G c , (a', b', c') (4) where, a' = Oc, • A~Ico • a, b' = Oc, • Ablcb • b and c' = Oc, • Aclco • c.

Since attributes a,b and c do not belong to the class C' their retrieval is equiv- alent to invocation of methods to retrieve them in their respective classes.

G l o b a l C o m p l e x M e t h o d s I n v o k i n g G l o b a l S i m p l e M e t h o d s : Let at- tributes a, b and method G 1 belong to class C ( I , M ) . After partitioning, at- tribute a belongs to class C~ and attribute b belongs to class Cb.

1 2 z 1 ) (5)

O c ~ G c ( a , b , G . ( c , d ) ) -,z Oc, --+

where, a ~ = Oc, • A~Ico • a and b ~ = Oc, " Ablcb " b.

There are two ways in which Z 1 can be expanded depending upon whether G 2 belongs to class C or another class.

Casel (G 1 and G 2 belong to the same class): Before partitioning, attributes c, d and method G 2 belong to C(I,M). After partitioning, attribute c belongs to class Cc and attribute d belongs to Cd. In (5) above, '*' should be replaced by C. Therefore,

Z 1 = Oc, --+ G2c,(c',d'), where, c' = Oc, . Aclcc " c and d' = Oc, "Adlca " d.

Case2 (G 1 and G 2 belong to different classes): Attributes c, d and method G 2 belong to D ( I , M ) . After partitioning attribute c belongs to class Dc and at- tribute d belongs to class Dd. In (5) above, '*' should be replaced by D. Assume that r is a complex attribute of C(I,M) with D(I,M) as its domain and it belongs to class Cr after partitioning. Therefore, Z 1 = O c , . Arlc~ " riD, -+ G2D,(C',d'), where, c' = Oc, • A~Ic ~ • I'1o, • Ac lOt "C and d' = Oc, • A r l c . " 1"1o' " Ad ]Dd .d.

If C(I,M) is not a containing class of D(I,M) then Dd should be reachable through OD,. Therefore, Z 1 : O D ' " Ad]D d "+ G2Da(C',d'), where, c' = OID " AclD~ • C and d' = O~ A d l D a " d.

G l o b a l Complex Methods I n v o k i n g G l o b a l C o m p l e x M e t h o d s : Let at- tributes a, b and method G 1 belong to class C ( I , M ) . After partitioning, at- tribute a belongs to class Ca and attribute b belongs to class Cb. Then,

O c --+ Glc(a, b , G . ( c , d , G * * ( . . . ) ) ) ".~ Oc, --+ ~ 3 G 1 c , ( a ' , b ' , Z 1) (6) where, a' = Oc, • Aalco " a and b' = Oc, • Ablcb " b.

Similar to (5), there are two ways in which Z 1 can be expanded.

Casel (G 1 and G 2 belong to the same class): Before partitioning, attributes c, d and methods G 2, G 3 belong to C ( I , M ) . After partitioning attribute c and d belong to classes Cc and Cd, respectively. In (6) above, both '*' and '**' should be replaced by C. Therefore, Z 1 = Oc, -+ G~,(c',d t, Z 2) and

Z 2 : Oc' ~ G~, (...), where, c' = Oc, • Ac leo .c and d' --- O c , • Ad IDa .d.

(8)

Case2 (G 1 and G 2 belong to different classes): Before partitioning, attributes c, d and method G 2 belong to D ( I , M ) and method G 3 belong to E ( I , M ) . Hence in (6) above, '*' should be replaced by D and '**' should be replaced by E.

After partitioning, attribute 'c' belongs to class Dc and attribute 'd' belongs to class Dd. Assume that 'r' is a complex attribute of C(I,M) with D(I,M) as its domain and it belongs to class Cr after partitioning. Similarly, 'q' is a complex attribute of D(I,M) with E(I,M) as its domain and it belongs to class Dq after partitioning. Therefore, Z 1 = Oc, " A r l c . " riD, --+ G2D,(C',d',Z 2) and Z 2 = Oc, " Arlc. " riD, " AqlDq • alE, --+ GSE'( "" "), where,

c' = Oc, • A~Ic. • riD, • Ac IDc "C and d' -- Oc, • Arlc~ " riD, • Ad IDa "d.

If D(I,M) is not a containing class of E(I,M), G 3 will be reachable through OE,.

Therefore, Z 2 = OE, -+ G 3 Ee ('" ")" Similarly, if C(I,M) is not a containing class of D(I,M) Z 1 should be reachable from OD,. In that case again Z 2 will take two forms depending upon whether D(I,M) is a containing class of E(I,M) or not.

There is a possibility of hybrid types such as global(local) complex methods invoking local(global) complex methods. We do not elaborate upon these types due to space constraints.

5 E x a m p l e a n d A p p l i c a t i o n s

In Fig. 1, methods of class DEPT can be classified into three groups: local sim- ple methods such as ml, m2 and m3; a local complex method invoking local simple method such as m4; and a global complex method such as m5 which in- vokes another complex method mg. We explain the transformations for method m5 in the following discussion. Suppose that class EMPLOYEE is partitioned as E M P L O Y E E I (EName) and EMPLOYEE2(Salary, DateBirth). Method m9 ac- cesses attribute EName to compare this name with the argument which is passed to it. Class DATE is not partitioned. In the non partitioned class definition the execution path of method m5 is as follows. It accesses attribute DName and in- vokes method m9 in class EMPLOYEE. Method m9 in turn accesses attribute EName of class EMPLOYEE and invokes method m13 of class DATE. In the par- titioned domain, method m5 becomes a global method of DEPT'. It retrieves attribute DName using a path DName' and invokes the global complex method m9 of class EMPLOYEE' and so on. The transformation of m5 can be expressed

a s ,

D E P T --+ g e t _ D H e a d _ D O B ( D N a m e , E M P L O Y E E --+ g e t _ D O B ( D A T E --~ g e t - D O B _ S t r 0 ) ) ,,~ D E P T ' - + g e t _ D H e a d - D O B ( D N a m e ' , ZX), where,

D N a m e ' = D E P T ' • IDEPT 1 • g e t _ D N a m e 0 and

Z I = D E P T ' - D 2 [ D E P T 2 • D H e a d [ E M P L O Y E E, E 2 [ E M P L O Y E ~ 2 -'+ g e t _ D O B ( E N a m e ' , Z 2)

where,

E N a m e ' : D E P T ' • D 2 [ D E P T 2 • D H e a d l E M P L O Y E E, • E I I E M P L O Y E E 1 • g e t - E N a m e 0 and

Z 2 -~ D E P T ' • D 2 1 D E P T 2 • D H e a d l E M P L O Y E E, " E 2 1 E M P L O Y E E 2 " D a t e B i r t h l D A T E --+ g e t _ D O B _ S t r 0 .

In a vertically partitioned ODBS several paths need to be traversed for a single method invocation. In addition to the IO cost of explicit retrievals each

(9)

method invocation can also add to IO cost if the method accesses attributes.

Each "." (dot) in the transformation rule can result into communication depend- ing upon the placement of partitions in a multiple processor environment. In DOBSs, vertical partitioning aims at minimizing irrelevant attribute accesses, communication cost and providing more concurrency [3]. In POBSs, it aims at minimizing irrelevant attribute accesses and achieving high retrieval parallelism [8]. The IO and communication costs reflected through the transformations are useful for further study related to partitioning and placement strategies. This is important in the case of global methods when the partitions are placed in differ- ent nodes and considerable data shipping are needed. The transformations allow existing applications to run on a partitioned schema without rewriting them [6]

and enable independence of schema design and class partitioning.

6 C o n c l u s i o n s

Vertical partitioning in ODBSs is difficult due to the presence of methods [2].

We have presented a unified view of the vertical partitioning problem and a set of transformation rules for various method types. This work is useful in develop- ing vertically partitioned POBSs, DOBSs and centralized ODBSs. More detailed analysis of vertical partitioning requires a cost model incorporating both IO and communication costs. Our present research includes the development of such a cost model for POBSs. Other related problems include designing of partition catalogues and query processors and finding various partition placement strate- gies.

R e f e r e n c e s

1. L. Bellatreche, et al. Vertical Fragmentation in Distributed Object Database Sys- tems with Complex Attributes and Methods, Proc. DEXA'96, Sept(1996).

2. C. I. Ezeife and K. Barker. Vertical Class Fragmentation in a Distributed Object Based System, Tech. Report 94-03, Comp. Sci. Dept. Uni. of Manitoba, (1994).

3. C. I. Ezeife. Class Fragmentation in a Distributed Object Based System, Ph.D.

Thesis, Comp. Sci. Dept., Uni. of Manitoba, (1995).

4. K. Karlapalem, et al. Issues In Distribution Design of Object Oriented Databases, In Distributed Object Management by M. T. Ozsu et. al. Morgan Kaufman Publi- cations, (1994), 148-164.

5. K. Karlapalem and Q. Li. Partitioning Schemes for Object Oriented Databases, Proc. of RIDE-DOM'95, (1995).

6. K. Karlapalem, et al. Method Induced Partitioning Schemes in Object Oriented Databases, Proc. of 16 ~h Intl. Conf. on Distributed Computing Systems, Hongkong, May(1996).

7. M. T. Ozsu and P. Valduriez. Principles of Distributed Database Systems, Prentice Hall, (1991).

8. A. K. Thakore, S. Y. W. Su and H. Lain. Algorithms for Asynchronous Parallel Processing of Object-Oriented Databases, IEEE TKDE, 7(3), June(1995), 487-504.

References

Related documents

It was decided that with the presence of such significant red flag signs that she should undergo advanced imaging, in this case an MRI, that revealed an underlying malignancy, which

These data, the first to examine several critical aspects of how providers experience, view and make decisions about unconventional reproductive arrangements, sug- gest that

Summary of the International Union for Conservation of Nature Red List of Ecosystems (IUCN RLE) continental, national, and sub-national assessments (IUCN RLE criteria versions 1

In this article, we investigate the meromorphic solutions of certain non-linear difference equations using Tumura-Clunie theorem and also provide examples which satisfy our

This study investigates the potential of bimetal impregnated catalysts supported on activated carbon derived from biomass for Selective Catalytic Reduction (SCR) of Nitrogen

Anti-inflammatory effects of the preparation were studied according to the below methods: S.Salamon– burn induced inflammation of the skin, caused by hot water (80 0 C) in white

This ethnographic study examines the social effects of the introduction of an enterprise-level quality control program (CMMI) on professional engineers in a complex

More specifically, can the federal govern- ment set standards of performance, encourage experi- mentation in the delivery o f health care, coordinate existing