1 |
|
========================= |
2 |
Storm - permanent storage |
Storm - permanent storage |
3 |
|
========================= |
4 |
|
|
5 |
|
|
6 |
|
The Storm (STORage Module) library provides an alternative |
7 |
|
to traditional file-based storage. Storm stores data |
8 |
|
in *blocks*. A block is like a file but it cannot be changed, |
9 |
|
and instead of a file name it is identified by a |
10 |
|
cryptographic content hash, like this:: |
11 |
|
|
12 |
|
nkownd7c3yvtk2ll7b3c7m2abg25etb3.3ghrsnouwddhjm4uh6vv4qk6yvdaw46o2jvsmxq |
13 |
|
|
14 |
|
A content hash is a number computed from the content |
15 |
|
of a block. In practice it's impossible to find two blocks |
16 |
|
with the same hash (as long as the algorithm isn't broken). |
17 |
|
|
18 |
|
Don't worry about the 'cannot be changed' part. You can create |
19 |
|
a *reference* that can point to different blocks over time. |
20 |
|
(However, while we used to have an implementation of this, |
21 |
|
this is unimplemented currently; stay tuned.) |
22 |
|
|
23 |
|
Here are a few reasons why you would want to use this |
24 |
|
instead of files: |
25 |
|
|
26 |
|
- When you make a new version of something, the old one |
27 |
|
doesn't get overwritten. The new version has a new |
28 |
|
'name' (content hash). |
29 |
|
- You can check whether the content of a block matches |
30 |
|
its id. If you download a block from somewhere, you |
31 |
|
can check you got the correct data. |
32 |
|
- Thus, it doesn't matter where you find a block. No matter |
33 |
|
if it's on your harddisk, sent to you by e-mail, stored |
34 |
|
in your Web cache, or downloaded from the Web. |
35 |
|
- You don't have to store a block twice, even if you |
36 |
|
use it in different places. For example, an image used |
37 |
|
in many different documents would only need to be |
38 |
|
stored once. |
39 |
|
- Network transparency: When you have a block locally, |
40 |
|
your computer can use it; when you don't, your computer |
41 |
|
can go find it on the 'net. (Or on another one of your |
42 |
|
machines, if the computer you're currently using |
43 |
|
is connected to them.) |
44 |
|
- When you're offline, any blocks stored on your computer-- |
45 |
|
or a computer connected to it-- can be used just as if |
46 |
|
you were online. |
47 |
|
|
48 |
|
We are building a P2P system that allows you to find and |
49 |
|
download a block if *anybody* on the 'net publishes it. |
50 |
|
So when the original site is down, or the content |
51 |
|
was removed from it, you can still download |
52 |
|
|
53 |
Storm (STORage Module) system provides a permanent data store. Data is |
Don't worry that accidentally, there may be two *different* |
54 |
stored in immutable blocks, which can be retrieved by an identifier based |
blocks with the *same* hash floating around on the Internet. |
55 |
on the content of the block. Unlike files, blocks don't have names and their |
In theory it *could* happen. In practice, the number of |
56 |
location doesn't affect their identity. |
possible hashes is about an octillion times larger than the |
57 |
|
estimated number of atoms in the universe. We suggest that |
58 |
|
you worry about something more likely instead, like, say, |
59 |
|
the destruction of Earth through an asteroid ;-) |
60 |
|
|
61 |
Storm software can: |
Storm software can: |
62 |
- import files as Storm blocks |
- import files as Storm blocks |