云上MongoDB常见索引问题及最优索引规则大全

云上MongoDB常见索引问题及最优索引规则大全,第1张

实数类型

实数是带有小数部分的数字 然而 它们不只是为了存储小数部分 也可以使用DECIMAL 存储比BIGINT 还大的整数 MySQL 既支持精确类型 也支持不精确类型

FLOAT 和DOUBLE 类型支持使用标准的浮点运算进行近似计算 如果需要知道浮点运算是怎么计算的 则需要研究所使用的平台的浮点数的具体实现

DECIMAL 类型用于存储精确的小数 在MySQL 和更高版本 DECIMAL 类型支持精确计算 MySQL 以及更早版本则使用浮点运算来实现DECIAML 的计算 这样做会因为精度损失导致一些奇怪的结果 在这些版本的MySQL 中 DECIMAL 只是一个 存储类型 因为CPU 不支持对DECIMAL 的直接计算 所以在MySQL 以及更高版本中 MySQL服务器自身实现了DECIMAL 的高精度计算 相对而言 CPU 直接支持原生浮点计算 所以浮点运算明显更快

浮点和DECIMAL 类型都可以指定精度 对于DECIMAL 列 可以指定小数点前后所允许的最大位数 这会影响列的空间消耗 MySQL 和更高版本将数字打包保存到一个二进制字符串中(每 个字节存 个数字) 例如 DECIMAL( ) 小数点两边将各存储 个数字 一共使用 个字节 小数点前的数字用 个字节 小数点后的数字用 个字节 小数点本身占 个字节

MySQL 和更高版本中的DECIMAL 类型允许最多 个数字 而早期的MySQL 版本中这个限制是 个数字 并且保存为未压缩的字符串(每个数字一个字节) 然而 这些(早期)版本实际上并不能在计算中使用这么大的数字 因为DECIMAL 只是一种存储格式 在计算中DECIMAL 会转换为DOUBLE 类型

有多种方法可以指定浮点列所需要的精度 这会使得MySQL 悄悄选择不同的数据类型 或者在存储时对值进行取舍 这些精度定义是非标准的 所以我们建议只指定数据类型 不指定精度

浮点类型在存储同样范围的值时 通常比DECIMAL 使用更少的空间 FLOAT 使用 个字节存储 DOUBLE 占用 个字节 相比FLOAT 有更高的精度和更大的范围 和整数类型一样 能选择的只是存储类型 MySQL 使用DOUBLE 作为内部浮点计算的类型

因为需要额外的空间和计算开销 所以应该尽量只在对小数进行精确计算时才使用DECIMAL 例如存储财务数据 但在数据量比较大的时候 可以考虑使用BIGINT 代替DECIMAL 将需要存储的货币单位根据小数的位数乘以相应的倍数即可 假设要存储财务数据精确到万分之一分 则可以把所有金额乘以一百万 然后将结果存储在BIGINT 里 这样可以同时避免浮点存储计算不精确和DECIMAL 精确计算代价高的问题

       返回目录 高性能MySQL

       编辑推荐

       ASP NET MVC 框架揭秘

       Oracle索引技术

       ASP NET开发培训视频教程

lishixinzhi/Article/program/MySQL/201311/29688

无论是国内还是国外,软件开发失败的比例都非常高,部分软件系统即使上线使用,它的生命周期也非常短,为什么软件开发失败,大部分归纳起来以下几个方面:

1、项目预算不足(开发和维护成本太高)

2、需求不明确(无法满足业务需求)

3、没有整体架构设计(后续无法迭代改进)

4、开发人员能力不足(代码写得太烂,不好维护)

。。。

不可否认,以上的是项目开发失败的原因之一,作为一个IT领域从业人员,曾经历过无数个大小项目的失败,架构过多个大型项目,我认为软件系统开发失败最主要的原因是数据库设计问题,数据库设计不好项目注定会失败,而 数据库设计恰恰是最难的

1、项目预算不足(开发和维护成本太高)

一般我们在规划项目的时候会根据项目的需求评估开发周期,根据开发周期和人员角色及人员成本计算总的项目预算,如果做的比较规范的,一般预算是合理的,导致预算不足也是其他原因使开发成本增加,如需求不明确、人员技术差等。

2、需求不明确(无法满足业务需求)

可以说大部分的项目开始做的时候需求不是完全明确的,经过需求调研、需求分析、需求评审等这些环节,需求逐步清晰,但也不可能达到100%。根据不是完全明确的需求做的数据库设计一定只是满足现有需求的设计,如果最后用户改了需求,可能还需要修改数据库设计。既然需求不能完全确定,那如何避免以后出问题呢。

本人认为数据库设计一定要请高手设计,有多年项目开发经验及数据库知识的高级技术人员,首先仔细研究需求和客户探讨需求,把非常明确的需求设计好业务表,不明确的需求尽量设计灵活,有时一张表能满足设计,二张表也能满足设计,这个就需要仔细斟酌,预判未来可能的情况,尽量灵活甚至可以字段冗余(暂时不用的也可以设计),这样未来修改的风险和成本就非常低,系统上线后再修改数据库设计的代价是非常高的。表名和字段名一定要规范,设计人员要具备一些英文基础。尽量避免让实习生或刚开始工作的没有任何实践经验的人员设计。

3、没有整体架构设计(后续无法迭代改进)

本人认为架构设计是方便人员开发,提高开发效率的,架构设计也可以提高系统性能和方便维护,好的架构设计可以让整体系统层次清晰,但是架构设计即使不好,用老技术还是新技术并不影响业务的正常运行,有也是性能差一点,慢一点,不至于导致业务无法正常运营。最坏的打算就是几年以后系统重构一下采用新技术再开发。但是如果数据库没设计好,几年积累的大量业务数据你要整合和调整数据库那这个代价就是非常大了。

4、开发人员能力不足(代码写得太烂,不好维护)

开发人员能力不足这个我觉得最没有影响,某个开发人员能力差也只是影响其开发的某个模块而已(一般不会让一个技术差的写核心模块),只要他写的代码能测试通过运行,代码写的再乱都没问题,影响的只是一小部分,最坏就是以后把这部分代码重写一下就行。

另外数据库设计字段命名非常重要,不要写错的单词或毫无意义的字符,开发人员喜欢用数据库字段名在代码中命名属性,这样导致代码的可读性、维护性非常差

请大家一定要重视数据库设计,让你的软件系统生命周期更长久,数据库设计好了即使开始业务进行不下去,过一段时间还是可以重新把项目启动起来。数据库设计差以后在系统迭代更新,性能优化等方面都是问题。

本文首先讨论了基于第三范式的数据库表的基本设计,着重论述了建立主键和索引的策略和方案,然后从数据库表的扩展设计和库表对象的放置等角度概述了数据库管理系统的优化方案。

关键词: 优化(Optimizing) 第三范式(3NF) 冗余数据(Redundant Data) 索引(Index) 数据分割(Data Partitioning) 对象放置(Object Placement)

1 引言

数据库优化的目标无非是避免磁盘I/O瓶颈、减少CPU利用率和减少资源竞争。为了便于读者阅读和理解,笔者参阅了Sybase、Informix和Oracle等大型数据库系统参考资料,基于多年的工程实践经验,从基本表设计、扩展设计和数据库表对象放置等角度进行讨论,着重讨论了如何避免磁盘I/O瓶颈和减少资源竞争,相信读者会一目了然。

2 基于第三范式的基本表设计

在基于表驱动的信息管理系统(MIS)中,基本表的设计规范是第三范式(3NF)。第三范式的基本特征是非主键属性只依赖于主键属性。基于第三范式的数据库表设计具有很多优点:一是消除了冗余数据,节省了磁盘存储空间;二是有良好的数据完整性限制,即基于主外键的参照完整限制和基于主键的实体完整性限制,这使得数据容易维护,也容易移植和更新;三是数据的可逆性好,在做连接(Join)查询或者合并表时不遗漏、也不重复;四是因消除了冗余数据(冗余列),在查询(Select)时每个数据页存的数据行就多,这样就有效地减少了逻辑I/O,每个Cash存的页面就多,也减少物理I/O;五是对大多数事务(Transaction)而言,运行性能好;六是物理设计(Physical Design)的机动性较大,能满足日益增长的用户需求。

在基本表设计中,表的主键、外键、索引设计占有非常重要的地位,但系统设计人员往往只注重于满足用户要求,而没有从系统优化的高度来认识和重视它们。实际上,它们与系统的运行性能密切相关。现在从系统数据库优化角度讨论这些基本概念及其重要意义:

(1)主键(Primary Key):主键被用于复杂的SQL语句时,频繁地在数据访问中被用到。一个表只有一个主键。主键应该有固定值(不能为Null或缺省值,要有相对稳定性),不含代码信息,易访问。把常用(众所周知)的列作为主键才有意义。短主键最佳(小于25bytes),主键的长短影响索引的大小,索引的大小影响索引页的大小,从而影响磁盘I/O。主键分为自然主键和人为主键。自然主键由实体的属性构成,自然主键可以是复合性的,在形成复合主键时,主键列不能太多,复合主键使得Join作复杂化、也增加了外键表的大小。人为主键是,在没有合适的自然属性键、或自然属性复杂或灵敏度高时,人为形成的。人为主键一般是整型值(满足最小化要求),没有实际意义,也略微增加了表的大小;但减少了把它作为外键的表的大小。

(2)外键(Foreign Key):外键的作用是建立关系型数据库中表之间的关系(参照完整性),主键只能从独立的实体迁移到非独立的实体,成为后者的一个属性,被称为外键。

(3)索引(Index):利用索引优化系统性能是显而易见的,对所有常用于查询中的Where子句的列和所有用于排序的列创建索引,可以避免整表扫描或访问,在不改变表的物理结构的情况下,直接访问特定的数据列,这样减少数据存取时间;利用索引可以优化或排除耗时的分类作;把数据分散到不同的页面上,就分散了插入的数据;主键自动建立了唯一索引,因此唯一索引也能确保数据的唯一性(即实体完整性);索引码越小,定位就越直接;新建的索引效能最好,因此定期更新索引非常必要。索引也有代价:有空间开销,建立它也要花费时间,在进行Insert、Delete和Update作时,也有维护代价。索引有两种:聚族索引和非聚族索引。一个表只能有一个聚族索引,可有多个非聚族索引。使用聚族索引查询数据要比使用非聚族索引快。在建索引前,应利用数据库系统函数估算索引的大小。

① 聚族索引(Clustered Index):聚族索引的数据页按物理有序储存,占用空间小。选择策略是,被用于Where子句的列:包括范围查询、模糊查询或高度重复的列(连续磁盘扫描);被用于连接Join作的列;被用于Order by和Group by子句的列。聚族索引不利于插入作,另外没有必要用主键建聚族索引。

② 非聚族索引(Nonclustered Index):与聚族索引相比,占用空间大,而且效率低。选择策略是,被用于Where子句的列:包括范围查询、模糊查询(在没有聚族索引时)、主键或外键列、点(指针类)或小范围(返回的结果域小于整表数据的20%)查询;被用于连接Join作的列、主键列(范围查询);被用于Order by和Group by子句的列;需要被覆盖的列。对只读表建多个非聚族索引有利。索引也有其弊端,一是创建索引要耗费时间,二是索引要占有大量磁盘空间,三是增加了维护代价(在修改带索引的数据列时索引会减缓修改速度)。那么,在哪种情况下不建索引呢?对于小表(数据小于5页)、小到中表(不直接访问单行数据或结果集不用排序)、单值域(返回值密集)、索引列值太长(大于20bitys)、容易变化的列、高度重复的列、Null值列,对没有被用于Where子语句和Join查询的列都不能建索引。另外,对主要用于数据录入的,尽可能少建索引。当然,也要防止建立无效索引,当Where语句中多于5个条件时,维护索引的开销大于索引的效益,这时,建立临时表存储有关数据更有效。

批量导入数据时的注意事项:在实际应用中,大批量的计算(如电信话单计费)用C语言程序做,这种基于主外键关系数据计算而得的批量数据(文本文件),可利用系统的自身功能函数(如Sybase的BCP命令)快速批量导入,在导入数据库表时,可先删除相应库表的索引,这有利于加快导入速度,减少导入时间。在导入后再重建索引以便优化查询。

(4)锁:锁是并行处理的重要机制,能保持数据并发的一致性,即按事务进行处理;系统利用锁,保证数据完整性。因此,我们避免不了死锁,但在设计时可以充分考虑如何避免长事务,减少排它锁时间,减少在事务中与用户的交互,杜绝让用户控制事务的长短;要避免批量数据同时执行,尤其是耗时并用到相同的数据表。锁的征用:一个表同时只能有一个排它锁,一个用户用时,其它用户在等待。若用户数增加,则Server的性能下降,出现“假死”现象。如何避免死锁呢?从页级锁到行级锁,减少了锁征用;给小表增加无效记录,从页级锁到行级锁没有影响,若在同一页内竞争有影响,可选择合适的聚族索引把数据分配到不同的页面;创建冗余表;保持事务简短;同一批处理应该没有网络交互。

(5)查询优化规则:在访问数据库表的数据(Access Data)时,要尽可能避免排序(Sort)、连接(Join)和相关子查询作。经验告诉我们,在优化查询时,必须做到:

① 尽可能少的行;

② 避免排序或为尽可能少的行排序,若要做大量数据排序,最好将相关数据放在临时表中作;用简单的键(列)排序,如整型或短字符串排序;

③ 避免表内的相关子查询;

④ 避免在Where子句中使用复杂的表达式或非起始的子字符串、用长字符串连接;

⑤ 在Where子句中多使用“与”(And)连接,少使用“或”(Or)连接;

⑥ 利用临时数据库。在查询多表、有多个连接、查询复杂、数据要过滤时,可以建临时表(索引)以减少I/O。但缺点是增加了空间开销。

除非每个列都有索引支持,否则在有连接的查询时分别找出两个动态索引,放在工作表中重新排序。

3 基本表扩展设计

基于第三范式设计的库表虽然有其优越性(见本文第一部分),然而在实际应用中有时不利于系统运行性能的优化:如需要部分数据时而要扫描整表,许多过程同时竞争同一数据,反复用相同行计算相同的结果,过程从多表获取数据时引发大量的连接作,当数据来源于多表时的连接作;这都消耗了磁盘I/O和CPU时间。

尤其在遇到下列情形时,我们要对基本表进行扩展设计:许多过程要频繁访问一个表、子集数据访问、重复计算和冗余数据,有时用户要求一些过程优先或低的响应时间。

如何避免这些不利因素呢?根据访问的频繁程度对相关表进行分割处理、存储冗余数据、存储衍生列、合并相关表处理,这些都是克服这些不利因素和优化系统运行的有效途径。

31 分割表或储存冗余数据

分割表分为水平分割表和垂直分割表两种。分割表增加了维护数据完整性的代价。

水平分割表:一种是当多个过程频繁访问数据表的不同行时,水平分割表,并消除新表中的冗余数据列;若个别过程要访问整个数据,则要用连接作,这也无妨分割表;典型案例是电信话单按月分割存放。另一种是当主要过程要重复访问部分行时,最好将被重复访问的这些行单独形成子集表(冗余储存),这在不考虑磁盘空间开销时显得十分重要;但在分割表以后,增加了维护难度,要用触发器立即更新、或存储过程或应用代码批量更新,这也会增加额外的磁盘I/O开销。

垂直分割表(不破坏第三范式),一种是当多个过程频繁访问表的不同列时,可将表垂直分成几个表,减少磁盘I/O(每行的数据列少,每页存的数据行就多,相应占用的页就少),更新时不必考虑锁,没有冗余数据。缺点是要在插入或删除数据时要考虑数据的完整性,用存储过程维护。另一种是当主要过程反复访问部分列时,最好将这部分被频繁访问的列数据单独存为一个子集表(冗余储存),这在不考虑磁盘空间开销时显得十分重要;但这增加了重叠列的维护难度,要用触发器立即更新、或存储过程或应用代码批量更新,这也会增加额外的磁盘I/O开销。垂直分割表可以达到最大化利用Cache的目的。

总之,为主要过程分割表的方法适用于:各个过程需要表的不联结的子集,各个过程需要表的子集,访问频率高的主要过程不需要整表。在主要的、频繁访问的主表需要表的子集而其它主要频繁访问的过程需要整表时则产生冗余子集表。

注意,在分割表以后,要考虑重新建立索引。

32 存储衍生数据

对一些要做大量重复性计算的过程而言,若重复计算过程得到的结果相同(源列数据稳定,因此计算结果也不变),或计算牵扯多行数据需额外的磁盘I/O开销,或计算复杂需要大量的CPU时间,就考虑存储计算结果(冗余储存)。现予以分类说明:

若在一行内重复计算,就在表内增加列存储结果。但若参与计算的列被更新时,必须要用触发器更新这个新列。

若对表按类进行重复计算,就增加新表(一般而言,存放类和结果两列就可以了)存储相关结果。但若参与计算的列被更新时,就必须要用触发器立即更新、或存储过程或应用代码批量更新这个新表。

若对多行进行重复性计算(如排名次),就在表内增加列存储结果。但若参与计算的列被更新时,必须要用触发器或存储过程更新这个新列。

总之,存储冗余数据有利于加快访问速度;但违反了第三范式,这会增加维护数据完整性的代价,必须用触发器立即更新、或存储过程或应用代码批量更新,以维护数据的完整性。

33 消除昂贵结合

对于频繁同时访问多表的一些主要过程,考虑在主表内存储冗余数据,即存储冗余列或衍生列(它不依赖于主键),但破坏了第三范式,也增加了维护难度。在源表的相关列发生变化时,必须要用触发器或存储过程更新这个冗余列。当主要过程总同时访问两个表时可以合并表,这样可以减少磁盘I/O作,但破坏了第三范式,也增加了维护难度。对父子表和1:1关系表合并方法不同:合并父子表后,产生冗余表;合并1:1关系表后,在表内产生冗余数据。

4 数据库对象的放置策略

数据库对象的放置策略是均匀地把数据分布在系统的磁盘中,平衡I/O访问,避免I/O瓶颈。

⑴ 访问分散到不同的磁盘,即使用户数据尽可能跨越多个设备,多个I/O运转,避免I/O竞争,克服访问瓶颈;分别放置随机访问和连续访问数据。

⑵ 分离系统数据库I/O和应用数据库I/O。把系统审计表和临时库表放在不忙的磁盘上。

⑶ 把事务日志放在单独的磁盘上,减少磁盘I/O开销,这还有利于在障碍后恢复,提高了系统的安全性。

⑷ 把频繁访问的“活性”表放在不同的磁盘上;把频繁用的表、频繁做Join作的表分别放在单独的磁盘上,甚至把把频繁访问的表的字段放在不同的磁盘上,把访问分散到不同的磁盘上,避免I/O争夺;

⑸ 利用段分离频繁访问的表及其索引(非聚族的)、分离文本和图像数据。段的目的是平衡I/O,避免瓶颈,增加吞吐量,实现并行扫描,提高并发度,最大化磁盘的吞吐量。利用逻辑段功能,分别放置“活性”表及其非聚族索引以平衡I/O。当然最好利用系统的默认段。另外,利用段可以使备份和恢复数据更加灵活,使系统授权更加灵活。

一、考试说明

1考试要求

(1)掌握计算机体系结构以及各主要部件的性能和基本工作原理;

(2)掌握 *** 作系统、程序设计语言的基础知识,了解编译程序的基本知识;

(3)熟练掌握常用数据结构和常用算法;

(4)熟悉软件工程和软件开发项目管理的基础知识;

(5)熟悉计算机网络的原理和技术;

(6)掌握数据库原理及基本理论;

(7)掌握常用的大型数据库管理系统的应用技术;

(8)掌握数据库应用系统的设计方法和开发过程;

(9)熟悉数据库系统的管理和维护方法,了解相关的安全技术;

(10)了解数据库发展趋势与新技术;

(11)掌握常用信息技术标准、安全性,以及有关法律、法规的基本知识;

(12)了解信息化、计算机应用的基础知识;

(13)正确阅读和理解计算机领域的英文资料。

2 通过本考试的合格人员能参与应用信息系统的规划、设计、构建、运行和管理,能按照用户需求,设计、建立、运行、维护高质量的数据库和数据仓库;作为数据管理员管理信息系统中的数据资源,作为数据库管理员建立和维护核心数据库;担任数据库系统有关的技术支持,同时具备一定的网络结构设计及组网能力;具有工程师的实际工作能力和业务水平,能指导计算机技术与软件专业助理工程师(或技术员)工作。

3 本考试设置的科目包括

(1)信息系统知识,考试时间为150分钟,笔试;

(2)数据库系统设计与管理,考试时间为150分钟,笔试。

二、考试范围

考试科目1:信息系统知识

1 计算机系统知识

11 硬件知识

111 计算机体系结构和主要部件的基本工作原理

·CPU和存储器的组成、性能、基本工作原理

·常用I/O设备、通信设备的性能,以及基本工作原理

·I/O接口的功能、类型和特点

·CISC/RISC,流水线 *** 作,多处理机,并行处理

112 存储系统

·虚拟存储器基本工作原理,多级存储体系

·RAID类型和特性

113 安全性、可靠性与系统性能评测基础知识

·诊断与容错

·系统可靠性分析评价

· 计算机系统性能评测方法

12 数据结构与算法

121 常用数据结构

·数组(静态数组、动态数组)

·线性表、链表(单向链表、双向链表、循环链表)

·栈和队列

·树(二叉树、查找树、平衡树、遍历树、堆)、图、集合的定义、存储和 *** 作

·Hash(存储位置计算、碰撞处理)

122 常用算法

·排序算法、查找算法、数值计算、字符串处理、数据压缩算法、递归算法、图的相关算法

·算法与数据结构的关系,算法效率,算法设计,算法描述(流程图、伪代码、决策表),算法的复杂性

13 软件知识

131 *** 作系统知识

· *** 作系统的类型、特征、地位、内核(中断控制)、进程、线程概念

·处理机管理(状态转换、同步与互斥、信号灯、分时轮转、抢占、死锁)

·存储管理(主存保护、动态连接分配、分段、分页、虚存)

·设备管理(I/O控制、假脱机、磁盘调度)

·文件管理(文件目录、文件的结构和组织、存取方法、存取控制、恢复处理、共享和安全)

·作业管理(作业调度、作业控制语言(JCL)、多道程序设计)

·汉字处理,多媒体处理,人机界面

·网络 *** 作系统和嵌入式 *** 作系统基础知识

· *** 作系统的配置

132 程序设计语言和语言处理程序的知识

· 汇编、编译、解释系统的基础知识和基本工作原理

· 程序设计语言的基本成分:数据、运算、控制和传输,程序调用的实现机制

· 各类程序设计语言的主要特点和适用情况

14 计算机网络知识

·网络体系结构(网络拓扑、OSI/RM、基本的网络协议)

·传输介质,传输技术,传输方法,传输控制

·常用网络设备和各类通信设备

·Client/Server结构、Browser/Server结构、Browser/Web/Datebase结构

·LAN拓扑,存取控制,LAN的组网,LAN间连接,LAN-WAN连接

·因特网基础知识及应用

·网络软件

·网络管理

·网络性能分析

·网络有关的法律、法规

2 数据库技术

21 数据库技术基础

211 数据库模型

·数据库系统的三级模式(概念模式、外模式、内模式),两级映像(概念模式/外模式、外模式/内模式)

·数据库模型:数据模型的组成要素,概念数据模型ER图(实体、属性、关系),逻辑数据模型(关系模型、层次模型、网络模型)

212 数据库管理系统的功能和特征

·主要功能(数据库定义、数据库 *** 作、数据库控制、事务管理、用户视图)

·特征(确保数据独立性、数据库存取、同时执行过程、排它控制、故障恢复、安全性、完整性)

·RDB(关系数据库),OODB(面向对象数据库),ORDB(对象关系数据库),NDB(网状数据库)

·几种常用Web数据库的特点

213 数据库系统体系结构

· 集中式数据库系统

· Client/Server数据库系统

· 并行数据库系统

· 分布式数据库系统

· 对象关系数据库系统

22 数据 *** 作

221 关系运算

·关系代数运算(并、交、差、笛卡儿积、选择、投影、连接、除)

·元组演算

·完整性约束

222 关系数据库标准语言(SQL)

·SQL的功能与特点

·用SQL进行数据定义(表、视图、索引、约束)

·用SQL进行数据 *** 作(数据检索、数据插入/删除/更新、触发控制)

·安全性和授权

·程序中的API,嵌入SQL

23 数据库的控制功能

·数据库事务管理(ACID属性)

·数据库备份与恢复技术(UNDO、REDO)

·并发控制

24 数据库设计基础理论

241 关系数据库设计

·函数依赖

·规范化(第一范式、第二范式、第三范式、BC范式、第四范式、第五范式)

·模式分解及分解应遵循的原则

242 对象关系数据库设计

·嵌套关系、复杂类型,继承与引用类型

·与复杂类型有关的查询

·SQL中的函数与过程

·对象关系

25 数据挖掘和数据仓库基础知识

·数据挖掘应用和分类

·关联规则、聚类

·数据仓库的成分

·数据仓库的模式

26 多媒体基本知识

261 多媒体技术基本概念

·多媒体系统基础知识

·常用多媒体文件格式

262 多媒体压缩编码技术

·多媒体压缩编码技术

·统计编码

·预测编码

·编码的国际标准

263多媒体技术应用

·简单图形的绘制,图像文件的处理方法

·音频和视频信息的应用

·多媒体应用开发过程

27 系统性能知识

·性能计算(响应时间、吞吐量、周转时间)

·性能指标和性能设计

·性能测试和性能评估

28 计算机应用基础知识

·信息管理、数据处理、辅助设计、科学计算,人工智能等基础知识

·远程通信服务及相关通信协议基础知识

3 系统开发和运行维护知识

31 软件工程、软件过程改进和软件开发项目管理知识

·软件工程知识

·软件开发生命周期阶段目标和任务

·软件开发项目基础知识(时间管理、成本管理、质量管理、人力资源管理、风险管理等)及其常用管理工具

·主要的软件开发方法(生命周期法、原型法、面向对象法、CASE)

·软件开发工具与环境知识

·软件质量管理基础知识

·软件过程改进基础知识

·软件开发过程评估、软件能力成熟度评估的基础知识

32 系统分析基础知识

·系统分析的目的和任务

·结构化分析方法(数据流图(DFD)和数据字典(DD),实体关系图(ERD),描述加工处理的结构化语言)

·统一建模语言(UML)

·系统规格说明书

33 系统设计知识

·系统设计的目的和任务

·结构化设计方法和工具(系统流程图、HIPO图、控制流程图)

·系统总体结构设计(总体布局,设计原则,模块结构设计,数据存取设计,系统配置方案)

·系统详细设计(代码设计、数据库设计、用户界面设计、处理过程设计)

·系统设计说明书

34 系统实施知识

·系统实施的主要任务

·结构化程序设计、面向对象程序设计、可视化程序设计

·程序设计语言的选择、程序设计风格

·系统测试的目的、类型,系统测试方法(黑盒测试、白盒测试、灰盒测试)

·测试设计和管理(错误曲线、错误排除、收敛、注入故障、测试试用例设计、系统测试报告)

·系统转换基础知识

35 系统运行和维护知识

·系统运行管理知识

·系统维护知识

·系统评价知识

4 安全性知识

·安全性基本概念(网络安全、 *** 作系统安全、数据库安全)

·计算机病毒的防治,计算机犯罪的防范,容灾

·访问控制、防闯入、安全管理措施

·加密与解密机制

·风险分析、风险类型、抗风险措施和内部控制

5标准化知识

·标准化意识,标准化的发展,标准出台过程

·国际标准、国家标准、行业标准、企业标准基本知识

·代码标准、文件格式标准、安全标准软件开发规范和文档标准

·标准化机构

6信息化基础知识

·信息化意识

·全球信息化趋势、国家信息化战略、企业信息化战略和策略

·有关的法律、法规

·远程教育、电子商务、电子政务等基础知识

·企业信息资源管理基础知识

7计算机专业英语

·掌握计算机技术的基本词汇

·能正确阅读和理解计算机领域的英文资料

考试科目2:数据库系统设计与管理

1数据库设计

11理解系统需求说明

·了解用户需求、确定系统范围

·确定应用系统数据库的各种关系

·现有环境与新系统环境的关系

·新系统中的数据项、数据字典、数据流

12 系统开发的准备

·选择开发方法,准备开发环境,制订开发计划

13 设计系统功能

·选择系统机构,设计各子系统的功能和接口,设计安全性策略、需求和实现方法,制定详细的工作流和数据流

14 数据库设计

141 设计数据模型

·概念结构设计(设计ER模型)

·逻辑结构设计(转换成DBMS所能接收的数据模型)

·评审设计

142 物理结构设计

·设计方法与内容

·存取方法的选择

·评审设计与性能预测

143 数据库实施与维护

·数据加载与应用程序调试

·数据库试运行

·数据库运行与维护

144 数据库的保护

·数据库的备份与恢复

·数据库的安全性

·数据库的完整性

·数据库的并发控制

15 编写外部设计文档

·编写系统说明书(系统配置图、各子系统关系图、系统流程图,系统功能说明、输入输出规格说明、数据规格

sss 说明、用户手册框架)

·设计系统测试要求

16 设计评审

2 数据库应用系统设计

21 设计数据库应用系统结构

·信息系统的架构(如Client/Server)与DBMS

·多用户数据库环境(文件服务器体系结构、Client/Server体系结构)

·大规模数据库和并行计算机体系结构(SMP、MPP)

·中间件角色和相关工具

·按构件分解,确定构件功能规格以及构件之间的接口

22 设计输入输出

·屏幕界面设计,设计输入输出检查方法和检查信息

·数据库交互与连接(掌握C程序设计语言,以及Java、Visual Basic、Visual C++、PowerBuilder、Delphi中任一种开发工具与数据库互连的方法(如何与数据库服务器沟通))

23 设计物理数据

·分析事务在数据库上运行的频率和性能要求,确定逻辑数据组织方式、存储介质,设计索引结构和处理方式

·将逻辑数据结构变换成物理数据结构,计算容量(空间代价),确定存取方法(时间效率)、系统配置(维护代价)并进行优化

24 设计安全体系

·明确安全等级

·数据库的登录方式

·数据库访问

·许可(对象许可、命令许可、授权许可的方法)

25 应用程序开发

251 应用程序开发

·选择应用程序开发平台

·系统实施顺序

·框架开发

·基础小组的程序开发

·源代码控制

·版本控制

252 模块划分(原则、方法、标准)

253 编写程序设计文档

·模块规格说明书(功能和接口说明、程序处理逻辑的描述、输入输出数据格式的描述)

·测试要求说明书(测试类型和目标,测试用例,测试方法)

254 程序设计评审

26 编写应用系统设计文档

·系统配置说明、构件划分图、构件间的接口、构件处理说明、屏幕设计文档、报表设计文档、程序设计文档、文件设计文档、数据库设计文档

27 设计评审

3 数据库应用系统实施

31 整个系统的配置与管理

32 常用数据库管理系统的应用(SQL Server、Oracle、Sybase、DB2、Access或Visual Foxpro)

·创建数据库

·创建表、创建索引、创建视图、创建约束、创建UDDT(用户自定义类型)

·创建和管理触发器

·建立安全体系

33 数据库应用系统安装

·拟定系统安装计划(考虑费用、客户关系、雇员关系、后勤关系和风险等因素)

·拟定人力资源使用计划(组织机构安排的合理性)

·直接安装(安装新系统并使系统快速进入运行状态)

·并行安装(新旧系统并行运行一段时间)

·阶段安装(经过一系列的步骤和阶段使新系统各部分逐步投入运行)

34 数据库应用系统测试

·拟定测试目标、计划、方法与步骤

·数据加载,准备测试数据

·指导应用程序员进行模块测试进行验收

·准备系统集成测试环境测试工具

·写出数据库运行测试报告

35 培训与用户支持

4数据库系统的运行和管理

41 数据库系统的运行计划

·运行策略的确定

·确定数据库系统报警对象和报警方式

·数据库系统的管理计划(执行,故障/恢复,安全性,完整性,用户培训和维护)

42 数据库系统的运行和维护

·新旧系统的转换

·收集和分析报警数据(执行报警、故障报警、安全报警)

·连续稳定的运行

·数据库维护(数据库重构、安全视图的评价和验证、文档维护)

·数据库系统的运行统计(收集、分析、提出改进措施)

·关于运行标准和标准改进一致性的建议

·数据库系统的审计

43 数据库管理

·数据字典和数据仓库的管理

·数据完整性维护和管理(实体完整性、参照完整性)

·数据库物理结构的管理(保证数据不推迟访问)

·数据库空间及碎片管理

·备份和恢复(顺序、日志(审计痕迹)、检查点)

·死锁管理(集中式、分布式)

·并发控制(可串行性、锁机制、时间戳、优化)

·数据安全性管理(加密、安全、访问控制、视图、有效性确认规则)

·数据库管理员(DBA)职责

44 性能调整

·SQL语句的编码检验

·表设计的评价

·索引的改进

·物理分配的改进

·设备增强

·数据库性能优化

45 用户支持

·用户培训

·售后服务

5 SQL

51 数据库语言

·数据库语言的要素

·数据库语言的使用方式(交互式和嵌入式)

52 SQL概述

·SQL语句的特征

·SQL语句的基本成分

53 数据库定义

·创建数据库(Create Datebase)、创建表(Create Table)

·定义数据完整性

·修改表(Alter Table)、删除表(Drop Table)

·定义索引(Create Index)、删除索引(Drop Index)

·定义视图(Create View)、删除视图(Drop View)、更新视图

54 数据 *** 作

·Select语句的基本机构

·简单查询

·SQL中的选择、投影

·字符串比较,涉及空值的比较

·日期时间,布尔值,输出排序

·多表查询

·避免属性歧义

·SQL中的连接、并、交、差

·SQL中的元组变量

·子查询

55 完整性控制与安全机制

·主键(Primary Key)约束

·外键(Foreign Key)约束

·属性值上的约束(Null、Check、Create Domain)

·全局约束(Create Assertions)

·权限、授权(Grant)、销权(Revoke)

56 创建触发器(Create Trigger)

57 SQL使用方式

·交互式SQL

·嵌入式SQL

·SQL与宿主语言接口(Declare、共享变量、游标、卷游标)

·动态SQL

·API

58 SQL 标准化

6 网络环境下的数据库

61 分布式数据库

611 分布式数据库的概念

·分布式数据库的特点与目标

612 分布式数据库的体系结构

·分布式数据库的模式结构

·数据分布的策略(数据分片、分布透明性)

·分布式数据库管理系统

613 分布式查询处理和优化

614 分布式事务管理

·分布式数据库的恢复(故障、恢复、2段提交、3段提交)

·分布式数据库的透明性(局部、分裂、复制、处理、并发、执行)

615 分布式数据库系统的应用

62 网络环境下数据库系统的设计与实施

·数据的分布设计

·负载均衡设计

·数据库互连技术

63 面向Web的DBMS技术

·三层体系结构

·动态Web网页

·ASP、JSP、XML的应用

7数据库的安全性

71 安全性策略的理解

·数据库视图的安全性策略

·数据的安全级别(最重要的、重要的、注意、选择)

72 数据库安全测量

·用户访问控制(采用口令等)

·程序访问控制(包含在程序中的SQL命令限制)

·表的访问控制(视图机制)

·控制访问的函数和 *** 作

·外部存储数据的加密与解密

8 数据库发展趋势与新技术

81 面向对象数据库(OODBMS)

811 OODBMS的特征

812 面向对象数据模型

·对象结构、对象类、继承与多重继承、对象标识、对象包含、对象嵌套

813 面向对象数据库语言

814 对象关系数据库系统(ORDBMS)

·嵌套关系

·复杂类型

·继承、引用类型

·与复杂类型有关的查询

·函数与过程

·面向对象与对象关系

·ORDBMS应用领域

82 企业资源计划(ERP)和数据库

821 ERP概述

·基本MRP(制造资源计划)、闭环MRP、ERP

·基本原理、发展趋势

·ERP设计的总体思路(一个中心、两类业务、三条干线)

822 ERP与数据库

·运行数据库与ERP数据模型之间的关系

·运行数据库与ERP数据库之间的关系

823 案例分析

83 决策支持系统的建立

·决策支持系统的概念

·数据仓库设计

·数据转移技术

·联机分析处理(OLAP)技术

·企业决策支持解决方案

·联机事务处理(OLTP)

月薪13000 加油哦~~~

以上就是关于云上MongoDB常见索引问题及最优索引规则大全全部的内容,包括:云上MongoDB常见索引问题及最优索引规则大全、全国计算机三级数据库考点分析之数据库系统基本原理[5]、高性能MySQL:实数类型等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址:https://54852.com/sjk/9519763.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存