Skip to content

Commit

Permalink
Update index.html
Browse files Browse the repository at this point in the history
  • Loading branch information
AbelCheng committed Jun 22, 2017
1 parent d6821ff commit 9116b1d
Showing 1 changed file with 23 additions and 11 deletions.
34 changes: 23 additions & 11 deletions docs/index.html
Original file line number Diff line number Diff line change
@@ -1,3 +1,13 @@
<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link href="https://download-codeplex.sec.s-msft.com/css/v21050/i2036743/StyleSheet.ashx" id="MasterCss" rel="stylesheet" type="text/css" />
<title>DataWashroom - Database Clean up Engine</title>
</head>
<body>
<h1 class="text_only"><a href="//github.com/AbelCheng/DataWashroom" target="_blank">DataWashroom - Database Clean up Engine</a></h1>
<hr/>
<div class="wikidoc">
<p><strong>Project Description</strong><br>
Without washrooms today, imagine what would human society be like? In the era of the proliferation of information, data is also need to be localized excreta, control defecation.<br>
Expand All @@ -8,7 +18,7 @@
<p><strong>Instruction Set</strong><br>
There are 7 build-in wash instructions shown as following:<br>
<br>
<img src="http://download-codeplex.sec.s-msft.com/Download?ProjectName=datawashroom&DownloadId=485698" alt="Instruction Set" width="701" height="291"></p>
<img src="Home_Istr_Sys.png" alt="Instruction Set" width="701" height="291"></p>
<ul>
<li>The basic manipulation instructions mainly perform data isolation from source systems;
</li><li>The relationship clean-up instructions perform the waste separation. </li></ul>
Expand All @@ -17,7 +27,7 @@
<ul>
<li>Face duplicate keys, none of them should be deleted physically. Instead, additional tags will be taken part in the discriminator to uniquely identify a business key. For example,<br>
<br>
<img src="http://download-codeplex.sec.s-msft.com/Download?ProjectName=datawashroom&DownloadId=486589" alt="Duplicate key discriminator" width="613" height="112">
<img src="Home_Discriminator.PNG" alt="Duplicate key discriminator" width="613" height="112">
</li></ul>
<p style="padding-left:30px">The duplicate key treatment is subdivided into two alternative methods:<br>
&nbsp;- <span style="text-decoration:underline">Check Unique Key </span>(<span style="color:#0000ff">CHK_UK</span>)<br>
Expand All @@ -28,11 +38,11 @@
<li>Face missing keys, all of supposed foreign keys should be made up in the primary table or bridge table if they were missing before, to avoid missing relationship. So that all subsequent users can consume the data straightforwardly and much more efficiently.
For example,<br>
<br>
<img src="http://download-codeplex.sec.s-msft.com/Download?ProjectName=datawashroom&DownloadId=490741" alt="Make up missing keys">
<img src="Home_Make-up_Keys.PNG" alt="Make up missing keys">
</li></ul>
<p><strong>Wash Cycle</strong><br>
All 7 wash-instructions inherit from the base WASH_ISTR. They are organized under the wash cycle in sequence.</p>
<p><img src="http://download-codeplex.sec.s-msft.com/Download?ProjectName=datawashroom&DownloadId=487105" alt="Washing Cycle Diagram" width="643" height="867"></p>
<p><img src="Home_WashingCycle.png" alt="Washing Cycle Diagram" width="643" height="867"></p>
<table border="0" cellspacing="0" cellpadding="3">
<tbody>
<tr>
Expand Down Expand Up @@ -435,7 +445,7 @@
</table>
<p style="padding-left:30px">In many instances, developer may need to use individual steps for trial/debug convenience. Following diagram shows internal procedures of the whole build and deployment management.<br>
<span style="color:#808080">(Labels in gray indicate the corresponding name of table, view, stored procedure or function)</span></p>
<p><img src="http://download-codeplex.sec.s-msft.com/Download?ProjectName=datawashroom&DownloadId=498670" alt="Build and Deploy"></p>
<p><img src="Home_Build-Deploy.png" alt="Build and Deploy"></p>
<table border="0" cellspacing="0" cellpadding="4" style="margin-left:40px; margin-right:0px">
<tbody>
<tr>
Expand Down Expand Up @@ -519,7 +529,7 @@
in your seat or was generated in washroom.</p>
<p><strong>Utilities by Product</strong></p>
<p>All database packages of this project are organized in the package dependency graph below.</p>
<p><img src="http://download-codeplex.sec.s-msft.com/Download?ProjectName=datawashroom&DownloadId=515630" alt="Packages Dependence" width="636" height="268"></p>
<p><img src="Home_PackagesDependence.PNG" alt="Packages Dependence" width="636" height="268"></p>
<p>The bottom 3 blue packages PROGRESS_TRACK, DEPLOY_UTILITY and CACHE_UTILITY were designed to be used independently.</p>
<ul>
<li>PROGRESS_TRACK<br>
Expand Down Expand Up @@ -600,15 +610,15 @@
<ul>
<li>CACHE_UTILITY </li></ul>
<p style="padding-left:40px">CACHE_CONTROL is the central control table which defines a unique identifier and expiration for each cache.<br>
<img src="http://download-codeplex.sec.s-msft.com/Download?ProjectName=datawashroom&DownloadId=522442" alt="Cache Periods" width="564" height="80"><br>
<img src="Home_CachePeriods.png" alt="Cache Periods" width="564" height="80"><br>
&nbsp;<br>
The CACHE_UTILITY package provides a global cache control similar to <a title="Reader-Writer Locks" href="http://msdn.microsoft.com/en-us/library/bz6sth95.aspx" target="_blank">
Reader-Writer Locks (refer to MSDN)</a>.<br>
Refresh Lock is different from write lock:<br>
- Only work in critical period while cache expiring, as shown above.<br>
- Only one refresher can obtain the token to exclusively access for refreshing, other blocked refreshers will not refresh again when they enter the lock, seen in the circuit diagram below.<br>
&nbsp;<br>
<img src="http://download-codeplex.sec.s-msft.com/Download?ProjectName=datawashroom&DownloadId=522443" alt="Read-Write Lock" width="445" height="514"></p>
<img src="Home_CacheLock.png" alt="Read-Write Lock" width="445" height="514"></p>
<ul>
<li><span style="color:#808080">CACHE_UTILITY.</span><span style="color:#ff0000">ENTER</span>_REFRESH_LOCK
</li><li><span style="color:#808080">CACHE_UTILITY.</span><span style="color:#ff0000">EXIT</span>_REFRESH_LOCK
Expand Down Expand Up @@ -648,7 +658,7 @@
<blockquote dir="ltr" style="margin-right:0px">
<p>Following diagram shown the internal implementation of cache lock mechanism.</p>
</blockquote>
<p style="padding-left:60px"><img src="http://download-codeplex.sec.s-msft.com/Download?ProjectName=datawashroom&DownloadId=518069" alt="Global Wash Cache" width="483" height="578"></p>
<p style="padding-left:60px"><img src="Home_WashLock.png" alt="Global Wash Cache" width="483" height="578"></p>
<p style="padding-left:30px">In practice, a corresponding schema would be allocated for a cache to organize its target tables. This would help consumers to be clear which cache is using. Also combined with naming convention (E.g. suffix of schema name, prefix
of table name), whatever a schema contains a single cache or multiple caches ... all roads lead to a clarity, and reduce unnecessary configurations.</p>
<span style="text-decoration:underline">Risks of dead lock</span>
Expand Down Expand Up @@ -775,7 +785,7 @@
- if the rest of safe period is not enough time to run related queries (estimation), then declines the human with message: &quot;My cache system is busy in refreshing at the moment, please try again later. Sorry for the inconvenience, my dear!&quot;;<br>
- else go ahead as you love at your own risk of data incompleteness in case your querying time runs too long (than estimated) to fall into crises... You should have a good sense of the result data is integral or not, so that you can retry later.<br>
The view VPI.VIEW_CACHE_SAFE_PERIOD can be used to determine the safety, column names show as upper case in the figure below:<br>
<img src="http://download-codeplex.sec.s-msft.com/Download?ProjectName=datawashroom&DownloadId=524983" alt="" width="572" height="200"><br>
<img src="Home_SafePeriod.png" width="572" height="200"><br>
&nbsp;<br>
In order to make this option feasible, a higher level system plan may consider to preassign some consumers as female applications/reports with lock(period), other clients as male applications/reports without lock(period), ensure the cache will not be extinct.<br>
&nbsp; </li></ul>
Expand All @@ -790,7 +800,7 @@
</li></ul>
<p><strong>Prevention</strong> over <strong>Treatment</strong></p>
<p style="padding-left:30px">Such note often seen in public washrooms:<br>
<img src="http://download-codeplex.sec.s-msft.com/Download?ProjectName=datawashroom&DownloadId=500848" alt="Hand Washing" width="339" height="136"><br>
<img src="Home_HandWashing.PNG" alt="Hand Washing" width="339" height="136"><br>
<span style="color:#808080">(See: the</span> Before <span style="color:#808080">and</span> After
<span style="color:#808080">Triggers)</span><br>
<br>
Expand Down Expand Up @@ -881,3 +891,5 @@
<li>Welcome all feedback through the CodePlex project (through comments, patches, or items in the Issue Tracker);
</li><li>Earnestly request adding implementation for other databases; </li></ul>
</div><div class="ClearBoth"></div>
</body>
</html>

0 comments on commit 9116b1d

Please sign in to comment.