ORM,即 Object Relational Mapping,它在关系型数据库和对象之间作一个映射,这样,我们在具体的操作数据库的时候,就不需要再去和复杂的SQL语句打交道,只要像平时操作对象一样操作即可。
面向对象编程把所有实体看成对象(object),关系型数据库则是采用实体之间的关系(relation)连接数据。很早就有人提出,关系也可以用对象表达,这样的话,就能使用面向对象编程,来操作关系型数据库。
ORM把数据库映射成对象。如:数据库的表(table)-->类(class)、记录(record,行数据)-->对象(object)、字段(field)-->对象的属性(attribute)。
ORM优点:
1、使用ORM可以大大降低学习和开发成本。
2、程序员不用再写SQL来进行数据库操作。
3、减少程序的代码量。
4、降低由于SQL代码质量差而带来的影响。
ORM缺点
1、不太容易处理复杂查询语句。
2、性能较直接用SQL差。
关系型数据库:关系数据库,是建立在关系模型基础上的数据库,借助集合代数等数学概念和方法来处理数据库中的数据。现实世界中的各种实体以及实体之间的各种联系均用关系模型来表示。简单说,关系型数据库是由多张能互相联接的二维行列表格组成的数据库。
NoSQL:泛指非关系型的数据库。随着互联网的兴起,传统的关系数据库在应付超大规模和高并发的纯动态网站已经显得力不从心,暴露了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展。NoSQL数据库的产生就是为了解决大规模数据集合多重数据种类带来的挑战,尤其是大数据应用难题,包括超大规模数据的存储。
内存数据库:将数据库整体存储在内存中,提高性能。
特征 | 关系数据库模式 | NoSQL模式 |
并发支持 | 支持并发、效率低 | 并发性能高 |
存储与查询 | 关系表方式存储、SQL查询 | 海量数据存储、查询效率高 |
扩展方式 | 向上扩展 | 向外扩展 |
索引方式 | B树、哈希等 | 键值索引 |
应用领域 | 面向通用领域 | 特定应用领域 |
数据一致性 | 实时一致性 | 弱一致性 |
数据类型 | 结构化数据 | 非结构化 |
事物 | 高事务性 | 弱事务性 |
水平扩展 | 弱 | 强 |
数据容量 | 有限数据 | 海量数据 |
|
主要数据模型 | 读写性能 | 存储容量 | 可靠性 |
内存数据库 |
Key-Value模式(键-值对模式) |
内存真接读写,性能相对较高 |
基于内存存储,存储容量受限 |
恢复机制复杂,可靠性较低 |
关系数据库 |
关系模式 |
外存读写,性能相对较低 |
基于存盘存储,存储容量大 |
内建恢复机制,可靠性较高 |
设计难度 | 数据冗余程度 | 数据架构 | 应用扩展性 | |
关系型数据库 | 针对特定应用系统设计,难度较大 | 遵守数据库范式,数据冗余较小 | 以数据库为中心组织,管理数据 | 数据库独立于应用系统,数据库系统接口标准化,易于在不同应用之间共享数据 |
文件系统 | 针对特定应用系统设计,难度较小 | 可能在多个文件中复制相同的数据属性,数据冗余较大 | 以应用为中心管理数据 | 符合特定应用系统要求的文件数据很难在不同的应用系统之间共享 |
丢失更新:事务1对数据A进行了修改并写回,事务2也对A进行了修改并写回,此时事务2写回的数据会覆盖事务1写回的数据,就丢失了事务1对A的更新。即对数据A的更新会被覆盖。
不可重复读:事务2读A,而后事务1对数据A进行了修改并写回,此时若事务2再读A,发现数据不对。即一个事务重复读A两次,会发现数据A有误。
读脏数据:事务1对数据A进行了修改后,事务2读数据A,而后事务1回滚,数据A恢复了原来的值,那么事务2对数据A做的事是无效的,读到了脏数据。
X锁是排它锁(写锁)。若事务T对数据对象A加上X锁,则只允许T读取和修改A,其他事务都不能再对A加任何类型的锁,直到T释放A上的锁。
S锁是共享锁(读锁)。若事务T对数据对象A加上S锁,则只允许T读取A,但不能修改A,其他事务只能再对A加S锁(也即能读不能修改),直到T释放A上的S锁。
设有一个关系模式R(SNAME,CNAME,TNAMETADDRESS),其属性分别表示学生姓名、选修的课程名、任课教师姓名和任课教师地址。仔细分析一下,就会发现这个模式存在下列存储异常的问题:
规范化设计后,数据库设计者希望牺牲部分规范化来提高性能,这种从规范化设计的回退方法称为反规范化技术。
采用反规范化技术的益处:降低连接操作的需求、降低外码和索引的数目,还可能减少表的数目,能够提高查询效率。
可能带来的问题:数据的重复存储,浪费了磁盘空间;可能出现数据的完整性问题,为了保障数据的一致性,增加了数据维护的复杂性,会降低修改速度。
是由一组数据组成的,这组数据分布在计算机网络的不同计算机上,网络中的每个节点具有独立处理的能力(称为场地自治),它可以执行局部应用,同时,每个节点也能通过网络通信子系统执行全局应用。分布式数据库系统是在集中式数据库系统技术的基础上发展起来的,具有如下特点:
分布式数据库的优点:
数据分片将数据库整体逻辑结构分解为合适的逻辑单位(片段),然后由分布模式来定义片段及其副本在各场地的物理分布,其主要目的是提高访问的局部性,有利于按照用户的需求,组织数据的分布和控制数据的冗余度。
分布透明性是指用户不必关心数据的逻辑分片,不必关心数据存储的物理位置分配细节,也不必关心局部场地上数据库的数据模型。
数据仓库集成是把多种来源的数据集中在一起,建立数据仓库,所有数据都驻留在单个数据库服务器上,配置大型处理器和存储容量。数据仓库主要用于决策支持,在数据处理过程中强调分析。其特点是:(1)集成的数据。(2)面向主题。(3)数据相对稳定。(4)包含历史信息。
数据仓库的结构通常包含四个层次:
本文来源:程序之心,转载请注明出处!
主要介绍了计算机系统的基本概念,包括最底层的内存中的数据表示、流水线指令的构成、虚拟存储器、编译系统、动态加载库,以及用户应用等。书中提供了大量实际操作,可以帮助读者更好地理解程序执行的方式,改进程序的执行效率。此书以程序员的视角全面讲解了计算机系统,深入浅出地介绍了处理器、编译器、操作系统和网络环境,是这一领域的权威之作。
最新内容
© 2016 - 2024 chengxuzhixin.com All Rights Reserved.