使用EF时,涉及到数据库分库,分表该怎么处理

使用EF时,涉及到数据库分库,分表该怎么处理,第1张

如果你的数据自动分的,那么任何客户端驱动都没有必要去管它。如果是手工分的,那么不就是访问不同的库、不同的表嘛。

还是要搞清楚前一个问题:你怎样分。这个不清楚,就等于是在给自己“下套”了,在不知道分库分表的具体含义时来问这个时髦概念如何用EF来实现,无的放矢了。

基本思想之什么是分库分表?

从字面上简单理解,就是把原本存储于一个库的数据分块存储到多个库上,把原本存储于一个表的数据分块存储到多个表上。

2 基本思想之为什么要分库分表?

数据库中的数据量不一定是可控的,在未进行分库分表的情况下,随着时间和业务的发展,库中的表会越来越多,表中的数据量也会越来越大,相应地,数据 *** 作,增删改查的开销也会越来越大;另外,由于无法进行分布式式部署,而一台服务器的资源(CPU、磁盘、内存、IO等)是有限的,最终数据库所能承载的数据量、数据处理能力都将遭遇瓶颈。

1 用户类库:用于保存了用户的相关信息。例如:db_user,db_system,db_company等。

2 业务类库:用于保存主要业务的信息。比如主要业务是笑话,用这个库保存笑话业务。例如:db_joke,db_temp_joke等。

3 内存类库:主要用Mysql的内存引擎。前台的数据从内存库中查找,速度快。例如:heap。

4 类库:主要保存的索引以及关联。例如:db_img_index,db_img_res。

5 日志类库:记录点击,刷新,登录等日志信息。例如:db_log_click,db_log_fresh,db_log_login。

6 统计类库:对业务的统计,比如点击量,刷新量等等。例如db_stat。

分库分表是一种常用的数据库水平扩展方式,通过将一个数据库拆分成多个子数据库,每个子数据库再拆分成多个数据表,来实现对海量数据的高效存储和快速查询。其中分表是指将一个表拆分成多个部分存储到不同的物理节点上,而分库是指将不同的表存储到不同的数据库实例中。在进行分库分表的时候,需要先确定需要分成多少个库,多少个表,通过除以表的数量,可以得到每个库需要的表的数量,有了这个数据,我们就可以更好的规划我们的分库分表的方案,保证每个库的表数量基本相等,避免出现一些单个库或表的访问压力过大的情况。

最佳回答:回答是:在一般情况下,传统集中式数据利用高端硬件设备保证数据可靠性对。3394

1 传统集中式数据库面临的挑战

优势:

成熟稳定:经过近40年的发展,应用到了几乎所有的行业,已经被打磨的非常成熟稳定,生态很完善;

行业适配性强:适配不同行业的各种需求;

生态完善:拥有大量的ISV应用开发商和技术开发者,技术生态、产业生态和人才生态都很完善。

的差异

1 数据库是核心的IT基础设施

在这里插入描述

• 互联网业务增长,带动核心系统升级

• 核心系统引入数据库分布式与云化改造,支撑横向平滑扩展

在这里插入描述

• 5G规模推广,带动IT系统升级

• 5G具备大带宽和超低延时等能力,需要数据库系统提升响应速度和并发能力

在这里插入描述

• 打造智慧政府

• 实现智慧政府为目标的“互联网+”业务构建,对于数据库的性能和扩展提出了更高的要求

2 传统集中式数据库面临的挑战

21 传统数据库架构

在这里插入描述

22 优势

• 成熟稳定:经过近40年的发展,应用到各行各业,产品技术非常成熟稳定

• 行业适配性强:适配不同行业的各种需求

• 生态完善:拥有大量的ISV应用开发商和技术开发者,技术生态、产业生态和人才生态都很完善

23 劣势

成本高:自身软件售价高,同时依托于高端硬件,CAPEX和OPEX成本高昂

无法横向扩展:容量的提升只能依靠提升设备自身的性能(增加CPU/内存/硬盘,或从PC服务器升级为小型机等),一定能碰到单点的上限

3 使用数据库中间件的分库分表方案依然有短板

在这里插入描述

• 使用通用的数据库,可以实现数据库线性的扩容;

• 数据库是单点数据库,数据库之间没有联系,不知道其他数据库的存在,依靠中间件完成需要跨库的事务;

• 数据库中间件连接各个数据库,实现分库分表。

31 优势

线性扩展:通过分库分表,可以快速实现数据库的水平扩展

技术成本低:不需要改造核心数据库引擎,或者只需要做很少的改造

32 劣势

跨库分布式事务:数据库核心引擎没有分布式能力,只能通过中间件来完成分布式处理,但中间件难以做到RPO=0,因此在遇到异常和故障时无法100%保证分布式事务的ACID能力

全局一致性:由于多个数据库服务器的时间戳不一致,因此很难保证多个库之间数据版本号的全局一致性

负载均衡:扩容和缩容时,底层数据库引擎无法在线调整数据分布规则,因此需要暂停业务并重新导数据,对业务和运维挑战很大

跨库复杂SQL:跨库的复杂SQL运算(比如多表做分片键无关的关联查询)只能在中间件完成,而中间件不具备分布式并行计算能力,最终会限制应用对SQL的使用,产生业务侵入性

4 原生的分布式关系型数据库架构

在这里插入描述

41 优势

数据高可靠+服务高可用:多副本一致性协议Paxos的工业级实现,个别节点发生故障时保证数据零丢失(RPO=0)和服务快速恢复(RTO<30秒)

线性扩容:随着业务量增加进行扩容(比如线上促销期间),随着业务量减少进行缩容(比如促销后)

低成本:基于普通X86服务器保证高可用性,无需使用高端小型机和存储

全局一致性:支持分布式事务,确保全局一致性,支持分布式复杂查询灵活的部署方式:支持三中心、五中心、主备等多种部署模式

对业务透明:业务系统可以像使用单点数据库一样使用分布式数据库,业务迁移改造成本低

5 OceanBase和传统数据库的对比

传统集中式数据库 以OceanBase为代表的分布式数据库

产品架构 经典的“单点集中式”架构,采用“全共享(Share-Everything)”架构。构建于高端的硬件基础之上,比如IBM高端服务器和EMC高端存储设备等 原生的“分布式”数据库,采用业界最严格的Paxos分布式一致性协议基于普通PC硬件的设计,不需要高端硬件

数据可靠性和服务高可用性 利用高端硬件设备保证数据可靠性采用“主从复制”,主节点故障的情况下,会有数据损失(RPO>0);不能自动恢复服务,服务恢复时间(RTO)通常以小时为单位计算 以普通PC硬件为基础,利用Paxos分布式一致性协议保证数据可靠性

主节点故障的情况下,Paxos可以保证数据无损(即RPO=0),并且自动选举并恢复服务,服务恢复时间(RTO)在30秒以内

扩展性 数据存储只能在单点内实现纵向扩展,最终必然触达单点架构下的容量上限。计算节点通常无法扩展。少数模式下(如RAC,pureScale)可做计算节点扩展,但多个计算节点之间仍需访问单点共享存储,并且可扩展的计算节点数量有限 数据节点和计算节点均可以在MPP架构下实现水平扩展数据节点和计算节点均没有数量限制,在网络带宽足够的前提下,可以扩充至任意数目

应用场景 集中在企业客户(金融、电信、政企等)的核心系统,无法应付互联网业务场景,应用案例很少 支付宝核心、网商银行核心、阿里巴巴的众多业务,以及多家外部商业银行。逐渐迈向传统业务

使用成本 比较昂贵,需要支付高端基础硬件的费用、高昂的软件授权费用以及产品服务费用 相对较低,基于PC硬件的设计降低了硬件费用,软件授权费用和服务费用也有优势

6 小结

传统集中式数据库经过近40年的发展,已经非常成熟。但在当前这个大数据的时代,传统数据库依然面临较多挑战,分布式数据库可以有效解决这些问题,是未来数据库发展的重点方向

1:传统数据库往往对硬件基础设施有较高要求,同时只能纵向扩展,无法横向扩展,容易达到性能上限;

2:分库分表虽然可以横向扩展了,但也有带来了不支持复杂SQL、较难保证分布式事务的ACID等新问题;

3:分布式数据库可以有效解决这些问题,应用可以像使用集中式数据库一样使用分布式数据库,分布式数据库具有低硬件成本、高可扩展性、高可用性等特性。

文章知识点与官方知识档案匹配

云原生入门技能树首页概览

8775 人正在系统学习中

点击

劣势:

以上就是关于使用EF时,涉及到数据库分库,分表该怎么处理全部的内容,包括:使用EF时,涉及到数据库分库,分表该怎么处理、数据库为什么要分区分表、mysql数据库分库分表哪个工具好,我整理出来了五个,求点评等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9345054.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存