Author: mduerig
Date: Mon Jan 30 17:22:48 2017
New Revision: 1780950
URL: http://svn.apache.org/viewvc?rev=1780950&view=rev
Log:
OAK-5547: Document TarMK design
Add page with a high level design overview and class diagram of the TarMK
Added:
jackrabbit/oak/trunk/oak-doc/src/site/markdown/nodestore/segment/tarmk-classes.md
jackrabbit/oak/trunk/oak-doc/src/site/markdown/nodestore/segment/tarmk-classes.png
jackrabbit/oak/trunk/oak-doc/src/site/markdown/nodestore/segment/tarmk-classes.svg
jackrabbit/oak/trunk/oak-doc/src/site/markdown/nodestore/segment/tarmk-classes.uml
Modified:
jackrabbit/oak/trunk/oak-doc/src/site/markdown/nodestore/segment/overview.md
Modified:
jackrabbit/oak/trunk/oak-doc/src/site/markdown/nodestore/segment/overview.md
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-doc/src/site/markdown/nodestore/segment/overview.md?rev=1780950&r1=1780949&r2=1780950&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-doc/src/site/markdown/nodestore/segment/overview.md
(original)
+++
jackrabbit/oak/trunk/oak-doc/src/site/markdown/nodestore/segment/overview.md
Mon Jan 30 17:22:48 2017
@@ -641,7 +641,9 @@ Unsurprisingly, segments inspired the na
Repository data is serialized to one or more records, and these records are
saved into the segments.
You can learn about the internal organization of segments and the different
ways to serialize records by reading [this page](records.html).
-This website also contains an overview of the legacy implementation of the
Segment Store and of the design decisions that brought to this implementation.
+See [this page](tarmk-classes.html) for a high level design overview of the
TarMK.
+
+This page contains an overview of the legacy implementation of the Segment
Store and of the design decisions that brought to this implementation.
The page is old and describes a deprecated implementation, but can still be
accessed [here](../segmentmk.html).
### <a name="format-changes"/> Format changes
Added:
jackrabbit/oak/trunk/oak-doc/src/site/markdown/nodestore/segment/tarmk-classes.md
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-doc/src/site/markdown/nodestore/segment/tarmk-classes.md?rev=1780950&view=auto
==============================================================================
---
jackrabbit/oak/trunk/oak-doc/src/site/markdown/nodestore/segment/tarmk-classes.md
(added)
+++
jackrabbit/oak/trunk/oak-doc/src/site/markdown/nodestore/segment/tarmk-classes.md
Mon Jan 30 17:22:48 2017
@@ -0,0 +1,29 @@
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+# Design of the TarMK
+
+This section gives a high level overview of the TarMK design, its most
important classes, their purpose and relationship. More in depth information is
available from the Javadoc of the individual classes.
+
+## Overview
+
+
+
+The `SegmentNodeStore` is the TarMK's implementation of the [NodeStore
API](../overview.html). It uses a `Revisions` instance for accessing and
setting the current head state, a `SegmentReader` for reading records from
segments, a `SegmentWriter` for writing records to segments and a `BlobStore`
for reading and writing binaries.
+
+The `SegmentStore` serves as a persistence backend for the `SegmentNodeStore`.
It is responsible for providing concrete implementations of `Revisions`,
`SegmentReader` and `BlobStore` to the former.
+
+The `FileStore` is the implementation the `SegmentStore` that persists
segments in tar files. The `MemoryStore` (not shown above) is an alternative
implementation, which stores the segments in memory only. It is used for
testing.
\ No newline at end of file
Added:
jackrabbit/oak/trunk/oak-doc/src/site/markdown/nodestore/segment/tarmk-classes.png
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-doc/src/site/markdown/nodestore/segment/tarmk-classes.png?rev=1780950&view=auto
==============================================================================
Binary files
jackrabbit/oak/trunk/oak-doc/src/site/markdown/nodestore/segment/tarmk-classes.png
(added) and
jackrabbit/oak/trunk/oak-doc/src/site/markdown/nodestore/segment/tarmk-classes.png
Mon Jan 30 17:22:48 2017 differ
Added:
jackrabbit/oak/trunk/oak-doc/src/site/markdown/nodestore/segment/tarmk-classes.svg
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-doc/src/site/markdown/nodestore/segment/tarmk-classes.svg?rev=1780950&view=auto
==============================================================================
---
jackrabbit/oak/trunk/oak-doc/src/site/markdown/nodestore/segment/tarmk-classes.svg
(added)
+++
jackrabbit/oak/trunk/oak-doc/src/site/markdown/nodestore/segment/tarmk-classes.svg
Mon Jan 30 17:22:48 2017
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+ ~ Licensed to the Apache Software Foundation (ASF) under one or more
+ ~ contributor license agreements. See the NOTICE file distributed with
+ ~ this work for additional information regarding copyright ownership.
+ ~ The ASF licenses this file to You under the Apache License, Version 2.0
+ ~ (the "License"); you may not use this file except in compliance with
+ ~ the License. You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ ~
+ -->
+<svg xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
contentScriptType="application/ecmascript" contentStyleType="text/css"
height="419px" preserveAspectRatio="none" style="width:820px;height:419px;"
version="1.1" viewBox="0 0 820 419" width="820px"
zoomAndPan="magnify"><defs><filter height="300%" id="f95nz2e" width="300%"
x="-1" y="-1"><feGaussianBlur result="blurOut"
stdDeviation="2.0"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix"
values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.0" dy="4.0"
in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3"
mode="normal"/></filter></defs><g><!--cluster ##73290--><!--cluster
##73300--><!--class NodeStore--><rect fill="#FEFECE" filter="url(#f95nz2e)"
height="48" style="stroke: #A80036; stroke-width: 1.5;" width="99" x="66"
y="72"/><ellipse cx="81" cy="88" fill="#B4A7E5" rx="11" ry="11" style="stroke:
#A80036; stroke-width: 1.0;"/><path d="M81.9531,84.7813 L81.953
1,91.2969 L83.6719,91.2969 C84.125,91.2969 84.2656,91.3281 84.4375,91.4531
C84.6719,91.625 84.7813,91.875 84.7813,92.1563 C84.7813,92.7188 84.4219,93
83.6719,93 L78.5313,93 C78.125,93 77.9219,92.9531 77.7656,92.8281
C77.5469,92.6719 77.4063,92.4063 77.4063,92.1563 C77.4063,91.8594
77.5625,91.5781 77.8125,91.4219 C77.9688,91.3125 78.0938,91.2969
78.5313,91.2969 L80.25,91.2969 L80.25,84.7813 L78.5313,84.7813 C78.1094,84.7813
77.9219,84.75 77.7656,84.6406 C77.5469,84.4688 77.4063,84.2188 77.4063,83.9375
C77.4063,83.6563 77.5625,83.3594 77.8125,83.2031 C77.9688,83.1094
78.0938,83.0938 78.5313,83.0938 L83.6719,83.0938 C84.125,83.0938 84.2656,83.125
84.4375,83.2344 C84.6719,83.4063 84.7813,83.6719 84.7813,83.9375
C84.7813,84.2344 84.6406,84.5156 84.375,84.6719 C84.25,84.75 84.0625,84.7813
83.6719,84.7813 Z "/><text fill="#000000" font-family="sans-serif"
font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs"
textLength="67" x="95" y="92.1543">NodeStore</text><line style="strok
e: #A80036; stroke-width: 1.5;" x1="67" x2="164" y1="104" y2="104"/><line
style="stroke: #A80036; stroke-width: 1.5;" x1="67" x2="164" y1="112"
y2="112"/><!--class SegmentNodeStore--><rect fill="#FEFECE"
filter="url(#f95nz2e)" height="48" style="stroke: #A80036; stroke-width: 1.5;"
width="155" x="38" y="155"/><ellipse cx="53" cy="171" fill="#ADD1B2" rx="11"
ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M55.3438,166.6719
L55.5156,166.75 C55.7344,166.4375 55.9375,166.3438 56.2344,166.3438
C56.5313,166.3438 56.8125,166.4844 56.9688,166.75 C57.0625,166.9063
57.0781,167.0313 57.0781,167.4688 L57.0781,168.8906 C57.0781,169.3125
57.0469,169.5 56.9375,169.6563 C56.7656,169.875 56.5,170.0156 56.2344,170.0156
C56.0156,170.0156 55.7813,169.9063 55.6406,169.7656 C55.5,169.6406
55.4688,169.5156 55.4063,169.1094 C55.3125,168.7031 55.1406,168.4844
54.6563,168.2031 C54.1875,167.9531 53.5781,167.7969 53,167.7969
C51.2656,167.7969 50.0156,169.1094 50.0156,170.8906 L50.0156,171.9844 C5
0.0156,173.6875 51.3125,174.7813 53.3594,174.7813 C54.125,174.7813
54.8125,174.6563 55.2344,174.3906 C55.4219,174.2969 55.4219,174.2969
55.875,173.8125 C56.0625,173.625 56.2656,173.5469 56.4844,173.5469
C56.9531,173.5469 57.3438,173.9375 57.3438,174.3906 C57.3438,174.7813
57.0156,175.2344 56.4375,175.6406 C55.6875,176.1875 54.5313,176.4844
53.3125,176.4844 C50.4219,176.4844 48.3125,174.5938 48.3125,172.0156
L48.3125,170.8906 C48.3125,168.1719 50.3125,166.0938 52.9375,166.0938
C53.8125,166.0938 54.4063,166.2344 55.3438,166.6719 Z "/><text fill="#000000"
font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs"
textLength="123" x="67" y="175.1543">SegmentNodeStore</text><line
style="stroke: #A80036; stroke-width: 1.5;" x1="39" x2="192" y1="187"
y2="187"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="39" x2="192"
y1="195" y2="195"/><!--class SegmentStore--><rect fill="#FEFECE"
filter="url(#f95nz2e)" height="48" style="stroke: #A80036; stroke-width: 1.5;"
width="12
2" x="689" y="61"/><ellipse cx="704" cy="77" fill="#B4A7E5" rx="11" ry="11"
style="stroke: #A80036; stroke-width: 1.0;"/><path d="M704.9531,73.7813
L704.9531,80.2969 L706.6719,80.2969 C707.125,80.2969 707.2656,80.3281
707.4375,80.4531 C707.6719,80.625 707.7813,80.875 707.7813,81.1563
C707.7813,81.7188 707.4219,82 706.6719,82 L701.5313,82 C701.125,82
700.9219,81.9531 700.7656,81.8281 C700.5469,81.6719 700.4063,81.4063
700.4063,81.1563 C700.4063,80.8594 700.5625,80.5781 700.8125,80.4219
C700.9688,80.3125 701.0938,80.2969 701.5313,80.2969 L703.25,80.2969
L703.25,73.7813 L701.5313,73.7813 C701.1094,73.7813 700.9219,73.75
700.7656,73.6406 C700.5469,73.4688 700.4063,73.2188 700.4063,72.9375
C700.4063,72.6563 700.5625,72.3594 700.8125,72.2031 C700.9688,72.1094
701.0938,72.0938 701.5313,72.0938 L706.6719,72.0938 C707.125,72.0938
707.2656,72.125 707.4375,72.2344 C707.6719,72.4063 707.7813,72.6719
707.7813,72.9375 C707.7813,73.2344 707.6406,73.5156 707.375,73.6719
C707.25,73.75 707.0625,73.78
13 706.6719,73.7813 Z "/><text fill="#000000" font-family="sans-serif"
font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs"
textLength="90" x="718" y="81.1543">SegmentStore</text><line style="stroke:
#A80036; stroke-width: 1.5;" x1="690" x2="810" y1="93" y2="93"/><line
style="stroke: #A80036; stroke-width: 1.5;" x1="690" x2="810" y1="101"
y2="101"/><!--class FileStore--><rect fill="#FEFECE" filter="url(#f95nz2e)"
height="48" style="stroke: #A80036; stroke-width: 1.5;" width="87" x="706.5"
y="144"/><ellipse cx="721.5" cy="160" fill="#ADD1B2" rx="11" ry="11"
style="stroke: #A80036; stroke-width: 1.0;"/><path d="M723.8438,155.6719
L724.0156,155.75 C724.2344,155.4375 724.4375,155.3438 724.7344,155.3438
C725.0313,155.3438 725.3125,155.4844 725.4688,155.75 C725.5625,155.9063
725.5781,156.0313 725.5781,156.4688 L725.5781,157.8906 C725.5781,158.3125
725.5469,158.5 725.4375,158.6563 C725.2656,158.875 725,159.0156
724.7344,159.0156 C724.5156,159.0156 724.2813,158.9063 724.1406,1
58.7656 C724,158.6406 723.9688,158.5156 723.9063,158.1094 C723.8125,157.7031
723.6406,157.4844 723.1563,157.2031 C722.6875,156.9531 722.0781,156.7969
721.5,156.7969 C719.7656,156.7969 718.5156,158.1094 718.5156,159.8906
L718.5156,160.9844 C718.5156,162.6875 719.8125,163.7813 721.8594,163.7813
C722.625,163.7813 723.3125,163.6563 723.7344,163.3906 C723.9219,163.2969
723.9219,163.2969 724.375,162.8125 C724.5625,162.625 724.7656,162.5469
724.9844,162.5469 C725.4531,162.5469 725.8438,162.9375 725.8438,163.3906
C725.8438,163.7813 725.5156,164.2344 724.9375,164.6406 C724.1875,165.1875
723.0313,165.4844 721.8125,165.4844 C718.9219,165.4844 716.8125,163.5938
716.8125,161.0156 L716.8125,159.8906 C716.8125,157.1719 718.8125,155.0938
721.4375,155.0938 C722.3125,155.0938 722.9063,155.2344 723.8438,155.6719 Z
"/><text fill="#000000" font-family="sans-serif" font-size="12"
lengthAdjust="spacingAndGlyphs" textLength="55" x="735.5"
y="164.1543">FileStore</text><line style="stroke: #A80036; stroke-wi
dth: 1.5;" x1="707.5" x2="792.5" y1="176" y2="176"/><line style="stroke:
#A80036; stroke-width: 1.5;" x1="707.5" x2="792.5" y1="184" y2="184"/><!--class
Revisions--><rect fill="#FEFECE" filter="url(#f95nz2e)" height="48"
style="stroke: #A80036; stroke-width: 1.5;" width="88" x="275.5"
y="113"/><ellipse cx="290.5" cy="129" fill="#B4A7E5" rx="11" ry="11"
style="stroke: #A80036; stroke-width: 1.0;"/><path d="M291.4531,125.7813
L291.4531,132.2969 L293.1719,132.2969 C293.625,132.2969 293.7656,132.3281
293.9375,132.4531 C294.1719,132.625 294.2813,132.875 294.2813,133.1563
C294.2813,133.7188 293.9219,134 293.1719,134 L288.0313,134 C287.625,134
287.4219,133.9531 287.2656,133.8281 C287.0469,133.6719 286.9063,133.4063
286.9063,133.1563 C286.9063,132.8594 287.0625,132.5781 287.3125,132.4219
C287.4688,132.3125 287.5938,132.2969 288.0313,132.2969 L289.75,132.2969
L289.75,125.7813 L288.0313,125.7813 C287.6094,125.7813 287.4219,125.75
287.2656,125.6406 C287.0469,125.4688 286.9063,125.2188 286.9063
,124.9375 C286.9063,124.6563 287.0625,124.3594 287.3125,124.2031
C287.4688,124.1094 287.5938,124.0938 288.0313,124.0938 L293.1719,124.0938
C293.625,124.0938 293.7656,124.125 293.9375,124.2344 C294.1719,124.4063
294.2813,124.6719 294.2813,124.9375 C294.2813,125.2344 294.1406,125.5156
293.875,125.6719 C293.75,125.75 293.5625,125.7813 293.1719,125.7813 Z "/><text
fill="#000000" font-family="sans-serif" font-size="12" font-style="italic"
lengthAdjust="spacingAndGlyphs" textLength="56" x="304.5"
y="133.1543">Revisions</text><line style="stroke: #A80036; stroke-width: 1.5;"
x1="276.5" x2="362.5" y1="145" y2="145"/><line style="stroke: #A80036;
stroke-width: 1.5;" x1="276.5" x2="362.5" y1="153" y2="153"/><!--class
TarRevisions--><rect fill="#FEFECE" filter="url(#f95nz2e)" height="48"
style="stroke: #A80036; stroke-width: 1.5;" width="110" x="482.5"
y="113"/><ellipse cx="497.5" cy="129" fill="#ADD1B2" rx="11" ry="11"
style="stroke: #A80036; stroke-width: 1.0;"/><path d="M499.8438,124.6719 L
500.0156,124.75 C500.2344,124.4375 500.4375,124.3438 500.7344,124.3438
C501.0313,124.3438 501.3125,124.4844 501.4688,124.75 C501.5625,124.9063
501.5781,125.0313 501.5781,125.4688 L501.5781,126.8906 C501.5781,127.3125
501.5469,127.5 501.4375,127.6563 C501.2656,127.875 501,128.0156
500.7344,128.0156 C500.5156,128.0156 500.2813,127.9063 500.1406,127.7656
C500,127.6406 499.9688,127.5156 499.9063,127.1094 C499.8125,126.7031
499.6406,126.4844 499.1563,126.2031 C498.6875,125.9531 498.0781,125.7969
497.5,125.7969 C495.7656,125.7969 494.5156,127.1094 494.5156,128.8906
L494.5156,129.9844 C494.5156,131.6875 495.8125,132.7813 497.8594,132.7813
C498.625,132.7813 499.3125,132.6563 499.7344,132.3906 C499.9219,132.2969
499.9219,132.2969 500.375,131.8125 C500.5625,131.625 500.7656,131.5469
500.9844,131.5469 C501.4531,131.5469 501.8438,131.9375 501.8438,132.3906
C501.8438,132.7813 501.5156,133.2344 500.9375,133.6406 C500.1875,134.1875
499.0313,134.4844 497.8125,134.4844 C494.9219,134.4844 492.8125,13
2.5938 492.8125,130.0156 L492.8125,128.8906 C492.8125,126.1719
494.8125,124.0938 497.4375,124.0938 C498.3125,124.0938 498.9063,124.2344
499.8438,124.6719 Z "/><text fill="#000000" font-family="sans-serif"
font-size="12" lengthAdjust="spacingAndGlyphs" textLength="78" x="511.5"
y="133.1543">TarRevisions</text><line style="stroke: #A80036; stroke-width:
1.5;" x1="483.5" x2="591.5" y1="145" y2="145"/><line style="stroke: #A80036;
stroke-width: 1.5;" x1="483.5" x2="591.5" y1="153" y2="153"/><!--class
SegmentReader--><rect fill="#FEFECE" filter="url(#f95nz2e)" height="48"
style="stroke: #A80036; stroke-width: 1.5;" width="133" x="253"
y="196"/><ellipse cx="268" cy="212" fill="#B4A7E5" rx="11" ry="11"
style="stroke: #A80036; stroke-width: 1.0;"/><path d="M268.9531,208.7813
L268.9531,215.2969 L270.6719,215.2969 C271.125,215.2969 271.2656,215.3281
271.4375,215.4531 C271.6719,215.625 271.7813,215.875 271.7813,216.1563
C271.7813,216.7188 271.4219,217 270.6719,217 L265.5313,217 C265.125,217 26
4.9219,216.9531 264.7656,216.8281 C264.5469,216.6719 264.4063,216.4063
264.4063,216.1563 C264.4063,215.8594 264.5625,215.5781 264.8125,215.4219
C264.9688,215.3125 265.0938,215.2969 265.5313,215.2969 L267.25,215.2969
L267.25,208.7813 L265.5313,208.7813 C265.1094,208.7813 264.9219,208.75
264.7656,208.6406 C264.5469,208.4688 264.4063,208.2188 264.4063,207.9375
C264.4063,207.6563 264.5625,207.3594 264.8125,207.2031 C264.9688,207.1094
265.0938,207.0938 265.5313,207.0938 L270.6719,207.0938 C271.125,207.0938
271.2656,207.125 271.4375,207.2344 C271.6719,207.4063 271.7813,207.6719
271.7813,207.9375 C271.7813,208.2344 271.6406,208.5156 271.375,208.6719
C271.25,208.75 271.0625,208.7813 270.6719,208.7813 Z "/><text fill="#000000"
font-family="sans-serif" font-size="12" font-style="italic"
lengthAdjust="spacingAndGlyphs" textLength="101" x="282"
y="216.1543">SegmentReader</text><line style="stroke: #A80036; stroke-width:
1.5;" x1="254" x2="385" y1="228" y2="228"/><line style="stroke: #A80036; st
roke-width: 1.5;" x1="254" x2="385" y1="236" y2="236"/><!--class
CachingSegmentReader--><rect fill="#FEFECE" filter="url(#f95nz2e)" height="48"
style="stroke: #A80036; stroke-width: 1.5;" width="183" x="446"
y="196"/><ellipse cx="461" cy="212" fill="#ADD1B2" rx="11" ry="11"
style="stroke: #A80036; stroke-width: 1.0;"/><path d="M463.3438,207.6719
L463.5156,207.75 C463.7344,207.4375 463.9375,207.3438 464.2344,207.3438
C464.5313,207.3438 464.8125,207.4844 464.9688,207.75 C465.0625,207.9063
465.0781,208.0313 465.0781,208.4688 L465.0781,209.8906 C465.0781,210.3125
465.0469,210.5 464.9375,210.6563 C464.7656,210.875 464.5,211.0156
464.2344,211.0156 C464.0156,211.0156 463.7813,210.9063 463.6406,210.7656
C463.5,210.6406 463.4688,210.5156 463.4063,210.1094 C463.3125,209.7031
463.1406,209.4844 462.6563,209.2031 C462.1875,208.9531 461.5781,208.7969
461,208.7969 C459.2656,208.7969 458.0156,210.1094 458.0156,211.8906
L458.0156,212.9844 C458.0156,214.6875 459.3125,215.7813 461.3594,215.7813 C462.1
25,215.7813 462.8125,215.6563 463.2344,215.3906 C463.4219,215.2969
463.4219,215.2969 463.875,214.8125 C464.0625,214.625 464.2656,214.5469
464.4844,214.5469 C464.9531,214.5469 465.3438,214.9375 465.3438,215.3906
C465.3438,215.7813 465.0156,216.2344 464.4375,216.6406 C463.6875,217.1875
462.5313,217.4844 461.3125,217.4844 C458.4219,217.4844 456.3125,215.5938
456.3125,213.0156 L456.3125,211.8906 C456.3125,209.1719 458.3125,207.0938
460.9375,207.0938 C461.8125,207.0938 462.4063,207.2344 463.3438,207.6719 Z
"/><text fill="#000000" font-family="sans-serif" font-size="12"
lengthAdjust="spacingAndGlyphs" textLength="151" x="475"
y="216.1543">CachingSegmentReader</text><line style="stroke: #A80036;
stroke-width: 1.5;" x1="447" x2="628" y1="228" y2="228"/><line style="stroke:
#A80036; stroke-width: 1.5;" x1="447" x2="628" y1="236" y2="236"/><!--class
SegmentWriter--><rect fill="#FEFECE" filter="url(#f95nz2e)" height="48"
style="stroke: #A80036; stroke-width: 1.5;" width="125" x="257" y="279"/>
<ellipse cx="272" cy="295" fill="#ADD1B2" rx="11" ry="11" style="stroke:
#A80036; stroke-width: 1.0;"/><path d="M274.3438,290.6719 L274.5156,290.75
C274.7344,290.4375 274.9375,290.3438 275.2344,290.3438 C275.5313,290.3438
275.8125,290.4844 275.9688,290.75 C276.0625,290.9063 276.0781,291.0313
276.0781,291.4688 L276.0781,292.8906 C276.0781,293.3125 276.0469,293.5
275.9375,293.6563 C275.7656,293.875 275.5,294.0156 275.2344,294.0156
C275.0156,294.0156 274.7813,293.9063 274.6406,293.7656 C274.5,293.6406
274.4688,293.5156 274.4063,293.1094 C274.3125,292.7031 274.1406,292.4844
273.6563,292.2031 C273.1875,291.9531 272.5781,291.7969 272,291.7969
C270.2656,291.7969 269.0156,293.1094 269.0156,294.8906 L269.0156,295.9844
C269.0156,297.6875 270.3125,298.7813 272.3594,298.7813 C273.125,298.7813
273.8125,298.6563 274.2344,298.3906 C274.4219,298.2969 274.4219,298.2969
274.875,297.8125 C275.0625,297.625 275.2656,297.5469 275.4844,297.5469
C275.9531,297.5469 276.3438,297.9375 276.3438,298.3906 C276.3
438,298.7813 276.0156,299.2344 275.4375,299.6406 C274.6875,300.1875
273.5313,300.4844 272.3125,300.4844 C269.4219,300.4844 267.3125,298.5938
267.3125,296.0156 L267.3125,294.8906 C267.3125,292.1719 269.3125,290.0938
271.9375,290.0938 C272.8125,290.0938 273.4063,290.2344 274.3438,290.6719 Z
"/><text fill="#000000" font-family="sans-serif" font-size="12"
lengthAdjust="spacingAndGlyphs" textLength="93" x="286"
y="299.1543">SegmentWriter</text><line style="stroke: #A80036; stroke-width:
1.5;" x1="258" x2="381" y1="311" y2="311"/><line style="stroke: #A80036;
stroke-width: 1.5;" x1="258" x2="381" y1="319" y2="319"/><!--class
BlobStore--><rect fill="#FEFECE" filter="url(#f95nz2e)" height="48"
style="stroke: #A80036; stroke-width: 1.5;" width="93" x="273"
y="362"/><ellipse cx="288" cy="378" fill="#B4A7E5" rx="11" ry="11"
style="stroke: #A80036; stroke-width: 1.0;"/><path d="M288.9531,374.7813
L288.9531,381.2969 L290.6719,381.2969 C291.125,381.2969 291.2656,381.3281
291.4375,381.4531 C291.67
19,381.625 291.7813,381.875 291.7813,382.1563 C291.7813,382.7188 291.4219,383
290.6719,383 L285.5313,383 C285.125,383 284.9219,382.9531 284.7656,382.8281
C284.5469,382.6719 284.4063,382.4063 284.4063,382.1563 C284.4063,381.8594
284.5625,381.5781 284.8125,381.4219 C284.9688,381.3125 285.0938,381.2969
285.5313,381.2969 L287.25,381.2969 L287.25,374.7813 L285.5313,374.7813
C285.1094,374.7813 284.9219,374.75 284.7656,374.6406 C284.5469,374.4688
284.4063,374.2188 284.4063,373.9375 C284.4063,373.6563 284.5625,373.3594
284.8125,373.2031 C284.9688,373.1094 285.0938,373.0938 285.5313,373.0938
L290.6719,373.0938 C291.125,373.0938 291.2656,373.125 291.4375,373.2344
C291.6719,373.4063 291.7813,373.6719 291.7813,373.9375 C291.7813,374.2344
291.6406,374.5156 291.375,374.6719 C291.25,374.75 291.0625,374.7813
290.6719,374.7813 Z "/><text fill="#000000" font-family="sans-serif"
font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs"
textLength="61" x="302" y="382.1543">BlobStore</text><lin
e style="stroke: #A80036; stroke-width: 1.5;" x1="274" x2="365" y1="394"
y2="394"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="274" x2="365"
y1="402" y2="402"/><path d="M115.5,154.684 C115.5,149.938 115.5,145.192
115.5,140.446 " fill="none" style="stroke: #A80036; stroke-width:
1.0;"/><polygon fill="none"
points="108.5,140.299,115.5,120.299,122.5,140.299,108.5,140.299" style="stroke:
#A80036; stroke-width: 1.0;"/><path d="M750,143.684 C750,138.938 750,134.192
750,129.446 " fill="none" style="stroke: #A80036; stroke-width: 1.0;"/><polygon
fill="none" points="743,129.299,750,109.299,757,129.299,743,129.299"
style="stroke: #A80036; stroke-width: 1.0;"/><path d="M193.156,163.062
C218.992,157.69 247.089,151.848 270.121,147.059 " fill="none" style="stroke:
#A80036; stroke-width: 1.0;"/><polygon fill="#A80036"
points="275.256,145.991,265.6304,143.906,270.3606,147.0084,267.2582,151.7386,275.256,145.991"
style="stroke: #A80036; stroke-width: 1.0;"/><path d="M193.156,194.559 C211.11
1,198.203 230.158,202.069 247.837,205.658 " fill="none" style="stroke:
#A80036; stroke-width: 1.0;"/><polygon fill="#A80036"
points="252.786,206.662,244.7628,200.9499,247.8861,205.6663,243.1697,208.7897,252.786,206.662"
style="stroke: #A80036; stroke-width: 1.0;"/><path d="M155.927,203.203
C189.991,224.113 239.164,254.299 274.499,275.99 " fill="none" style="stroke:
#A80036; stroke-width: 1.0;"/><polygon fill="#A80036"
points="279.172,278.858,273.5942,270.7409,274.9107,276.2424,269.4092,277.5589,279.172,278.858"
style="stroke: #A80036; stroke-width: 1.0;"/><path d="M132.502,203.054
C156.084,237.321 202.83,300.914 253,345 C258.568,349.8927 264.783,354.5833
271.107,358.931 " fill="none" style="stroke: #A80036; stroke-width:
1.0;"/><polygon fill="#A80036"
points="275.496,361.8845,270.2623,353.5414,271.3477,359.0931,265.796,360.1786,275.496,361.8845"
style="stroke: #A80036; stroke-width: 1.0;"/><path d="M383.705,137
C414.965,137 452.311,137 482.257,137 " fill="none" style="stroke: #A8003
6; stroke-width: 1.0;"/><polygon fill="none"
points="383.692,144,363.692,137,383.692,130,383.692,144" style="stroke:
#A80036; stroke-width: 1.0;"/><path d="M406.58,220 C419.427,220 432.707,220
445.649,220 " fill="none" style="stroke: #A80036; stroke-width: 1.0;"/><polygon
fill="none" points="406.187,227,386.187,220,406.187,213,406.187,227"
style="stroke: #A80036; stroke-width: 1.0;"/><path d="M597.741,145.724
C630.38,150.531 670.369,156.42 701.031,160.936 " fill="none" style="stroke:
#A80036; stroke-width: 1.0;"/><polygon fill="#A80036"
points="706.256,161.705,697.9348,156.4364,701.3094,160.9765,696.7692,164.351,706.256,161.705"
style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036"
points="592.709,144.983,601.0299,150.252,597.6556,145.7117,602.1959,142.3374,592.709,144.983"
style="stroke: #A80036; stroke-width: 1.0;"/><path d="M634.34,196.325
C657.63,190.571 681.54,184.665 701.458,179.744 " fill="none" style="stroke:
#A80036; stroke-width: 1.0;"/><polygon fill="#A8003
6"
points="706.433,178.515,696.7364,176.7897,701.5789,179.7139,698.6547,184.5563,706.433,178.515"
style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036"
points="629.298,197.57,638.9944,199.296,634.1522,196.3714,637.0768,191.5292,629.298,197.57"
style="stroke: #A80036; stroke-width: 1.0;"/><path d="M387.447,304.122
C451.782,302.925 550.529,295.021 629,262 C667.296,245.885 703.753,214.181
726.223,192.07 " fill="none" style="stroke: #A80036; stroke-width:
1.0;"/><polygon fill="#A80036"
points="382.104,304.208,391.1669,308.0635,387.1034,304.128,391.0388,300.0645,382.104,304.208"
style="stroke: #A80036; stroke-width: 1.0;"/><path d="M371.56,382.8023
C435.947,376.7315 548.008,359.2315 629,309 C676.941,279.267 715.548,224.034
735.087,192.238 " fill="none" style="stroke: #A80036; stroke-width:
1.0;"/><polygon fill="#A80036"
points="366.244,383.2876,375.5702,386.4533,371.2233,382.8333,374.8433,378.4864,366.244,383.2876"
style="stroke: #A80036; stroke-width: 1.0;"/></g></svg>
\ No newline at end of file
Added:
jackrabbit/oak/trunk/oak-doc/src/site/markdown/nodestore/segment/tarmk-classes.uml
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-doc/src/site/markdown/nodestore/segment/tarmk-classes.uml?rev=1780950&view=auto
==============================================================================
---
jackrabbit/oak/trunk/oak-doc/src/site/markdown/nodestore/segment/tarmk-classes.uml
(added)
+++
jackrabbit/oak/trunk/oak-doc/src/site/markdown/nodestore/segment/tarmk-classes.uml
Mon Jan 30 17:22:48 2017
@@ -0,0 +1,61 @@
+/'
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+'/
+/'
+ Source for the tarmk-classes.svg and tarmk-classes.png class diagram.
+ Generated via http://www.plantuml.com/
+'/
+@startuml
+left to right direction
+
+together {
+ interface NodeStore
+ class SegmentNodeStore
+}
+
+interface Revisions
+class TarRevisions
+
+interface SegmentReader
+class CachingSegmentReader
+
+class SegmentWriter
+interface BlobStore
+
+together {
+ interface SegmentStore
+ class FileStore
+}
+
+SegmentNodeStore -|> NodeStore
+FileStore -|> SegmentStore
+
+NodeStore -[hidden]-> SegmentStore
+SegmentNodeStore -[hidden]--> FileStore
+
+
+SegmentNodeStore -> Revisions
+SegmentNodeStore -> SegmentReader
+SegmentNodeStore -> SegmentWriter
+SegmentNodeStore -> BlobStore
+
+Revisions <|-- TarRevisions
+SegmentReader <|-- CachingSegmentReader
+TarRevisions <-> FileStore
+CachingSegmentReader <-> FileStore
+SegmentWriter <- FileStore
+BlobStore <- FileStore
+@enduml
\ No newline at end of file