业务所在的领域决定了产品底层技术栈的选择。这个很好理解,比如电商这个业务场景所需要的技术栈和产品特点与传统制造、CRM 等所关注的侧重点就完全不一样——电商关注高并发、低延时、数据一致性和秒杀场景等等,而传统制造商则对海量多样化数据的处理和如何有效挖掘数据价值这些方面更加关注。
在不同的业务类型下,选择一款 HTAP 产品需要重点考察的是——这个业务类型需要哪一部分能力为主:TP 能力为主亦或是 AP 能力为主。
对于电商系统需要更加注重其在 TP 方面的关键能力,例如:事务、数据一致性等等;而对于CRM系统,经销存等等对TP能力则不会那么严苛,其可能更加看重AP的能力,在 TP 能力满足其基本业务需求的情况下,哪款产品的 AP 能力更强,业务侧可能会更倾向于选择该款产品。
而现有 HTAP 产品从技术实现路线上,基本可以分为这么两类路线,其决定产品的基因:即侧重于 TP 还是 AP?
路线1:以成熟的TP系统为基础,在其上进行AP能力的扩展。现有大部分 HTAP 数据库产品均采用该种策略。为什么采用该种策略?其原因是显而易见的,TP 系统发展到现在其相较于 AP 系统,更加成熟。例如:国内外的 OB,StoneDB,TiDB,Oracle MySQL Heatwave 和 Google AlloyDB 等;
路线2:在 AP 系统的基础上扩展其处理 TP 的能力。例如:Snowflake 等。这种路线,比较困难,但是成熟的科技公司会有更多的资源去做这个事儿,难度大,但是做出来了,也会是一大利器。
1.2、端到端的解决方案能力:
对于业务开发相关人员,一个新产品或者解决方案的引入,自然希望不会给其带来额外的工作负担,并且最好能够与其原有的技术栈相兼容,这样对于原有业务系统的改动要求最少。但也不完全就是为了让干的活儿更轻松一些,因为,对于一个在线运行的系统,其对于稳定性的要求非常高,而新组件的引入往往会让整个业务的不稳定因素增大。因此,如果不能够保持原有的技术栈,则需要提供端到端的解决方案。例如:原系统采用的 ClickHouse 或者 ElasticSearch,如果需要替换为 OB 或者StoneDB,那么需要考虑原系统 ClickHouse 或者 ElasticSearch 上下游相关模块接口兼容性,数据同步到 CK 或者 ES 的方式等等,这些解决方案都要提供出来。
1.3、数据实时性要求:
数据实时性的高低同样也会影响到产品的选择。当前现有的 HTAP 数据库在 TP和 AP 之间的数据同步策略实现机制不尽相同。例如:有些云厂商通过 MySQL+Binlog+ClickHouse 的组合方式提供 HTAP 服务,从用户的角度看似乎该服务具备了HTAP的能力,但实际上完全不是那么回事儿——因为通过 Binlog 这种方式会有很多弊端,这里可以参考我们之前的两篇文章;又如有厂商通过 TP+Redo+Raft+AP 这样的组合构成 HTAP 产品,其相较于前一种在数据的实时性上有了较大的提升,但也只是提供数据的最终一致性,同样数据的实时性还是得不到保证;有的厂商则采用了基于 LSM-tree 实现的行列混存,这种可以基本保证对于数据实时性的要求;而像 MySQL Heatwave 和 StoneDB 则提供了基于内存计算的强实时性的方案。
HTAP 数据库在产品具体实现的时候,其选择的存储方案会直接到影响架构的选择:是一体化的架构?还是 TP 系统叠加 AP 系统的方案?架构的选择则会直接决定数据同步策略和数据实时性的高低。
1.4、技术能力: