202 |
Other approaches to versioning |
Other approaches to versioning |
203 |
that rely on keeping information about the current version |
that rely on keeping information about the current version |
204 |
in one place on one P2P network will not allow the heterogeneity of different |
in one place on one P2P network will not allow the heterogeneity of different |
205 |
systems that is vital for the Web to flourish. |
systems to flourish. |
206 |
|
|
207 |
.. [#update] When updating a page, it would be clearly |
.. [#update] When updating a page, it would be clearly |
208 |
infeasible to update all pages linking to it, and thus |
infeasible to update all pages linking to it, and thus |
218 |
|
|
219 |
An additional contribution is the Storm data model, |
An additional contribution is the Storm data model, |
220 |
an API formalizing the notion of searching for data |
an API formalizing the notion of searching for data |
221 |
by hash and content. The API is used by applications |
by hash and content. Indexing files by content |
222 |
such as browsers and implemented for each P2P network |
is implemented through application-specific plug-ins. |
223 |
accessed. Pointer records may be implemented |
Allowing files to be found by any particular property |
224 |
on top of the Storm model, rather than separately |
of their content (such as the 'album' field in OGG metadata) |
225 |
|
is as easy as writing a simple plug-in. |
226 |
|
Pointer records may be implemented |
227 |
|
on top of the Storm indexing, rather than separately |
228 |
for each P2P network. |
for each P2P network. |
229 |
|
The API is used by applications |
230 |
|
such as browsers and implemented for each P2P network |
231 |
|
accessed. |
232 |
|
|
233 |
|
.. The indices generated by indexing plugins |
234 |
|
are automatically published on each P2P network. |
235 |
|
|
236 |
.. Like in OceanStore, old |
.. Like in OceanStore, old |
237 |
versions remain fully accessible (as long as somebody |
versions remain fully accessible (as long as somebody |
374 |
to distinguish the pointer from all other documents |
to distinguish the pointer from all other documents |
375 |
owned by the same entity, for example |
owned by the same entity, for example |
376 |
a semantic-free random |
a semantic-free random |
377 |
bitstring, |
bitstring. |
378 |
|
|
379 |
To associate pointers with versions, our system uses *pointer records*: |
To associate pointers with versions, our system uses *pointer records*: |
380 |
small files that, similar to OceanStore's heartbeats, |
small files that, similar to OceanStore's heartbeats, |
444 |
|
|
445 |
The Storm abstraction does not provide any new functionality; |
The Storm abstraction does not provide any new functionality; |
446 |
it merely provides a common API for the hash-based addressing |
it merely provides a common API for the hash-based addressing |
447 |
and content-based search present in many existing P2P systems. |
and content-based search present in many existing P2P systems |
448 |
|
(although allowing files to be found by specific properties |
449 |
|
of their content is much easier to implement using |
450 |
|
our plugin architecture). |
451 |
|
|
452 |
.. [#] For STORage Module. Storm is also the name of our |
.. [#] For STORage Module. Storm is also the name of our |
453 |
Free Software implementation, discussed in |
Free Software implementation, discussed in |
467 |
for showing a block in a Web browser.) |
for showing a block in a Web browser.) |
468 |
|
|
469 |
Reverse indices |
Reverse indices |
470 |
Reverse indices are application-specific plug-ins |
Reverse indices are application-specific plugins |
471 |
which index blocks by properties of their content |
which index blocks by properties of their content |
472 |
rather than by hash. Reverse indices examine each |
rather than by hash. Reverse indices examine each |
473 |
block in a local pool and return hashtable keys |
block in a local data store and return hashtable keys |
474 |
under which this block should be found. |
under which this block should be found. |
475 |
For example, an index of Ogg Vorbis audio blocks running |
For example, an index of Ogg Vorbis audio blocks running |
476 |
on an artist's Web server could return each word |
on an artist's Web server could return each word |
538 |
.. somewhat tangential to this workshop's theme, |
.. somewhat tangential to this workshop's theme, |
539 |
candidate for removal to save space: |
candidate for removal to save space: |
540 |
|
|
541 |
In an ad-hoc wireless local network between mobile devices, |
In an ad-hoc wireless local network between mobile devices, |
542 |
the latest issue of, e.g., Slashdot (an popular online news site) |
the latest issue of, e.g., Slashdot (an popular online news site) |
543 |
could be downloaded from other devices' caches, instead |
could be downloaded from other devices' caches, instead |
544 |
of paying for wireless Internet access; trust would not be |
of paying for wireless Internet access; trust would not be |
545 |
an issue as the pointer records' signatures could be validated. |
an issue as the pointer records' signatures could be validated. |
546 |
|
|
547 |
The peer-to-peer network we propose would use |
The peer-to-peer network we propose would use |
548 |
random-looking, semantic-free identifiers; arguments for this |
random-looking, semantic-free identifiers; arguments for this |
608 |
|
|
609 |
-- XXX we don't distribute anything yet |
-- XXX we don't distribute anything yet |
610 |
|
|
611 |
Our prototype provides implementations of the block/pool abstraction |
Our prototype provides implementations of the block abstraction |
612 |
and of reverse indexing for both local storage |
and of reverse indexing for both local storage |
613 |
and distribution through the GISP DHT [kato02gisp]_. |
and distribution through the GISP DHT [kato02gisp]_. |
614 |
The API is sufficiently abstract that different overlays |
The API is sufficiently abstract that different overlays |
682 |
past versions inaccessible. By simply signing and publishing |
past versions inaccessible. By simply signing and publishing |
683 |
a large number of "fake" versions (e.g., files containing |
a large number of "fake" versions (e.g., files containing |
684 |
random data), a publisher could make correct past versions |
random data), a publisher could make correct past versions |
685 |
hard to access. A time-stamping mechanism may help here. |
hard to access. |
686 |
|
|
687 |
In this paper, we have proposed to use pointer records as the versioning |
In this paper, we have proposed to use pointer records as the versioning |
688 |
mechanism for a location-independent Web. |
mechanism for a location-independent Web. |