feature: initial commit
This commit is contained in:
commit
ce024ba87a
17 changed files with 1141 additions and 0 deletions
75
README.md
Normal file
75
README.md
Normal file
|
@ -0,0 +1,75 @@
|
|||
# Disk Storage System
|
||||
|
||||
We use the disk instead of a database to reduce complexity. We leave the hard
|
||||
optimization to the filesystem layer.
|
||||
|
||||
## API
|
||||
|
||||
`collection.create(T)` - creates an object of type T, saving it to the disk
|
||||
`collection.get(id) : T` - gets an object of type T based on the id field configured
|
||||
`collection.update(T)` - updates an object of type T, saving it to the disk
|
||||
`collection.delete(T)` - removes an object from the system and the disk
|
||||
`collection.find(criteria)` - find all objects that match the criteria *that have an index*
|
||||
|
||||
## CLI
|
||||
|
||||
```
|
||||
[you@machine:~/] fsdb users create '{
|
||||
"id": "able-fish-door-with-star-snow-idea-edge-salt-many",
|
||||
"email": "commandlinetestuser@domain.com",
|
||||
"phone": "213-555-1234",
|
||||
"value": "By the way a horse is a lemon from the right perspective."
|
||||
}'
|
||||
created: {
|
||||
"id": "able-fish-door-with-star-snow-idea-edge-salt-many",
|
||||
"email": "commandlinetestuser@domain.com",
|
||||
"phone": "213-555-1234",
|
||||
"value": "By the way a horse is a lemon from the right perspective."
|
||||
}
|
||||
|
||||
[you@machine:~/] fsdb users update '{
|
||||
"id": "able-fish-door-with-star-snow-idea-edge-salt-many",
|
||||
"email": "commandlinetestuser@domain.com",
|
||||
"phone": "213-555-1234",
|
||||
"value": "By the way a horse is a lemon from the right angle."
|
||||
}'
|
||||
updated: {
|
||||
"id": "able-fish-door-with-star-snow-idea-edge-salt-many",
|
||||
"email": "commandlinetestuser@domain.com",
|
||||
"phone": "213-555-1234",
|
||||
"value": "By the way a horse is a lemon from the right angle."
|
||||
}
|
||||
|
||||
[you@machine:~/] fsdb users get able-fish-door-with-star-snow-idea-edge-salt-many
|
||||
{
|
||||
"id": "able-fish-door-with-star-snow-idea-edge-salt-many",
|
||||
"email": "commandlinetestuser@domain.com",
|
||||
"phone": "213-555-1234",
|
||||
"value": "By the way a horse is a lemon from the right angle."
|
||||
}
|
||||
|
||||
[you@machine:~/] fsdb users delete '{
|
||||
"id": "able-fish-door-with-star-snow-idea-edge-salt-many",
|
||||
"email": "commandlinetestuser@domain.com",
|
||||
"phone": "213-555-1234",
|
||||
"value": "By the way a horse is a lemon from the right angle."
|
||||
}'
|
||||
deleted: {
|
||||
"id": "able-fish-door-with-star-snow-idea-edge-salt-many",
|
||||
"email": "commandlinetestuser@domain.com",
|
||||
"phone": "213-555-1234",
|
||||
"value": "By the way a horse is a lemon from the right angle."
|
||||
}
|
||||
```
|
||||
|
||||
## Indexers
|
||||
|
||||
### Symlinks
|
||||
|
||||
We create symlinks on the disk to help find objects more quickly and to allow
|
||||
for browsing the data as a human.
|
||||
|
||||
### SQLite
|
||||
|
||||
TODO: index everything into a sqlite setup as well? would give a way to run
|
||||
SQL against data still stored on disk in a nicely human browsable format.
|
Loading…
Add table
Add a link
Reference in a new issue