我正在将ClickHouse用于带有ReplacingMergeTree
的“一种可更新的大型(亿万行)表”。我需要分批更新,并进行一些非汇总选择。很好。
即使有点hacker,而且远非最佳(我的意思是与OLAP的Clickhouse不同),它可以很好地扩展,并且仍然比或多或少专门针对HBase或RDBMs的系统执行得更快(满足我的需求) )。
我使用带有密钥的ReplacingMergeTree
表:
CREATE TABLE Things (Key Int32, ValueA Int32, ValueB Int32)
ENGINE = ReplacingMergeTree() ORDER BY Key
我使用以下方法进行补充:
INSERT INTO Things (Key,ValueA,ValueB) ...
并使用“ FINAL
”修饰符进行选择:
SELECT Key,ValueA,ValueB FROM Things FINAL WHERE ...
我可以使用名为“杀死”的列来“删除”对象。但是我不时需要清理“杀死”对象,以防止表不断增长。
我发现的唯一方法是重新创建一个新表并在其中插入非终止行。 有更聪明的方法吗?
答案 0 :(得分:1)
ClickHouse在最新版本中支持DML
操作,因此您不需要ReplacingMergeTree
来删除这样的记录。
结帐https://clickhouse.yandex/docs/en/query_language/alter/#mutations以获得更多详细信息。