1 1 1 ICS-FORTH & Univ. of Crete Spring 2010 XML and RDBMSs (Storage and Publishing) 2 ICS-FORTH & Univ. of Crete Spring 2010 Where’s the XML Data? Export Legacy databases Import Warehouse XML data ? Wrap SOAP/CORBA/Java RMI Business Application Logic ? View Minimal result
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
1
1
1
ICS-FORTH & Univ. of Crete Spring 2010
XML and RDBMSs(Storage and Publishing)
2
ICS-FORTH & Univ. of Crete Spring 2010
Where’s the XML Data?
ExportLegacy databases
ImportWarehouse XML data
?
WrapSOAP/CORBA/Java RMI
Business
Application
Logic
?
ViewMinimal result
2
2
3
ICS-FORTH & Univ. of Crete Spring 2010
Two XML - DBMS Problems
� XML documents need to be stored and retrieved in databases
�Exploit capabilities of RDBMS for efficient XML data processing
�Scalability, Availability, Performance, ...
�Need to support mapping schemes for shredding XML into relations
�Need to propagate constraints from XML to relations
� Data stored in databases need to be published in XML
�Most (structured) data stored in RDBMS
�Seamless integration of XML and Relational data
�Specification schemes for publishing needed
�Efficient publishing algorithms needed
� When not to use RDBMS
�Streaming data (RSS, SOAP), Information Retrieval (Google)
4
ICS-FORTH & Univ. of Crete Spring 2010
Storing XML Data
� Storage foundation of efficient XML query processing
�Flat streams: store XML data as is in text files
�fast for storing and retrieving whole documents
−query support: limited; concurrency control: no
�Native XML Databases: designed specifically for XML
�XML document stored as is
�Efficient support for XML queries
�Many techniques need to be re-developed
�Colonial Strategies: Re-use existing storage systems
�Leverage mature systems (RDBMS)
�Simple integration with legacy data
�Map XML document into underlying structures
E.g., shred document into flat tables
3
3
5
ICS-FORTH & Univ. of Crete Spring 2010
� A new XML type (like varchar, date, numeric)
� SQL / XML 2003, the first edition of the SQL/XML standard published by the ISO as part 14 of the SQL standard: ISO/IEC 9075-14:2003
�XML type restricted to
�XML document or
�XML element or
�Sequence of XML elements
� SQL / XML, 2nd edition (ISO/IEC 9075-14:2006)
�Full support of the XQuery Data Model
�XML(SEQUENCE), XML(ANY CONTENT), ...
� N.B. XML in different rows is incomparable
Commercial Systems -- XML Type in SQL
6
ICS-FORTH & Univ. of Crete Spring 2010
Example (SQL:2003)
create table books(
title varchar(20),
authors XML);
„D. Kossmann“Dual Buffering
<author>D. Chamberlin </author>
<author>D. Florescu</author>
<author>et al.</author>
XQuery 1.0
AuthorsAuthorsAuthorsAuthorsTitleTitleTitleTitle
No schema validation, no typing!
4
4
7
ICS-FORTH & Univ. of Crete Spring 2010
From XML to Relations
� Sophisticated query processing, storage and concurrency control
techniques have been developed for relational DBMS
�Thus, why not take advantage of available DBMS techniques?
� Store and query XML data using relational DBMS
�Derive a relational schema from an XML DTD (schema)
�Shred XML data into relational tuples – store XML data
�Translate XML queries to SQL queries
�Convert query results back to XML
RDB
query answer
store query translation
DBMS
XML
8
ICS-FORTH & Univ. of Crete Spring 2010
Architecture: XML Shredding
RDB
query answer
store
DBMS
XML
XML query parsing query rewriting
XML tagger Tagging results
query translation
Relational schemagenerator
XML documentshredder
5
5
9
ICS-FORTH & Univ. of Crete Spring 2010
Nontrivial Issues
� XML storage peculiarities
�Characteristics of XML data: optional elements & values, repetition, choice, inherent order, large text fragments, mixed content
�Mapping DTDs to relational schemas: data model mismatch
• DTD: recursive, regular expressions
• relational schema: tables
�Characteristics of XML queries: document order & structure, full-text search, transformation
�Query translation: query language mismatch
• XQuery, XSLT: Turing-complete
• SQL: first-order
� Information preservation:
�lossless: there should be an effective method to reconstruct the original XML document from its relational storage – the inverse of the storage mapping should exist
�propagation/preservation of integrity constraints – will be seen shortly
10
ICS-FORTH & Univ. of Crete Spring 2010
Derivation of a Relational Schema
� Lossless: the original document can be effectively reconstructed from its relational representation
� Query support: XML queries should be able to be rewritten to efficientrelational queries
� Normal form: BCNF, 3NF have proved extremely useful for integrity maintenance of updates -- will be addressed later
Relational schema generator
XML document shredder
6
6
11
ICS-FORTH & Univ. of Crete Spring 2010
Running Example: Book Document
DTD:
<!ELEMENT db (book*)>
<!ELEMENT book (title,authors*,chapter*,ref*)>
<!ELEMENT chapter (text | section)*>
<!ELEMENT ref book>
<!ELEMENT title #PCDATA>
<!ELEMENT author #PCDATA>
<!ELEMENT section #PCDATA>
<!ELEMENT text #PCDATA>
� Recursive
� Complex regular expressions
12
ICS-FORTH & Univ. of Crete Spring 2010
Graph Representation of the DTD
� Each element type/attribute is represented by a unique node
� Edges represent the subelement (and attribute) relations
� *: 0 or more occurrences of subelements
� Cycles indicate recursione.g., book
� Simplification: e.g., (text|section)*� text* | section* -- ignore order
� XML document conforming to the DTD are those trees that unfold the graph (special treatment: * � empty at leaf)
author.bookID ⊆ book.bookID, similarly for chapter, ref
text.chapterID ⊆ chapter.chapterID, similarly for section
db
title
book
author chapter ref
****
**** ********
**** ****
sectiontext
9
9
17
ICS-FORTH & Univ. of Crete Spring 2010
� Use associated DTD/XML Schema to decompose document
� Shred inlining:
� Rule of thumb: Inline as much as possible to minimize number ofjoins
� Shared: do not inline if shared, set-valued, recursive
� Hybrid: also inline if shared but not set-valued or recursive
� Querying: It supports a large class of XML queries commonly encountered
+ Fast lookup & reconstruction of inlined elements
- Reconstruction may require multi-table joins and unions
Schema-Driven: Summary
18
ICS-FORTH & Univ. of Crete Spring 2010
Schema-Driven: Summary
� Instance mapping can be easily derived from schema mapping
� Is it lossless?
�The order information is lost (simplification of regular expressions
defining element types)
� Is there anything missing?
�“core dumping” the entire document to a new database
In practice one often wants to
�select relevant data from the document
�store the selected data in an existing database of a predefined
schema
�XML Schema: type + constraints
What happens to XML constraints? Can we achieve normal forms
(BNCF, 3NF) for the relational storage?
10
10
19
ICS-FORTH & Univ. of Crete Spring 2010
Selective Mapping from XML to Relations: Example
� Existing relational database R :
book(id,title)
ref(id1,id2)
� Select from XML and store in R
�books with title containing “WMD”, and
�books cited, directly or indirectly
� Difference:
�select only part of the data from an input document
�store the data in an existing database with a fixed schema
RXML
existing DBbook documentSQL inserts
db
title
book
author chapter ref
****
**** ********
**** ****
sectiontext
20
ICS-FORTH & Univ. of Crete Spring 2010
Mapping Specification: XML2DB Mappings
�XML2DB Mapping:
�Input: an XML document T of a DTD D, and an existing database schema R
�Output: a list of SQL inserts ∆R, incrementing the database of R
�Rely on an extension of Attribute Grammars:
�treat the DTD D as an ECFG (extended context-free)
�associate semantic attributes and actions with each production rule
�attributes: passing data top-down
�actions: generate SQL inserts ∆R
�evaluation: generate SQL inserts in parallel with XML parsing
11
11
21
ICS-FORTH & Univ. of Crete Spring 2010
XML2DB Mappings
� DTD: normalized; element type definitions e → α
α ::= PCDATA | ε | e1, …, en | e1 + … + en | e*
� Relation variables: for each relation schema Ri, define a variable ∆Ri, which holds tuples to be inserted into Ri
� Attributes: $e associated with each element type e
$e: tuple-valued, to pass data value top-down
� Rules: associated with each e → α; conditional statements�for each e’ in α, define $e’ using the parent attribute $e�Increment relation variables: ∆Ri := ∆Ri U {tuple}
22
ICS-FORTH & Univ. of Crete Spring 2010
XML2DB Mapping: Attributes Example
� db → book*
$book := top:= top:= top:= top /* indicating the children of the root
db
book ...book book book
$book $book$book$book
db
title
book
author chapter ref
****
**** ********
**** ****
sectiontext
12
12
23
ICS-FORTH & Univ. of Crete Spring 2010
XML2DB Mapping: Semantic Actions Example
� book → title, author*, chapter*, ref*if text(title) contains “WMD” or ($book<>toptoptoptop and $book<>bot)then id:=gen_id( ); /* generate a new id */
∆book:=∆book U {(id,text(title))};/*increment book*/if $book <> top /* cited by another book */
then ∆ref:=∆ref U {($book,id)}; /*increment ref*/$ref := id; /* passing information downward */
� Problem statement: Minimum Cover of Propagated FDs
�Input: a set K of XML keys, and a mapping f from XML to S
�Output: a minimum cover F of all the functional dependencies (FDs) implied by the XML keys K via f
�F is a cover (a set of FDs): any FD implied by K via f is also implied by F
�F is minimum: F contains no redundant FDs, i.e., any FD in F is not entailed by other FDs in F
� Why not compute the complete set of FDs implied by K via f?
�Exponentially large!
� Why care about minimum cover?
�Normalize relational schema for storing/querying XML data!
Remark: again XML schema/DTD is not required – K is the only semantic specification
32
ICS-FORTH & Univ. of Crete Spring 2010
Research Issues
� What we know: for XML keys and a restricted transformation language
(from XML to relations), there exist efficient algorithms
�Constraint propagation: polynomial
�Minimum cover of propagated FDs: polynomial
� For general constraints/transformation languages: beyond reach
�Undecidable if the transformation language is relationally complete
(selection, projection, join, union, difference), even for XML keys
�Undecidable if both XML keys and foreign keys are considered,
even for the identity “transformation”
� Open: identify
�practical transformation languages
�practical XML constraints
that allow efficient constraint propagation
17
17
33
ICS-FORTH & Univ. of Crete Spring 2010
� Store XML as a BLOB in relational database�index by materializing indexed expressions in separate columns�Plus: store XML in parsed and validated form�Minus: proprietary solution (blob is a black box)�Minus: replicate data for indexing
� Model-driven Shredding (schema-agnostic or generic) (Florescu, Kossmann 99)�Edge, binary approach + alternatives �Corresponds to generic APIs for Java �Plus: very general; integrates well with relational data�Minus: poor performance
� Schema-based Shredding (or schema-specific) (Shanmugasundaram et al. 99)�Map XML Schema / DTD to SQL DDL�Plus: integrates well with relational data�Minus: missing tools, complicated
� SQL/XML (latest product developments after 2005)�Extend SQL with XML data type�Plus: integrates well with relational data�Minus: not clear how it integrates with application, odd „marriage“
XML-RDB Summary of Storage Approaches
34
ICS-FORTH & Univ. of Crete Spring 2010
XML Publishing
� An XML view definition language: specifying desired mapping
Analyze This Analyze This Analyze This Analyze This </MovieMovieMovieMovie><Movie mid=032 year=Movie mid=032 year=Movie mid=032 year=Movie mid=032 year=““““2001200120012001””””> > > >
See Spot Run See Spot Run See Spot Run See Spot Run </MovieMovieMovieMovie>
<LnameLnameLnameLname>WinterWinterWinterWinter</LnameLnameLnameLname><FnameFnameFnameFname>AlexAlexAlexAlex</FnameFnameFnameFname><Movie year=Movie year=Movie year=Movie year=““““1988198819881988””””> Bill and Ted> Bill and Ted> Bill and Ted> Bill and Ted’’’’ssssExcellent Adventure Excellent Adventure Excellent Adventure Excellent Adventure </MovieMovieMovieMovie>
36
ICS-FORTH & Univ. of Crete Spring 2010
Commercial Systems -- Canonical Publishing
� Canonical publishing: the universal-relation approach
�Embedding single SQL query in XSL stylesheet
�Result: canonical XML representation (1:1) of published relations
� Systems:
�Oracle 10g XML SQL facilities
�DB2
�SQL Server 2005
� Incapable of expressing practical XML publishing: default fixed XML
document template
�Map SQL Types to XML Schema Types
�Encode special characters: e.g., „<“ -> „<“
�Provide functions to construct XML Data
19
19
37
ICS-FORTH & Univ. of Crete Spring 2010
<Actor>
<Lname>Viterelli</Lname>
<Fname>Joe</Fname>
<Movie year=“1999”> Analyze This
</Movie>
<Movie year=“2001”> See Spot Run
</Movie>
</Actor>
<Actor>
<Lname>Winter</Lname>
<Fname>Alex</Fname>…
<SQL_stmt>
SELECT A.lname,A.fname, M.year, M.title
FROM Movie M, Actor A, Appearance Ap
WHERE M.mid=Ap.mid AND M.aid=A.Aid
ORDER BY aid
</SQL_stmt>
A.lname A.fname M.year M.title
Viterelli Joe 1999 See Spot Run
Viterelli Joe 2001 Analyze This
<element_node Actor>
<element_node Lname>
<text_node>
<Column name=“A.lname”/>
</text_node>
…
IBM DB2 SQL Statement giving
big relation
+ Formatting Template annotated withcolumns of the universal relation
�simple: no need for a new language – knowing DTD + SQL is all
that one needs for writing an ATG
� PRATA: middleware based on ATGs
�novel technique of combining partitioning and materialization
�a practical solution for DTD-directed publishing
ATG: the first systematic way for DTD-directed publishing
66
ICS-FORTH & Univ. of Crete Spring 2010
Extension: Capturing Integrity Constraints
� XML schema:
�Type (DTD)
�Integrity constraints: keys, foreign keys
� Schema-directed XML publishing: automatically guarantee that the
target document both conforms to the type and satisfies the constraints
-- in a single framework
Challenge: consistency analyses undecidable
DB
XML: ATG+DTD constraints
34
34
67
ICS-FORTH & Univ. of Crete Spring 2010
Schema-directed XML to XML transformations
� Mapping between XML documents
� XTG: XML Transformation Grammar
�DTD augmented with XQuery
�Constraint-compilation
XML XML
DTD
constraints
transformation
XTG
68
ICS-FORTH & Univ. of Crete Spring 2010
� Why publish XML data? What is the major difficulty?
� One can publish relational data via an XQuery view. How to do it?
What are the pros and cons of this approach?
� What is schema-directed publishing? Why do we need it?
� Why does ATG automatically ensure DTD-conformance?
Publishing Summary
35
35
69
ICS-FORTH & Univ. of Crete Spring 2010
Commercial Systems: MS SQL Server 2005
� CLOB (character large objects)
�Annotated schema (XSD): fixed tree templates�Non-recursive schema�associate elements and attributes with table and column names�core-dumping entire elements or documents�Given a relational database, XSD populates an XML elements/attributes with corresponding tuples/columns
� Data loading: �Combine INSERT and node( ), value( ) (OPENXML), XPath�OPENXML: access to XML data as a relational rowset�selective shredding, limited recursion, can’t store the entire document in a single pass
� Query support:
�SQL and SQL extensions for publishing results as XML (For-Xml clause)
�An extension of SQL with an FOR-XML construct
�Nested FOR-XML to construct XML documents
70
ICS-FORTH & Univ. of Crete Spring 2010
Commercial Systems: MS SQL Server 2005
� Summary:
�Support both entire-document and selective shredding
�Able to increment existing tables
�Nonrecursive schema
�Does not support context-dependent tuple construction: to
construct (A, B), one cannot extract attribute B based on the
extracted value of A (inf. passing)
�Does not support entire document shredding and selective
shredding in a uniform framework
�incapable of supporting schema-directed publishing
�can’t define recursive XML views (bounded recursion depth)
36
36
71
ICS-FORTH & Univ. of Crete Spring 2010
Microsoft SQL Server 2005
XML ParserXML ParserXMLXML
ValidationValidation
XML XML datatypedatatype
(binary XML)(binary XML)
SchemaSchema
CollectionCollection
XMLXML RelationalRelational
XML SchemataXML Schemata
OpenXMLOpenXML/nodes()/nodes()
FOR XML with FOR XML with
TYPE directiveTYPE directive
RowsetsRowsets
query()query()
modify()modify()Node Node
TableTable
PATH PATH
Index Index
PROP PROP
Index Index
VALUE VALUE
Index Index
PRIMARYPRIMARY
XML INDEXXML INDEX
query()query()
72
ICS-FORTH & Univ. of Crete Spring 2010
Microsoft SQL Server 2005: Indexing
� Create XML index on XML column
CREATE PRIMARY XML INDEX idx_1 ON docs (xDoc)
� Creates secondary indexes on tags, values, paths
� Speeds up queries
�Results can be served directly from index
�Entire query is optimized
�Same award winning cost based optimizer
�Indexes are used as available
� Create XML index on XML column
CREATE PRIMARY XML INDEX idx_1 ON docs (xDoc)
� Creates secondary indexes on tags, values, paths
� Speeds up queries
�Results can be served directly from index
�Entire query is optimized
�Same award winning cost based optimizer
�Indexes are used as available
37
37
73
ICS-FORTH & Univ. of Crete Spring 2010
Commercial System: IBM DB2 XML Extender
� XML Columns: CLOBs + side tables for indexing individual elements
� User-defined mapping through DAD (Document Access Definition): a fixed XML tree template (non-recursive)
�SQL mapping: template-based language to publish relational data as XML (to be discussed in the next lecture)
�RDB node mapping: for both publishing and storing XML (associating element and attributes with tables and columns)
� XML Collections: Declarative decomposition of XML into multiple tables
�Data loading: follows DAD mapping
� SQL/XML: an extension of SQL with XML constructors (XMLAGG, XMLELEMENT, etc) as discussed earlier
74
ICS-FORTH & Univ. of Crete Spring 2010
Commercial System: IBM DB2 XML Extender
� Summary:
�Support both entire-document and selective shredding
�Support recursive schema
�cannot increment existing tables (DB2)
�does not support context-dependent tuple construction
�incapable of supporting schema-directed publishing
�can’t define recursive XML views
38
38
75
ICS-FORTH & Univ. of Crete Spring 2010
IBM DB2 XQuery Support
Hybrid SQL/XQueryCompiler
XML Navigation
Query Evaluation Run-time
SQL/XML Parser XQuery Parser
Table Storage XML Indexes XML Storage
Native XML storage
High-performanceXPath processing
Unified internal
representation
XML node-level,text indexes
SQL extendedfor XML
Dynamic function dispatch
XML data typein SQL
XQuery top-levelparser
LanguagesCompose
76
ICS-FORTH & Univ. of Crete Spring 2010
Commercial System: Oracle 10g XML DB
� Store XML data in CLOB (character large objects) or tables
�Canonical mapping into object-relational tables
�tag names are mapped to column names
�elements with text-only map to scalar columns
�elements with sub-elements map to object types
�list of elements maps to collections
�Indexing: standard relational
�Core-dumping entire elements
�Annotated schema: recursive
� Publish relational data via DBMS_XMLGEN, a PL/SQL package
�Supports recursive XML view definition (via linear recursion of SQL’99)
� does not support schema-directed XML publishing
39
39
77
ICS-FORTH & Univ. of Crete Spring 2010
Commercial System: XQuery Support
� One of the first relational database to ship an XQuery implementation
�Supports XMLQuery and XMLTable construct
�Native compilation into SQL /XML structures
�Returns XMLType(Content)
�Can query over relational, O-R, XMLType data
�fn:doc - Maps to XDB Repository on server
�SQLPlus provides xquery command to execute XQuery
�XSL-T will also get compiled to XQuery
� Other query support:
�CLOBs: SQL + Oracle Text; XPath
�Canonical: SQL
78
ICS-FORTH & Univ. of Crete Spring 2010
Oracle Database 10gr2 XQuery Support
XQuery XSL-T Parser
Compiler Rewrite to SQLX
Normalization
XQuery Type checkSQLX rewrite
Execution engine
XQueryX
Compiled XQuery Tree
SQL MetadataXMLSchemaRepository
Statically Type checked Tree
Normalized Tree (casts, treat )
SQL/XML Operand Tree
Relational Optimizer
SQL Operand Tree
XML Indexes, Text Indexes
XQuery F&O
Execution Structures
SQL
XQUERY
40
40
79
ICS-FORTH & Univ. of Crete Spring 2010
Commercial Systems: Summary
� Data design:
�CLOBs
�Fixed canonical mappings
�Mappings in terms of annotated schema
� Querying:
�SQL as the main access method to XML documents “XML-aware”extensions to SQL
�E.g., Limited XPath navigation syntax ongoing Xquery support
� No support for
�context-dependent tuple construction
�recursive schema (Microsoft, IBM DB2)
�incrementing existing tables (Oracle)
�constraint propagation
80
ICS-FORTH & Univ. of Crete Spring 2010
Native Techniques
� Built from scratch
� NatiX (University of Mannheim, Germany)
� Xyleme (France)
� Xindice (Apache – open source)
� Re-tool existing systems to handle XML
� Tamino: hierarchical database (ADABAS)
� Excelon: OODB
� Design efficient data structures for compact storage and fast access; data partitioning; indexing on both values and structure
select *from XMLTable(‘for $i in doc(“xx”) return $i);
User
XMLDB
SQL + XQuery orXQueryX
XQuery aware SQL engine
Rewrite to SQLX
Normalization
XQuery Type check
SQL
Compiler
XMLQuery, XMLTable
SQL/XML Rel optimizer, Execution engine
Compiler
XQuery Parser
SQLX rewrite
Query Pushdown
Normalization
Type check
Compiler
Parser
XDS data sources, files
Push down
XQuery Java Engine
88
ICS-FORTH & Univ. of Crete Spring 2010
References
� Serge Abiteboul,Sophie Cluet,Tova Milo: Querying and Updating the File. VLDB 1993
� D. Barbosa,A. Barta,A. Mendelzon,G. Mihaila, F. Rizzolo, P. Rodriguez-Gianolli: ToX – The Toronto XML Engine, International Workshop on Information Integration on the Web, Rio de Janeiro, 2001.
� Phil Bohannon, Juliana Freire, Prasan Roy, Jérôme Siméon: From XML Schema to Relations: A cost-based Approach to XML Storage. ICDE 2002
� Michael J. Carey,Jerry Kiernan, Jayavel Shanmugasundaram, Eugene J. Shekita, Subbu N. Subramanian: XPERANTO: Middleware for Publishing Object-Relational Data as XML Documents.VLDB 2000
� Vassilis Christophides, Sophie Cluet, Jérôme Siméon: On Wrapping Query Languages and Efficient XML Integration. SIGMOD Conference 2000: 141-152
� Alin Deutsch, Mary F. Fernandez, Dan Suciu: Storing Semistructured Data with STORED. SIGMOD Conference 1999
� A. Eisenberg, J. Melton: Advancements in SQL /XML. ACM SIGMOD Record, 2004.
45
45
89
ICS-FORTH & Univ. of Crete Spring 2010
References
� Daniela Florescu, Donald Kossman: A Performance Evaluation of Alternative Mapping Schemes for Storing XML Data in a Relational Database. IEEE Data Eng. Bulletin 1999
� Minos N. Garofalakis, Aristides Gionis, Rajeev Rastogi, S. Seshadri, Kyuseok Shim: XTRACT: A System for Extracting Document Type Descriptors from XML Documents. SIGMOD Conference 2000
� Roy Goldman, Jennifer Widom: DataGuides: Enabling Query Formulation and Optimization in Semistructured Databases. VLDB 1997
� P.J. Marron, G. Lausen: On Processing XML in LDAP, VLDB 2001� Carl-Christian Kanne, Guido Moerkotte: Efficient Storage of XML Data.Technical Report 8/99, University of Mannheim, 1999
� Feng Tian, David J. DeWitt, Jianjun Chen, and Chun Zhang: The Design and Performance Evaluation of Various XML Storage Strategies, Technical report, University of Wisconsin
� Masatoshi Yoshikawa, Takeyuki Shimura, Shunsuke Uemura: XRel: A Path-Based Approach to Storage and Retrieval of XML Documents Using Relational Databases
� Chun Zhang, Jeffrey F. Naughton, David J. DeWitt, Qiong Luo, Guy M. Lohman: On Supporting Containment Queries in Relational Database Management Systems. SIGMOD 2001
� Justin Zobel, James A. Thom,Ron Sacks-Davis: Efficiency of Nested Relational Document Database Systems. VLDB 1991