本文字数:4774;估计阅读时间:12分钟 作者:刘文权&阿里云CK 来源:阿里云瑶池数据库
01
客户介绍

02
业务挑战
支持大量数据的快速写入和同步:各市场行情成交数据、计算后的 K 线数据,需要能在短时间(1s )内完成高达百万标的数据写入,以保证推送数据和查询数据的一致性。 简单快速的批量查询:行情业务主要需要对历史数据进行批量查询和分析,并进行简单的聚合分析来计算关键指标,要求查询实时性达到ms级。因此,底层数据库必须支持多种聚合函数,并能在ms级时间内返回聚合查询结果。
支持计算函数和Decimal类型:由于不同股票交易市场对数据精度的要求不同,数据库需支持原生的Decimal类型以适应数据存储。此外,由于证券交易属于时序数据,还需提供丰富的时间函数支持。
03
早期技术架构痛点
3.1 原有存储模型
最初,长桥在香港、中国A股和新加坡市场的数据存储上使用PostgreSQL。然而,随着美股和期权业务的发展,PostgreSQL的并发写入性能不足的问题显现。为应对美股和期权数据的高读写需求,长桥分别引入了Redis和DynamoDB数据库。虽然Redis提升了性能,但为了降低成本压力选择仅存储日内行情数据,又带来了美股数据定期转储的问题,增加了业务复杂性。

3.2 存在问题
Redis存储成本高,数据模型不通用,数据清洗和修复需定制工具,且查询分析能力弱。
PostgreSQL写入性能差,无法支持美股和期权数据的写入,其他市场数据清洗后写入时,也会导致CPU负载升高、查询变慢。
ETL操作复杂度大,各市场的数据清洗、分析和存储模型差异扩大,需要独立开发和适配。
3.3 新架构选型对比
3.4 ClickHouse的性能验证

04
架构升级到阿里云ClickHouse
4.1 数据迁移
4.2 基于阿里云ClickHouse的新架构
改造后的架构如下图所示,可以看到除了原来在PostgreSQL中的新加坡、香港和A股的数据全部迁移到了ClickHouse之外,原本存放在Redis和DynamoDB的美股和期权数据也都被统一进了ClickHouse当中,得益于数据存储技术栈的统一,不同市场数据写入的目标端和数据查询的源端都得到了统一,上游的数据写入和数据清洗业务也因此得到了大幅度的简化,具体改动如下:
▶︎ 历史行情数据的存储统一进了ClickHouse当中:原先存储在PostgreSQL中的沪深市场、中国香港交易所、新加坡交易所数据,和存储在DynamoDB和Redis中的美股期权数据、美股历史数据,都迁移到了阿里云ClickHouse,利用ClickHouse的列存优势,提升存储压缩率约5倍,降低存储成本;利用写入性能优势,在未优化攒批逻辑的情况下,单表写入速度较PostgreSQL可提升10倍,轻松支持美股和美股期权百万标的并发写入量。
▶︎ 日内行情数据的存储利用ClickHouse实现了成本优化:从单Redis存储升级为Redis+ClickHouse共同存储, Redis仍作为实时行情数据的主要存储介质,ticker级别的数据写入则升级为使用ClickHouse,降低了实时行情数据的存储成本
▶︎ 行情数据分析业务使用ClickHouse降低了开发工作量:利用ClickHouse引擎内置的聚合函数,代替统计计算代码的定时任务,满足所有市场成交明细的写入、数据回测和简单计算分析,降低数据分析和清洗的复杂度。
05
业务价值
▶︎ 存储成本降低4+倍:原PostgreSQL实例数据量在不含美股和期权时已达到500GB,而迁入ClickHouse后,由于与国内交易不活跃的股票k线图相同的特性,ClickHouse的列式存储和多种压缩算法的优势得以充分发挥,仅仅100GB就可以满足所有市场的数据存储,存储成本降低4+倍。
▶︎ 写入性能提升10+倍:在未进行任何攒批逻辑优化的情况下,ClickHouse的原始单表数据写入速度相比PostgreSQL已经提升了10倍,能够轻松支撑美股期权百万标的的并发写入量,预期后续在进行攒批逻辑优化后还可以进一步提升。
▶︎ 业务复杂度大幅降低:利用 ClickHouse 内核预置的丰富窗口函数和多样聚合函数,用ClickHouse的单表查询替代了原架构中对128张PostgreSQL表点查再结合代码的统计计算任务的形式,进行数据回测和简单计算分析,数据管理复杂度降低128倍,单次查询数据量增加到原来的300%+,数据存储技术栈从3个减少至1个。
06
总结&展望
/END/
注册ClickHouse中国社区大使,领取认证考试券

ClickHouse社区大使计划正式启动,首批过审贡献者享原厂认证考试券!
试用阿里云 ClickHouse企业版
轻松节省30%云资源成本?阿里云数据库ClickHouse 云原生架构全新升级,首次购买ClickHouse企业版计算和存储资源组合,首月消费不超过99.58元(包含最大16CCU+450G OSS用量)了解详情:https://t.aliyun.com/Kz5Z0q9G

征稿启示
面向社区长期正文,文章内容包括但不限于关于 ClickHouse 的技术研究、项目实践和创新做法等。建议行文风格干货输出&图文并茂。质量合格的文章将会发布在本公众号,优秀者也有机会推荐到 ClickHouse 官网。请将文章稿件的 WORD 版本发邮件至:Tracy.Wang@clickhouse.com