1615 |
|
|
1616 |
|
|
1617 |
|
|
|
\begin{figure} |
|
|
\centering |
|
|
\includegraphics[width=10cm, height=10cm]{storm_uml.eps} |
|
|
\caption{Simplified Storm block storage model} |
|
|
\label{fig:storm_model} |
|
|
\end{figure} |
|
|
|
|
|
|
|
|
\begin{figure} |
|
|
\centering |
|
|
\includegraphics[width=15cm, height=10cm]{storm_pointerblock_creation.eps} |
|
|
\caption{Pointer block creation process} |
|
|
\label{fig:storm_model} |
|
|
\end{figure} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1618 |
|
|
1619 |
\chapter{Fenfire hypermedia system} |
\chapter{Fenfire hypermedia system} |
1620 |
|
|
1637 |
\begin{itemize} |
\begin{itemize} |
1638 |
\item \textbf{Storm}: distributed storage module for storing arbitrary data items |
\item \textbf{Storm}: distributed storage module for storing arbitrary data items |
1639 |
\item \textbf{UMLLinker}: UML based tool for generating software documentation |
\item \textbf{UMLLinker}: UML based tool for generating software documentation |
1640 |
\item \textbf{Xu-Storm}: xanalogical hypertext built upon Storm storage model |
\item \textbf{Alph}: xanalogical hypertext built upon Storm storage model |
1641 |
\item \textbf{GLMosaicText}: flexible OpenGL interface for font manipulation |
\item \textbf{GLMosaicText}: flexible OpenGL interface for font manipulation |
1642 |
\item \textbf{CallGL}: wrapping library used for OpenGL calls |
\item \textbf{CallGL}: wrapping library used for OpenGL calls |
1643 |
\item \textbf{LibVob}: graphic library used for creating navigation interfaces in complex data views |
\item \textbf{LibVob}: graphic library used for creating navigation interfaces in complex data views |
1644 |
\end{itemize} |
\end{itemize} |
1645 |
|
|
1646 |
In this thesis, we focus on Storm module, since it's the foundation of Fenfire's Peer-to-Peer |
In this thesis, we focus on Storm and Xu-Storm modules, since they are the foundation of Fenfire's |
1647 |
functionality. |
Peer-to-Peer functionality. If not otherwise mentioned, we use term 'Storm' referring to both |
1648 |
|
Storm and Alph modules. |
1649 |
|
|
1650 |
\section{Xanalogical model} |
\section{Xanalogical model} |
1651 |
|
|
1665 |
containing a specific \emph{fluid media unit} (e.g., a character) that the link connects. |
containing a specific \emph{fluid media unit} (e.g., a character) that the link connects. |
1666 |
In practice, however, xanalogical storage model uses \emph{spans}, ranges of consecutive |
In practice, however, xanalogical storage model uses \emph{spans}, ranges of consecutive |
1667 |
fluid media units, to handle storage operations. This is done for better performance as |
fluid media units, to handle storage operations. This is done for better performance as |
1668 |
doing expensive operations for \emph{every} fluid media unit is not efficient. |
doing expensive operations for every fluid media unit is not efficient. Moreover, |
1669 |
|
xanalogical storage model stores fluid media units to append-only \emph{scrolls}. |
1670 |
|
|
1671 |
\emph{Enfilade} can be considered as a ''virtual file'' (or part of one), which is a list |
\emph{Enfilade} can be considered as a ''virtual file'' (or part of one), which is a list |
1672 |
of fluid media contents. In xanalogical storage model, links between content are external |
of fluid media contents. In xanalogical storage model, links between content are external |
1676 |
different data contents. By using this mechanism, system implementing xanalogical model |
different data contents. By using this mechanism, system implementing xanalogical model |
1677 |
is able to show all data content that share same fluid media with current data content |
is able to show all data content that share same fluid media with current data content |
1678 |
(e.g., all documents containing current document's text). Figure \ref{fig:xanalogical_model} |
(e.g., all documents containing current document's text). Figure \ref{fig:xanalogical_model} |
1679 |
illustrates xanalogical model. |
illustrates xanalogical model used with documents, text and characters. |
1680 |
|
|
1681 |
|
|
1682 |
\begin{figure} |
\begin{figure} |
1689 |
|
|
1690 |
\section{Storm} |
\section{Storm} |
1691 |
|
|
1692 |
\cite{lukka02freenetguids} |
In this section, we will give an brief overview of Storm design. More information can be found |
1693 |
|
from recent publications: for general discussion about Fenfire in Peer-to-Peer environment, |
1694 |
|
see \cite{lukka02freenetguids}, and for detailed Storm design, see \cite{fallenstein03storm}. |
1695 |
|
|
1696 |
|
Storm (for \emph{STORage Module}) is a software module, which is used in Fenfire for |
1697 |
|
implementing basic data storage operations. Storm stores all data as \emph{scroll blocks}, which |
1698 |
|
are immutable byte sequences. SHA-1 cryptographic content hash \cite{fips-sha-1} is used |
1699 |
|
for creating locatiotion-independent, globally unique identifiers for blocks. Storm |
1700 |
|
blocks have much in common with regular files, except Storm blocks are \emph{immutable} as |
1701 |
|
any change to the byte sequence would the change block's hash value, i.e., unique |
1702 |
|
identifier. This mechanism creates a basis for implementing xanalogical model in our |
1703 |
|
Fenfire system. Figure \ref{fig:storm_model} illustrated simplified Storm storage model. |
1704 |
|
|
1705 |
|
\begin{figure} |
1706 |
|
\centering |
1707 |
|
\includegraphics[width=10cm, height=10cm]{storm_uml.eps} |
1708 |
|
\caption{Simplified Storm block storage model} |
1709 |
|
\label{fig:storm_model} |
1710 |
|
\end{figure} |
1711 |
|
|
|
\cite{fallenstein03storm} |
|
1712 |
|
|
1713 |
\subsection{Storm block storage} |
In addition to immutable data, Storm has a support for mutable data. Storm uses |
1714 |
|
\emph{pointers} and \emph{diffs} for dealing with this kind of data. In this paper, |
1715 |
|
we discuss only pointers as they are part of the thesis' research problems. |
1716 |
|
More information about diffs can be found from \cite{fallenstein03storm}. |
1717 |
|
|
1718 |
|
Pointer is a updatable reference to scroll block. In practice, pointer is a |
1719 |
|
random string created automatically by Storm \cite{benja02urn5}, associated |
1720 |
|
with a collection of \emph{pointer blocks}. Each pointer block has a single |
1721 |
|
target for the pointer. In figure \ref{fig:storm_model}, we present overal |
1722 |
|
pointer creation process. Pointer block may contain zero or more obsoleted |
1723 |
|
pointer blocks, i.e. when a new version of scroll block is created, it supersedes |
1724 |
|
one older version which has been created in the past. The most current pointer |
1725 |
|
block will 'obsolete' the pointer block targeting the supersed version. Next |
1726 |
|
time, when the pointer is used for refering to a specific scroll block, only |
1727 |
|
the most recent pointer's block target is loaded. |
1728 |
|
|
1729 |
|
\begin{figure} |
1730 |
|
\centering |
1731 |
|
\includegraphics[width=15cm, height=10cm]{storm_pointerblock_creation.eps} |
1732 |
|
\caption{Pointer block creation process} |
1733 |
|
\label{fig:storm_model} |
1734 |
|
\end{figure} |
1735 |
|
|
|
\cite{benja02urn5} |
|
|
\cite{balakrishnan03semanticfree} |
|
1736 |
|
|
1737 |
\chapter{Evaluation of Peer-to-Peer for Fenfire} |
\chapter{Evaluation of Peer-to-Peer for Fenfire} |
1738 |
|
|