ClickHouse не создан для этого варианта использования, и он намеренно говорит об этом на домашней странице своего документа.
Когда НЕ использовать ClickHouse
- Транзакционные рабочие нагрузки(OLTP)
- Доступ по значению ключа с высокой частотой запросов
- Хранение блобов или документов
- Слишком нормализованные данные
ОднакоЕсли QPS низкий, вы все равно можете получить хорошие показатели задержки для точечных запросов.ClickHouse также предоставляет несколько видов словарей, которые могут лучше служить внешним хранилищем значения ключа.Также имеется движок StorageJoin
, который поддерживает функцию joinGet
, аналогичную операции redis 'HGET
.После этого PR вы можете перезаписать существующие ключи в StorageJoin
.
update
PR объединено.Вот изолированный пример.
Сначала заполните таблицу StorageJoin следующим образом:
CREATE TABLE my_fancy_kv_store (s String, x Array(UInt8), k UInt64)
ENGINE = Join(ANY, LEFT, s);
INSERT INTO my_fancy_kv_store VALUES ('abc', [0], 1), ('def', [1, 2], 2);
Затем вы можете использовать ее в качестве словаря (ключ-значение):
SELECT joinGet('my_fancy_kv_store', 'x', 'abc');
SELECT joinGet('my_fancy_kv_store', 'k', 'def');