KVS

ВСТУП

Модуль KVS надає інтерфейс користувача для команд консолі. Він має функції відкриття, маніпулювання даними та відновлення даних. Під капотом він обробляє налаштовувані під час виконання бекенди для кожної підтримуваної бази даних.

  • dir/0 — повертає перелік таблиць.
  • ver/0 — повертає версію KVS.
  • seq/2 — генерує новий ідентифікатор послідовностей таблиці.
  • count/1 — повертає кількість записів в таблиці.
  • put/1 — зберігає запис, використовуючи id як ключ.
  • get/2 — повертає запис по його ключу.
  • delete/1 — видаляє запис з таблиці.
  • index/3 — виконує пошук записів по назві поля та його значенню.

Ви можете поміняти бекенд, використовуючи змінні оточення env в налаштуваннях додатку. Це добре працює навіть під великим навантаженням.

ВСТАНОВЛЕННЯ

В sys.config ви вказуєте kvs бекенд та список модулів, які містять експорт функції metainfo/0.

[{kvs, [{dba,store_mnesia}, {schema,[kvs,kvs_stream]}]}].

dir() -> list({'table',atom()}).

Повертає актуальні таблиці.

ver() -> {'version',string()}.

Повертає версію бекенда.

dump() -> ok.

Повертає інформацію про базу даних.

> kvs: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

SEQ

Таблиця послідовностей id_seq зберігає лічильники для записів. Лічильники є глобальними та атомарними для кожної підтримуваної бази даних. Послідовності використовуються для генерації унікальних імен записам в розподіленій таблиці. Якщо імена в таблиці не є унікальними, то функція count може повернути значення, що відрізняється від поточної послідовності.

-record(id_seq, { thing = atom(), id = 0 :: integer() } ).

seq(atom(), integer()) -> integer().

Збільшує на 1 та повертає id лічильника для конкретної таблиці.

count(atom()) -> integer().

Повертає кількість записів в таблиці.

BACKEND

Функції операцій з даними.

put(tuple()) -> ok | {error,any()}.

Зберігає запис.

get(atom(),any()) -> {ok,any()} | {error, not_found | duplicated }.

Виконує пошук запису.

delete(atom(),any()) -> ok | {error,any()}.

Видаляє запис.

index(atom(),any(),any()) -> list(tuple()).

Виконує пошук запису за індексованим полем та заданим значенням.

Цей модуль може бути пов'язаним з: kvs_fs, kvs_mnesia, kvs_rocks, kvs_st, kvs_stream.