迁移你的业务到ClickHouse

POC:POC测试,即Proof of Concept,是业界流行的针对客户具体应用的验证性测试,根据用户对采用系统提出的性能要求和扩展需求的指标,在选用服务器上进行真实数据的运行,对承载用户数据量和运行时间进行实际测算,并根据用户未来业务扩展的需求加大数据量以验证系统和平台的承载能力和性能变化。

Vertica:Vertica是一款基于列存储的MPP (massively parallel processing)架构的数据库。它可以支持存放多至PB(Petabyte)级别的结构化数据。Vertica是由关系数据库大师Michael Stonebraker(2014 年图灵奖获得者)所创建,于2011年被惠普收购并成为其核心大数据平台软件。

Altinity:Altinity是一家ClickHouse的服务供应商。


ClickHouse是一个非常好的分析数据库选择,不仅适用于初创公司,也适用于那些已经将大量资源投入分析解决方案,但对结果并不完全满意的公司。

在本文中,我们将讨论企业如何以及何时考虑ClickHouse迁移项目,以及他们可能会面临的挑战。我们没有透露公司名字,但每个例子都有一个真实世界的原型。

1.什么时候迁移?

迁移总是一个痛苦的过程。如果你搬到另外一个房子或者另一个数据库,这并不重要,但是总是要付出很多努力,这期间会经历困扰,挫折等等。但是最后的结果是值得挑战的,这是激励你继续前进的动力。那么考虑迁移到ClickHouse的动机是什么?

1.1 性能问题

其中一个主要原因是数据量大增,性能下降。使用流行的开源MySQL或PostreSQL数据库来实现一个demo甚至是生产系统是非常容易的。数据大小比较小,索引大小适合内存,数据缓存命中率足够高,在这样的情形下它能够正常提供服务。不幸的是,这样一个理想情形最终会走到尽头,查询会变得越来越慢。你可以通过增加更多的内存,订购更快的磁盘等等来解决问题,(这只是在纵向扩展),但这只是拖延解决本质问题:你该如何横向扩展你的数据库系统?

ClickHouse在这里可以帮到很多。即使在同一台物理服务器上运行,与OLTP数据库相比,它通常可以比OLTP负载快100-500倍的查询性能。如果还不够,ClickHouse集群可以很容易地堆出来,以解决任何规模的问题。

许多在性能问题上苦苦挣扎的公司,尝试了不同的开源替代方案,最终他们发现ClickHouse是他们的银弹。

1.2 横向扩展成本

在ClickHouse上市之前,很多公司已经使用商用DBMS部署了分析解决方案。惠普Vertica可能是最好的商用分析解决方案。Vertica价格是昂贵滴,但在不太大的TB级业务上,对于小公司来说价格也还负担的起。当业务要求将数据扩展10或100倍时,画面就不那么好看了(注意,数据量的成倍增加并不总是意味着公司利润的成倍增加)。商业数据库管理系统扩大数据收费会大大增加(虽然会提供一定量的折扣)。这种场景下有些公司可能会考虑更换数据平台。看这里,ClickHouse通过一系列专业知识来使硬件最大化发挥它们的功力。

1.3 持有成本

云数据库为分布式数据库部署提供了最快捷的解决方案。Google Big Query,Amazon RedShift或SnowflakeDB是非常好的产品。他们允许非常快速地安装并使系统能够正常运行。但是,一段时间以来,一些公司想知道快速启动的价格是否是长期合理的。我们已经在亚马逊和专用服务器上运行了一些ClickHouse的基准测试,并将其与RedShift进行了比较。例如,【通过这篇文章分析】,我们得出结论:在Amazon中运行ClickHouse的成本比类似执行的RedShift实例要低几倍。【这篇文章有介绍如何评估成本降低】,与Google Big Query和Athena相比ClickHouse明显胜出,并且会显著降低成本。

这里的另一个考虑是ClickHouse部署不是供应商锁定的。公司可以将ClickHouse解决方案部署到Amazon,专用服务器,私有云或KodiakData等专用云,从而以最灵活的方式优化其部署和成本结构。

2.如何迁移?

ClickHouse是一个不寻常的数据库,有很多很酷的功能和设计决策,以获得最佳性能。然而,学习如何最有效地使用ClickHouse需要一段时间。ClickHouse的限制显示了硬币的另一面。ClickHouse缺少一些比较成熟的数据库提供的功能。这使迁移项目变得复杂。

CH的一些限制:

不支持真正的删除/更新支持 不支持事务(与Spark和大部分大数据系统一样)

不支持二级索引(和Spark和大部分大数据系统一样)

自己的协议(不支持MySQL协议)

有限的SQL支持,join实现与众不同。如果需要在从MySQL或Spark进行迁移,则可能必须重新编写包含联接的所有查询。

不支持窗口功能

2.1 ClickHouse迁移的主要挑战

迁移到ClickHouse时,您可能会遇到以下挑战。

2.1.1 模式确认:

架构是性能的关键。因此,需要对ClickHouse最佳实践有很好的理解,表引擎如何工作,字典是什么等等。适当的模式能更好的发挥出ClickHouse的能力。

2.1.2 可靠的数据吞吐:

ClickHouse允许在一致性和速度之间进行平衡,这些权衡对于理解和管理很重要,特别是在分布式环境中。数据分配和复制、可扩展和可靠的系统需要恰当的设计。ClickHouse在数据分发和复制方面非常灵活,没有特定的方法。

2.1.3 客户端界面:

迄今为止,主要的ClickHouse问题之一是非标准的SQL语法。它是非常强大的,有很多扩展,但它不是标准的。这使得有时很难与使用SQL的客户端工具进行交互。这个问题已经被ClickHouse开发者很好的理解,我们可以期待ClickHouse在将来支持SQL-92或更高版本的标准。

2.2 做好准备

任何移植项目都应该从计划开始。我们提出以下方法来降低风险并确保迁移项目取得成功。

2.2.1 确认使用情况

确认ClickHouse是否适配业务是非常重要的。ClickHouse可能更适合流式或批次入库的时序数据。正如迈克尔·斯通布拉克(Michael Stonebraker)在10年前的游戏改变文章中所写的:“One size does not fit all” - ClickHouse不应该被用作通用数据库。

2.2.2 检查基准

有许多基准测试可用,您可以根据您已经使用的数据库找到基准。一些基准的链接可以【看看这里】。

2.2.3 运行自己的基准

眼见为实,使用真实数据运行基准并与现有生产系统进行比较总是很有意义。

2.2.4 仔细分析ClickHouse限制,而非功能

管理人员经常只注意功能,但忽略了局限性。开发人员往往更加怀疑这玩意是不是真的好用。ClickHose的特性确实好用,但更多的时候,它的限制可能会成为绊脚石。

你需要评估ClickHouse的各种限制,例如ClickHouse的分区限制,不支持更新和删除,不支持事务等等的缺点,是否和你的业务情形匹配。

但是并不要无端的害怕这些缺点,大多数情况下ClickHouse的限制可以被解决,甚至可以转化为好处。

2.2.5 做一个POC测试

部署并完整验证一个端到端的产品,并从中学习涉及到的ClickHouse知识、获得实践的专业知识等等。这些经验有助于真正的业务系统设计,也能够提前暴露系统实施时可能面临的大部分问题。

2.2.6 获取社区帮助

ClickHouse是一个开源数据库。所以最好的支持是社区。Yandex支持的telegram和google group是最好的地方,让新手学习更多,提出问题等等。即使你计划在某个时候获得Altinity的专业支持,自己也可以尽可能地学习。

3. 下一步工作

一旦上述所讲的先决条件步骤完成,你将获得适用于你方业务用例的一些ClickHouse专业知识,并且有信心评估ClickHouse是否适用于你的业务。如何进一步推进取决于你的系统的复杂性。之前的POC可能演变成生产部署,也可能你需要从头开始鼓捣点儿新玩意儿(因为某个业务的POC的场景不一定适用所有业务)。如果一个业务需要迁移,需要分析生产数据的时间要求,需要设计集成方案等等。正确的QA和测试也需要列入计划。

对于一些公司来说,只需几个星期就可以完全切换到ClickHouse,而庞大的项目可能需要一年的时间。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,271评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,275评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,151评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,550评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,553评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,559评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,924评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,580评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,826评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,578评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,661评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,363评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,940评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,926评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,156评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,872评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,391评论 2 342

推荐阅读更多精彩内容