市面上分布式数据库目前越来越多,但是流派主要分3波,分库分表加mysql存储,Spanner路线,Aurora路线。
走分库分表加mysql存储路线的,开源产品中有cobar,mycat,sharding-jdbc等,闭源能使用到的产品包括阿里云上的DRDS(TDDL)、腾讯云上的DCDB(TDSQL)等,这条路线最近被另外两条路线抨击比较多,因为站在某些业务场景和规模上(一般中小场景或者规模),分库分表确实对业务要求比较高,存在比较繁重的业务改造,核心问题在于这条路线暴露了拆分条件,需要让用户根据业务特性来判断,一下子把产品做成了一个架构设计,实际上拆分条件就是数据聚簇的依据,类似用单机关系型数据库也会纠结选择哪个唯一字段做主键一样,无非让查询相对二级索引少走一次btree检索,但是分库分表或者分布式数据库领域,维护二级索引一致性无论是强一致还是非强一致都是一个比较痛苦的事情,因为索引和聚簇的数据可能不在一个节点上,这样就跨了一次网络,不确定性大幅度上升,但是二级索引还是有必要存在的,一些产品也提供了这种能力支撑,但是不能滥用。某种意义上来说,把应用改成使用分库分表的数据库解决方案时,就如同单机MySQL只支持了主键索引,这个时候你的应用应该怎么写的问题,不过在核心业务场景,分库分表恰好屏蔽掉了让开发玩得很爽,正式上线压力一大就出故障的问题,并且方案非常成熟,另外MySQL存储是一种非常稳定的存在,以及运维工具、人才储备都是相当充足的,所以你把分布式数据库比作一位姑娘,Spanner路线和Aurora路线的产品就像一个让你浴火焚身的热辣妹子,分库分表加mysql路线就如同一个其貌不扬,但是能够踏踏实实每天把饭菜做好给你吃的居家女孩。
走Spanner路线,开源产品中有最近比较火的TiDB,以及spanner原班人马出来打造的CockroachDB,闭源能使用到的就是Google Cloud上的Spanner产品本尊,当然阿里云上的Oceanbase也走的这条路线,虽然一直挂在阿里云上,但是一直就不见客。这条路线实际上和分库分表加MySQL唯一区别就在于事务的处理。关系型数据库里面,最核心的实际上就是事务,所有的索引、唯一约束、主键约束、外键约束、DDL等都依赖于事务。分布式数据库这个领域,事务的核心在于可见性,一致性或者原子性可以通过各种log实现,但是可见性只有两条路:分布式锁或者分布式MVCC,其实腾讯的DCDB底下基于Mariadb经过艰难困苦的改造,勉强基于XA实现了分布式事务(腾讯之前放出过来一篇文章,随后马上被删除了),但是代价也非常巨大,性能不行,而基于原生MySQL,XA压根是一个鸡肋,两个重大问题长期没有解决(半开事务没有挂起能力,主备同步问题),直到最近的5.7.X才得到解决,效果未知,另外分布式死锁是这个领域里面最恶心的问题。而如果想基于分布式MVCC实现分布式可见性,一个是MySQL并没有暴露或者很难暴露版本,另外如果想要基于MySQL上做一层MVCC,数据实时合并的噩梦让人恐惧,所以这条路线的产品很不错,但是存储必然是一个新的东西,需要时间和场景历练,没个5-6年下不来。
走Aurora路线的,开源据了解应该没有,闭源能够使用到的只有AWS上的Aurora,阿里云上的PolarDB也走这个路线,但是目前还在内测,具体未知,从某种意义上来说,Oracle RAC是这类数据库的祖先,归并到这类也无可厚非,这条路线实际上我个人觉得是从大部分用户诉求去考虑了,就是大部分用户QPS打不满单机数据库,但是数据把磁盘给撑爆了。可能有人想一个数据库机器下挂很多个盘不就解决问题了,但是还是会碰到数据库备份、克隆、DDL因为大数据文件的搬迁导致的延迟和不确定性,所以解决方案就从存储这层下手,分布式用户态文件系统、RDMA等措施改造底层存储,解决数据传输带宽限制、数据读写损耗、数据备份缓慢等问题,但是上层MySQL还是MySQL,全兼容,存储又能做得很大,不过同时因为分布式能力的缺失,事务读写只能单点,只能靠强力的机器堆,满足大部分用户的数据事务读写要求。AWS在国内不给力,不过如果有机会在Aurora上实际跑跑业务可能是真正了解这种架构优缺点的唯一方法,因为我在google上找Aurora的缺点,确实没有找到,要么实在太好了,要么就是用得人还不多。
使用关系型数据库是一个控制欲望的过程,20年前,关系型数据库应对当时的世界可能足够了,你可以用很复杂的关系模型,因为数据量和访问量就那么大,但是现在时代发展了,很多时候我们没有意识到以前实现的关系模型可能并不适用于现在的业务场景,说得难听点,就是糟粕了。这个领域是在不断往前看,也许以前在做分库分表的产品,会推出新存储的强一致分布式数据库,做Aurora类型数据库的加一层共享内存实现事务读写的强一致性,而做spanner路线数据库是难度最大、成熟曲线最高的一种方式,需要时间。
分享到:
相关推荐
分布式数据库事务处理是一个涉及网络中多个数据库节点的数据操作,要求在保证数据一致性的...移动代理技术通过模拟人类社会的组织形态、协作关系和认知模式,为分布式数据库事务处理算法的设计提供了新的思路和方法。
### NoSQL分布式数据库知识点解析 #### 一、选择题知识点详解 **1. 关系数据库与非关系数据库** - **关系数据库**: MySQL、SQL Server 和 Oracle 均属于关系数据库,它们采用 SQL 作为标准查询语言,支持 ACID ...
本文通过研究文献数据库用户心智模型的演进驱动因素,从分布式认知理论的视角出发,揭示了分布式认知在用户心智模型构建和演变过程中的作用。 文献数据库用户心智模型演进的驱动因素主要包括:简单信息检索任务、...
分布式认知理论是一种研究人类认知活动的方式,它强调认知不仅存在于个体内部,还分布在个体之间、媒介、环境、文化、社会以及时间等多个维度中。这种理论视角认为,认知活动是一个系统性的过程,不仅仅局限于单个...
总的来说,这个职位不仅要求开发者具备Python或C#的编程能力,还需要对分布式数据库系统有一定的认知,并且愿意学习和适应新的技术和挑战。对于想要进入这个领域的开发者来说,这是一个极好的机会,可以接触到最先进...
分布式认知理论由美国学者赫钦斯等人提出,理论指出认知过程不仅依赖于认知主体,还与认知对象、认知环境等存在紧密联系。随着信息技术的发展,分布式认知逐渐受到重视,特别是在教育和计算机领域,该理论为研究学习...
翻译教学中的“分布式”认知评价模式是当前教育界对传统翻译教学评价模式的一种创新思考和改革方向。这一评价模式突破了仅仅关注译文正确与否、翻译技巧高低的单一评价模式,将翻译的认知过程视为一个“分布式”的、...
它们扩展了人类的认知能力,例如,数据库增强了记忆,符号系统推动了交流,模拟程序便于实验,媒体/人工智能则内化了认知技能。智能化工具如“写作伙伴”提供元认知指导,促使学生从被动执行转变为主动思考。 在...
9. **分布式数据库**:分布式数据库的概念、体系结构,以及分布式数据库的一致性、可用性和分区容错性问题。 10. **大数据与NoSQL**:介绍非关系型数据库,如MongoDB、HBase等,以及大数据处理技术,如Hadoop和...
分布式NoSQL数据库是分布式计算技术应用的一个典型例子,它放弃了传统的基于关系型数据库的ACID(原子性、一致性、隔离性、持久性)原则,转而采用BASE理论,使得数据库能够更灵活地进行水平扩展,满足大规模数据...
理解分布式数据库的概念,如CAP定理和BASE原则,以及Hadoop、Spark等大数据处理框架的基本工作原理。 通过深入学习以上知识点,并结合实际案例进行练习,你将能够有效地准备全国计算机四级数据库考试,从而在理论与...
根据分布式认知理论,认知的分布模型经历了三个阶段的演变:第一阶段,认知活动被看作是在媒介之间传递表征状态的一种运算过程,媒介包括内部媒介和外部媒介,如地图、计算机数据库等。第二阶段,个体认知与社会和...
10. **分布式数据库**:随着大数据时代的到来,了解分布式数据库的概念,如CAP理论和BASE原则,以及Hadoop、Cassandra等分布式数据库系统的应用。 通过这份数据库课件,新手可以逐步构建起对数据库的全面认知,掌握...
标题《认知无线电中基于一致平均的分布式合作算法》和描述中涉及了认知无线电技术中的频谱检测和分布式合作算法,它讨论了如何通过分布式方法优化频谱的检测性能,减少误检和虚警概率,并提高检测概率。为了充分利用...
国内用户对分布式计算的认知不足,大多数用户仅限于日常办公和网络娱乐,而相关研究和应用更多集中在高校和科研机构。 在未来,分布式计算技术有望在资源共享、任务协同、数据处理等方面发挥更加重要的作用,随着...
10. **分布式数据库与云数据库**:随着云计算的发展,了解分布式数据库和云数据库的概念及其实现方式变得尤为重要。 这份课件适合初学者逐步深入,通过实例和练习来理解和掌握数据库原理。每个章节都应配有相关的...
- **架构调整**:考虑到分布式数据库的设计特点,可能需要对整个应用架构进行调整,以便更好地利用分布式数据库的优势。 #### 五、结论 国产数据库的应用实践虽然面临诸多挑战,但通过合理规划和科学的技术手段,...
随后,Oracle等公司开始对分布式数据库技术进行认知和实践,如Oracle Sharding Option,进一步提升了数据库在分布式环境下的性能和可管理性。 随着技术的演进,现代数据库系统还引入了多种创新特性,如Oracle的多...
常见的数据库类型包括关系型数据库(如MySQL、SQL Server)、非关系型数据库(如MongoDB、Redis)以及分布式数据库等。在关系型数据库中,数据以表格的形式存储,通过列定义数据类型,行代表具体的数据实例,而表与...