TÀI LIỆU - Cao Học Khóa 8 - ĐH CNTT 3. ODMG 3-0

288 137 1
TÀI LIỆU - Cao Học Khóa 8 - ĐH CNTT 3. ODMG 3-0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

TÀI LIỆU - Cao Học Khóa 8 - ĐH CNTT 3. ODMG 3-0 tài liệu, giáo án, bài giảng , luận văn, luận án, đồ án, bài tập lớn về...

The Object Data Standard: ODMG 3.0 Edited by R.G.G Cattell Douglas K Barry Contributors Mark Berler Jeff Eastman David Jordan Craig Russell Olaf Schadow Torsten Stanienda Fernando Velez Morgan Kaufmann Publishers San Francisco, California Contents Preface vii CHAPTERS Overview 1.1 1.2 1.3 1.4 Object Model 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 2.10 2.11 Introduction Types: Specifications and Implementations Objects 15 Literals 31 The Full Built-in Type Hierarchy 35 37 Modeling State—Properties Modeling Behavior—Operations 41 Metadata 42 Locking and Concurrency Control 53 Transaction Model 54 Database Operations 58 Object Specification Languages 3.1 3.2 3.3 Background Major Components Participants History and Status Introduction 61 Object Definition Language Object Interchange Format Object Query Language 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9 4.10 4.11 4.12 61 78 89 89 Introduction 89 Principles 90 Query Input and Result 91 Dealing with Object Identity 92 Path Expressions 95 Undefined Values 96 Method Invoking 97 Polymorphism 98 Operator Composition Language Definition 99 124 Syntactical Abbreviations OQL Syntax 126 61 10 vi ODMG Contents C++ Binding 5.1 5.2 5.3 5.4 5.5 5.6 133 Introduction 139 C++ ODL 151 C++ OML 187 C++ OQL 190 Schema Access Example 206 Smalltalk Binding 6.1 6.2 6.3 6.4 6.5 133 Java Binding 7.1 7.2 7.3 7.4 7.5 213 Introduction 213 Smalltalk ODL 216 Smalltalk OML 226 Smalltalk OQL 231 Schema Access 232 239 239 Introduction Java ODL 245 247 Java OML 256 Java OQL 258 Property File APPENDICES A Comparison with the OMG Object Model A.1 A.2 A.3 A.4 A.5 A.6 Introduction 263 Purpose 263 Components and Profiles Type Hierarchy 266 266 The ORB Profile Other Standards Groups Biographies INDEX 273 269 264 267 263 Preface This book defines the ODMG standard, which is implemented by object database management systems and object-relational mappings The book should be useful to engineers, managers, and students interested in these systems Although product documentation from ODMG member companies covers similar information, this book represents the definitive reference for writing code that will work with multiple products The book has also proven useful in courses concerning object data management and persistence of programming language objects This book is the fifth in a series of ODMG standard specifications that began with ODMG 1.0 in 1993 This Release 3.0 differs from the previous specifications in a number of ways It includes a number of enhancements to the Java binding, now implemented by half a dozen products It incorporates improvements to the object model It incorporates various corrections and enhancements in all of the chapters, including changes necessary to broaden the standard for use by object-relational mapping systems as well as for the original target of the standard, object DBMSs Since the ODMG standard has now reached some level of maturity, the focus of the ODMG organization has shifted to implementation, refinement, and promulgation of the standard in the industry ODMG members worked in recent years to ensure that OMG standards would be compatible with ODMG products ODMG has granted rights to Chapter for use in the Java Community Process, working toward a broader standard for persistent data objects in Java Given this level of maturity and stability, we not expect to publish a new release of the ODMG specification soon For revised chapters and new information subsequent to publication of this book, please refer to the contact information at the end of Chapter 1; in particular, the Web site www.odmg.org should contain the latest updates There is an ODMG working group for each chapter of this book The contributors listed on the cover of this book are the elected chairs and editors for those working groups Work on standards is not always recognized as important to companies whose livelihood depends on next quarter's revenue, so these authors are to be commended on their personal dedication and cooperation in improving the usability and consistency of their technology In addition, other people have made important contributions to the ODMG working groups and to previous releases of this standard These people are acknowledged in Chapter Rick Cattell, September 1999 Chapter Overview 1.1 Background This document describes the continuing work by members of the Object Data Management Group (ODMG) on specifications for persistence of object-oriented programming language objects in databases The specification applies to two types of products: Object Database Management Systems (ODBMSs) that store objects directly and Object-to-Database Mappings (ODMs) that convert and store the objects in a relational or other database system representation The two types of products will be referred to as object data management systems or ODMSs This document describes Release 3.0 of the ODMG specification, commonly known as ODMG 3.0, and is an enhancement to ODMG 2.0 1.1.1 Importance of a Standard Before the ODMG specification, the lack of a standard for storing objects in databases was a major limitation to object application portability across database systems ODMG enables many vendors to support and endorse a common object interface to which customers write their database applications 1.1.2 Goals Our primary goal is to put forward a set of specifications allowing a developer to write portable applications, that is, applications that could run on more than one product The data schema, programming language binding, and data manipulation and query languages must be portable We are striving to bring programming languages and database systems to a new level of integration, moving the industry forward as a whole through the practical impetus of real products that conform to a comprehensive specification The ODMG member companies, representing almost the entire ODMS industry, are supporting this specification Thus, our proposal has become a de facto standard for this industry We have also used our specification in our work with standards efforts such as the Java Community Process, OMG, and the INCITS X3H2 (SQL) committee We not wish to produce identical products Our goal is source code portability; there is a lot of room for future innovation in a number of areas There will be differences between products in performance, languages supported, functionality unique to particular market segments (e.g., version and configuration management), accompanying ODMG Overview programming environments, application construction tools, small versus large scale, multithreading, networking, platform availability, depth of functionality, suites of predefined type libraries, GUI builders, design tools, administration tools, and so on Wherever possible, we have used existing work as the basis for our proposals, from standards groups and from the literature But, primarily, our work is derived by combining the strongest features of the products currently available These products offer demonstrated implementations of our specifications that have been tried in the field 1.1.3 Definition It is important to define the scope of our efforts An ODMS transparently integrates database capability with the application programming language We define an ODBMS to be a DBMS that integrates database capabilities with object-oriented programming language capabilities We define an ODM to be a system that integrates relational or other nonobject DBMSs with object-oriented programming language capabilities ODMs include object-relational mapping products and object application servers Either type of ODMS (ODBMS or ODM) makes database objects appear as programming language objects, in one or more existing programming languages ODMSs extend the programming language with transparently persistent data, concurrency control, data recovery, associative queries, and other database capabilities For more extensive definition and discussion of ODBMSs and ODMs, we refer you to textbooks in this area 1.2 Major Components The major components of ODMG 3.0 are described in subsequent chapters: Object Model The common data model to be supported by ODMG implementations is described in Chapter We have used the OMG Object Model as the basis for our model The OMG core model was designed to be a common denominator for object request brokers, object database systems, object programming languages, and other applications In keeping with the OMG Architecture, we have designed an ODMS profile for their model, adding components (e.g., relationships) to the OMG core object model to support our needs Object Specification Languages The specification languages for ODMSs are described in Chapter The two described in this chapter are the Object Definition Language (ODL) and Object Interchange Format (OIF) languages ODL is a specification language used to define the object types that conform to the ODMG Object Model OIF is a specification language used to dump and load the current state of an ODMS to or from a file or set of files 1.3 Participants Object Query Language We define a declarative (nonprocedural) language for querying and updating ODMS objects This object query language, or OQL, is described in Chapter We have used the relational standard SQL as the basis for OQL, where possible, though OQL supports more powerful capabilities C++ Language Binding Chapter presents the binding of ODMG implementations to C++; it explains how to write portable C++ code that manipulates persistent objects This is called the C++ OML, or object manipulation language The C++ binding also includes a version of the ODL that uses C++ syntax, a mechanism to invoke OQL, and procedures for operations on ODMSs and transactions Smalltalk Language Binding Chapter presents the binding of ODMG implementations to Smalltalk; it defines the binding in terms of the mapping between ODL and Smalltalk, which is based on the OMG Smalltalk binding for IDL The Smalltalk binding also includes a mechanism to invoke OQL and procedures for operations on databases and transactions Java Language Binding Chapter defines the binding between the ODMG Object Model (ODL and OML) and the Java programming language as defined by the Java™ Platform The Java language binding also includes a mechanism to invoke OQL and procedures for operations on ODMSs and transactions This chapter has been submitted to the Java Community Process as a basis for the Java Data Objects Specification It is possible to read and write the same database from C++, Smalltalk, and Java, as long as the programmer stays within the common subset of supported datatypes More chapters may be added at a future date for other language bindings Note that unlike SQL in relational systems, the ODMG data manipulation languages are tailored to specific application programming languages, in order to provide a single, integrated environment for programming and data manipulation We don’t believe exclusively in a universal DML syntax We go further than relational systems, as we support a unified object model for sharing data across programming languages, as well as a common query language 1.3 Participants As of September 1999, the participants in the ODMG are • • • Rick Cattell (ODMG chair, Release 1.0 editor), Sun Microsystems Jeff Eastman (ODMG vice-chair, Object Model workgroup chair, Smalltalk editor), Robert Hirschfeld, Windward Solutions Douglas Barry (ODMG executive director, Release 1.1, 1.2, 2.0, and 3.0 editor), Barry & Associates ODMG Overview • Mark Berler (Object Model and Object Specification Languages editor), American Management Systems Suad Alagic (invited staff), Wichita State University Jack Greenfield (invited staff), InLine Software Franỗois Bancilhon, Fernando Velez (OQL editor), voting member, Ardent Software Dirk Bartels, Olaf Schadow (C++ workgroup chair), voting member, POET Software David Jordan (C++ and Java editor), voting member, Ericsson Henry Parnell, voting member, Object Design Ron Raffensperger, voting member, Objectivity Craig Russell (Java workgroup chair), voting member, Sun Microsystems Henry Strickland, voting member, Versant Corporation Zaid Al-Timimi, reviewer member, Advanced Language Technologies Lougie Anderson, reviewer member, GemStone Systems Ole Anfindsen, reviewer member, Telenor R&D Tony Kamarainen, reviewer member, Lawson Software Yutaka Kimura, reviewer member, NEC Paul Lipton, reviewer member, Computer Associates Jon Reid, reviewer member, Micro Data Base Systems Jamie Shiers, reviewer member, CERN Torsten Stanienda (OQL workgroup chair), reviewer member, Baan • Satoshi Wakayama, reviewer member, Hitachi • • • • • • • • • • • • • • • • • • It is to the personal credit of all participants that the ODMG standard has been produced and revised expeditiously All of the contributors put substantial time and personal investment into the meetings and this document They showed remarkable dedication to our goals; no one attempted to twist the process to his or her company's advantage 1.4 History and Status Some of the history and methodology of ODMG may be helpful in understanding our work and the philosophy behind it We learned a lot about how to make quick progress in standards in a new industry while avoiding “design by committee.” ODMG was conceived at the invitation of Rick Cattell in the summer of 1991, in an impromptu breakfast with ODBMS vendors frustrated at the lack of progress toward ODBMS standards Our first meeting was at Sun Microsystems in the fall of 1991 Comparison with the OMG Object Model Biographies Contact information, email addresses, and Web sites for the following people can be found at http://www.odmg.org R.G.G Cattell Dr R G G “Rick” Cattell is a Distinguished Engineer in the Java Software Division of Sun Microsystems, where he has served as lead architect on database connectivity and instigated the Java Enterprise Edition Platform He has worked for 15 years at Sun Microsystems in both management and senior technical roles and for 10 years in research at Xerox PARC and at Carnegie-Mellon University Dr Cattell is best known for his contributions to database systems, particularly in object-oriented databases and database user interfaces He is the author of 50 papers and books in database systems and other topics He was a founder of SQL Access, the author of the world’s first monograph on object database systems, and the recipient of the ACM Outstanding Dissertation Award He served as chair of the ODMG Douglas K Barry Doug has worked in database technology for over twenty years, with an exclusive focus on the application of database technology for objects since 1987 As principal of Barry & Associates, Doug has focused on helping clients make fully informed decisions about the application of object technology Doug is also the author of Object Database Handbook: How to Select, Implement, and Use Object-Oriented Databases, published by John Wiley & Sons, and XML Data Servers: An Infrastructure for Effectively Using XML in Electronic Commerce, published by Barry & Associates, Inc.; and was for many years the Databases columnist in Object Magazine and the ODBMS columnist in Distributed Computing magazine Doug holds a master’s degree in computer science from the University of Minnesota He served as the executive director of the ODMG and the editor of Release 3.0 Mark D Berler Mark is a Director of Architecture for Sapient Corporation, an e-services consultancy Based in Atlanta, Georgia, Mark is responsible for integrating Sapient's technical services with business strategy and design services Previously, Mark was a Senior Principal and Associate of the Center for Advanced Technologies at American Management Systems (AMS) As an architect at AMS, Mark specialized in the design, development, and implementation of object-oriented frameworks and services for large-scale distributed systems Mark also implemented database infrastructures that managed terabytes of data Mark holds a master’s degree in computer science from the Biographies State University of New York at Albany He served as the editor for the Object Model and Object Specification Languages chapters Jeff Eastman Jeff has over 25 years of experience in the computing field, more than half of which has been focused in the area of object technology He is Vice President of Architecture and Technology at GRIC Communications, an Internet startup with a worldwide consortium of ISP partners that provides federated roaming, IP telephony, and e-commerce services He is also the founder and President of Windward Solutions, Inc., a Silicon Valley consulting firm Previously, he was a senior architect in HP’s Information Architecture Group, where he helped to develop and prove many of the key technologies that are now standards of the Object Management Group and other organizations Dr Eastman has held a variety of management positions in research and development and has managed several object technology projects He holds a Ph.D in electrical engineering from North Carolina State University Jeff served as the vice chair of the ODMG, the chair of the Object Model Working Group, and the editor of the Smalltalk chapter David Jordan David is a Consulting Engineer at Ericsson, where he is applying Java object databases in mobile communicator devices He helped engineer a small footprint ODMGcompliant Java database for mobile devices, which was developed by POET Software He is also a member of the Java Data Objects expert group, which is standardizing transparent persistence for Java within Sun's Community Process standardization process David has had columns in both the C++ Report and Java Report magazines and authored a book titled C++ Object Databases Prior to joining Ericsson, he was a Distinguished Member of Technical Staff at Bell Laboratories, where he had been designing C++ object models and database schemas for flat files, network, relational, and object databases from 1984 through 1996 David served as the editor of both the Java and C++ chapters Craig Russell Craig is Product Architect at Sun Microsystems, where he is responsible for the architecture of Java Blend, an object-to-relational mapping engine During the past 30 years, he has been responsible for aspects of architecture, design, and support for enterprise-scale transactional and database systems He is the Specification Lead on Java Data Objects, a Java Specification Request being managed via the Java Community Process Craig served as chair of the Java Working Group Biographies Olaf Schadow Olaf is a Presales Engineer with IONA, a provider of standards-based enterprise middleware solutions Previously, he held positions with POET Software involving kernel development and the design and implementation of POET’s ODMG C++ binding He was also a Product Manager and Director of Consulting Services at POET Most recently, Olaf worked on POET’s e-commerce prototype implementation using XML technology Olaf holds a master’s degree in computer science from the University for Applied Science, Hamburg, Germany He served as chair of the C++ Working Group Torsten Stanienda Torsten is a Software Architect at DataDesign AG, an e-business company in Munich, Germany He was a Senior Engineer at Tech@Spree Software Technology GmbH, Berlin, Germany, during the development of ODMG 3.0 Torsten holds a diploma in computer science from the Technical University in Dresden Torsten was a leading developer of Java Blend, a cooperative development between the Baan Company, Sun Microsystems, and Tech@Spree He has been involved in object-oriented software technologies for more than 10 years Torsten represented Baan in the ODMG, where he served as chair of the OQL Working Group Fernando Velez Fernando is the Vice President of Engineering with Arioso, an application service provider in the area of Web-enabled employee benefits He has held positions as Chief Scientist with Ardent Software, Director of Engineering with Unidata, Chief Architect with O2 Technology, Research Engineer at INRIA, France, and at the Bull Research Center in Grenoble, France He was one of the founders of O2 Technology Fernando holds a Ph.D in computer science from the Polytechnic National Institute of Grenoble, France He served as the editor of the OQL chapter Biographies Index Symbols ODMG_93 B 126 A abort 40, 167, 218, 238, 239 117 accessor address of ANSI 10 10 of ODMG of OMG 10 alias_type_iterator 182 10 ANSI address 10 documents 10 9, 10, 58 X3H2 X3H4 249 X3H6 249 10, 58, 249 X3H7 X3J16 9, 10 X3J20 9, 201 any ODL 71 architecture, of ODBMSs 3, 20, 25 array C++ 125, 162 C++ builtin 162 231, 238 Java ODL 71 OQL 98 212 Smalltalk association 25 atomicity 52 182 attribute_iterator attributes 11, 12, 18, 36, 37, 45, 46, 60, 61, 73, 74, 76, 77, 235 129 C++ example declaration in C++ 142 modification 142 C++ example ODL 71 OQL 100 208, 222 Smalltalk avg 92, 102 axiom 116 20, 23 C++ 160 237 Java ODL 70 OQL 97 211 Smalltalk begin 167, 217, 239 BidirectionalIterator Smalltalk 211 bind 242 BNF 59, 60, 67 117 boolean ODL 71 bag C 4, 11, 13, 14, 38, 39, 58, 59, 66 122 built-in types embedding objects 143 future direction 126 181 inheritance namespaces 126 object creation 139 140 example ODL 121 schema definition example 194 4, 121 OML operator -> 141 140 new OQL 175 pointers 122 126 preprocessor identifier references 122 STL 166 166 transaction C++ OML example application 194 58, 249 CAD Framework Initiative (CFI) char ODL 70 167, 218, 238, 239 checkpoint class 12, 13, 14, 15, 16, 47, 59, 60, 63, 67 68 ODL Smalltalk 208, 224 class indicator 91 C++ close 169, 216, 241, 242 73 clustering collection 20, 77, 110 array 20, 25 20, 23 bag C++ class, definition 154 C++ mapping 125 154 conforming implementation dictionary 20, 25 element 108 embedded 154 110 flatten indexed expressions 107 Java 231, 236 20, 23 list membership testing 102 of literals 156 156 of structured literals OQL 101, 118 set 20, 22 204, 210, 211, 224 Smalltalk types, different 156 collection_type_iterator 182 21 CollectionFactory Smalltalk 211 commit 167, 217, 238, 239 Common Object Request Broker Architecture see CORBA comparison 117 concatenation 108 concurrency control 50 52 consistency const ODL 68 constant Smalltalk 222 constant_iterator 182 ConstOperand Smalltalk 226 constructor 117 10 contact information conversion 110, 119 CORBA 10, 39, 40, 41, 58, 67 92, 102 count creation, of an object 17 D d_ C++ name prefix 126 181, 190 d_Alias_Type d_Association class definition 163 181, 190 d_Attribute ODMG Index d_Bag class definition 160 d_Boolean 129 d_Char 129 180, 185 d_Class d_Collection C++ class definition 156 180, 187 d_Collection_Type d_Constant 181, 193 d_Database 169 lookup_object 170 170 rename_object d_Date C++ class 132 d_Dictionary class definition 162 d_Double 129 180, 189 d_Enumeration_Type d_Error 126 d_Error_DatabaseClassMismatch 173 140, d_Error_DatabaseClassUndefined 173 d_Error_DatabaseClosed 173 173 d_Error_DatabaseOpen d_Error_DateInvalid 134, 173 d_Error_ElementNotFound 163 d_Error_IteratorDifferentCollections 165, 173 d_Error_IteratorExhausted 165, 173 164, 173 d_Error_IteratorNotBackward d_Error_MemberIsOfInvalidType 138, 174 138, 174 d_Error_MemberNotFound d_Error_NameNotUnique 170, 173 d_Error_None 173 174 d_Error_PositionOutOfRange d_Error_QueryParameterCountInvalid 174, 177 d_Error_QueryParameterTypeInvalid 174, 176, 177 d_Error_RefInvalid 142, 174 153, 174 d_Error_RefNull d_Error_TimeInvalid 136, 174 d_Error_TimestampInvalid 137, 174 167, 174 d_Error_TransactionNotOpen d_Error_TransactionOpen 167, 174 d_Error_TypeInvalid 152, 174 181, 192 d_Exception d_Extent 171 d_Float 129 181, 194 d_Inheritance d_Interval C++ class 131 164 d_Iterator ODMG Index C++ class 163 188 d_Keyed_Collection_Type d_KeyedCollection_Type 180 d_List class definition 160 d_list 166 d_Long 129 166 d_map d_Meta_Object 180, 183 d_Module 180, 184 d_multimap 166 166 d_multiset d_Object 150 d_activate 151 151 d_deactivate mark_modified 141 d_Octet 129 181, 191 d_Operation d_oql_execute 176 d_OQL_Query 176 181, 193 d_Parameter d_Primitive_Type 180, 188 d_Property 181, 190 d_Ref definition 151 delete_object 140 153 d_Ref_Any d_Ref_Type 180, 187 d_Rel_List 138, 147, 161 138, 143 d_Rel_Ref d_Rel_Set 138, 145 d_Relationship 181, 191 179, 183 d_Scope d_Set class definition 158 166 d_set d_Short 129 d_String 130 C++ class d_Structure_Type 180, 189 d_Time 134 136 d_TimeStamp d_Transaction 167 d_Type 180, 184 129 d_ULong d_UShort 129 d_Varray C++ class definition 162 d_vector 166 data definition language (DDL) 57 data manipulation language (DML) 5, 57, 114 data model database 241 access modes 204 administration bind 55, 242 close 55, 169, 216, 242 241 Java lookup 55, 169, 242 open 55, 167, 169, 216, 241, 242 55 schema Smalltalk 216 unbind 55, 242 database operations 54 54 DatabaseFactory date 26 Java 233 70 ODL Smalltalk 212 DateFactory 27 212 Smalltalk deadlock 18, 51 define 92 DefiningScope Smalltalk 220 deletion 235 of object dictionary 20, 25 C++ 162 70 ODL Smalltalk 212 difference 109 87 distinct distributed databases distributed transactions 52 10 documents, from ANSI and OMG double ODL 70 52 durability E element 108, 110 ElementNotFound 173 enumeration ODL 71 Smalltalk 225 92, 109 except exception_iterator 182 exceptions 12, 39, 40, 43, 44 126 C++ Java 231 nested handlers 40 207, 219, 222 Smalltalk existential quantification 102 exists 92 58 EXPRESS ODMG Index expression 116 226 Smalltalk EXTENDS 59, 63 EXTENDS relationship 15 16, 47, 55, 60, 61, 66, 68, 171 extents C++ mapping 126 Java 231 68 ODL Smalltalk 203 F factory 17 CollectionFactory 21, 211 54 DatabaseFactory DateFactory 27, 212 ObjectFactory 17, 21, 27, 29, 31, 214 TimeFactory 29, 213 TimestampFactory 31, 214 53, 217 TransactionFactory first element 108 flattening 110 float ODL 70 for all 92 future direction C++ 126 Smalltalk 227 G garbage collection 235 goals, of ODMG grammar 116 92, 105 group by H history, of ODMG I identifiers, of an object 11, 17, 18, 31, 33, 35, 36, 55 IDL 4, 32, 38, 39, 41, 57, 58, 62, 202 inheritance C++ 181 Smalltalk 224 inheritance_iterator 182 interface 12, 14, 15, 17, 19, 36, 40, 41, 46, 57, 59, 67 array 25 23 bag BidirectionalIterator 22 21, 23, 24, 25, 26 collection CollectionFactory 21 database 55 54 DatabaseFactory date 27 DateFactory 27 26 dictionary interval 28 iterator 22 list 24 17, 21, 27, 28, 29, 31 object ObjectFactory 17, 21, 27, 29, 31 ODL 68 23 set signatures 57 Smalltalk 205, 208, 223 29 TimeFactory TimestampFactory 31 TransactionFactory 53 interface definition language see IDL intersect 92, 109 109 intersection interval 28 ODL 70 213 Smalltalk inverse traversal path 139, 209 ISA relationship 14, 15, 16 63 ISA relationship ISO 52 isolation 52 51 isolation level iterator 21 C++ 163 165 C++ example Java 233 Smalltalk 211 J Java 4, 11, 13, 14, 58, 59 class BagOfObject 236 class Database 241 236 class ListOfObject class ODMGException 231 class ODMGRuntimeException 243 class OQLQuery class SetOfObject 236 class Transaction 238 233 date deletion 235 execute query 243 238 interface Array 231 ODMG Index 31, 33 structured locks 18, 50, 53, 54, 167, 215, 235, 239, 241 read 51, 239 51, 239 upgrade write 51, 239 long ODL 70 lookup 169, 242 interface Bag 237 236 interface Collection interface List 237 interface Set 237 233 ODL OML 234 OQL 243 230 package persistence 234 query 243 static fields 235 233 string time 233 timestamp 233 88 join, between collections join, threading 167, 218, 239 M K keyed_collection_type_iterator 16, 19, 47, 60, 68 keys C++ 126 Java 231 68 ODL Smalltalk 204 182 L language binding 122 C++ Java 229 Smalltalk 202 108 last element late binding 90 late binding in queries 91 167, 218, 239 leave lifetimes, of an object 17, 19 list 20, 23 160 C++ first 108 Java 237 108 last ODL 70 OQL 97, 110 211 Smalltalk literal 11, 12, 13, 15, 18, 21, 31, 34, 35, 36, 49, 50, 75 31, 32 atomic C++ mapping 123 collection 31, 32 230 Java null 31, 34 Smalltalk 202, 226 mark_modified 143 markModified 215 92, 102 max member Smalltalk 225 41, 42, 55 meta objects C++ 183 Smalltalk 220 41, 178, 220 metadata method invoking in query MIME 75, 76 92, 102 modifying objects 141 module 68 ODL Smalltalk 221 Month 132 90 N names C++ mapping 126 Java 231 142, 235, 242 object Smalltalk 203 names, of an object 17, 19 126 namespaces null literal 34 O object 11, 17, 20 123 C++ mapping creation 17, 96, 139 C++ example 140 140, 215, 235 deletion example 141 identifiers 11, 17, 18, 31, 33, 35, 36, 55 identity 85 Java 230 lifetimes 17, 19 141, 215, 235 modification names 17, 19, 142, 235, 242 persistence 215 141 references Smalltalk 214 structure 17 254 object adaptor Object Database Management Group see ODMG object database management system see ODBMS Object Definition Language 11, 57 object definition language see ODL object identifiers 73 Object Interchange Format 57, 72 Object Management Group see OMG object manager 253 object manipulation language see OML object model 123 C++ C++ binding 122 Java 230 profile Smalltalk 202 Object Model Task Force see OMTF object query language see OQL object request broker see ORB Object Services Task Force see OSTF Object Specification Languages 11 ObjectFactory 17, 21, 27, 29, 31 214 Smalltalk octet ODL 71 80 odbdump odbload 81 ODBMS 1, 3, architecture as an object manager 253 ODL 4, 5, 11, 13, 17, 20, 26, 38, 39, 41, 50, 55, 57, 63, 67 any 71 array 71 71 attributes bag 70 BNF 67 71 boolean ODMG Index C++ 121, 127 70 char class 68 const 68 70 date design principles 121 dictionary 70 70 double enumeration 71 extents 60, 68 float 70 68 interface interval 70 Java 233 60, 68 keys list 70 long 70 68 module octet 71 relationships 61, 72 71 sequence set 70 short 70 204, 208 Smalltalk string 71 structure 71 70 time timestamp 70 typedef 69 71 union unsigned long 70 unsigned short 70 67 ODL grammar ODMG contact information 10 history object model 3, 57, 245 participants 6 status OIF 57, 72 OMG 9, 10, 32, 39, 40, 41, 57 10 address architecture Concurrency Control Service 51 CORBA, see CORBA documents 10 IDL, see IDL Interface Definition Language 32 object model 3, 5, 245 Object Transaction Service 52 OMTF, see OMTF ORB, see ORB OSTF, see OSTF OML ODMG Index 4, 121 143 embedding objects Java 234 Smalltalk 214 10, 248 OMTF see also OSTF open 167, 169, 216, 241 operand Smalltalk 226 operation_iterator 182 operations 11, 12, 39, 43, 44, 45, 57, 58, 59, 62 declaration in C++ 127 example 139 150 in C++ OML Java 235 OQL 101 58 signature Smalltalk 205, 221 operator -> 141 new 140 OQL 4, 83 113 abbreviations accessor 117 array 98 100 attribute extraction avg 92 bag 97 115 BNF C++ 175 class indicator 91 101 collection concatenation 108 constructor 117 110 conversion count 92 define 92 83 design principles distinct 87 element 110 92 except exists 92 expression 116 110 flattening for all 92 grammar 116 92, 105 group by intersect 92 Java 243 88 joins between collections language definition 93 late binding 91 97, 110 list C++ max 92 90 method invoking 92 object identity 85 101 operations operator composition 91 order by 107 87 path expression polymorphism 90 query input and result 84 relationship traversal 87, 100 87, 103 select from where set 97, 109, 110 set expression 118 219 Smalltalk Smalltalk Query class 219 sort 92 96 structure sum 92 typing an expression 111 92 union ORB 10, 248, 251 binding 107 order by OSTF 10, 253 see also OMTF P parameter Smalltalk 226 parameter_iterator 182 participants, in the ODMG path expressions in queries 87 PCTE 249 58, 249 PDES/STEP persistence by reachability 229, 234 229 transitive persistence capable declaration in C++ OML 150 230 Java persistent objects 19, 51, 53, 55 C++ 139 140 C++ example Java 234 referencing C++ transient objects 142 referencing Smalltalk transient objects 215 philosophy, of the ODMG plan, of the ODMG polymorphism and queries 90 portable applications 126 preprocessor identifier ODMG Index PrimitiveKind 223 Smalltalk programming language 2, properties 11, 12, 14, 15, 16, 19, 35, 45, 47, 58, 59, 60 declaration in C++ 142 Java 235 modification Smalltalk 215 Smalltalk 222 property_iterator 182 Q query 116, 243 query language see OQL R read lock 51, 239 Ref C++ class 141 class validity after transaction commit 152 183 ref_type_iterator references behavior definition 142 142 with respect to object lifetime referencing objects 141 relational DBMS 1, 246 183 relationship_iterator relationships 11, 12, 14, 16, 35, 36, 38, 41, 45, 60, 61, 73, 143, 235 138, 149 C++ example C++ mapping 125 cardinality "many" 38, 79 38, 78 cardinality "one" declaration in C++ 137 EXTENDS 15, 63 14, 15, 16, 63 ISA Java 231, 234 ODL 72 61 ODL BNF OQL 100 Smalltalk 203, 209, 222 143 traversal paths rename_object 126 rules S schema 5, 11, 41, 55, 57, 58, 63, 73 integration 58 scope Smalltalk 220 select from where 87, 103, 118 sequence ODL 71 serializability 50, 52 20, 22, 87 set expression in OQL 118 Java 237 ODL 70 97, 109, 110 OQL Smalltalk 211 set_object_name 126 short ODL 70 Smalltalk 4, 11, 13, 14, 34, 38, 39, 58, 59 array 212 attribute declarations 208 222 attributes bag 211 BidirectionalIterator 211 224 class classes 208 collection 204, 211, 224 211 CollectionFactory collections 210 compound types 206 222 constant constants 206 ConstOperand 226 216 database date 212 DateFactory 212 220 DefiningScope design principles 201 dictionary 212 225 enumeration exceptions 207, 222 expression 226 203 extents future direction 227 garbage collection 215 224 inheritance interface 205, 208, 223 interval 213 211 iterator keys 204 list 211 226 literal member 225 MetaObject 220 221 module ODMG Index names 203 214 object object model 202 ObjectFactory 214 204, 208 ODL OML 214 operand 226 205, 221 operations OQL 219 parameter 226 PrimitiveKind 223 222 properties relationship 222 relationship declarations 209 220 scope set 211 simple types 206 225 specifier structure 225 TimeFactory 213 214 TimestampFactory TransactionFactory 217 type 206, 207, 223 223 TypeDefinition union 225 UnionCase 225 201 Smalltalk80 sort 92 specifier 225 Smalltalk SQL 12, 20, 26, 33, 34, 51, 58, 83, 87, 246 91 philosophical differences Standard Template Library 158, 166 standards 249 standards groups status, of ODMG standard STEP/PDES 58, 249 158, 166 STL string Java 233 71 ODL structure C++ mapping 123 230 Java ODL 71 OQL 96 225 Smalltalk structure, of an object 17 subcollection 108 suggestion process sum 92, 102 T table type 33 29 time C++ 134 Java 233 70 ODL Smalltalk 213 Time_Zone 134, 135 TimeFactory 29 213 Smalltalk timestamp 30 C++ 136 233 Java ODL 70 Smalltalk 213 31 TimeStampFactory TimestampFactory Smalltalk 214 51 transaction abort 53, 167, 218, 238, 239, 241 begin 53, 167, 217, 239 168 behavior of transient objects C++ 166 C++ class 166 checkpoint 53, 167, 218, 238, 239, 241 commit 53, 167, 217, 238, 239, 240 239 current distributed 52 exceptions 219 238 Java join 53, 167, 218, 239 leave 53, 167, 218, 239 167, 215 locks long transactions 168 Smalltalk 217 218 block-scoped per thread 218 TransactionFactory 53 217 Smalltalk transient objects 19, 52 behavior in transactions 168 139 C++ C++ creation 140 C++ example 140 234 Java referencing C++ persistent objects 142 referencing persistent Smalltalk objects 215 Smalltalk 215 215 transitive persistence 10 ODMG Index traversal 139 inverse traversal path 87, 143 definition 137 209 inverse to-many 143, 203 to-one 143, 203 111 type hierarchy 34, 248 object model types in Java 233 ODL 60 206, 223 Smalltalk unsigned types in Java 233 type_iterator 183 typedef ODL 69 TypeDefinition Smalltalk 223 universal quantification unsigned long ODL 70 unsigned short ODL 70 upgrade lock 51, 239 U X unbind 242 union 92, 109 71 ODL Smalltalk 225 UnionCase 225 Smalltalk X3H2, see ANSI X3H7, see ANSI X3J16, see ANSI X3J20, see ANSI XA 52 101 V value when object is deleted VArray C++ 162 Java 238 W Weekday write lock 132 51, 239 152 ... Framingham Corporate Center 492 Old Connecticut Path Framingham, MA 01701 USA Voice:+ 1-5 0 8- 8 2 0-4 300 Fax: + 1-5 0 8- 8 2 0-4 303 Email: omg@omg.org Web: www.omg.org The Java Community Process is the formalization... contact ODMG s executive director, Douglas Barry, at dbarry @odmg. org, or contact Object Data Management Group 13504 4th Avenue South Burnsville, MN 55337 USA Voice:+ 1-6 1 2-9 5 3-7 250 Fax: + 1-6 1 2-3 9 7-7 146... This document describes Release 3.0 of the ODMG specification, commonly known as ODMG 3.0 , and is an enhancement to ODMG 2.0 1.1.1 Importance of a Standard Before the ODMG specification, the lack

Ngày đăng: 09/12/2017, 11:38

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan