现在各大厂都在推自己的分布式数据库,比如腾讯的TDSQL、阿里的OceanBase,PolarDB、华为的GaussDB等。都号称强一致高可用、全球战略部署系统架构、分布式管理水平不断扩展、高性能,实现了数千亿条记录、数百TB数据上的跨行跨表事务。 在这种情况下,使用分布式数据库后,不需要自己的业务系统分数据库分表操作吗?
1、数据分片 是分布式数据库的基础理论,也即要是采用默认的数据分片做法,例如:数据分片字段默认是隐含字段、主键活唯一索引则不需要人工去设置,数据分片算法默认哈希(数据分片算法有多种 哈希、范围、路由),数据分片类型默认水平(数据分片类型有至少三种 水平、垂直、全局)。要是想用业务字段做数据分片,则需要好好设计一下,所以采用分布式数据库后的难度体现在数据分片字段的设计选择上的 选那个分片字段、那种分片算法、那种分片类型。这样对分布式数据库产品厂商要求两点: 要么 实现一套智能算法 为 每套业务系统 自动生成 数据分片设计方案 ,要么数据库产品厂商技术专家去人工完成。
2、可以肯定是:采用了分布式数据库之后,业务系统研发工程 和数据库管理员不需要考虑 数据分片的事情,或一句话说不需要考虑 分库分表的事情,只是数据架构师设计的时候要考虑,然后在分布式数据库中配置下,可以看下热璞数据库HotDB的可视化管理平台:
由于摩尔定律的失效,单个节点的计算能力无法管理所有应用状态。由于保持状态有多个在成本节点,并确保彼此太一致,就必须设计出一套策略,解决在多个节点上维护同一份状态并且保证彼此一致的成本太高问题,把应用数据分成若干份,把每一份数据路由到不同的节点处理。研究 paxos/raft 会知道不同节点之间保持一致的状态要付多少钱的费用。sharding 机制引起的数据分发策略,主流分布式数据库目前试图屏蔽数据的分布,给用户感觉完整的数据访问,这种方法实际上是一种封装。 在什么情况下会失败?当用户关注的性能,尽管可以把 linklist 封装成 array 但是 linklist 永远无法提供与 array 相同的性能特性。因此当应用关注性能的时候,会发现分布式系统数据库的 sharding 策略进行实际情况决定了不同应用场景的访问控制性能。这时候应用仍然需要关注 sharding,也就是关心数据在存储上是如何真正分布的。所以我们又回到了分库分表,你说应用不关注产品性能?呃,那样可以随便用哪一个国家数据库系统都可以,真的。
更多产品了解
欢迎扫码加入云巴巴企业数字化交流服务群
产品交流、问题咨询、专业测评
都在这里!
2020-04-28 17:02:40
2022-02-24 10:24:34
2021-12-27 13:59:11
2024-03-27 14:17:35
2024-03-27 13:55:08
甄选10000+数字化产品 为您免费使用
申请试用
评论列表