summaryrefslogtreecommitdiffstats
path: root/site/trunk/site-publish/rdb-das-c-writeoperationordering.html
blob: d24b227a2859b6e3175a34fcad02a56929094f99 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<HTML>
    <HEAD>
        <LINK type="text/css" rel="stylesheet" href="http://incubator.apache.org/tuscany/stylesheets/default.css">
        <LINK rel="SHORTCUT ICON" href="http://cwiki.apache.org/confluence/pages/$images/favicon.ico">   
        <TITLE>RDB DAS C++ WriteOperationOrdering : Apache Tuscany</TITLE>
    <META http-equiv="Content-Type" content="text/html;charset=UTF-8"></HEAD>
    
    <BODY onload="init()">
        
            <TABLE valign="top" border="0" cellspacing="0" cellpadding="0" width="100%" background="http://incubator.apache.org/tuscany/images/TuscanyLogoNEW_Text_120px_bg.jpg">
        <TR>
            <TD valing="top" align="left">
			    <A href="http://cwiki.apache.org/confluence/pages/$siteroot"><IMG src="http://incubator.apache.org/tuscany/images/TuscanyLogoNEW_Text_120px_bg.jpg" height="91" width="25" border="0"></A>
			</TD>
			<TD>
                <A href="http://incubator.apache.org/tuscany/"><IMG src="http://incubator.apache.org/tuscany/images/TuscanyLogo.jpg" border="0"></A>
            </TD>
            
            <TD width="100%">
                &nbsp;
            </TD>
            <TD align="right">
                <IMG src="http://incubator.apache.org/tuscany/images/apache-incubator-logo.png" border="0">
            </TD>

            <!-- Adds the edit page link to the top banner-->
            <TD valign="bottom">
                <DIV style="padding: 2px 10px; margin: 0px;">
                    <A href="http://cwiki.apache.org/confluence/pages/editpage.action?pageId=69446">
                    <IMG src="http://incubator.apache.org/tuscany/images/notep_16.gif" height="16" width="16" border="0" align="absmiddle" title="Edit Page"></A>
                </DIV>
            </TD>

        </TR>
    </TABLE>

            <TABLE border="0" cellpadding="2" cellspacing="0" width="100%">
        <TR class="topBar">
            <TD align="left" valign="middle" class="topBarDiv" nowrap="true" width="100%">
                &nbsp;<A href="home.html" title="Apache Tuscany">Apache Tuscany</A>&nbsp;&gt;&nbsp;<A href="home.html" title="Home">Home</A>&nbsp;&gt;&nbsp;<A href="das-overview.html" title="DAS Overview">DAS Overview</A>&nbsp;&gt;&nbsp;<A href="das-c.html" title="DAS C++">DAS C++</A>&nbsp;&gt;&nbsp;<A href="das-c-documentation-menu.html" title="DAS C++ Documentation Menu">DAS C++ Documentation Menu</A>&nbsp;&gt;&nbsp;<A href="rdb-das-c-user-guide.html" title="RDB DAS C++ - User Guide">RDB DAS C++ - User Guide</A>&nbsp;&gt;&nbsp;<A href="" title="RDB DAS C++ WriteOperationOrdering">RDB DAS C++ WriteOperationOrdering</A>
            </TD>
            
            <TD align="left" valign="middle" class="topBarDiv" nowrap="true">
            <A href="http://mail-archives.apache.org/mod_mbox/ws-tuscany-user">User List</A> | <A href="http://mail-archives.apache.org/mod_mbox/ws-tuscany-dev">Dev List</A> | <A href="http://issues.apache.org/jira/browse/Tuscany">Issue Tracker</A>&nbsp;&nbsp;
            </TD>
        </TR>
    </TABLE>

        <TABLE border="0" cellpadding="0" width="100%" bgcolor="#FFFFFF">
            <TR>
                <TD align="left" valign="top">
                        <DIV id="PageContent">
                
        <DIV class="pagecontent">
            <DIV class="wiki-content">
                <H1><A name="RDBDASC%2B%2BWriteOperationOrdering-%26nbsp%3BWriteOperationOrdering"></A>&nbsp;WriteOperationOrdering</H1>

<P>Relational databases often use <SPAN class="nobr"><A href="http://en.wikipedia.org/wiki/Referential_integrity" title="Visit page outside Confluence" rel="nofollow">Referential Integrity (RI)<SUP><IMG class="rendericon" src="http://cwiki.apache.org/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"></SUP></A></SPAN>constraints to maintain database consistency. When RI is enabled, database operations must be performed in a specific order that prevents invalid references. If this order is not adhered to then the database will throw an exception rather than let the write succeed.</P>

<P>When an application makes modifications to a data graph and then asks the RDB DAS to &quot;apply changes&quot;, the DAS will create a &quot;batch&quot; of database writes that must be sorted and then executed in the correct order to avoid RI Constraint exceptions. A simple example will help here. Assume a database with two tables CUSTOMER and ORDER. Also assume that the ORDER table has a <SPAN class="nobr"><A href="http://en.wikipedia.org/wiki/Foreign_key" title="Visit page outside Confluence" rel="nofollow">foreign key<SUP><IMG class="rendericon" src="http://cwiki.apache.org/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"></SUP></A></SPAN>reference to the CUSTOMER table. Now assume that the application has made modifications to a data graph that was retrieved by the DAS using a SELECT statement like the following:</P>
<DIV class="preformatted"><DIV class="preformattedContent">
<PRE>SELECT * FROM CUSTOMER LEFT JOIN ORDER ON CUSTOMER.ID = ORDER.CUSTOMER_ID WHERE CUSTOMER.NAME = 'Tuscany'
</PRE>
</DIV></DIV>
<P>The resulting data graph will contain all matching customers as well as their related orders. Now assume the application uses the SDO API's to delete some customer from the graph and then also deletes the related orders. Although the application deleted the customer first, the DAS must delete the orders first from the database since deleting the customer, with existing referencing orders, would violate the RI constraints and result in an exception. </P>
            </DIV>
        </DIV>
    </DIV>
                </TD>
            </TR>
        </TABLE>

                <SCRIPT src="http://www.google-analytics.com/urchin.js" type="text/javascript">
    </SCRIPT>
    <SCRIPT type="text/javascript">
       _uacct = "UA-1174707-5";
       urchinTracker();
    </SCRIPT>
    
        <A href="http://www.statcounter.com/" target="_blank"><IMG src="http://c26.statcounter.com/counter.php?sc_project=2619156&java=0&security=94bd7e7d&invisible=0" alt="website stats" border="0"></A>    

    <DIV class="footer">
        Copyright &copy; 2003-2007, The Apache Software Foundation&nbsp;&nbsp;
    </DIV>

    </BODY>
</HTML>