【问题标题】:Problems using ClickHouse使用 ClickHouse 的问题
【发布时间】:2019-08-27 09:07:15
【问题描述】:

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

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

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

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

我喜欢 Druid DB 的几件事是,

与 MYSQL 和 Druid 数据库相比,我们发现 ClickHouse 更快。但是有以下问题。

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

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

提前致谢。

【问题讨论】:

标签: search case-insensitive druid clickhouse


【解决方案1】:

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

该功能听起来大致如下:

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 中的字符串是任意字节序列,因此您可以在其中存储您想要的任何内容,但您可能应该检查可用函数是否与您的用例匹配。

【讨论】:

  • 您好@Ivan Blinkov,谢谢您的回复。但是上面的查询:您提到了 dim1 和 dim2,我不应该识别它并查询它。德鲁伊搜索自行识别并返回相同的(维度和出现),然后如果需要,我可能想从列表中查询特定维度/出现(来自搜索查询的响应)。这也是我想在 ClickHouse 中实现的目标。
  • @AnishNair 我仍然看不出它有什么根本不同,因为表结构是固定的,而且无论如何您都事先知道所有这些。如果您的用例更像未知的键值对,您可以将它们放入 Nested 列,然后在其上添加 ARRAY JOIN + GROUP BY。
猜你喜欢
  • 2020-12-18
  • 2021-10-06
  • 2017-09-05
  • 1970-01-01
  • 2021-04-05
  • 2021-12-29
  • 2020-01-06
  • 2019-11-20
  • 2021-10-24
相关资源
最近更新 更多