1 基本思想之什么是分库分表?
从字面上简单理解,就是把原本存储于一个库的数据分块存储到多个库上,把原本存储于一个表的数据分块存储到多个表上。
2 基本思想之为什么要分库分表?
数
据库中的数据量不一定是可控的,在未进行分库分表的情况下,随着时间和业务的发展,库中的表会越来越多,表中的数据量也会越来越大,相应地,数据 *** 作,增
删改查的开销也会越来越大;另外,由于无法进行分布式式部署,而一台服务器的资源(CPU、磁盘、内存、IO等)是有限的,最终数据库所能承载的数据量、
数据处理能力都将遭遇瓶颈。
3 分库分表的实施策略。
分库分表有垂直切分和水平切分两种。
31
何谓垂直切分,即将表按照功能模块、关系密切程度划分出来,部署到不同的库上。例如,我们会建立定义数据库workDB、商品数据库payDB、用户数据
库userDB、日志数据库logDB等,分别用于存储项目数据定义表、商品定义表、用户数据表、日志数据表等。
32
何谓水平切分,当一个表中的数据量过大时,我们可以把该表的数据按照某种规则,例如userID散列,进行划分,然后存储到多个结构相同的表,和不同的库
上。例如,我们的userDB中的用户数据表中,每一个表的数据量都很大,就可以把userDB切分为结构相同的多个userDB:part0DB、
part1DB等,再将userDB上的用户数据表userTable,切分为很多userTable:userTable0、userTable1等,
然后将这些表按照一定的规则存储到多个userDB上。
33 应该使用哪一种方式来实施数据库分库分表,这要看数据库中数据量的瓶颈所在,并综合项目的业务类型进行考虑。
如果数据库是因为表太多而造成海量数据,并且项目的各项业务逻辑划分清晰、低耦合,那么规则简单明了、容易实施的垂直切分必是首选。
而
如果数据库中的表并不多,但单表的数据量很大、或数据热度很高,这种情况之下就应该选择水平切分,水平切分比垂直切分要复杂一些,它将原本逻辑上属于一体
的数据进行了物理分割,除了在分割时要对分割的粒度做好评估,考虑数据平均和负载平均,后期也将对项目人员及应用程序产生额外的数据管理负担。
在现实项目中,往往是这两种情况兼而有之,这就需要做出权衡,甚至既需要垂直切分,又需要水平切分。我们的游戏项目便综合使用了垂直与水平切分,我们首先对数据库进行垂直切分,然后,再针对一部分表,通常是用户数据表,进行水平切分。
4 分库分表存在的问题。
41 事务问题。
在执行分库分表之后,由于数据存储到了不同的库上,数据库事务管理出现了困难。如果依赖数据库本身的分布式事务管理功能去执行事务,将付出高昂的性能代价;如果由应用程序去协助控制,形成程序逻辑上的事务,又会造成编程方面的负担。
42 跨库跨表的join问题。
在执行了分库分表之后,难以避免会将原本逻辑关联性很强的数据划分到不同的表、不同的库上,这时,表的关联 *** 作将受到限制,我们无法join位于不同分库的表,也无法join分表粒度不同的表,结果原本一次查询能够完成的业务,可能需要多次查询才能完成。
43 额外的数据管理负担和数据运算压力。
额
外的数据管理负担,最显而易见的就是数据的定位问题和数据的增删改查的重复执行问题,这些都可以通过应用程序解决,但必然引起额外的逻辑运算,例如,对于
一个记录用户成绩的用户数据表userTable,业务要求查出成绩最好的100位,在进行分表之前,只需一个order
by语句就可以搞定,但是在进行分表之后,将需要n个order
by语句,分别查出每一个分表的前100名用户数据,然后再对这些数据进行合并计算,才能得出结果。
Excel不是数据库软件。
选项中4种软件简介:
1、Access:
Microsoft Office Access是由微软发布的关系数据库管理系统。它结合了 MicrosoftJet Database Engine 和 图形用户界面两项特点,是 Microsoft Office 的系统程序之一。
2、SQL:
SQL是英文Structured Query Language的缩写,意思为结构化查询语言。SQL语言的主要功能就是同各种数据库建立联系,进行沟通。SQL Server是由Microsoft开发和推广的关系数据库管理系统(RDBMS)。
3、Oracle:
Oracle Database,又名Oracle RDBMS,或简称Oracle。Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。它是一种高效率、可靠性好的、适应高吞吐量的数据库解决方案。
4、Excel:
Microsoft Excel是Microsoft为使用Windows和Apple Macintosh *** 作系统的电脑编写的一款电子表格软件。直观的界面、出色的计算功能和图表工具,再加上成功的市场营销,使Excel成为最流行的个人计算机数据处理软件。
扩展资料:
数据库软件应具备的功能:
1、模式翻译:提供数据定义语言(ddl)。用它书写的数据库模式被翻译为内部表示。数据库的逻辑结构、完整性约束和物理储存结构保存在内部的数据字典中。数据库的各种数据 *** 作(如查找、修改、插入和删除等)和数据库的维护管理都是以数据库模式为依据的。
2、应用程序的编译:把包含着访问数据库语句的应用程序,编译成在dbms支持下可运行的目标程序。
3、交互式查询:提供易使用的交互式查询语言,如SQLDBMS负责执行查询命令,并将查询结果显示在屏幕上。
4、数据的组织与存取:提供数据在外围储存设备上的物理组织与存取方法。
5、事务运行管理:提供事务运行管理及运行日志,事务运行的安全性监控和数据完整性检查,事务的并发控制及系统恢复等功能。
6、数据库的维护:为数据库管理员提供软件支持,包括数据安全控制、完整性保障、数据库备份、数据库重组以及性能监控等维护工具。、
参考资料来源:百度百科-Microsoft Office Access
参考资料来源:百度百科-SqlServer
参考资料来源:百度百科-Microsoft Office Excel
参考资料来源:百度百科-Oracle数据库
数据库应用系统的开发是一项软件工程。一般可分为以下几个阶段:
1规划 2需求分析 3概念模型设计 4 逻辑设计5物理设计 6程序编制及调试 7运行及维护。 这些阶段的划分目前尚无统一的标准,各阶段间相互联接,而且常常需要回溯修正。 在数据库应用系统的开发过程中,每个阶段的工作成果就是写出相应的文档。每个阶段都是在上一阶段工作成果的基础上继续进行,整个开发工程是有依据、有组织、有计划、有条不紊地展开工作。
1规划规划的主要任务就是作必要性及可行性分析。 在收集整理有关资料的基础上,要确定将建立的数据库应用系统与周边的关系,要对应用系统定位,其规模的大小、所处的地位、应起的作用均须作全面的分析和论证。 明确应用系统的基本功能,划分数据库支持的范围。分析数据来源、数据采集的方式和范围,研究数据结构的特点,估算数据量的大小,确立数据处理的基本要求和业务的规范标准。 规划人力资源调配。对参与研制和以后维护系统运作的管理人员、技术人员的技术业务水平提出要求,对最终用户、 *** 作员的素质作出评估。 拟定设备配置方案。论证计算机、网络和其他设备在时间、空间两方面的处理能力,要有足够的内外存容量,系统的响应速度、网络传输和输入输出能力应满足应用需求并留有余量。要选择合适的os,dbms和其它软件。设备配置方案要在使用要求、系统性能、购置成本和维护代价各方面综合权衡。 对系统的开发、运行、维护的成本作出估算。预测系统效益的期望值。 拟定开发进度计划,还要对现行工作模式如何向新系统过渡作出具体安排。 规划阶段的工作成果是写出详尽的可行性分析报告和数据库应用系统规划书。内容应包括:系统的定位及其功能、数据资源及数据处理能力、人力资源调配、设备配置方案、开发成本估算、开发进度计划等。 可行性分析报告和数据库应用系统规划书经审定立项后,成为后续开发工作的总纲。 2需求分析需求分析大致可分成三步来完成。 (1) 需求信息的收集, 需求信息的收集一般以机构设置和业务活动为主干线,从高层中层到低层逐步展开 (2) 需求信息的分析整理, 对收集到的信息要做分析整理工作。数据流图(dfd, data flow diagram)是业务流程及业务中数据联系的形式描述。图41是一个简单的dfd 示例。 数据字典(dd, data dictionary)详细描述系统中的全部数据。 数据字典包含以下几个部分。 数据项:是数据的原子单位。 数据组项:由若干数据项组成。 数据流:表示某一数据加工过程的输入/输出数据。 数据存储:是处理过程中要存取的数据。 数据加工过程 数据加工过程的描述包括:数据加工过程名、说明、输入、输出、加工处理工作摘要、加工处理频度、加工处理的数据量、响应时间要求等。 数据流图既是需求分析的工具,也是需求分析的成果之一。数据字典是进行数据收集和数据分析的主要成果。 (3) 需求信息的评审 开发过程中的每一个阶段都要经过评审,确认任务是否全部完成,避免或纠正工作中出现的错误和疏漏。聘请项目外的专家参与评审,可保证评审的质量和客观性。 评审可能导致开发过程回溯,甚至会反复多次。但是,一定要使全部的预期目标都达到才能让需求分析阶段的工作暂告一个段落 需求分析阶段的工作成果是写出一份既切合实际又具有预见的需求说明书,并且附以一整套详尽的数据流图和数据字典。 3概念模型设计概念模型不依赖于具体的计算机系统,他是纯粹反映信息需求的概念结构。 建模是在需求分析结果的基础上展开,常常要对数据进行抽象处理。常用的数据抽象方法是‘聚集’和‘概括’。 er方法是设计概念模型时常用的方法。用设计好的er图再附以相应的说明书可作为阶段成果 概念模型设计可分三步完成。 (1) 设计局部概念模型 ① 确定局部概念模型的范围 ② 定义实体 ③ 定义联系 ④ 确定属性 ⑤ 逐一画出所有的局部er图,并附以相应的说明文件 (2) 设计全局概念模型 建立全局er图的步骤如下: ① 确定公共实体类型 ② 合并局部er图 ③ 消除不一致因素 ④ 优化全局er图 ⑤ 画出全局er图,并附以相应的说明文件。 (3) 概念模型的评审 概念模型的评审分两部分进行 第一部分是用户评审。 第二部分是开发人员评审。 4逻辑设计逻辑设计阶段的主要目标是把概念模型转换为具体计算机上dbms所支持的结构数据模型。 逻辑设计的输入要素包括:概念模式、用户需求、约束条件、选用的dbms的特性。 逻辑设计的输出信息包括:dbms可处理的模式和子模式、应用程序设计指南、物理设计指南。 (1) 设计模式与子模式 关系数据库的模式设计可分四步完成。 ① 建立初始关系模式 ② 规范化处理 ③ 模式评价 ④ 修正模式 经过多次的模式评价和模式修正,确定最终的模式和子模式。 写出逻辑数据库结构说明书。 (2) 编写应用程序设计指南 根据设计好的模式和应用需求,规划应用程序的架构,设计应用程序的草图,指定每个应用程序的数据存取功能和数据处理功能梗概,提供程序上的逻辑接口。 编写出应用程序设计指南。 (3) 编写物理设计指南。 根据设计好的模式和应用需求,整理出物理设计阶段所需的一些重要数据和文档。例如,数据库的数据容量、各个关系(文件)的数据容量、应用处理频率、 *** 作顺序、响应速度、各个应用的lra和tv、程序访问路径建议,等等。这些数据和要求将直接用于物理数据库的设计。 编写出物理设计指南。 5物理设计物理设计是对给定的逻辑数据模型配置一个最适合应用环境的物理结构。 物理设计的输入要素包括:模式和子模式、物理设计指南、硬件特性、os和dbms的约束、运行要求等。 物理设计的输出信息主要是物理数据库结构说明书。其内容包括物理数据库结构、存储记录格式、存储记录位置分配及访问方法等。 物理设计的步骤如下: (1) 存储记录结构 设计综合分析数据存储要求和应用需求,设计存储记录格式。 (2) 存储空间分配 存储空间分配有两个原则: ①存取频度高的数据尽量安排在快速、随机设备上,存取频度低的数据则安排在速度较慢的设备上。 ②相互依赖性强的数据尽量存储在同一台设备上,且尽量安排在邻近的存储空间上。 从提高系统性能方面考虑,应将设计好的存储记录作为一个整体合理地分配物理存储区域。尽可能充分利用物理顺序特点,把不同类型的存储记录指派到不同的物理群中。 (3) 访问方法的设计 一个访问方法包括存储结构和检索机构两部分。存储结构限定了访问存储记录时可以使用的访问路径;检索机构定义了每个应用实际使用的访问路径。 (4) 物理设计的性能评价 ① 查询响应时间 从查询开始到有结果显示之间所经历的时间称为查询响应时间。查询响应时间可进一步细分为服务时间、等待时间和延迟时间。 在物理设计过程中,要对系统的性能进行评价。性能评价包括时间、空间、效率、开销等各个方面。 ⊙ cpu服务时间和i/o服务时间的长短取决于应用程序设计。 ⊙ cpu队列等待时间和i/o队列等待时间的长短受计算机系统作业的影响。 ⊙ 设计者可以有限度地控制分布式数据库系统的通信延迟时间。 ② 存储空间 存储空间存放程序和数据。程序包括运行的应用程序、dbms子程序、os子程序等。数据包括用户工作区、dbms工作区、os工作区、索引缓冲区、数据缓冲区等。 存储空间分为主存空间和辅存空间。设计者只能有限度地控制主存空间,例如可指定缓冲区的分配等。但设计者能够有效地控制辅存空间。 ③ 开销与效率 设计中还要考虑以下各种开销,开销增大,系统效率将下降。 ⊙ 事务开销指从事务开始到事务结束所耗用的时间。更新事务要修改索引、重写物理块、进行写校验等 *** 作,增加了额外的开销。更新频度应列为设计的考虑因素。 ⊙ 报告生成开销指从数据输入到有结果输出这段时间。报告生成占用cpu及i/o的服务时间较长。设计中要进行筛选,除去不必要的报告生成。 ⊙ 对数据库的重组也是一项大的开销。设计中应考虑数据量和处理频度这两个因数,做到避免或尽量减少重组数据库。 在物理设计阶段,设计、评价、修改这个过程可能要反复多次,最终得到较为完善的物理数据库结构说明书。 建立数据库时,dba依据物理数据库结构说明书,使用dbms提供的工具可以进行数据库配置。 在数据库运行时,dba监察数据库的各项性能,根据依据物理数据库结构说明书的准则,及时进行修正和优化 *** 作,保证数据库系统能够保持高效率地运行。 6程序编制及调试在逻辑数据库结构确定以后,应用程序设计的编制就可以和物理设计并行地展开 程序模块代码通常先在模拟的环境下通过初步调试,然后再进行联合调试。联合调试的工作主要有以下几点: (1) 建立数据库结构 根据逻辑设计和物理设计的结果,用dbms提供的数据语言(ddl)编写出数据库的源模式,经编译得到目标模式,执行目标模式即可建立实际的数据库结构。 (2) 调试运行 数据库结构建立后,装入试验数据,使数据库进入调试运行阶段。运行应用程序,测试 (3) 装入实际的初始数据 在数据库正式投入运行之前,还要做好以下几项工作: (1) 制定数据库重新组织的可行方案。 (2) 制定故障恢复规范 (3) 制定系统的安全规范 7运行和维护数据库正式投入运行后,运行维护阶段的主要工作是: (1) 维护数据库的安全性与完整性。 按照制定的安全规范和故障恢复规范,在系统的安全出现问题时,及时调整授权和更改密码。及时发现系统运行时出现的错误,迅速修改,确保系统正常运行。把数据库的备份和转储作为日常的工作,一旦发生故障,立即使用数据库的最新备份予以恢复。 (2) 监察系统的性能。 运用dbms提供的性能监察与分析工具,不断地监控着系统的运行情况。当数据库的存储空间或响应时间等性能下降时,立即进行分析研究找出原因,并及时采取措施改进。例如,可通修改某些参数、整理碎片、调整存储结构或重新组织数据库等方法,使数据库系统保持高效率地正常运作。 (3) 扩充系统的功能 在维持原有系统功能和性能的基础上,适应环境和需求的变化,采纳用户的合理意见,对原有系统进行扩充,增加新的功能。
以上就是关于数据库为什么要分库分表全部的内容,包括:数据库为什么要分库分表、下列软件,不属于数据库的选项是、在数据库应用系统开发过程中,要在什么阶段对系统进行总体规划等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)