Просмотр исходного кода

Merge pull request #1 from synrc/master

p r
Taras 5 лет назад
Родитель
Сommit
8a5dbb7d9f
16 измененных файлов с 163 добавлено и 1180 удалено
  1. 1 0
      README.md
  2. 31 60
      index.html
  3. 0 134
      index.ua.html
  4. 29 52
      man/kvs.htm
  5. 22 36
      man/kvs_fs.htm
  6. 23 36
      man/kvs_mnesia.htm
  7. 18 34
      man/kvs_rocks.htm
  8. 17 29
      man/kvs_st.htm
  9. 22 49
      man/kvs_stream.htm
  10. 0 230
      man/ua/KVX_new_version.htm
  11. 0 158
      man/ua/kvs.htm
  12. 0 46
      man/ua/kvs_fs.htm
  13. 0 48
      man/ua/kvs_mnesia.htm
  14. 0 50
      man/ua/kvs_rocks.htm
  15. 0 45
      man/ua/kvs_st.htm
  16. 0 173
      man/ua/kvs_stream.htm

+ 1 - 0
README.md

@@ -1,6 +1,7 @@
 KVS: Abstract Chain Database
 ============================
 [![Build Status](https://travis-ci.org/synrc/kvs.svg?branch=master)](https://travis-ci.org/synrc/kvs)
+[![Hex pm](http://img.shields.io/hexpm/v/kvs.svg?style=flat)](https://hex.pm/packages/kvs)
 
 Features
 --------

+ 31 - 60
index.html

@@ -1,70 +1,50 @@
-<!DOCTYPE html>
-<html>
-<head>
-    <meta charset="utf-8" />
-    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="description" content="" />
-    <meta name="author" content="Maxim Sokhatsky" />
-    <title>KVS</title>
-    <link rel="stylesheet" href="https://synrc.space/synrc.css?v=2" />
-</head>
-<body>
-<nav>
-    <a href='https://n2o.dev'>DEV</a>
-    <a href='https://kvs.n2o.space' style="background:#ededed;">KVS</a>
-</nav>
-<header>
-    <a href="https://github.com/synrc/kvs"><img src="https://synrc.space/images/Synrc Neo.svg?v=1"></a>
+<!DOCTYPE html><html><head><meta charset="utf-8" />
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="viewport" content="width=device-width, initial-scale=1.0" />
+<meta name="description" content="" /><meta name="author" content="Maxim Sokhatsky" />
+<title>KVS</title>
+<link rel="stylesheet" href="https://n2o.dev/blank.css" />
+<link rel="stylesheet" href="https://n2o.dev/zima.css" />
+</head><body><nav>
+    <a href="https://n2o.dev">DEV</a>
+    <a href="https://kvs.n2o.space" style="background:#ededed;">KVS</a>
+    <a href="https://n2o.dev/deps/kvs/man/ua/index.html">UA</a>
+    <a href="index.html" style="background:#ededed;">EN</a>
+</nav><header>
+    <a href="https://github.com/synrc/kvs"><img src="https://synrc.space/images/Synrc Neo.svg?v=1" /></a>
     <h1>KVS</h1>
-</header>
-<aside>
+</header><aside>
     <article>
         <section>
             <h3>SYNOPSIS</h3>
             <div>KVS is the light version of client interface on top of BTREE database
                  abstractions strive to support the basic features: </div>
             <div>
-                 <ul>
-                 <li>Polymorphic tuples aka extensible records;</li>
-                 <li>Basic schema for chain storage;</li>
-                 <li>Backends: MNESIA, FS, ROCKS;</li>
-                 <li>Extremely compact and battle-tested: 500 LOC.</li>
-                 </ul>
+                 <ul><li>Polymorphic tuples aka extensible records;</li><li>Basic schema for chain storage;</li><li>Backends: MNESIA, FS, ROCKS;</li><li>Extremely compact and battle-tested: 500 LOC.</li></ul>
             </div>
             <div>This is an essence and fruit of KVS; the abstract term interface
                  with naive yet productive stream implementation. Useful for simple
                  blockchains, messaging, storage, processing systems, and banking industry.
-                 KVS is used in BPE and BANK applications.</div>
+                 KVS is used in BPE and BANK applications.</div><br/>
+        <figure>
+        <code> $ mad get kvs &#38;&#38; cd kvs
+ $ mad com pla rep
+ > kvs:join().</code>
+        </figure>
         </section>
         <section>
             <h3>MODULES</h3>
-            <div><ul>
-           <li><a href="man/kvs.htm">KVS</a></font></li>
-           <li><a href="man/kvs_stream.htm">STREAM</a></font></li>
-           <li><a href="man/kvs_fs.htm">FS</a></font></li>
-           <li><a href="man/kvs_mnesia.htm">MNESIA</a></font></li>
-           <li><a href="man/kvs_rocks.htm">ROCKS</a></font></li>
-           <li><a href="man/kvs_st.htm">ST</a></font></li>
-            </ul></div>
-            <br>
+            <div><ul><li><a href="man/kvs.htm">KVS</a></li><li><a href="man/kvs_stream.htm">STREAM</a></li><li><a href="man/kvs_fs.htm">FS</a></li><li><a href="man/kvs_mnesia.htm">MNESIA</a></li><li><a href="man/kvs_rocks.htm">ROCKS</a></li><li><a href="man/kvs_st.htm">ST</a></li></ul></div>
+            <br />
             <div>
-                APR 2019 &copy; <a href="https://github.com/5HT">5HT</a> ISC<br>
+                APR 2019 © <a href="https://github.com/5HT">5HT</a> ISC<br />
                 VER 6.6 6.5 6.4
             </div>
         </section>
         <section>
-        <figure>
-        <code>
- $ mad get kvs && cd kvs
- $ mad com pla rep
- > kvs:join().
-        </code>
-        </figure>
         </section>
     </article>
-</aside>
-<main>
+</aside><main>
     <section>
 
 <h3>SESSION</h3>
@@ -114,20 +94,11 @@
     </section>
 
     <section>
-        <a name=plugin><h3>CONTRIBUTORS</h3></a>
+        <a name="plugin"></a><h3>CONTRIBUTORS</h3>
         <div>
-        <ul>
-           <li><a href="https://github.com/5HT">5HT</a> &mdash; Namdak Tonpa</li>
-           <li><a href="https://github.com/proger">proger</a> &mdash; Vlad Ki</li>
-           <li><a href="https://github.com/doxtop">doxtop</a> &mdash; Andrii Zadorozhnii</li>
-           <li><a href="https://github.com/cryoflamer">cryoflamer</a> &mdash; Yuri Maslovsky</li>
-           <li><a href="https://github.com/qomputer">qomputer</a> &mdash; Igor Kharin</li>
-        </ul></div>
-        <br><br>
+        <ul><li><a href="https://github.com/5HT">5HT</a> — Namdak Tonpa</li><li><a href="https://github.com/proger">proger</a> — Vlad Ki</li><li><a href="https://github.com/doxtop">doxtop</a> — Andrii Zadorozhnii</li><li><a href="https://github.com/cryoflamer">cryoflamer</a> — Yuri Maslovsky</li><li><a href="https://github.com/qomputer">qomputer</a> — Igor Kharin</li></ul></div>
+        <br /><br />
     </section>
-</main>
-<footer>
+</main><footer>
     Made with <span class="heart">❤</span> to N2O
-</footer>
-</body>
-</html>
+</footer></body></html>

+ 0 - 134
index.ua.html

@@ -1,134 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-    <meta charset="utf-8" />
-    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="description" content="" />
-    <meta name="author" content="Maxim Sokhatsky" />
-    <title>KVS</title>
-    <link rel="stylesheet" href="https://synrc.space/synrc.css?v=2" />
-</head>
-<body>
-<nav>
-    <a href='https://n2o.dev'>DEV</a>
-    <a href='https://kvs.n2o.space' style="background:#ededed;">KVS</a>
-</nav>
-<header>
-    <a href="https://github.com/synrc/kvs"><img src="https://synrc.space/images/Synrc Neo.svg?v=1"></a>
-    <h1>KVS</h1>
-</header>
-<aside>
-    <article>
-        <section>
-            <h3>СИНОПИС</h3>
-            <div>KVS — це легкий клієнтський інтерфейс над
-                 абстракціями BTREE бази даних, який підтримує основні можливості: </div>
-            <div>
-                 <ul>
-                 <li>Поліморфні кортежі, як розширювані записи;</li>
-                 <li>Основна схема для сховища ланцюжків;</li>
-                 <li>Бекенди: MNESIA, FS, ROCKS;</li>
-                 <li>Надзвичайно компактний та перевірений код: 500 LOC.</li>
-                 </ul>
-            </div>
-            <div>Це суть і серце KVS — інтерфейс абстрактних виразів
-                 з наївною, та продуктивною реалізацією потоків.
-                 Підходить для систем повідомлень, простих блокчейнів,
-                 систем обробки, зберігання даних, та банківської галузі.
-                 KVS використовується в BPE та BANK додатках.</div>
-        </section>
-        <section>
-            <h3>МОДУЛІ</h3>
-            <div><ul>
-           <li><a href="man/ua/kvs.htm">KVS</a></font></li>
-           <li><a href="man/ua/kvs_stream.htm">STREAM</a></font></li>
-           <li><a href="man/ua/kvs_fs.htm">FS</a></font></li>
-           <li><a href="man/ua/kvs_mnesia.htm">MNESIA</a></font></li>
-           <li><a href="man/ua/kvs_rocks.htm">ROCKS</a></font></li>
-           <li><a href="man/ua/kvs_st.htm">ST</a></font></li>
-            </ul></div>
-            <br>
-            <div>
-                APR 2019 &copy; <a href="https://github.com/5HT">5HT</a> ISC<br>
-                VER 6.6 6.5 6.4
-            </div>
-        </section>
-        <section>
-        <figure>
-        <code>
- $ mad get kvs && cd kvs
- $ mad com pla rep
- > kvs:join().
-        </code>
-        </figure>
-        </section>
-    </article>
-</aside>
-<main>
-    <section>
-
-<h3>ПРИКЛАД ВИКОРИСТАННЯ</h3>
-
-<figure><code>
- > kvs:join().
- ok
-
- > kvs:check().
- ok
-
- > kvs:all(reader).
- [{reader,1555175169121817000,0,[],[],
-          {list,1555175169120161000},
-          0},
-  {reader,1555175169121249000,0,[],[],
-          {list,1555175169120161000},
-          0}]
-
- > rr(kvs).
- [emails,id_seq,iter,kvs,reader,schema,table,writer]
-
- > kvs:save(kvs:reader({list,1555175169120161000})).
- #reader{id = 1555175244188986000,pos = 0,
-         cache = {emails,1555175169122304000},
-         args = [],
-         feed = {list,1555175169120161000},
-         dir = 0}
-
- > kvs:take(kvs:bot((kvs:load_reader(1555175244188986000))#reader{args=-1})).
- #reader{id = 1555175244188986000,pos = 5,
-         cache = {emails,1555175169127279000},
-         args = [#emails{id = 1555175169127279000,next = [],
-                         prev = 1555175169126314000,email = []},
-                 #emails{id = 1555175169126314000,next = 1555175169127279000,
-                         prev = 1555175169125227000,email = []},
-                 #emails{id = 1555175169125227000,next = 1555175169126314000,
-                         prev = 1555175169123405000,email = []},
-                 #emails{id = 1555175169123405000,next = 1555175169125227000,
-                         prev = 1555175169122304000,email = []},
-                 #emails{id = 1555175169122304000,next = 1555175169123405000,
-                         prev = [],email = []}],
-         feed = {list,1555175169120161000},
-         dir = 0}
-
-</code></figure>
-    </section>
-
-    <section>
-        <a name=plugin><h3>CONTRIBUTORS</h3></a>
-        <div>
-        <ul>
-           <li><a href="https://github.com/5HT">5HT</a> &mdash; Namdak Tonpa</li>
-           <li><a href="https://github.com/proger">proger</a> &mdash; Vlad Ki</li>
-           <li><a href="https://github.com/doxtop">doxtop</a> &mdash; Andrii Zadorozhnii</li>
-           <li><a href="https://github.com/cryoflamer">cryoflamer</a> &mdash; Yuri Maslovsky</li>
-           <li><a href="https://github.com/qomputer">qomputer</a> &mdash; Igor Kharin</li>
-        </ul></div>
-        <br><br>
-    </section>
-</main>
-<footer>
-    Made with <span class="heart">❤</span> to N2O
-</footer>
-</body>
-</html>

+ 29 - 52
man/kvs.htm

@@ -1,29 +1,20 @@
-<!DOCTYPE html>
-<html>
-<head>
-    <meta charset="utf-8" />
-    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="description" content="" />
-    <meta name="author" content="Maxim Sokhatsky" />
-    <title>KVS</title>
-    <link rel="stylesheet" href="https://synrc.space/synrc.css" />
-</head>
-
-<body>
-
-<nav>
-    <a href='https://n2o.dev'>DEV</a>
-    <a href='https://kvx.n2o.space'>KVS</a>
-    <a href='#' style="background:#ededed;">KVS</a>
-</nav>
-
-<header>
-    <a href="../index.html"><img src="https://n2o.space/img/Synrc Neo.svg"></a>
+<!DOCTYPE html><html><head><meta charset="utf-8" />
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="viewport" content="width=device-width, initial-scale=1.0" />
+<meta name="description" content="" /><meta name="author" content="Maxim Sokhatsky" />
+<title>KVS</title>
+<link rel="stylesheet" href="https://n2o.dev/blank.css" />
+<link rel="stylesheet" href="https://n2o.dev/zima.css" />
+</head><body><nav>
+    <a href="https://n2o.dev">DEV</a>
+    <a href="https://kvs.n2o.space">KVS</a>
+    <a href="#" style="background:#ededed;">KVS</a>
+    <a href="https://n2o.dev/deps/kvs/man/ua/kvs.htm">UA</a>
+    <a href="#" style="background:#ededed;">EN</a>
+</nav><header>
+    <a href="../index.html"><img src="https://n2o.space/img/Synrc Neo.svg" /></a>
     <h1>KVS</h1>
-</header>
-
-<main>
+</header><main>
     <section>
 
 <h3>INTRO</h3>
@@ -32,16 +23,7 @@
       It has discovery, data manipulation and retrival features. Under the hood
       it handles configurable run-time backends for each supported database.</p>
 
-        <p><blockquote><p><ul>
-            <li><b><a href="#dir">dir/0</a></b> &mdash; table list.</li>
-            <li><b><a href="#ver">ver/0</a></b> &mdash; KVS version.</li>
-            <li><b><a href="#seq">seq/2</a></b> &mdash; generate new sequence table id.</li>
-            <li><b><a href="#count">count/1</a></b> &mdash; counts records in table.</li>
-            <li><b><a href="#put">put/1</a></b> &mdash; put record using id as a key.</li>
-            <li><b><a href="#get">get/2</a></b> &mdash; get record by key from table.</li>
-            <li><b><a href="#delete">delete/1</a></b> &mdash; delete record from table.</li>
-            <li><b><a href="#index">index/3</a></b> &mdash; search records by field and its value.</li>
-        </ul></p></blockquote></p>
+        <p></p><blockquote><p></p><ul><li><b><a href="#dir">dir/0</a></b> — table list.</li><li><b><a href="#ver">ver/0</a></b> — KVS version.</li><li><b><a href="#seq">seq/2</a></b> — generate new sequence table id.</li><li><b><a href="#count">count/1</a></b> — counts records in table.</li><li><b><a href="#put">put/1</a></b> — put record using id as a key.</li><li><b><a href="#get">get/2</a></b> — get record by key from table.</li><li><b><a href="#delete">delete/1</a></b> — delete record from table.</li><li><b><a href="#index">index/3</a></b> — search records by field and its value.</li></ul></blockquote>
 
  <p>You can change backend by setting application env.
     This behaves well even under the heavy load.</p>
@@ -51,12 +33,12 @@
 
 <h3>SETUP</h3>
 
-<p>In sys.config you should specify kvx backend and list of modules
+<p>In sys.config you should specify kvs backend and list of modules
    containing <b>metainfo/0</b> exported function.</p>
 
 <figure><code>
-  [{kvx, [{dba,store_mnesia},
-          {schema,[kvx,kvx_stream]}]}].
+  [{kvs, [{dba,store_mnesia},
+          {schema,[kvs,kvs_stream]}]}].
 
 </code></figure>
 
@@ -73,7 +55,7 @@
 <p>Display database information.</p>
 
 <figure><code>
- > kvx:dump().
+ > kvs:dump().
                 NAME                     STORAGE TYPE    MEMORY (MB)   ELEMENTS
 
               id_seq                      disc_copies           0.00          0
@@ -141,18 +123,13 @@
     <section>
 
 <p>This module may refer to:
-<a href="kvx_fs.htm"><b>kvx_fs</b></a>,
-<a href="kvx_mnesia.htm"><b>kvx_mnesia</b></a>,
-<a href="kvx_rocks.htm"><b>kvx_rocks</b></a>,
-<a href="kvx_st.htm"><b>kvx_st</b></a>,
-<a href="kvx_stream.htm"><b>kvx_stream</b></a>.
+<a href="kvs_fs.htm"><b>kvs_fs</b></a>,
+<a href="kvs_mnesia.htm"><b>kvs_mnesia</b></a>,
+<a href="kvs_rocks.htm"><b>kvs_rocks</b></a>,
+<a href="kvs_st.htm"><b>kvs_st</b></a>,
+<a href="kvs_stream.htm"><b>kvs_stream</b></a>.
 </p>
     </section>
-</main>
-
-<footer>
-    2005&mdash;2019 &copy; Synrc Research Center
-</footer>
-
-</body>
-</html>
+</main><footer>
+    2005—2019 © Synrc Research Center
+</footer></body></html>

+ 22 - 36
man/kvs_fs.htm

@@ -1,46 +1,32 @@
-<!DOCTYPE html>
-<html>
-<head>
-    <meta charset="utf-8" />
-    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="description" content="" />
-    <meta name="author" content="Maxim Sokhatsky" />
-    <title>FS</title>
-    <link rel="stylesheet" href="https://synrc.space/synrc.css" />
-</head>
-
-<body>
-
-<nav>
-    <a href='https://n2o.dev'>DEV</a>
-    <a href='https://kvx.n2o.space'>KVS</a>
-    <a href='#' style="background:#ededed;">FS</a>
-</nav>
-
-<header>
-    <a href="../index.html"><img src="https://n2o.space/img/Synrc Neo.svg"></a>
+<!DOCTYPE html><html><head><meta charset="utf-8" />
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="viewport" content="width=device-width, initial-scale=1.0" />
+<meta name="description" content="" /><meta name="author" content="Maxim Sokhatsky" />
+<title>FS</title>
+<link rel="stylesheet" href="https://n2o.dev/blank.css" />
+<link rel="stylesheet" href="https://n2o.dev/zima.css" />
+</head><body><nav>
+    <a href="https://n2o.dev">DEV</a>
+    <a href="https://kvs.n2o.space">KVS</a>
+    <a href="#" style="background:#ededed;">FS</a>
+    <a href="https://n2o.dev/deps/kvs/man/ua/kvs_fs.htm">UA</a>
+    <a href="#" style="background:#ededed;">EN</a>
+</nav><header>
+    <a href="../index.html"><img src="https://n2o.space/img/Synrc Neo.svg" /></a>
     <h1>FS</h1>
-</header>
-
-<main>
+</header><main>
    <section>
    <h3>INTRO</h3>
    <p>FS is a <b>filesystem</b> backend implementation for KVS.
-      Put the {dba,kvx_fs} property for the kvx application in your sys.config.</p>
-   <br>
+      Put the {dba,kvs_fs} property for the kvs application in your sys.config.</p>
+   <br />
    </section>
     <section>
 <p>This module may refer to:
-<a href="kvx.htm"><b>kvx</b></a>.
+<a href="kvs.htm"><b>kvs</b></a>.
 </p>
 
     </section>
-</main>
-
-<footer>
-    2005&mdash;2019 &copy; Synrc Research Center
-</footer>
-
-</body>
-</html>
+</main><footer>
+    2005—2019 © Synrc Research Center
+</footer></body></html>

+ 23 - 36
man/kvs_mnesia.htm

@@ -1,48 +1,35 @@
-<!DOCTYPE html>
-<html>
-<head>
-    <meta charset="utf-8" />
-    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="description" content="" />
-    <meta name="author" content="Maxim Sokhatsky" />
-    <title>MNESIA</title>
-    <link rel="stylesheet" href="https://synrc.space/synrc.css" />
-</head>
-
-<body>
-
-<nav>
-    <a href='https://n2o.dev'>DEV</a>
-    <a href='https://kvx.n2o.space'>KVS</a>
-    <a href='#' style="background:#ededed;">MNESIA</a>
-</nav>
-
-<header>
-    <a href="../index.html"><img src="https://n2o.space/img/Synrc Neo.svg"></a>
+<!DOCTYPE html><html><head><meta charset="utf-8" />
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="viewport" content="width=device-width, initial-scale=1.0" />
+<meta name="description" content="" />
+<meta name="author" content="Maxim Sokhatsky" />
+<title>MNESIA</title>
+<link rel="stylesheet" href="https://n2o.dev/blank.css" />
+<link rel="stylesheet" href="https://n2o.dev/zima.css" />
+</head><body><nav>
+    <a href="https://n2o.dev">DEV</a>
+    <a href="https://kvs.n2o.space">KVS</a>
+    <a href="#" style="background:#ededed;">MNESIA</a>
+    <a href="https://n2o.dev/deps/kvs/man/ua/kvs_mnesia.htm">UA</a>
+    <a href="#" style="background:#ededed;">EN</a>
+</nav><header>
+    <a href="../index.html"><img src="https://n2o.space/img/Synrc Neo.svg" /></a>
     <h1>MNESIA</h1>
-</header>
-
-<main>
+</header><main>
    <article>
    <section>
    <h3>INTRO</h3>
    <p>MNESIA is a <b>mnesia</b> backend imlpementation for KVS.
-      Put the {dba,kvx_mnesia} property for the kvx application in your sys.config.</p>
-   <br>
+      Put the {dba,kvs_mnesia} property for the kvs application in your sys.config.</p>
+   <br />
    </section>
     <section>
 <p>This module may refer to:
-<a href="kvx.htm"><b>kvx</b></a>.
+<a href="kvs.htm"><b>kvs</b></a>.
 </p>
 
     </section>
    </article>
-</main>
-
-<footer>
-    2005&mdash;2019 &copy; Synrc Research Center
-</footer>
-
-</body>
-</html>
+</main><footer>
+    2005—2019 © Synrc Research Center
+</footer></body></html>

+ 18 - 34
man/kvs_rocks.htm

@@ -1,36 +1,25 @@
-<!DOCTYPE html>
-<html>
-<head>
-    <meta charset="utf-8" />
-    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="description" content="" />
-    <meta name="author" content="Maxim Sokhatsky" />
-    <title>ROCKS</title>
-    <link rel="stylesheet" href="https://synrc.space/synrc.css" />
-</head>
-
-<body>
-
-<nav>
-    <a href='https://n2o.dev'>DEV</a>
-    <a href='https://kvs.n2o.space'>KVS</a>
-    <a href='#' style="background:#ededed;">ROCKS</a>
-</nav>
-
-<header>
-    <a href="../index.html"><img src="https://n2o.space/img/Synrc Neo.svg"></a>
+<!DOCTYPE html><html><head><meta charset="utf-8" /><meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="description" content="" />
+<meta name="author" content="Maxim Sokhatsky" /><title>ROCKS</title>
+<link rel="stylesheet" href="https://n2o.dev/blank.css" />
+<link rel="stylesheet" href="https://n2o.dev/zima.css" />
+</head><body><nav>
+    <a href="https://n2o.dev">DEV</a>
+    <a href="https://kvs.n2o.space">KVS</a>
+    <a href="#" style="background:#ededed;">ROCKS</a>
+    <a href="https://n2o.dev/deps/kvs/man/ua/kvs_rocks.htm">UA</a>
+    <a href="#" style="background:#ededed;">EN</a>
+</nav><header>
+    <a href="../index.html"><img src="https://n2o.space/img/Synrc Neo.svg" /></a>
     <h1>ROCKS</h1>
-</header>
-
-<main>
+</header><main>
    <article>
    <section>
    <h3>INTRO</h3>
    <p>ROCKS is the <b>RocksDB</b> backend implementation for KVS.
       Put the {dba,kvs_rocks} and (optionally) {dba_st,kvs_st} properties
       for the kvs application in your sys.config.</p>
-   <br>
+   <br />
    </section>
     <section>
 <p>This module may refer to:
@@ -41,11 +30,6 @@
 
     </section>
    </article>
-</main>
-
-<footer>
-    2005&mdash;2019 &copy; Synrc Research Center
-</footer>
-
-</body>
-</html>
+</main><footer>
+    2005—2019 © Synrc Research Center
+</footer></body></html>

+ 17 - 29
man/kvs_st.htm

@@ -1,25 +1,18 @@
-<!DOCTYPE html>
-<html>
-<head>
-    <meta charset="utf-8" />
-    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="description" content="" />
-    <meta name="author" content="Maxim Sokhatsky" />
-    <title>ST</title>
-    <link rel="stylesheet" href="https://synrc.space/synrc.css" />
-</head>
-<body>
-<nav>
-    <a href='https://n2o.dev'>DEV</a>
-    <a href='https://kvs.n2o.space'>KVS</a>
-    <a href='#' style="background:#ededed;">ST</a>
-</nav>
-<header>
-    <a href="../index.html"><img src="https://n2o.space/img/Synrc Neo.svg"></a>
+<!DOCTYPE html><html><head><meta charset="utf-8" /><meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="description" content="" />
+<meta name="author" content="Maxim Sokhatsky" /><title>ST</title>
+<link rel="stylesheet" href="https://n2o.dev/blank.css" />
+<link rel="stylesheet" href="https://n2o.dev/zima.css" />
+</head><body><nav>
+    <a href="https://n2o.dev">DEV</a>
+    <a href="https://kvs.n2o.space">KVS</a>
+    <a href="#" style="background:#ededed;">ST</a>
+    <a href="https://n2o.dev/deps/kvs/man/ua/kvs_st.htm">UA</a>
+    <a href="#" style="background:#ededed;">EN</a>
+</nav><header>
+    <a href="../index.html"><img src="https://n2o.space/img/Synrc Neo.svg" /></a>
     <h1>ST</h1>
-</header>
-<main>
+</header><main>
     <section>
 
 <h3>INTRO</h3>
@@ -34,11 +27,6 @@
 <a href="kvs.htm"><b>kvs</b></a>.
 </p>
     </section>
-</main>
-
-<footer>
-    2005&mdash;2019 &copy; Synrc Research Center
-</footer>
-
-</body>
-</html>
+</main><footer>
+    2005—2019 © Synrc Research Center
+</footer></body></html>

+ 22 - 49
man/kvs_stream.htm

@@ -1,25 +1,19 @@
-<!DOCTYPE html>
-<html>
-<head>
-    <meta charset="utf-8" />
-    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="description" content="" />
-    <meta name="author" content="Maxim Sokhatsky" />
-    <title>STREAM</title>
-    <link rel="stylesheet" href="https://synrc.space/synrc.css" />
-</head>
-<body>
-<nav>
-    <a href='https://n2o.dev'>DEV</a>
-    <a href='https://kvs.n2o.space'>KVS</a>
-    <a href='#' style="background:#ededed;">STREAM</a>
-</nav>
-<header>
-    <a href="../index.html"><img src="https://n2o.space/img/Synrc Neo.svg"></a>
+<!DOCTYPE html><html><head><meta charset="utf-8" /><meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="viewport" content="width=device-width, initial-scale=1.0" />
+<meta name="description" content="" /><meta name="author" content="Maxim Sokhatsky" />
+<title>STREAM</title>
+<link rel="stylesheet" href="https://n2o.dev/blank.css" />
+<link rel="stylesheet" href="https://n2o.dev/zima.css" />
+</head><body><nav>
+    <a href="https://n2o.dev">DEV</a>
+    <a href="https://kvs.n2o.space">KVS</a>
+    <a href="#" style="background:#ededed;">STREAM</a>
+    <a href="https://n2o.dev/deps/kvs/man/ua/kvs_stream.htm">UA</a>
+    <a href="#" style="background:#ededed;">EN</a>
+</nav><header>
+    <a href="../index.html"><img src="https://n2o.space/img/Synrc Neo.svg" /></a>
     <h1>STREAM</h1>
-</header>
-<main>
+</header><main>
     <section>
 
 <h3>INTRO</h3>
@@ -27,31 +21,15 @@
 <p>The STREAM module provides chain accumulation, traversal and persistence.
    </p>
 
-        <p><blockquote><p><ul>
-            <li><b><a href="#writer">writer/1</a></b> &mdash; creates writer cursor to db.</li>
-            <li><b><a href="#reader">reader/1</a></b> &mdash; creates reader cursor to db.</li>
-            <li><b><a href="#save">save/1</a></b> &mdash; stores cursor to db.</li>
-            <li><b><a href="#load">load_reader/1</a></b> &mdash; loads reader cursor.</li>
-            <li><b><a href="#load">load_writer/1</a></b> &mdash; loads writer cursor.</li>
-            <li><b><a href="#top">top/1</a></b> &mdash; returns top of the chain.</li>
-            <li><b><a href="#bot">bot/1</a></b> &mdash; returns bottom of the chain.</li>
-            <li><b><a href="#next">next/1</a></b> &mdash; moves reader next.</li>
-            <li><b><a href="#prev">prev/1</a></b> &mdash; moves reader prev.</li>
-            <li><b><a href="#take">take/1</a></b> &mdash; takes N elements from reader.</li>
-            <li><b><a href="#drop">drop/1</a></b> &mdash; skips N elements from reader.</li>
-            <li><b><a href="#add">add/1</a></b> &mdash; adds element to list.</li>
-            <li><b><a href="#append">append/2</a></b> &mdash; adds element to feed.</li>
-            <li><b><a href="#append">cut/2</a></b> &mdash; cleanup feed by a given timestamp.</li>
-        </ul></p></blockquote></p>
+        <p></p><blockquote><p></p><ul><li><b><a href="#writer">writer/1</a></b> — creates writer cursor to db.</li><li><b><a href="#reader">reader/1</a></b> — creates reader cursor to db.</li><li><b><a href="#save">save/1</a></b> — stores cursor to db.</li><li><b><a href="#load">load_reader/1</a></b> — loads reader cursor.</li><li><b><a href="#load">load_writer/1</a></b> — loads writer cursor.</li><li><b><a href="#top">top/1</a></b> — returns top of the chain.</li><li><b><a href="#bot">bot/1</a></b> — returns bottom of the chain.</li><li><b><a href="#next">next/1</a></b> — moves reader next.</li><li><b><a href="#prev">prev/1</a></b> — moves reader prev.</li><li><b><a href="#take">take/1</a></b> — takes N elements from reader.</li><li><b><a href="#drop">drop/1</a></b> — skips N elements from reader.</li><li><b><a href="#add">add/1</a></b> — adds element to list.</li><li><b><a href="#append">append/2</a></b> — adds element to feed.</li><li><b><a href="#append">cut/2</a></b> — cleanup feed by a given timestamp.</li></ul></blockquote>
 
     <p>
-      You can grab <a style="margin-bottom:30px;"
-       href="https://raw.githubusercontent.com/synrc/kvs/master/src/kvs_stream.erl">kvs_stream</a>
+      You can grab <a style="margin-bottom:30px;" href="https://raw.githubusercontent.com/synrc/kvs/master/src/kvs_stream.erl">kvs_stream</a>
       and use it in your applications without importing <b>synrc/kvs</b> dependency,
       as this module is self-containing.
       The possible applications are: public and private feeds, FIFO queues,
-   unread messages, chat applications, blockchain etc.<br><br>
-    </section>
+   unread messages, chat applications, blockchain etc.<br /><br />
+    </p></section>
     <section>
 
 <h3>WRITER</h3>
@@ -163,11 +141,6 @@
 </p>
 
     </section>
-</main>
-
-<footer>
-    2005&mdash;2019 &copy; Synrc Research Center
-</footer>
-
-</body>
-</html>
+</main><footer>
+    2005—2019 © Synrc Research Center
+</footer></body></html>

+ 0 - 230
man/ua/KVX_new_version.htm

@@ -1,230 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-    <meta charset="utf-8" />
-    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="description" content="" />
-    <meta name="author" content="Maxim Sokhatsky" />
-    <title>Нова версія KVX</title>
-    <link rel="stylesheet" href="https://forms.n2o.space/priv/static/css/forms.css?v=1" />
-    <link rel="stylesheet" href="../../blank.css?v=2" />
-</head>
-<body>
-<nav>
-    <a href='https://n2o.dev'>DEV</a>
-    <a href='https://kvx.n2o.space'>KVS</a>
-    <a href='#' style="background:#ededed;">KVX</a>
-    
-</nav>
-<main>
-    <section>
-        <h3>Нова версія KVX 6.4</h3>
-        <p>KVX — слой абстракції, який складається з двох частин: базового API та API керування стрімами,
-           тейк, дроп, фолд, катаморфізм, як ви любите. Головний API в модулі kvx,
-           а стрімовий — в kvx_stream. Користуючись нагодою, хочу пропіарити схожі рішення
-           в області зберігання даних на erlang: <a href="https://github.com/fogfish/datum">datum</a> та серія бібліотек
-           від Дмитра Колесникова, <a href="https://github.com/emqx/replayq">replayq</a> від Фенга Лі,
-           а також небагатьох інших, хто намагався абстрактно вирішити проблему.</p>
-
-         <h3>Чому KVX?</h3>
-
-         <p>Призначення KVX:</p>
-         <p>— надання інтерфейсу абстрагування широкого спектра сховищ;<br>
-            — надання зручного Erlang REPL інтерфейсу для роботи з записами (records);<br>
-            — розділення на базовий (get put) інтерфейс, та стрім інтерфейс ітераторів (next prev);<br>
-            — набір драйверів (внутрішня база, зовнішня база і файлова система);<br>
-            — шари даних: файлова система, ланцюжки повідомлень, банківські транзакції, дерева
-              підписів, трейси бізнес-процесів, блокчейни, системи черг,
-              тайм серіес, ось це все.<br>
-        </p>
-         <p>Розпочинаючи з незначної модифікації KVX поміняла назву, тепер це "Абстрактна База Ланцюжків",
-            а не "Абстрактна База Термів", оскільки відділився окремий стрім API.</p>
-
-         <p>— <a href="https://github.com/synrc/kvx">synrc/kvx</a> — 6.4<br></p>
-
-        <p> Розповімо трохи про теоретичні основи KVX. Ця бібліотека дозволяє або повинна
-            дозволяти зберігати та діставати структури будь-якого виду, надаючи семантику управління
-            курсорами next prev, якою володіють дерева. Тому можна сказати, що це інтерфейс
-            оператора до деревоподібних сховищ та сховищ ланцюжків. У своїй основі KVX підтримує три
-            механізми зберігання ланцюжків:</p>
-         <p>1) перший, очевидний — двонаправлені списки, де вказівники next та prev
-               безпосереднім чином присутні в даних. Спосіб підходить
-               навіть для керування деревами;</p>
-         <p>2) другий, очевидний — однонаправлені списки, де наявний тільки вказівник next. Цей спосіб підходить для списків.
-               Багато людей запитують про цей спосіб, але ми його ніколи не використовували,
-               тому немає імплементації;</p>
-         <p>3) третій, неочевидний спосіб — пряме вбудовувавання записів в BTree index,
-               zero-overhead.</p>
-
-         <p>В якомусь сенсі перший та другий способи реалізують певний шар поверх KVX,
-            оскільки kvx_stream працює з будь-якими стораджами поліморфно, а ось kvx_st драйвер
-            стрімів зроблений спеціально для rocksdb.</p>
-
-        <h3>Дерева</h3>
-
-        <p>Двонаправлені списки або дерева, перша модель, яка лягає прямо з С++ класів, при вивченні програмування —
-           це зберігати в базі прямі вказівники, така система зберігання може використовуватися навіть,
-           якщо integer поміняти на pid, тоді можна буде точково відновлювати історію виклику.</p>
-
-        <figure>
-        <code>
-  -record(iter, { id    = [] :: [] | integer(),
-                  next  = [] :: [] | integer(),
-                  prev  = [] :: [] | integer() } ).
-        </code>
-        </figure>
-
-        <p>Перше поле будь-якої таблиці — це її ім'я, друге — id, третє та
-            четверте — next і prev (сигнатура бінарного розгалуження).
-           Поліморфно за цими зміщеннями ми очікуємо наявність цих полів
-           для лінковки даних в ланцюжки.
-           Базова частина разом називається #iter.</p>
-
-        <h4>kvx_stream — <b>#iter{}</b></h4>
-
-        <p> За поліморфое явне управління application level полями next prev рекорда #iter
-            відповідає модуль kvx_stream. Наприклад, файловая система не надає управління
-            своїми курсорами, тому імплементація fs вимагає наявності полів лінковки.</p>
-
-        <h3>Списки</h3>
-        <p>Однонаправлені списки, чи просто списки, це друга модель. Все таке ж, тільки без повернення назад.
-           Не підтримується пока жодною версією KVX.</p>
-        <figure>
-        <code>
-  -record(ite, { id    = [] :: [] | integer(),
-                 next  = [] :: [] | integer() } ).
-        </code>
-        </figure>
-
-        <h4>kvx_stre — <b>#ite{}</b></h4>
-
-        <p>Цей модуль не реалізовано, і запис не специфікований.</p>
-
-        <h3>Вбудовування в індекс</h3>
-
-        <p>Третя модель представляє собою прямий, більш ефективний спосіб вбудовування простору бізнес-об'єктів
-           в простір ключів розташованої нижче таблиці, і передача управління курсорами BTree таблиці
-           відразу в драйвер, а не в ручний link walking, як це було в riak.
-           Базова частина поліморфних записів складається тільки з імені таблиці
-           та id, і має назву #it. Ця модель використовується в rocksdb бекенді, який з'явився у 6.4.</p>
-
-        <figure>
-        <code>
-  -record(it, { id = [] :: [] | integer() } ).
-        </code>
-        </figure>
-
-        <p>Таким чином, ми можемо емулювати таблиці, в рамках єдиного простору ключів,
-           додаючи їх як префікси до ключа (little endian), який буде автоматично
-           відображатись в головному BTree дереві, також в цьому просторі ви можете
-           зберігати і фіди (стріми), наприклад, топіки: <b>/p2p/maxim/doxtop</b>.
-           Це вимагає спеціальної модифікації kvx_st для работи з записом #it,
-           на відміну від двонаправленого #iter, який працює з драйвером kvx_stream.</p>
-
-        <h4>kvx_st — <b>#it{}</b></h4>
-
-        <p>За керування курсорами по ітератору бази даних відповідає модуль kvx_st.</p>
-
-        <h3>На прикладі</h3>
-
-        <p>Код, який показує головну ідею, на прикладі драйвера rocksdb:</p>
-
-        <figure>
-        <code>
-1> {ok,Ref} = rocksdb:open("hey",[{create_if_missing,true}]).
-2> rocksdb:put(Ref, <<"/users/1">>,<<"maxim">>,[{sync,true}]).
-3> rocksdb:put(Ref, <<"/users/2">>,<<"doxtop">>,[{sync,true}]).
-4> rocksdb:put(Ref, <<"/users/3">>,<<"vlad">>,[{sync,true}]).
-5> rocksdb:put(Ref, <<"/staff/1">>,<<"vlad">>,[{sync,true}]).
-6> rocksdb:put(Ref, <<"/staff/2">>,<<"maxim">>,[{sync,true}]).
-7> rocksdb:put(Ref, <<"/staff/3">>,<<"doxtop">>,[{sync,true}]).
-8> {ok,I} = rocksdb:iterator(Ref,[]).
-9> rocksdb:iterator_move(I,{seek,<<"/staff/">>}).
-10> rocksdb:iterator_move(I,next).
-11> rocksdb:iterator_move(I,next).
-12> rocksdb:iterator_move(I,next).
-13> rocksdb:iterator_move(I,{seek,<<"/users/">>}).
-14> rocksdb:iterator_move(I,next).
-15> rocksdb:iterator_move(I,next).
-16> rocksdb:iterator_move(I,next).
-        </code>
-        </figure>
-
-      <h3>KVX REPL</h3>
-        <p>Тепер, щоб зробити те ж саме на KVX, ви можете зробити просто:</p>
-
-        <figure>
-        <code>
-1> kvx:ver().
-{version,"KVX ROCKSDB"}
-2> rr(kvx).
-[emails,id_seq,it,iter,kvx,reader,schema,table,writer]
-3> kvx:join().
-ok
-4> kvx:put(#emails{id=1,email="maxim"}).
-5> kvx:put(#emails{id=2,email="doxtop"}).
-6> kvx:put(#writer{id=2}).
-7> kvx:put(#writer{id=1}).
-8> kvx:all(writer).
-[#writer{id = 1,count = 0,cache = [],args = [],first = []},
- #writer{id = 2,count = 0,cache = [],args = [],first = []}]
-9> kvx:all(emails).
-[#emails{id = 1,next = [],prev = [],email = "maxim"},
- #emails{id = 2,next = [],prev = [],email = "doxtop"}]
-
-10> kvx:add(#writer{id=chain,args=#emails{email="maxim@synrc.com"}}).
-11> kvx:add(#writer{id=chain,args=#emails{email="vlad@synrc.com"}}).
-12> kvx:add(#writer{id=chain,args=#emails{email="doxtop@synrc.com"}}).
-13> kvx:all(chain).
-[#emails{id = 1555244691729330000,next = [],prev = [],
-         email = "maxim@synrc.com"},
- #emails{id = 1555244699905648000,next = [],prev = [],
-         email = "doxtop@synrc.com"},
- #emails{id = 1555244696660271000,next = [],prev = [],
-         email = "vlad@synrc.com"}]
-        </code>
-        </figure>
-
-        <p>Єдиний тест на стріми, який проходить:</p>
-
-        <figure>
-        <code>
-> kvx:check().
-ok
-        </code>
-        </figure>
-
-      <h3>Документація</h3>
-
-       <p>Надіюсь зробити цю рубрику в release notes офіційною та регулярною,
-          на жаль, якщо не брать до уваги man сторінки для модулій драйверів,
-          то залишається лише два модулі, для яких потрібна документація — це <a href="https://kvx.n2o.space/man/kvx.htm">kvx</a> та <a href="https://kvx.n2o.space/man/kvx_stream.htm">kvx_stream</a>.
-          Я, звичайно, формально додав сторінки для всіх модулів, і в майбутньому хочеться,
-          щоб штучний інтелект генерував документацію. Також я зрозумів, що
-          ченджлог та реліз замітки у власному блозі є чудовим способом авторського анонсування!
-          Зробив історію таких сторінок в README.md.</p>
-
-      <h3>На закінчення</h3>
-
-      <p>Репозиторій (що депендить <a href="https://gitlab.com/barrel-db/erlang-rocksdb">rocksdb NIF драйвер</a>, який повільно компілюється,
-         від Бенуа Кісенау, <a href="https://github.com/Vonmo/rocker">Rust-версію Rocker</a> від Максима Молчанова вирішив відкласти,
-         надто часто раст оновлюється, неможливо зафрізити)
-         одразу включає файл конфігурації для rocksdb:</p>
-
-         <p>— <a href="https://github.com/voxoz/kv">voxoz/kv</a></p>
-
-      <p>P.S. Вбудовування в BTree можна застосовувати не лише в таких базах, як rocksdb,
-         але й для mnesia, і для будь-яких баз взагалі.</p>
-
-      <p>P.P.S. Також можна використовувати rocksdb у якості драйвера для mnesia (написаний
-         Ульфом Вігером для проекта Аетерніті), або скоріше різновид таблиці rocksdb_copies —
-         <a href="https://github.com/aeternity/mnesia_rocksdb">mnesia_rocksdb</a>.</p>
-
-    </section>
-</main>
-<footer>Namdak Tonpa <span class="heart">&nbsp;❤&nbsp;</span> 2009—2019</footer>
-
-
-</body>
-</html>

+ 0 - 158
man/ua/kvs.htm

@@ -1,158 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-    <meta charset="utf-8" />
-    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="description" content="" />
-    <meta name="author" content="Maxim Sokhatsky" />
-    <title>KVS</title>
-    <link rel="stylesheet" href="https://synrc.space/synrc.css" />
-</head>
-
-<body>
-
-<nav>
-    <a href='https://n2o.dev'>DEV</a>
-    <a href='https://kvx.n2o.space'>KVS</a>
-    <a href='#' style="background:#ededed;">KVS</a>
-</nav>
-
-<header>
-    <a href="../../index.html"><img src="https://n2o.space/img/Synrc Neo.svg"></a>
-    <h1>KVS</h1>
-</header>
-
-<main>
-    <section>
-
-<h3>ВСТУП</h3>
-
-   <p>Модуль KVS надає інтерфейс користувача для команд консолі.
-      Він має функції відкриття, маніпулювання даними та відновлення даних.
-      Під капотом він обробляє налаштовувані під час виконання бекенди для кожної підтримуваної бази даних.</p>
-
-        <p><blockquote><p><ul>
-            <li><b><a href="#dir">dir/0</a></b> &mdash; повертає перелік таблиць.</li>
-            <li><b><a href="#ver">ver/0</a></b> &mdash; повертає версію KVS.</li>
-            <li><b><a href="#seq">seq/2</a></b> &mdash; генерує новий ідентифікатор послідовностей таблиці.</li>
-            <li><b><a href="#count">count/1</a></b> &mdash; повертає кількість записів в таблиці.</li>
-            <li><b><a href="#put">put/1</a></b> &mdash; зберігає запис, використовуючи id як ключ.</li>
-            <li><b><a href="#get">get/2</a></b> &mdash; повертає запис по його ключу.</li>
-            <li><b><a href="#delete">delete/1</a></b> &mdash; видаляє запис з таблиці.</li>
-            <li><b><a href="#index">index/3</a></b> &mdash; виконує пошук записів по назві поля та його значенню.</li>
-        </ul></p></blockquote></p>
-
- <p>Ви можете поміняти бекенд, використовуючи змінні оточення env в налаштуваннях додатку.
-    Це добре працює навіть під великим навантаженням.</p>
-
-    </section>
-    <section>
-
-<h3>ВСТАНОВЛЕННЯ</h3>
-
-<p>В sys.config ви вказуєте kvx бекенд та список модулів, які містять експорт
-   функції <b>metainfo/0</b>.</p>
-
-<figure><code>
-  [{kvx, [{dba,store_mnesia},
-          {schema,[kvx,kvx_stream]}]}].
-
-</code></figure>
-
-<h4>dir() -> list({'table',atom()}).</h4>
-
-<p>Повертає актуальні таблиці.</p>
-
-<h4>ver() -> {'version',string()}.</h4>
-
-<p>Повертає версію бекенда.</p>
-
-<h4>dump() -> ok.</h4>
-
-<p>Повертає інформацію про базу даних.</p>
-
-<figure><code>
- > kvx:dump().
-                NAME                     STORAGE TYPE    MEMORY (MB)   ELEMENTS
-
-              id_seq                      disc_copies           0.00          0
-              writer                      disc_copies           0.00          0
-              emails                      disc_copies           0.00          0
-              reader                      disc_copies           0.00          0
-
- Snapshot taken: {{2018,11,10},{5,2,38}}
- ok
-
-</code></figure>
-
-
-    </section>
-    <section>
-
-<h3>SEQ</h3>
-
-<p>Таблиця послідовностей id_seq зберігає лічильники для записів.
-   Лічильники є глобальними та атомарними для кожної підтримуваної бази даних.
-   Послідовності використовуються для генерації унікальних імен записам в розподіленій таблиці.
-   Якщо імена в таблиці не є унікальними,
-   то функція count може повернути значення, що відрізняється від поточної послідовності.
-   </p>
-
-<figure><code>
-  -record(id_seq, { thing = atom(),
-                    id    = 0 :: integer() } ).
-
-</code></figure>
-
-<h4>seq(atom(), integer()) -> integer().</h4>
-
-<p>Збільшує на 1 та повертає id лічильника для конкретної таблиці.</p>
-
-<h4>count(atom()) -> integer().</h4>
-
-<p>Повертає кількість записів в таблиці.</p>
-
-    </section>
-    <section>
-
-<h3>BACKEND</h3>
-
-<p>Функції операцій з даними.
-   </p>
-
-<h4>put(tuple()) -> ok | {error,any()}.</h4>
-
-<p>Зберігає запис.</p>
-
-<h4>get(atom(),any()) -> {ok,any()} | {error, not_found | duplicated }.</h4>
-
-<p>Виконує пошук запису.</p>
-
-<h4>delete(atom(),any()) -> ok | {error,any()}.</h4>
-
-<p>Видаляє запис.</p>
-
-<h4>index(atom(),any(),any()) -> list(tuple()).</h4>
-
-<p>Виконує пошук запису за індексованим полем та заданим значенням.</p>
-
-    </section>
-    <section>
-
-<p>Цей модуль може бути пов'язаним з:
-<a href="kvx_fs.htm"><b>kvx_fs</b></a>,
-<a href="kvx_mnesia.htm"><b>kvx_mnesia</b></a>,
-<a href="kvx_rocks.htm"><b>kvx_rocks</b></a>,
-<a href="kvx_st.htm"><b>kvx_st</b></a>,
-<a href="kvx_stream.htm"><b>kvx_stream</b></a>.
-</p>
-    </section>
-</main>
-
-<footer>
-    2005&mdash;2019 &copy; Synrc Research Center
-</footer>
-
-</body>
-</html>

+ 0 - 46
man/ua/kvs_fs.htm

@@ -1,46 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-    <meta charset="utf-8" />
-    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="description" content="" />
-    <meta name="author" content="Maxim Sokhatsky" />
-    <title>FS</title>
-    <link rel="stylesheet" href="https://synrc.space/synrc.css" />
-</head>
-
-<body>
-
-<nav>
-    <a href='https://n2o.dev'>DEV</a>
-    <a href='https://kvx.n2o.space'>KVS</a>
-    <a href='#' style="background:#ededed;">FS</a>
-</nav>
-
-<header>
-    <a href="../../index.html"><img src="https://n2o.space/img/Synrc Neo.svg"></a>
-    <h1>FS</h1>
-</header>
-
-<main>
-   <section>
-   <h3>ВСТУП</h3>
-   <p>FS — це імплементація <b>filesystem</b> бекенду для KVS.
-      Помістіть властивість {dba,kvx_fs} для додатку kvx у ваш sys.config.</p>
-   <br>
-   </section>
-    <section>
-<p>Цей модуль може бути пов'язаним з:
-<a href="kvx.htm"><b>kvx</b></a>.
-</p>
-
-    </section>
-</main>
-
-<footer>
-    2005&mdash;2019 &copy; Synrc Research Center
-</footer>
-
-</body>
-</html>

+ 0 - 48
man/ua/kvs_mnesia.htm

@@ -1,48 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-    <meta charset="utf-8" />
-    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="description" content="" />
-    <meta name="author" content="Maxim Sokhatsky" />
-    <title>MNESIA</title>
-    <link rel="stylesheet" href="https://synrc.space/synrc.css" />
-</head>
-
-<body>
-
-<nav>
-    <a href='https://n2o.dev'>DEV</a>
-    <a href='https://kvx.n2o.space'>KVS</a>
-    <a href='#' style="background:#ededed;">MNESIA</a>
-</nav>
-
-<header>
-    <a href="../../index.html"><img src="https://n2o.space/img/Synrc Neo.svg"></a>
-    <h1>MNESIA</h1>
-</header>
-
-<main>
-   <article>
-   <section>
-   <h3>ВСТУП</h3>
-   <p>MNESIA — це реалізація бекенду <b>mnesia</b> для KVS.
-      Помістіть властивість {dba,kvx_mnesia} для додатку kvx у ваш sys.config.</p>
-   <br>
-   </section>
-    <section>
-<p>Цей модуль може бути пов'язаним з:
-<a href="kvx.htm"><b>kvx</b></a>.
-</p>
-
-    </section>
-   </article>
-</main>
-
-<footer>
-    2005&mdash;2019 &copy; Synrc Research Center
-</footer>
-
-</body>
-</html>

+ 0 - 50
man/ua/kvs_rocks.htm

@@ -1,50 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-    <meta charset="utf-8" />
-    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="description" content="" />
-    <meta name="author" content="Maxim Sokhatsky" />
-    <title>ROCKS</title>
-    <link rel="stylesheet" href="https://synrc.space/synrc.css" />
-</head>
-
-<body>
-
-<nav>
-    <a href='https://n2o.dev'>DEV</a>
-    <a href='https://kvs.n2o.space'>KVS</a>
-    <a href='#' style="background:#ededed;">ROCKS</a>
-</nav>
-
-<header>
-    <a href="../../index.html"><img src="https://n2o.space/img/Synrc Neo.svg"></a>
-    <h1>ROCKS</h1>
-</header>
-
-<main>
-   <article>
-   <section>
-   <h3>ВСТУП</h3>
-   <p>ROCKS — це реалізація бекенду <b>RocksDB</b> для KVS.
-      Помістіть властивості {dba,kvs_rocks} та, опціонально, {dba_st,kvs_st} для додатку kvx у ваш sys.config.</p>
-   <br>
-   </section>
-    <section>
-<p>Цей модуль може бути пов'язаним з:
-<a href="kvs_st.htm"><b>kvs_st</b></a>,
-<a href="kvs_stream.htm"><b>kvs_stream</b></a>,
-<a href="kvs.htm"><b>kvs</b></a>.
-</p>
-
-    </section>
-   </article>
-</main>
-
-<footer>
-    2005&mdash;2019 &copy; Synrc Research Center
-</footer>
-
-</body>
-</html>

+ 0 - 45
man/ua/kvs_st.htm

@@ -1,45 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-    <meta charset="utf-8" />
-    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="description" content="" />
-    <meta name="author" content="Maxim Sokhatsky" />
-    <title>ST</title>
-    <link rel="stylesheet" href="https://synrc.space/synrc.css" />
-</head>
-<body>
-<nav>
-    <a href='https://n2o.dev'>DEV</a>
-    <a href='https://kvs.n2o.space'>KVS</a>
-    <a href='#' style="background:#ededed;">ST</a>
-</nav>
-<header>
-    <a href="../../index.html"><img src="https://n2o.space/img/Synrc Neo.svg"></a>
-    <h1>ST</h1>
-</header>
-<main>
-    <section>
-
-<h3>ВСТУП</h3>
-
-<p>Модуль ST надає STREAM інтерфейс для бекенду ROCKS.
-   Щоб використовувати модуль ST для потокових операцій,
-   помістіть властивості {dba,kvs_rocks} та {dba_st,kvs_st} для додатку kvx у ваш sys.config.</p>
-    </section>
-    <section>
-<p>Цей модуль може бути пов'язаним з:
-<a href="kvs_stream.htm"><b>kvs_stream</b></a>,
-<a href="kvs_rocks.htm"><b>kvs_rocks</b></a>,
-<a href="kvs.htm"><b>kvs</b></a>.
-</p>
-    </section>
-</main>
-
-<footer>
-    2005&mdash;2019 &copy; Synrc Research Center
-</footer>
-
-</body>
-</html>

+ 0 - 173
man/ua/kvs_stream.htm

@@ -1,173 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-    <meta charset="utf-8" />
-    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="description" content="" />
-    <meta name="author" content="Maxim Sokhatsky" />
-    <title>STREAM</title>
-    <link rel="stylesheet" href="https://synrc.space/synrc.css" />
-</head>
-<body>
-<nav>
-    <a href='https://n2o.dev'>DEV</a>
-    <a href='https://kvs.n2o.space'>KVS</a>
-    <a href='#' style="background:#ededed;">STREAM</a>
-</nav>
-<header>
-    <a href="../../index.html"><img src="https://n2o.space/img/Synrc Neo.svg"></a>
-    <h1>STREAM</h1>
-</header>
-<main>
-    <section>
-
-<h3>ВСТУП</h3>
-
-<p>Модуль STREAM пропонує інтерфейс фолдів, акумуляторів за персистентного зберігання ланцюжків даних.
-   </p>
-
-        <p><blockquote><p><ul>
-            <li><b><a href="#writer">writer/1</a></b> &mdash; створює та повертає курсор запису до бази даних.</li>
-            <li><b><a href="#reader">reader/1</a></b> &mdash; створює та повертає курсор зчитування до бази даних.</li>
-            <li><b><a href="#save">save/1</a></b> &mdash; зберігає курсор до бази даних.</li>
-            <li><b><a href="#load">load_reader/1</a></b> &mdash; підзавантажує збережений курсор зчитування.</li>
-            <li><b><a href="#load">load_writer/1</a></b> &mdash; підзавантажує збережений курсор запису.</li>
-            <li><b><a href="#top">top/1</a></b> &mdash; повертає початок (вершину) ланцюжка.</li>
-            <li><b><a href="#bot">bot/1</a></b> &mdash; повертає закінчення (основу) ланцюжка.</li>
-            <li><b><a href="#next">next/1</a></b> &mdash; переміщає курсор зчитування на наступний елемент.</li>
-            <li><b><a href="#prev">prev/1</a></b> &mdash; переміщає курсор зчитування на попередній елемент.</li>
-            <li><b><a href="#take">take/1</a></b> &mdash; повертає N елементів з курсору зчитування.</li>
-            <li><b><a href="#drop">drop/1</a></b> &mdash; пропускає N елементів з курсору зчитування.</li>
-            <li><b><a href="#add">add/1</a></b> &mdash; додає елемент до списку.</li>
-            <li><b><a href="#append">append/2</a></b> &mdash; додає елемент в канал.</li>
-            <li><b><a href="#append">cut/2</a></b> &mdash; очищає канал до заданої мітки timestamp.</li>
-        </ul></p></blockquote></p>
-
-    <p>
-      Ви може взяти <a style="margin-bottom:30px;"
-       href="https://raw.githubusercontent.com/synrc/kvs/master/src/kvs_stream.erl">kvs_stream</a>
-      і використовувати у своїх додатках без імпортування залежності <b>synrc/kvs</b>,
-      оскільки даний модуль є самодостатнім.
-      Додатками можуть бути: публічні та приватні канали/стрічки новин, FIFO черги,
-   непрочитані повідомлення, чат, блокчейн etc.<br><br>
-    </section>
-    <section>
-
-<h3>WRITER</h3>
-
-<p>Курсор запису передставляє собою додавання деяких кешованих значень до списку-ланцюжка.
-   Наприклад, розмір ланцюжка, перший елемент ланцюжка, кешоване значення
-   попереднього записаного повідомлення, та поле для передачі аргументів stream функціям, таким, як add.</p>
-
-<figure><code>
-  -record(writer, { id    = [] :: term(),
-                    count =  0 :: integer(),
-                    cache = [] :: [] | tuple(),
-                    args  = [] :: term(),
-                    first = [] :: [] | tuple() } ).
-
-</code></figure>
-
-<p>Щоб додати дані до бази даних, спочатку потрібно створити курсор запису,
-   встановити запис з мета-інформацією в поле аргументів, та викликати функцію save.</p>
-
-<h4>writer(term()) -> #writer{}.</h4>
-
-<p>Створює курсор запису.</p>
-
-<h4>add(#writer{}) -> #writer{}.</h4>
-
-<p>Додає елемент до списку, на який вказує курсор запису.</p>
-
-<h4>load_writer(#writer{}) -> #writer{}.</h4>
-
-<p>Підзавантажує курсор запису.</p>
-
-<h4>save(#writer{}) -> #writer{}.</h4>
-
-<p>Переміщує курсор запису до бази даних.</p>
-
-    </section>
-    <section>
-
-<h3>READER</h3>
-
-<figure><figcaption>Курсор зчитування</figcaption><code>
-  -record(reader, { id    = [] :: integer(),
-                    pos   =  0 :: [] | integer(),
-                    cache = [] :: [] | integer(),
-                    args  = [] :: term(),
-                    feed  = [] :: term(),
-                    dir   =  0 :: 0 | 1 } ).
-
-</code></figure>
-
-<h4>reader(integer()) -> #reader{}.</h4>
-
-<p>Створює курсор зчитування.</p>
-
-<h4>load_reader(#reader{}) -> #reader{}.</h4>
-
-<p>Підзавантажує курсор зчитування з бази даних.</p>
-
-<h4>save(#reader{}) -> #reader{}.</h4>
-
-<p>Переміщує курсор зчитування до бази даних.</p>
-
-<h4>top(#reader{}) -> #reader{}.</h4>
-
-<p>Переміщає курсор в початок (вершину) списку.</p>
-
-<h4>bot(#reader{}) -> #reader{}.</h4>
-
-<p>Переміщає курсор в закінчення (основу) списку.</p>
-
-    </section>
-    <section>
-
-<h3>ITER</h3>
-
-<figure><figcaption>KVS Stream Iterator</figcaption><code>
-  -record(iter,   { id    = [] :: [] | integer(),
-                    next  = [] :: [] | integer(),
-                    prev  = [] :: [] | integer() } ).
-
-</code></figure>
-
-<h4>next(#reader{}) -> #reader{}.</h4>
-
-<p>Переміщає курсор на наступний елемент. Споживає дані з вершини.
-   Повертає помилку, якщо список є пустим, в іншому випадку — наступний чи останній елемент.</p>
-
-<h4>prev(#reader{}) -> #reader{}.</h4>
-
-<p>Переміщає курсор на попередній елемент. Споживає дані з основи.
-   Повертає помилку, якщо список є пустим, в іншому випадку — наступний чи останній елемент.</p>
-
-<h4>drop(#reader{}) -> #reader{}.</h4>
-
-<p>Пропускає N елементів, розпочинаючи з курсора.</p>
-
-<h4>take(#reader{}) -> #reader{}.</h4>
-
-<p>Пробує споживати N записів зі stream, використовуючи його поточне значення та напрям.
-   Повертає споживані дані. Зазвичай ви шукаєте певну позицію, і далі споживаєте деякі дані.</p>
-
-    </section>
-    <section>
-
-<p>Цей модуль може бути пов'язаним з:
-<a href="kvs.htm"><b>kvs</b></a>,
-<a href="kvs_st.htm"><b>kvs_st</b></a>.
-</p>
-
-    </section>
-</main>
-
-<footer>
-    2005&mdash;2019 &copy; Synrc Research Center
-</footer>
-
-</body>
-</html>