You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by ib...@apache.org on 2022/09/02 14:48:07 UTC
[ignite-3] branch main updated: IGNITE-15375 Added README.md for Vault (#386)
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 <al...@gmail.com>
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).