437 |
|
|
438 |
Kademlia, Pastry and Tapestry uses balanced tree-like |
Kademlia, Pastry and Tapestry uses balanced tree-like |
439 |
data structures. Figure \ref{fig:kademlia_lookup} shows the process of Kademlia |
data structures. Figure \ref{fig:kademlia_lookup} shows the process of Kademlia |
440 |
data lookup. Viceroy maintains a butterfly data structure, which requires |
data lookup. Viceroy maintains a butterfly data structure (see e.g., \cite{226658}), |
441 |
only constant number of neighbor peers while providing $O(\log{n})$ data lookup |
which requires only constant number of neighbor peers while providing $O(\log{n})$ data lookup |
442 |
efficiency. Koorde, recent modification of Chord, uses de Bruijn graphs to maintain |
efficiency. Koorde, recent modification of Chord, uses de Bruijn graphs to maintain |
443 |
local routing tables. Koorde requires each peer to have only about two links to other |
local routing tables. Koorde requires each peer to have only about two links to other |
444 |
peers to to provide $O(\log{n})$ performance. |
peers to to provide $O(\log{n})$ performance. |
550 |
have support for keyword search and fuzzy search. On the other, tightly structured systems support |
have support for keyword search and fuzzy search. On the other, tightly structured systems support |
551 |
only exact key lookups as each data item is identified by unique keys. |
only exact key lookups as each data item is identified by unique keys. |
552 |
|
|
553 |
In the end, both systems have open problems and issues. We will discuss these aspect more detail in |
In the end, both systems have open problems and issues. We will discuss these aspects more detail in |
554 |
chapter 3. Table \ref{table_comparison_approach} lists key differences between loosely structured |
chapter 3. Table \ref{table_comparison_approach} lists key differences between loosely structured |
555 |
approach and tightly structured approach. |
approach and tightly structured approach. |
556 |
|
|
1644 |
|
|
1645 |
\chapter{Fenfire hypermedia system} |
\chapter{Fenfire hypermedia system} |
1646 |
|
|
1647 |
|
In this chaper we give an overview of Fenfire system and its objectives. We also |
1648 |
|
describe briefly xanalogical model. At the end of this chapter we study Storm, |
1649 |
|
Fenfire's software module, which is an essential part of Fenfire's Peer-to-Peer |
1650 |
|
functionality. |
1651 |
|
|
1652 |
\section{Overview} |
\section{Overview} |
1653 |
|
|
1654 |
\section{Objectives} |
Fenfire project \cite{fenfireurl} is an effort to build a distributed, hyperstructured user |
1655 |
|
interface system. Fenfire is licenced under GNU L-GPL. It's main goal is to implement |
1656 |
|
xanalogical storage model \cite{ted-xu-model}. Fenfire was formely also an implementation |
1657 |
|
of the ZigZag\texttrademark --structure, which was originally invented |
1658 |
|
by Ted Nelson. Now, however, Fenfire uses Resource Description Framework \cite{w3rdfurl} |
1659 |
|
for representing internal data structures and their relationships. |
1660 |
|
|
1661 |
\cite{thompson01hypermedia} |
Fenfire is high modular software system. It consists of several independent software modules: |
1662 |
\cite{wiil02p2phypertext} |
|
1663 |
\cite{bouvin02openhypermedia} |
\begin{itemize} |
1664 |
|
\item \textbf{Storm}: distributed storage module for storing arbitrary data items |
1665 |
|
\item \textbf{UMLLinker}: UML based tool for generating software documentation |
1666 |
|
\item \textbf{Xu-Storm}: xanalogical hypertext built upon Storm storage model |
1667 |
|
\item \textbf{GLMosaicText}: flexible OpenGL interface for font manipulation |
1668 |
|
\item \textbf{CallGL}: wrapping library used for OpenGL calls |
1669 |
|
\item \textbf{LibVob}: graphic library used for creating navigation interfaces in complex data views |
1670 |
|
\end{itemize} |
1671 |
|
|
1672 |
|
In this thesis, we focus on Storm module, since it's the foundation of Fenfire's Peer-to-Peer |
1673 |
|
functionality. |
1674 |
|
|
1675 |
\section{Xanalogical model} |
\section{Xanalogical model} |
1676 |
|
|
1677 |
|
Xanalogical storage \cite{nelson99xanalogicalneeded} is different kind of model for |
1678 |
|
presenting data and relationships between data. While in World Wide Web links are |
1679 |
|
between \emph{documents}, in xanalogical model links are between individual |
1680 |
|
\emph{characters}. |
1681 |
|
|
1682 |
|
|
1683 |
|
|
1684 |
4.1. Xanalocical model (some parts from our article, modify) |
4.1. Xanalocical model (some parts from our article, modify) |
1685 |
Xanalocical model [cite] is a simple, but rather different model for representing content. |
Xanalocical model [cite] is a simple, but rather different model for representing content. |
1686 |
Project Xanadu [cite] has been a pioneer implementing xanalogical model. In xanalocical model |
Project Xanadu [cite] has been a pioneer implementing xanalogical model. In xanalocical model |
1704 |
* Documents can be created by listing new content or transcluding existing content in an enfilade. |
* Documents can be created by listing new content or transcluding existing content in an enfilade. |
1705 |
* Annotations can be entered as new content and Xanadu-linked to a part of document. |
* Annotations can be entered as new content and Xanadu-linked to a part of document. |
1706 |
|
|
1707 |
\cite{nelson99xanalogicalneeded} |
|
1708 |
|
|
1709 |
\section{Storm} |
\section{Storm} |
1710 |
|
|
1783 |
Storm uses SHA-1 \cite{fips-sha-1} hash over the contents of a block for creating globally |
Storm uses SHA-1 \cite{fips-sha-1} hash over the contents of a block for creating globally |
1784 |
unique identifiers. SHA-1 is considered a collision free hash function, so it's very unlikely |
unique identifiers. SHA-1 is considered a collision free hash function, so it's very unlikely |
1785 |
that two different scroll blocks would have same identifiers. Obviously, Storm has to |
that two different scroll blocks would have same identifiers. Obviously, Storm has to |
1786 |
efficiently find a specific scroll block if it is available in the network. |
efficiently find a specific scroll block if it is available in the network. |
1787 |
|
|
1788 |
|
\cite{thompson01hypermedia} |
1789 |
|
\cite{wiil02p2phypertext} |
1790 |
|
\cite{bouvin02openhypermedia} |
1791 |
|
|
1792 |
|
|
1793 |
\section{Objectives} |
\section{Objectives} |