This is an automated email from the ASF dual-hosted git repository.
ibessonov pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/ignite-3.git
The following commit(s) were added to refs/heads/main by this push:
new bf81987232 IGNITE-15375 Added README.md for Vault (#386)
bf81987232 is described below
commit bf8198723288753af2180492f361c5f13e8bed42
Author: Mirza Aliev <[email protected]>
AuthorDate: Fri Sep 2 17:48:02 2022 +0300
IGNITE-15375 Added README.md for Vault (#386)
---
modules/README.md | 1 +
modules/vault/README.md | 34 +++++++++++++++++++++++++++++++++-
2 files changed, 34 insertions(+), 1 deletion(-)
diff --git a/modules/README.md b/modules/README.md
index 7201ca4893..5a3d314d3f 100644
--- a/modules/README.md
+++ b/modules/README.md
@@ -24,3 +24,4 @@ Module Name | Description
[runner](runner/README.md)|Ignite server node runner. The module that wires up
the Ignite components and handles node lifecycle.
[schema](schema/README.md)|Ignite schema API implementation and schema
management classes.
[table](table/README.md)|Ignite table API implementation.
+[vault](vault/README.md)|Ignite local persistent key-value storage.
diff --git a/modules/vault/README.md b/modules/vault/README.md
index 3ee0b015d1..28f537dae5 100644
--- a/modules/vault/README.md
+++ b/modules/vault/README.md
@@ -1,4 +1,36 @@
# Ignite vault module
This module provides Vault API implementation.
-Note: will be filled later
+Vault is the local persistent key-value storage where node maintains its local
state. The data stored in the vault is
+semantically divided in the following categories:
+* User-level local configuration properties (such as memory limits, network
timeouts, etc). User-level configuration
+ properties can be written both at runtime (not all properties will be
applied at runtime, however, - some of them will
+ require a full node restart) and when a node is shut down (in order to be
able to change properties that prevent node
+ startup for some reason)
+* System-level private properties (such as computed local statistics,
node-local common paths, etc). System-level
+ private properties are computed locally based on the information available
at node locally (not based on metastorage
+ watched values)
+* System-level distributed metastorage projected properties (such as paths to
partition files, etc). System-level
+ projected properties are associated with one or more metastorage properties
and are computed based on the local node
+ state and the metastorage properties values. System-level projected
properties values are semantically bound to a
+ particular revision of the dependee properties and must be recalculated when
dependees are changed (see
+ [reliable watch processing](../runner/README.md#reliable-watch-processing)).
+
+The main components of the module are the following:
+* [VaultEntry](src/main/java/org/apache/ignite/internal/vault/VaultEntry.java)
is the vault unit as entry with comparable key represented as a
[ByteArray](../core/src/main/java/org/apache/ignite/lang/ByteArray.java) and
value represented as an array of bytes.
+*
[VaultService](src/main/java/org/apache/ignite/internal/vault/VaultService.java)
defines interface for accessing to a vault service.
+ There are standard methods for working with keys and values like get
[VaultEntry](src/main/java/org/apache/ignite/internal/vault/VaultEntry.java) by
key,
+ put value with key to vault, remove value with a key from vault, putAll
method that inserts or updates entries with given keys and given values.
+ Also there is a range method that returns a view of the portion of vault
whose keys range from fromKey, inclusive, to toKey, exclusive.
+*
[VaultManager](src/main/java/org/apache/ignite/internal/vault/VaultManager.java)
is responsible for handling
[VaultService](src/main/java/org/apache/ignite/internal/vault/VaultService.java)
+ lifecycle and providing interface for managing local keys.
+
+There are two implementations of
[VaultService](src/main/java/org/apache/ignite/internal/vault/VaultService.java):
+[InMemoryVaultService](src/test/java/org/apache/ignite/internal/vault/inmemory/InMemoryVaultService.java)
and
+[PersistentVaultService](src/main/java/org/apache/ignite/internal/vault/persistence/PersistentVaultService.java).
+The first one is the in-memory implementation of
[VaultService](src/main/java/org/apache/ignite/internal/vault/VaultService.java)
+and mostly used for testing purposes.
+
+The second one is
[VaultService](src/main/java/org/apache/ignite/internal/vault/VaultService.java)
implementation based on [RocksDB](https://github.com/facebook/rocksdb).
+[RocksDB](https://github.com/facebook/rocksdb) is a storage engine with
key/value interface, where keys and values are arbitrary byte streams.
+For more info about RocksDB see corresponding
[wiki](https://github.com/facebook/rocksdb/wiki).