Comments 11
Начало более длинной статьи, оборванное на середине постановки задачи. Было бы неплохо дописать до конца. Тема-то актуальная!
Что-то мне подсказывает что Wide-Column-базы это частный случай базы "ключ-значение" где просто к ключу можно добавить суффикс с названием колонки.
По сути так и есть Wide-Column - частный случай Key-Value. Причём многие почему-то рассматривают ключи как какой-то один идентификатор, хотя ключи также как и значения могут иметь структуру. @keich ниже привёл примеры и оставил ссылку на статью в этом же блоге.
Собственно иногда от Key-Value даже остаётся только Key (какое-нибудь дерево B/R/LSM), в котором есть как техническая информация для сканирования, так и само значение (например, различные индексы, графы в триплетах и т.д.).
Собственно таже Amazon DynamoDB база Key-Value, при работе с которой внешне может быть даже похоже на Wide-Column/Document Oriented.
Есть стандартные способы хранения данных в key-value и они все(не уверен) перечислены в статье https://habr.com/ru/company/vk/blog/480850/
1) Если не нужен поиск по содержимому данных и получение частичных данных, то структура ключа как обычно.
Key1 | {Field1:Val1,Field2:Val2}
2) Если нужно получения только части данных. Естественно база должна уметь scan с первого совпадения части ключа.
Key1.Filed1 | {Val1}
Key1.Filed2 | {Val2}
3) Если нужен поиск по содержимому
Key1.Field1.Val1|NULL
Key1.Field2.Val2|NULL
Справедливости ради, «документо-ориентированные» БД также решают все перечисленные проблемы.
Я слышал еще про реляционные базы данных. Они, говорят, так же, могут решать вышеперечисленные проблемы.
А вот как представляют данные Wide-Column-базы:
Redis Hashes решает эту задачу не выходя за принцип базы "ключ-значением".
Все зависит от задачи:
если надо найти одну строку и в ней что то поискать
- Ключ значение вполне подойдет
если надо найти по атрибуту все строки
- Wide-Column
Те кто пробуют искать что то внутри полей json ....
ну такое на любителя.....
потому что у колонок есть фишки которых нет в Key Value
- Тип данных
- Статистика по колонке
- Индексы
Redis hmset hmget про это
Возвращает целое значение
Кажется, не очень удачная формулировка: можно подумать, что речь идет о целочисленном значении.
В чем проблема с базами данных «ключ-значение» и как ее решают Wide-column-хранилища