You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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.
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
-
527
482
## News
528
483
`August 21th, 2020` - **Updated and New SDKs!**
529
484
@@ -536,7 +491,6 @@ SDKs for Java, Golang, .net, Python and Node are fully compatible with latest im
@@ -557,98 +511,6 @@ SDKs for Java, Golang, .net, Python and Node are fully compatible with latest im
557
511
| High Write throughput | Yes |
558
512
| Optimized for SSD | Yes |
559
513
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
-

569
-
570
-
#### checking data consistency
571
-
572
-
The following diagram explains how data is inserted, verified and consistency checked.
573
-
574
-

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:
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
-
652
514
## Real world examples
653
515
654
516
We already learned about the following use cases from users:
0 commit comments