Skip to content

Commit e271c9c

Browse files
committed
update README
Signed-off-by: Jeronimo Irazabal <[email protected]>
1 parent cc4f8d0 commit e271c9c

File tree

1 file changed

+5
-143
lines changed

1 file changed

+5
-143
lines changed

README.md

Lines changed: 5 additions & 143 deletions
Original file line numberDiff line numberDiff line change
@@ -95,12 +95,11 @@ immudb!](https://img.shields.io/twitter/url/http/shields.io.svg?style=social&lab
9595
4. [Migration from older releases](#migration-from-older-releases) - Easily migrate your existent database to latest release
9696
5. [News](#news) - The latest news about immudb
9797
6. [Tech specs](#tech-specs) - Technical details of the system in a nutshell
98-
7. [How immudb works](#how-immudb-works) - A high-level diagram of how immudb works
99-
8. [Real world examples](#real-world-examples) - Read about how others use immudb
100-
9. [Multiple databases](#multiple-databases) - Multiple databases
101-
10. [Documentation](#documentation) - Read the documentation
102-
11. [Community](#community) - Discuss immudb with others and get support
103-
12. [License](#license) - Check immudb's licencing
98+
7. [Real world examples](#real-world-examples) - Read about how others use immudb
99+
8. [Multiple databases](#multiple-databases) - Multiple databases
100+
9. [Documentation](#documentation) - Read the documentation
101+
10. [Community](#community) - Discuss immudb with others and get support
102+
11. [License](#license) - Check immudb's licencing
104103

105104
## Quickstart
106105

@@ -480,50 +479,6 @@ docker build -t myown/immuadmin:latest -f Dockerfile.immuadmin .
480479
docker build -t myown/immuclient:latest -f Dockerfile.immuclient .
481480
```
482481
483-
## Migration from older releases
484-
485-
As for release 0.8 of immudb, which includes multi-key insertions, key-value data needs to be univocally referenced by a monotonic increasing index i.e. internally referred as `ts`. Values are prefixed with the uniquely assigned `ts` value for the entry. Thus, databases created before release 0.8 needs to be migrated.
486-
Under tools folder you will find a simple migration tool which will format data according to the new structure.
487-
488-
### Building migration tool binary
489-
490-
Building migration tool binary is as simple as:
491-
492-
```
493-
go build tools/migration/migration_v0.8.go
494-
```
495-
496-
### How to use migration tool
497-
498-
```
499-
./migration_v0.8 --help
500-
```
501-
502-
```
503-
Usage of ./migration_v0.8:
504-
-sourceDataDir string
505-
immudb data directory to migrate e.g. ./data_v0.7 (default "data_v0.7")
506-
-targetDataDir string
507-
immudb data directory where migrated immudb databases will be stored e.g. ./data_v0.8 (default "data_v0.8")
508-
```
509-
510-
### Migrating existent databases
511-
512-
The migration tool builds new databases by doing a full scan of existent ones. While it's a read-only process for existent databases, doing a backup is always a safe recommendation.
513-
514-
```
515-
./migration_v0.8 -sourceDataDir ./data_v0.7 -targetDataDir ./data_v0.8
516-
517-
2 databases will be migrated
518-
519-
Started migration of data_v0.7/defaultdb to ./data_v0.8/defaultdb.................................................................................COMPLETED!
520-
521-
Started migration of data_v0.7/systemdb to ./data_v0.8/systemdb........COMPLETED!
522-
523-
All databases have been successfully migrated!
524-
```
525-
526-
527482
## News
528483
`August 21th, 2020` - **Updated and New SDKs!**
529484
@@ -536,7 +491,6 @@ SDKs for Java, Golang, .net, Python and Node are fully compatible with latest im
536491
5. Node.js [immudb-node](https://github.com/codenotary/immudb-node)
537492
538493
539-
540494
## Tech specs
541495
542496
| Topic | Description |
@@ -557,98 +511,6 @@ SDKs for Java, Golang, .net, Python and Node are fully compatible with latest im
557511
| High Write throughput | Yes |
558512
| Optimized for SSD | Yes |
559513
560-
## How immudb works
561-
562-
Download [immudb short research paper](https://codenotary.io/technologies/immudb/) to have a conceptual understanding of the technical foundations of immudb.
563-
564-
#### adding data
565-
566-
When adding data the merkle tree changes as well as shown in the diagram
567-
568-
![the merkle tree changes with every new data](img/immudb-adding-data-diagram.png)
569-
570-
#### checking data consistency
571-
572-
The following diagram explains how data is inserted, verified and consistency checked.
573-
574-
![How immudb data consistency works](img/immudb-consistency-diagram.png)
575-
576-
577-
#### Structured value
578-
579-
The messages structure allows callers to use key value pairs as embedded payload. Thus, it will soon be possible to decouple and extend
580-
the value structure. The value, currently a stream of bytes, can be augmented with some client provided metadata.
581-
This also permits use of an on-demand serialization/deserialization strategy.
582-
583-
The payload includes a timestamp and a value at the moment. In the near future cryptographic signatures will be added as well, but it's
584-
possible to decouple and extend. The entire payload contribute to hash generation and is inserted in
585-
the merkle tree.
586-
587-
All the complexity is hidden by the SDK.
588-
589-
#### Root signature
590-
591-
Providing `immudb` with a signing key enables the cryptographic root signature.
592-
In this way an auditor for instance or a third party client could verify the authenticity of the returned root hash / index pair after calling `currentRoot` gRPC method.
593-
Here the gRPC message definitions:
594-
```proto
595-
message Root {
596-
RootIndex payload = 1;
597-
Signature signature = 2;
598-
}
599-
600-
message RootIndex {
601-
uint64 index = 1;
602-
bytes root = 2;
603-
}
604-
605-
message Signature {
606-
bytes signature = 1;
607-
bytes publicKey = 2;
608-
}
609-
```
610-
It's possible to use the environment `IMMUDB_SIGNING_KEY` or `--signingKey` immudb flag.
611-
612-
To generate a valid key it's possible to use `openssl` tool:
613-
```.bash
614-
openssl ecparam -name prime256v1 -genkey -noout -out my.key
615-
```
616-
Immuclient and [immugw](https://github.com/codenotary/immugw) are shipped with auditor capabilities.
617-
To obtain the advantages of using the signed root in combination with the auditor it's possible to launch:
618-
* immuclient with auditor capabilities:
619-
```bash
620-
immuclient audit-mode --audit-username {immudb-username} --audit-password {immudb-pw} --audit-signature validate
621-
```
622-
* with [immugw](https://github.com/codenotary/immugw) with auditor capabilities:
623-
```bash
624-
./immugw --audit --audit-username {immudb-username} --audit-password {immudb-pw} --audit-signature validate
625-
```
626-
627-
#### Item References
628-
629-
Enables the insertion of a special entry which references to another item
630-
631-
#### Value timestamp
632-
633-
The server should not set the timestamp, to avoid relying on a non-verifiable “single source of truth”.
634-
Thus, the clients must provide it. The client driver implementation can automatically do that for the user.
635-
636-
#### Primary Index
637-
638-
Index enables queries and search based on the data key
639-
640-
#### Secondary Index
641-
642-
Index enables queries and search based on the data value
643-
644-
#### Cryptographic signatures
645-
646-
A signature (PKI) provided by the client can be became part of the insertion process
647-
648-
#### Authentication (transport)
649-
650-
Integrated mTLS offers the best approach for machine-to-machine authentication, also providing communications security (entryption) over the transport channel
651-
652514
## Real world examples
653515
654516
We already learned about the following use cases from users:

0 commit comments

Comments
 (0)