我可以使用clickhouse作为键值存储吗?

zaqlnxep  于 2021-07-15  发布在  ClickHouse
关注(0)|答案(1)|浏览(495)

如果数据被定期覆盖,但很少被读取,是否可以使用clickhouse作为键值存储?如果可能的话,我应该用什么发动机?

piah890a

piah890a1#

clickhouse并不是为这个用例而构建的,它在文档的主页上故意这么说。
何时不使用clickhouse
事务性工作负载(oltp)
高请求率的键值访问
blob或文档存储
过度规范化数据
但是,如果qps较低,仍然可以为点查询获得良好的延迟分数。clickhouse还提供多种字典,可以更好地用作外部键值存储。还有一个 StorageJoin 支持的发动机 joinGet 功能类似redis HGET 操作。在此pr之后,您可以覆盖中的现有密钥 StorageJoin .

更新

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');

相关问题