# 3. Related Work

## 3.1 Peer to Peer Systems

#### File Sharing Systems

* The first generation of P2P systems, such as Freenet and Gnutella1 , were predominantly used as file sharing systems.
* Systems like Pastry \[16] and Chord \[20] use routing mechanisms to ensure that queries can be answered within a bounded number of hops. To reduce the additional latency introduced by multi-hop routing, some P2P systems (e.g., \[14]) employ O(1) routing where each peer maintains enough routing information locally so that it can route requests (to access a data item) to the appropriate peer within a constant number of hops.

#### Storage Systems

* such as Oceanstore / PAST
* were built on top of these routing overlays.
* To allow for concurrent updates while avoiding many of the problems inherent with wide-area locking, it uses an update model based on conflict resolution.
* Oceanstore resolves conflicts by processing a series of updates, choosing a total order among them, and then applying them atomically in that order
* By comparison, PAST provides a simple abstraction layer on top of Pastry for persistent and immutable objects. It assumes that the application can build the necessary storage semantics (such as mutable files) on top of it.

## 3.2 Distributed File Systems and Databases

* Distributing data for performance, availability and durability has been widely studied in the file system and database systems community.
* **Compared to P2P storage systems,**\
  that only support flat namespaces, distributed file systems typically support hierarchical namespaces.

#### Google File System

* built for hosting the state of Google’s internal applications.
* GFS uses a simple design with a single master server for hosting **the entire metadata** and where the data is split into chunks and **stored in chunk servers.**

#### **Ficus,** Coda

* replicate files for high availability at the expense of consistency

#### Farsite system

* is a distributed file system that does not use any centralized server like NFS.
* achieves high availability and scalability using replication.

#### Bayou

* is a distributed relational database system that allows disconnected operations and provides eventual data consistency.
