使用 ClickHouse 时遇到的问题

问题描述 投票:0回答:3

我们正在改造现有系统,使用MYSQL DB来处理以下类型的数据。

  • 交易和订单相关数据
  • 客户信息
  • 产品信息

我们需要查询这些数据并提取统计数据,还需要过滤、分面和细分列表以及 KPI。

我们尝试了 ClickHouse、Druid、DGraph 对样本数据进行了一些测试以进行基准测试并检查哪个数据库适合我们的需求。

我喜欢 Druid DB 的几点是,

我们发现 ClickHouse 比 MYSQL 和 Druid 数据库更快。但存在以下问题。

  • 无法执行类似德鲁伊的搜索查询(返回维度和出现次数)。有什么解决方法可以实现这一目标吗?
  • 不区分大小写的搜索。我们该如何处理这个问题? ClickHouse 是区分大小写的,对吧?
  • utf8mb4 支持吗?我们如何保存/存储 utf8 不支持的特殊字符或一些表情符号?
    我们在 MYSQL 中也遇到了类似的问题,将排序规则更改为 utf8mb4 解决了这个问题。我们在 ClickHouse 中如何实现这一目标?

您的建议可以帮助我们克服这些挑战并做出更好的决定。

提前致谢。

search case-insensitive druid clickhouse
3个回答
2
投票

无法执行类似德鲁伊的搜索查询(返回维度和出现次数)。有什么解决方法可以实现这一目标吗?

该功能听起来大致如下:

SELECT interval, dim1, COUNT(*) FROM my_table WHERE condition GROUP BY interval, dim1
UNION ALL
SELECT interval, dim2, COUNT(*) FROM my_table WHERE condition GROUP BY interval, dim2
UNION ALL
...

不区分大小写的搜索。我们该如何处理这个问题? ClickHouse 是区分大小写的,对吧?

有多个选项,例如

positionCaseInsensitiveUTF8(haystack, needle)
函数或与正则表达式匹配:https://clickhouse.yandex/docs/en/query_language/functions/string_search_functions/#match-haystack-pattern

utf8mb4 支持吗?我们如何保存/存储 utf8 不支持的特殊字符或一些表情符号?

ClickHouse 中的字符串是任意字节序列,因此您可以在那里存储您想要的任何内容,但您应该检查可用的函数是否与您的用例匹配。


0
投票

不区分大小写的搜索。我们该如何处理这个问题? ClickHouse是 区分大小写,对吧?

这个博客可能有用。具体来说:

在每个模式的开头添加 (?i) 使其不区分大小写,就像我们之前所做的那样:

SELECT
    id,
    job_title,
    multiMatchAllIndices(description, ['(?i)python', '(?i)javascript', '(?i)postgres']) AS indices,
    company
FROM jobs
WHERE length(indices) > 0

0
投票
根据 ClickBench (

https://benchmark.clickhouse.com/) 的报告,ClickHouse 在相对时间上远远优于 Druid。我还推荐 StarRocks,这是另一个比 ClickHouse 更快的 OLAP 解决方案。值得一提的是,StarRocks 主要关注 OLAP(在线分析处理)工作负载,并支持实时分析。因此,如果您优先考虑高性能分析查询和实时见解,那么 StarRocks 与 Druid 和 ClickHouse 一起可能是您的绝佳选择。

还有一点值得注意的是,StarRocks确实支持utf8mb4字符集,存储在StarRocks中的utf8mb4字符不会被截断或出现乱码。您可以相对轻松地使用 StarRocks 存储和检索包含各种字符(包括表情符号)的数据。

© www.soinside.com 2019 - 2024. All rights reserved.