在众多分布式数据库中,有的采用了计算与存储分离的架构,例如TiDB,有的并未做算存分离,例如OceanBase。如何看待这两种架构的不同优劣势,以及如何进行选择?
计算和存储分离,更容易实现资源池化,部署与扩展也能更加灵活,是未来发展的趋势。计算和存储绑定的方式,从目前来看,能更加充分地利用资源,实现更高的性能。在选择上,需要遵从企业数据中心规划的要求,比如是否计划近期进行数据库上云等的要求。
收起存算分离 的架构,在带来云计算灵活和弹性的红利的同时,也带来存储和计算集群的大量数据交互, 对网络磁盘要求更高, 需要采用低延时RDMA网络,高IOPS的存储 来弥补性能上的损耗
收起存算分离,还是要看具体解决的问题。其最早是由云厂商提出的,目的是将资源解耦,从而实现不同资源的分层扩缩。看待这个特性,还是要看其背后带来的收益,是否是自身关注的;否则没有太大意义。
收起这里和题主探讨下存算分离。
个人认为OceanBase也是存算分离。OceanBase也分为OBProxy、SQL引擎、计算引擎、存储引擎等不同的角色,只不过是逻辑上的分离,而在物理上可以部署在同一台服务器上。
如果想要实现一定程度上的物理上的存算分离,那么可以把 OBProxy 、OBServer分别部署。
TiDB的优势在于集群中设置了非常明显的存算分离角色,即TiDB和TiKV,这种架构下,后续扩缩容可以分别进行,更加便捷,互不影响,最大化利用资源。