476 |
In Storm, all data is stored |
In Storm, all data is stored |
477 |
as *blocks*, byte sequences identified by a SHA-1 |
as *blocks*, byte sequences identified by a SHA-1 |
478 |
cryptographic content hash [fips-sha-1]_. |
cryptographic content hash [fips-sha-1]_. |
479 |
Being purely a function of a block's content, block ids |
Purely a function of a block's content, block ids |
480 |
are completely independent of network location. |
are completely independent of network location. |
481 |
Blocks have a similar granularity |
Blocks have a similar granularity |
482 |
as regular files, but they are immutable, since any change to the |
as regular files, but they are immutable, since any change to the |
491 |
the cryptographic hash in the identifier. Therefore, we can |
the cryptographic hash in the identifier. Therefore, we can |
492 |
safely download blocks from an untrusted peer. |
safely download blocks from an untrusted peer. |
493 |
|
|
|
While digital signatures also allow for self-certifying identifiers |
|
|
(the identifier could contain a public key, and we could check |
|
|
the signature after downloading a block), |
|
|
they raise the need for a public-key infrastructure (PKI) |
|
|
and for a timestamping mechanism in order to be reliable |
|
|
for more than a short time. |
|
|
|
|
494 |
When we make a reference to a block, we can be sure |
When we make a reference to a block, we can be sure |
495 |
that even the original author of the target will not be able |
that even the original author of the target will not be able |
496 |
to change it (contrast this with a signature-based scheme). |
to change it (unlike with e.g. digital signatures). |
497 |
For example, if a newspaper refers to a letter |
For example, if a newspaper refers to a letter |
498 |
to the editor this way, the letter's sender won't be able to change |
to the editor this way, the letter's sender won't be able to change |
499 |
the reference into an advertisement for a pornographic web page. |
the reference into an advertisement for a pornographic web page. |
502 |
never necessary to check for new versions of blocks. It is easy |
never necessary to check for new versions of blocks. It is easy |
503 |
to replicate data between systems: A replica of a block never |
to replicate data between systems: A replica of a block never |
504 |
needs to be updated; cached copies can be kept as long as desired. |
needs to be updated; cached copies can be kept as long as desired. |
|
When a document is replicated, different versions of it can |
|
|
coexist on the same system without naming conflicts, since |
|
|
each version will be stored in its own block with its own id. |
|
505 |
|
|
506 |
If peers make the blocks in their caches available on the network, |
If peers make the blocks in their caches available on the network, |
507 |
the flash crowd problem could be alleviated: The more users |
the flash crowd problem could be alleviated: The more users |
515 |
To replicate all data from computer A |
To replicate all data from computer A |
516 |
on computer B, it suffices to copy all blocks from A to B that B |
on computer B, it suffices to copy all blocks from A to B that B |
517 |
does not already store. This can be done through a simple 'copy' |
does not already store. This can be done through a simple 'copy' |
518 |
command. In contrast, a system based on mutable resources |
command. Different versions of a single document |
519 |
|
can coexist on the same system without naming conflicts, since |
520 |
|
each version will be stored in its own block with its own id. |
521 |
|
In contrast, a system based on mutable resources |
522 |
has to use more advanced schemes, for example merging the changes |
has to use more advanced schemes, for example merging the changes |
523 |
done to a document at A or B. (Merging is still be necessary |
done to a document at A or B. (Merging is still be necessary |
524 |
when a user wants to incorporate a set of changes, but not |
when a user wants to incorporate a set of changes, but not |
535 |
permanently downloaded to the local harddisk, it can be found |
permanently downloaded to the local harddisk, it can be found |
536 |
by a browser just as data from the network. This is convenient |
by a browser just as data from the network. This is convenient |
537 |
for offline browsing, for example in mobile environments: |
for offline browsing, for example in mobile environments: |
538 |
After a document has been downloaded, links to it will *never* |
After a block has been downloaded, references to it will *never* |
539 |
cease to work, online or offline. |
cease to work, online or offline. |
540 |
|
|
541 |
.. tried to think this a bit, as 'never' is always a strong word. |
.. tried to think this a bit, as 'never' is always a strong word. |
553 |
B1.1 does not make any sense when the user ends up in 1.0 instead?) |
B1.1 does not make any sense when the user ends up in 1.0 instead?) |
554 |
-- antont |
-- antont |
555 |
|
|
556 |
|
.. Changed to read 'block.' That blocks are immutable should be clear |
557 |
|
at this point ;-) -b |
558 |
|
|
559 |
Thirdly, immutable blocks increase *reliability*. |
Thirdly, immutable blocks increase *reliability*. |
560 |
When saving a document, an application will only *add* blocks, |
When saving a document, an application will only *add* blocks, |
561 |
never overwrite existing data. When a bug causes an application |
never overwrite existing data. When a bug causes an application |