Upload
khirulnizam-abd-rahman
View
217
Download
0
Embed Size (px)
Citation preview
7/29/2019 386 Integration2010 Proceedings
1/12
Proceedings of Regional Conference on Knowledge Integration in ICT 2010 386
A TWO-WAY ATTRIBUTE TREE IN P2P OODB SUPPORTING MULTI-
ATTRIBUTE AND RANGE QUERY WITH IMPROVED QUERY RESPONSE TIME
Goh Chiao Wei, Lim Tong Ming
School of Computer Technology
Sunway University CollegeBandar Sunway, Malaysia
[email protected], [email protected]
Abstract
P2P has been one of the most rapid growing technologies in computing world. It has been
introduced to overcome the bottleneck of typical client-server paradigm, in which it has the
limitation of handling the rapid growing demanding of data. Peer-to-peer object-oriented
database is robust, fault-tolerance and scalable. Therefore, it is proposed to overcome the
drawbacks of typical client-server data management architecture. DHT, structured P2P
system, provides indexing facility enables users to locate a piece of data based on a given keythrough an efficient routing algorithm. The proposed object-oriented database was built on
the openChord, a Chord implementation. In this paper, we present a P2P object-orienteddatabase which supports multi-attribute and range queries. The objects are managed locally in
each peer to reduce the network traffic. Object set returned is stored around the nodes alongrouting paths to provide efficient access to a desired object in the subsequent queries that
fulfil the query criteria. Nodes holding the object pointers are distributed around the networkto reduce the lookup time. Nodes are organized into logical class hubs where each hub
handles pointers to nodes storing objects belonging to a particular class. Queries involving
multi-attributes and ranges are routed to the related class hubs to retrieve the desired objects.
Keywords: Object-Oriented Database System; P2P System; DHT; Chord
1. Introduction
Peer-to-peer (P2P) networks have been one of the most rapid-growing computingtechnologies nowadays (Harren et al.). The introduction of P2P networks overcomes the
limitations founded in conventional client-server network, where the network has a rigid andhighly centralized architecture. The conventional client-server network architecture requires a
centralized server or cluster of servers to store and process data requested from the clients in
the network. Hence, bottleneck might occurred in the servers and thus facing the scalability
problem. This creates the issue of single point of failure where once the server is down or
disconnect, the transactions in the network will fail. Furthermore, setting up a client-server
environment is costly.
Apart from this, the demanding of data for storage and processing purposes have been
growing extensively. The growing for the performance of processor against the growing of
data is not proportional (Vilaca and Oliveira, 2009). The typical client-server systems do not
afford to support this rapid growing demanding of data. Therefore, P2P systems come in
place to overcome such phenomena. P2P comprises clusters of computers working together
in the network to build a cheap and scalable server solution (Bratsberg). Besides, P2P
systems have greater scalability, direct access to the nodes which contain the desiredresources/data without passing through a central server, robust and resilient to the churn.
7/29/2019 386 Integration2010 Proceedings
2/12
Proceedings of Regional Conference on Knowledge Integration in ICT 2010 387
The first generation of P2P systems is the unstructured P2P. The typical examples of
unstructured P2P system are Gnutella and Napster. However, unstructured P2P system
experienced the poor scaling problem (Harren et al.) and does not guarantee the reachable of
desire data in network because of the data placement and network constructions are
essentially random (Harren et al.). To overcome the limitations introduced by unstructured
P2P, plenty of works on P2P systems have concentrated on structured P2P (Stoica et al., 2001; Rowstron et al., 2001; Zhao et al., 2004; Ratnasamy et al,. 2001) in recent years. Thesestructured P2P networks proposed Distributed Hash Table (DHT), where nodes are logically
organized in a structured way and are organized following a predefined pattern, such as ring(Stoica et al.,2001) for Chord, Cartesian Coordination (Ratnasamy et al,. 2001) for CAN and
etc.
Due to the DHTs excellent properties to manage dynamic systems (Prada et al.), DHT has an
edge over unstructured P2P systems. For instance, DHT promises a logarithm routing hops to
reach the destination node with an explicit load balancing (Bharambe et al., 2004). DHTs
provide an index facility to map the data to the nodes in the network and routing algorithm to
route requests to the correct node holding the data source. In addition to this, DHT also
provides excellent scalability where nodes can join and leave the networks without any
restrictions (Prada et al.). The P2P paradigm has been introduced into the database
community (Sartiani et al.) to solve the problem of client-server architecture as stated above.
P2P paradigm is able to avoid a single point of failure, which in turn increases the reliabilityof the system. . In this paper, a preliminary design on the building of an object-oriented
database system on top of the openChord, an implementation of Chord DHT to provide a P2Pobject-oriented database system. The combination of database system with the structured P2P
network making the data stored in each node accessible by all the other nodes. The blurringof the client and server role improve the processing time as nodes can access to other nodes
directly without going through a server.
The objective of this paper is to improve query response time by using attribute search trees
with the Chord DHT to support multi-attribute and range query for the P2P database system.
The rationale behind choosing structured network as the overlay network over unstructured
network because structured network promises the deriving of desired object sets as long as
the objects are available in the network. Besides, as mentioned above, structured network
guarantees requests reaching the destination node in logarithm hops, which greatly reduce the
query response time.
2. Related WorksThere were existing works on the building of database management system on structured P2P
network. Yu et al. (2008) proposed a peer-to-peer database model based on Chord. It used
Local Relational Model (LRM) as the database model defined for P2P database system. It
had a node catalog on the application layer on top of the overlay network. It made use of the
Chord to organize the nodes in the network and to locate the data. The keyword information
of a data is put into an appropriate node and thus forming a node catalog. These local nodes
catalogs are group together become a global node catalog. There is a manager peer for each
catalog where each catalog might represent a region. Data transmission between regions isgoing through the manager peer. It is somehow similar to the leader in our proposed design
where leader is the peer which in-charge of a particular class in the database.
7/29/2019 386 Integration2010 Proceedings
3/12
Proceedings of Regional Conference on Knowledge Integration in ICT 2010 388
XPeer (Sartiani et al.) is a XML P2P database system. It manages data spread over an open-
ended network. There is no global schema defined in the database. It is build upon hybrid
P2P where peers may perform some administrative tasks. Peers shared the data in the form of
tree-shaped, called tree-guide. Peers are logically organized in the cluster of nodes where a
super peer is in-charge the management of the cluster of nodes. XPeer uses FLWR subset of
XQuery for the query. Similar to our designed, there is a leader which corresponds to thesuper peer in XPeer for the management of a group of logical nodes.
Besides databases, there are also various protocols designed for implementing multi-attribute
and range queries on DHT. Mercury (Bharambe et al., 2004) supports multi-attribute and
range queries by initialize various logical attribute hubs for various attributes schema. A
physical node may involve in multiple attribute hubs. An attribute is responsible for an
attribute in the schema. Each attribute hub forms a ring topology and each node handles a
certain range of numeric values. Multi-attribute query can be executed by traversing the
query to different attribute hubs for different attributes in the query. Range query is also be
done by traversing the query within the attribute hub to the correct node responsible for the
numeric range. This is somehow similar to our proposed design where various attribute treeshandle various attributes.
Ramabhadran et al. proposed an adaptive solution to support range queries in DHT-based
systems. It supports range search based on the range search tree (RST). Values of the
attribute are stored at the leaf node of the RST. Each non-leaf node corresponds to the union
range of its two children. Hence, it is a complete and balanced binary tree with [log n] + 1levels. RST periodically perform path maintenance protocol to maintain the band information
of the tree for the query purposes. The query is resolved by determines the minimum cover(MC) of the range in the query by running simple top-down recursive algorithm to find the
first node has the largest range within the query range and recursively repeats this process forthe segments of range which has not been decomposed yet. Once MC is computed, the query
sends to each corresponding MC node in the overlay network. It is similar to our design
where values of the attribute are also stored in the leaf node. Our design is also adaptive to
the changes of the number of objects in the system.
Wang and Li (2009) proposed a range query model to support range query over DHT using
B+ tree. The model proposed by Wang and Li (2009) also support for multi-attribute query. It
selected Chord as the overlay network. In order to support multi-attribute, there will be
several B+ trees in which each tree responsible for an attribute. By using the hash function
provided by Chord, it ensures that nodes in B+ tree are evenly mapped to the nodes in Chord.
The resources of the attributes are registered in the leaf node of B+ tree. For a range query,the query starts at the root node of the tree. The query is decomposed into several sub-queries
and the sub-query must ensure contained in one child node. The sub-query continues to
decompose until reaching leaf node. In order to support for multi-attribute query, Wang and
Li (2009) adopted store and forward method where the query is execute in the first attributeuntil reaching leaf node and the query is forwards to the second attributes and so on.
3. The Proposed System ArchitectureThe proposed solution improves multi attribute and range query response time for a P2P
persistent object management system on OpenChord P2P platform, an implementation of
Chord.
7/29/2019 386 Integration2010 Proceedings
4/12
Proceedings of Regional Conference on Knowledge Integration in ICT 2010 389
3.1 Node Structure
Nodes connect to P2P network via Chord overlay network as nodes are logically organized inring overlay where every node is connected by a predecessor node and a successor node
(Figure 1). The network module is connected to the Chord network in the proposed design.Nodes are connected in the overlay network are presented in dotted lines. Every node
contains a finger table, predecessor list and successor list that maintain the logical overlay ofa P2P network. Users connect to the database system through the user interface reside in the
presentation module. It is the bridge between users and the system. It receives instructions
from users and return results to users graphically. Query and Update Manager responsible for
the data query, update data and concurrency control. Caching caches previous object sets and
node information of the Attribute Tree (Section 3.3) to accelerate the query performance.
Local storage is the local database in which it stores all the objects in the local machine.
Export Schema allows the objects in the schema to be shared and modified by other nodes.
Network module is the module acts as a communication bridge between the local node and
the nodes in the network.
Figure 1: Node structure.
3.2 Class Hub
Query search starts from a root class and navigate to the desired user-defined class thatcontains the desired objects. The search will drill into the classs attributes and finally goes
into the attributes values to retrieve matched objects which fulfill the constraints of a query.
Hence, in our proposed initial design, nodes are responsible to manage object pointers of a
registered class to a leader.
The object pointers are stored in the nodes in the form of .
Each object has a unique OID, which similar to the primary key in relational database. Value
represents the data of the particular attribute in the object in which corresponds to its residing
attribute tree. Object pointers are only stored in the leaf nodes in attribute tree (Section 3.3).
7/29/2019 386 Integration2010 Proceedings
5/12
Proceedings of Regional Conference on Knowledge Integration in ICT 2010 390
A leader (Figure 3), in the class hub acts as a gateway to pass the query searching for a
particular class into the right attribute trees. Attribute tree is a logical tree used to
accommodate the pointers to the actual object of an attribute (Section 3.3). Basically, a leader
of a class hub contains pointers to all the root nodes of the attribute trees, in which the
attributes are belonging to the class. In the meantime, the leader also replicates its pointers to
few replicas.
Leader of the class hub is being selected based on the hashing of the class name. The class
name is hash to a key, H(Classname). The overlay network looks for the successor node
responsible for the key, successor(H(Classname)) and elects it as the leader. The leader will
also replicate the pointers it is holding to n of its successor node for the backup purposes. It
also helps to reduce the load of the leader to avoid bottleneck by directing the query to the
replicas of the pointers when the load of the leader is heavy.
Thus, when a query comes in, it contacts the leader of the class hub. The leader points the
query to the related attribute trees to execute the searching procedure ( Section 3.5). If the
query load of the leader reaches the limit, in which the limit can be defined by users, the
leader will redirect the query to its next replica node, in which is its immediate successornode. If the successor node also reaches the load limit, the query will be redirected to the next
replica node. The process continues until reaching a replica with light load.
Figure 2: Pseudo code for forwarding query to related attribute tree through leader of classhub.
Figure 2 is the algorithm of the proposed query forwarding to leader of class hub technique.
Q represents the query passing in. Ni represents the current node the query is passing in. L
corresponds to the leader of the class hub and RL is the replicas of the leader. LNi is the load
/ number of queries passing in to the current node. AN represents the root node of the
corresponds attribute tree.
7/29/2019 386 Integration2010 Proceedings
6/12
Proceedings of Regional Conference on Knowledge Integration in ICT 2010 391
Figure 3: Depiction of the class hub.
3.3 Attribute Tree
An Attribute Tree corresponds to an attribute in a class. It is a logical tree which
accommodates the pointers of the actual object location (object pointer) for the values of theattribute. The bound of the values in a tree can be dynamically adapted to the values of the
attribute by the merge and split operations. The details of merge and split operations are
explained in the subsequent paragraph. The attribute tree consists of three types of nodes, the
root, intermediate and leafnodes. Every node has at most two children nodes except for theleafnode. Attribute tree is a binary tree that defaulted to 2-way.
The mapping of nodes into a tree is not a one-to-one relation. A physical node in the Chord
might map to various logical node in the same tree or different tree. A node in Chord maps tothe node in tree by hashing the range of values it responsible, which will be explained in
subsequent paragraph (Figure 4). Since Chord uses the consistent hashing algorithm whichensures an evenly distribution of nodes, hence the mapping of a physical node to the logical
node in a tree has the high probability of evenly distributed as well.
Rootnode is the first node at the top of a tree. It corresponds to the entire value range of an
attribute. Hence, it covers the full range value of the attribute. It has the information of theentire tree and aware of the total number of objects pointers for the tree.Intermediate nodes
are the nodes between the root node and the leaf nodes. Intermediate nodes in charge sub-range of the values, which is the unions of its children nodes.
Range(Pi)=Range(Ci1)Range(Ci2).Piis the intermediate node and Ci1 and Ci2 are the children nodes ofPi.
Intermediate nodes store the pointers of their children, the information of the sub-trees below
them and the pointer of their parent node (The node with one level higher than them).
Intermediate nodes store the total number of object pointers of the sub-trees. Leafnodes are
the node at the bottom level of the tree. They are handling the smallest sub-ranges. Besides,
leafnodes also store the object pointers with the attribute values fallen into their range. They
replicate the object pointers to their n immediate successor nodes in the overlay network.
Each replica has a link to the next replica and hence forms a link list of replicas. Leafnodes
also store the pointer to their parent node and pointers to the sibling nodes (The leafnodes
locate on its immediate left and right respectively) for the better range query response time.
7/29/2019 386 Integration2010 Proceedings
7/12
Proceedings of Regional Conference on Knowledge Integration in ICT 2010 392
Tree nodes are mapped to the Chord nodes based on the hashing of the range values. The
formula to generate the key of the range values is (L+U)/2, L is the lower bound of the range
and U is the upper bound of the range. By using the average point of the range, the key of the
range can be hashed, H((L+U)/2). It is then mapped to the successor node of the key in the
Chord identifier space.
There are basically two operations to carry out by a node; the splitand merge operations. Thesplithappens when the density (Number of object pointers accommodate in the node) of the
leafnode exceed the threshold. The splitis performed when(Di/L)100 > 100/L
whereDi is the density of the node i andL is the total density for the tree.
The merge operation is performed when the density of the two adjacent leafnodes under the
same parent node below a certain ratio. The merge is performed when
(Di/L)100 < 100/2L
However, if the leaf nodes are directly under the root node of the tree without anyintermediate nodes, the splitoperations are performed based on the other criteria. The split
operations for the leafnodes are only performed when the density of the node, Diexceeds a
constant number, C. The value ofCis setup at the rootnode of the tree by the administrator
during the tree initialization.
Figure 4: Example of Attribute Tree
3.4 Nodes Leaving
It is possible that nodes in a tree leave/disconnect from the network periodically. There are
different recovery procedures for different types of nodes.
If the root node disconnect from the tree, the leader of the class hub contacts the nextimmediate successor node of the previous root node in the Chord network. The root node
establishes the connection with the tree by linking to the children nodes below it. The leaderupdates its corresponding rootnode.
If the intermediate node disconnect from the tree, the parent node contacts the next
immediate successor node of the previous intermediate node and make linking to the next
7/29/2019 386 Integration2010 Proceedings
8/12
Proceedings of Regional Conference on Knowledge Integration in ICT 2010 393
children nodes. The parent node forwards its sub-tree information to that newly joinedintermediate node.
If the leaf node disconnect from the tree, the parent node links to the immediate successor
node of the previous leafnode, which is also the first replica of the leafnode. The replication
of object pointers is redistributing across the n successor nodes.
Figure 5: Pseudo code for nodes leaving the attribute tree.
Figure 5 above depicts the pseudo code for various kinds of nodes leaving the tree. ANi+1
represent the immediate successor node of the previous root node. IDENTIFIER(CAN1) and
IDENTIFIER(CAN1) correspond to the node identifier of both the children nodes for the
previous root node. Ci represents the children node for the node Pi. Ci+1 is the immediatesuccessor node for the disconnect children node. LNi is the leafnode for the node Pi.RLNi is
the replica of the leafnode.
3.5 Query
When a node initiates a query, it first checks if any of the object sets cached in its cachingmanager subset (Section 3.7) of the query. If there is object set subset of the query, the node
directly retrieves the result from the caching manager. Else the node sends the query over thenetwork to obtain the desired result.
Before the query is being forwarded to the overlay network, the node determines if it has
cache the location of corresponding node in the attribute tree which has the minimum cover
7/29/2019 386 Integration2010 Proceedings
9/12
Proceedings of Regional Conference on Knowledge Integration in ICT 2010 394
to the range in the query. For instance, according to Figure 4, a user wants to search for
attribute a within a class c with the range [2, 30]. The node with the minimum cover to the
range is the node with sub-range [1, 39]. If the node does caches the location of the node,
then it forwards the query directly to the corresponding node and performs the query. This is
to avoid bottleneck occurred in a rootnode when the query load is heavy and for faster access
to the responsible node for better query response time.
In the other way, if the node does not caches of the nodes identifier, it forwards a probe
request to the leader of the class hub. From the leader, the probe request is sent to the rootnode of the attribute tree and the probe request is decomposed into sub-request to its children
node. The process continues until the request encounters the node which responsible to the
range. The probe request is then sending back to the query initiator and cache the identifier of
the node in the caching manager. The actual query is then forwarded to the corresponding
node in the tree and perform search traversed down the tree and finally send the result back to
the query originator upon successful operation. The result is compiled into a list and sends
request to those node that hold the actual objects. The object set is cached into the query
originator and the object set is cached into the nodes along the path of how the query istraversed too.
While the query traverses down the tree, it checks the local cache manager of the node in the
tree as well to look for the object set cached in the cache manager which is subset of the
query. If there is object set cached in the cache manager, the query terminates and the object
set is sends back to the query originator. The object set is cached in the nodes along the pathof where the query traversed.
There are two types of list attach with the query along traversing the attribute tree, which are
routing path listand object pointers list. Routing path list contains the list of node identifierswhich are part of the traversed path. Routing path liststores node identifiers in the form of
. Once the query reaches a node, the node checksifwhetherits own node identifier exists in the routing path. If the identifier is not existed, the
current node identifier is adding into the routing path list. For the object pointers list, it
contains the list of object identifiers which are the answer of the query who match the query
constraints. The object pointers list stores object identifiers in the form of . If the object pointers list is empty, the OID is inserts into the list. If the list is not
empty and does not contain the current OID, then the current OID is inserts into the list.
3.5.1 Range Query
It is possible to execute a query search for a certain range within attribute tree. We proposed a
lower-upper bound approach to execute range query. When query reaches the node with the
minimum cover to the range, the query is splits into two sub-queries, which corresponding to
the lower bound of the query and upper bound of the query. The lower bound query forwards
the query to its left child node responsible for the smaller sub-range and the upper bound
query forwards the query to its right child node responsible for the larger sub-range. The
process continues until both the lower and upper bound queries reach leaf node. From the
lower bound and upper bound leafnodes, they send the query towards each other through thesibling nodes and finally meet each other. The desired result is the union of the lower bound
query and the upper bound query. Figure 6 depicts the searching scenario to search for therange [5, 50].
7/29/2019 386 Integration2010 Proceedings
10/12
Proceedings of Regional Conference on Knowledge Integration in ICT 2010 395
Figure 6: The lower-upper bound approach.
3.5.2 Multi-attribute Query
Our proposed design also supports multi-attribute query. A query is a conjunction of sub-queries where each sub-queries querying an attribute in the class.
For instance, a SQL-like query SELECT * FROM CAR WHERE door_number = 4 AND
car_color = white is a query with the conjunction of two sub-queries. This query can be
spitted into two sub-queries. This query selects all the instance of cars from the CAR class
with the constraint attribute door_number must be four and car_colormust be white. It is
basically the intersection of the sub-queries: SELECT * FROM CAR WHERE door_number =
4 and SELECT * FROM CAR WHERE car_color = white .The intersection of object set
from the first sub-query and the second sub-query would produce the final object set
answering the query.
To achieve multi-attribute query more effectively, we can actually decompose the query into
n sub-queries, in which each sub-query corresponds to a criteria. More precisely, a sub-queryis responsible for one of an attribute, in which the attribute is the constraint in the query. InPOMS, we proposed a store and forward method. The query is starts with the first attribute
tree. Once the sub-query for the first attribute tree has complete the searching, the entirequery associate with the routing path list and object pointers list are forward to the second
attribute tree. From one tree traverse to another tree, the last leafnode checks to determinewhether it caches the node location of the next tree which covers the range of the next
constraint. If it does, the query can forward directly to that node without having starts from
the rootnode. The process continues until the query completes in the nth attribute tree. At the
end of the searching process, a complete list of routing path list and object pointers list are
compiled. Both the lists and the query are sending back to the query originator in order to
retrieve the complete object set.
Although this method requires longer time to complete, it however reduces the workload in
query originator and also the network traffic required. The compiling result process can be
done in every last leafnode in the tree before forward the query to the next tree. Hence, the
compiling process does not need to be done in the query originator as the query originator
gets the already compiled version.
7/29/2019 386 Integration2010 Proceedings
11/12
Proceedings of Regional Conference on Knowledge Integration in ICT 2010 396
3.6 Maintenance Protocol
There are two types of messages involved in the maintenance process, the tree update requestand the tree update reply. Nodes periodically sends update request message to its parent node
to update the parent node of the sub-tree and the density information. The parent nodereceives the request message updates its contents and also forwards the message to its parent
node associate with its sub-tree and density information. The message continues until itreaches the root node. Meanwhile the message forward upward to the parent node, the
purpose of maintenance protocol is also to detect if any node in the tree disconnect without
prior knowledge. If the node is missing, the necessary repair procedure is needed to repair the
structure of the tree. The repair procedure is similar to the section E.
Once the rootnode retrieves the update message, it updates its sub-tree information and the
total density of the tree. It then initiates the tree update reply message down to its children
nodes. The children node updates its own information and further sending down the message
to its children node. The process continues until reaches the leafnodes. Split/Merge of nodes
process in this stage might be triggered if the density is exceeded or less than the threshold.
To avoid some pointers in the tree lost without prior knowledge, peers in the overlay networkholding the actual objects periodically randomly choose few objects and send the object
identifier to the nodes responsible for these objects. If the nodes do not have these pointers,then the object pointers of these objects are added into the nodes.
3.7 Caching Protocol
Each node has a caching manager. The caching manager responsible to cache the object sets
of the previous queries and the location of the nodes in the attribute trees. These cache
information are store in a list and are associated with the counter and time. The counter
represents the number of times the cache being accessed. They are store using Least RecentlyUsed LRU approach. When the list in the cache is full or periodically, the cache objects with
the least counter and oldest time will be removed and the vacancy is for the new coming
cache objects.
4. Conclusion
In this paper, we present a preliminary design for a P2P object-oriented database on a DHT.
We utilize class hub and attribute trees for the multi-attribute and range queries. The
following summarizes contributions of our proposed design:
i. The split and merge operation in the attribute tree will make the attribute tree adaptiveto the changing of the attribute values.
ii. A lower-upper bound approach is adopted in order to search a range query moreeffective.
iii. A store and forward method is adopted in our design to support multi-attribute queryto reduce the workload of the query originator as well as reducing the network traffic.
iv. Previous object sets are cached in the nodes along the routing path for faster queryresponse time.
v. Our design also caches the node identifier information for faster access to the attributetree avoiding bottleneck at a single point.
7/29/2019 386 Integration2010 Proceedings
12/12
Proceedings of Regional Conference on Knowledge Integration in ICT 2010 397
5. References[1]I. Stoica, R. Morris, D. Karger, M. F. Kaashoek and H. Balakrishnan. Chord: A Scalable
Peer-to-peer Lookup Service for Internet Applications.ACM August 2001.
[2]A. Rowstron and P. Drucschel. Pastry: Scalable, decentralized object location and routingfor large-scale peer-to-peer systems. ACM International Conference on Distributed
Systems Platforms November 2001.[3] B. Y. Zhao, L. Huang, J. Stribling, S. C. Rhea, A. D. Joseph and J. D. Kubiatowicz.
Tapestry: A Resilient Global-Scale Overlay for Service Deployment.IEEE 2004.
[4]S. Ratnasamy, P. Francis, M. Handley and R. Karp. A Scalable Content-AddressableNetwork. ACM August 2001.
[5]I. Clarke, O. Sandberg, B. Wiley and T. W. Hong. Freenet: A Distributed AnonymousInformation Storage and Retrieval System.
[6]R. Vilaca and R. Oliveira. Clouder: A Flexible Large Scale Decentralized Object Store.WDDDM March 2009.
[7]A. R. Bharambe, M. Agrawal and S. Seshan. Mercury: Supporting Scalable Multi-Attribute Range Queries. ACM August 2004.
[8]C. Sartiani, P. Manghi, G. Ghelli and G. Conforti. XPeer: A Self-organizing XML P2PDatabase System.
[9]J. Yu, M. Yu, B. Wang, Y. Gu and J. Dai. A Peer to Peer Database Model Based onChord.IEEE 2008.
[10]J. Gao and P. Steenkiste. An Adaptive Protocol for Efficient Support of Range Queries inDHT-based Systems.
[11]D. Wang and M. Li. A Range Query Model based on DHT in P2P System . IEEE 2009.[12]M. Harren, J. M. Hellerstein, R. Huebsch, B. T. Loo, S. Shenker and I. Stoica. Complex
Queries in DHT-based Peer-to-Peer Networks.[13]S. E. Bratsberg. Scaling a Highly-Available DBMS beyond a Dozen Nodes.[14]C. Prada, M. P. Villamil and C. Roncancio. Join Queries in P2P DHT Systems.