数据管理:存储方式对数据管理的影响
数据的存储方式对数据的管理影响是非常大的,根据数据管理的发展可以简单分为文件存储、文件数据库存储、内存数据库存储、网络存储几个阶段。
文件存储:包括非格式化数据存储和简单格式化数据数据存储。
数据库存储:对数据进行高度的格式化的管理,并存储在本地文件系统中。
内存存储:对数据进行高度格式化或对象化的管理,并存储在本地内存中。
网络存储:对数据进行高度对象化的管理,并存储在网络系统中。
选择何种数据存储方式进行数据的管理,是根据应用的需求来决定的。总体来说,随着系统的性能、可靠性要求的逐步提高,可依次对文件存储、数据库存储、内存存储、网络存储进行选择。
根据我们网管的当前阶段,重点介绍数据库存储和内存存储的特性。
完全数据库存储:本地数据库是应用程序的数据中心,应用的数据对象存储在本地数据库中,在使用时向数据库查询数据。
数据库的本地特性和数据中心特性是这种方式的两大特性。这两大特性,该存储方式特点的初始原点,下面介绍这两大特性对数据库特点产生的影响。
内存消耗:无。这是以本地数据库作为应用的数据中心这个特性决定的。
访问性能:慢。这是由数据库的本地特性带来的。(磁盘IO性能是有限的,尽管数据库有索引、缓存、分区技术,但磁盘IO依然是性能的天花板)。
对象化:低。关系型数据库是面向关系设计的,具有结构化特征,却不是对象化特征。面向对象的进程使用这些数据时候,必须进行结构化与对象化数据之间的互换。(这边只讨论我们常用的关系型数据库,不讨论对象数据库)。
题外话:当前各主流操作系统的文件都是面向数据流方式的,磁盘也是面向数据流方式而设计的。面向对象的数据存储方式是必须随机访问的,导致了在流文件系统上所建立的对象数据库总是效率低下。
总结:完全数据库存储方式,比较适用在性能要求不高,配置比较低下,开发比较简单的系统当中。
内存映射数据管理:通过映射的方式将数据库中格式化数据映射到内存中,并将内存中的格式化或对象化数据提供给应用访问的方式。
数据库与内存之间的映射,是这种方式的最大特性。比较常见的有CACHE、LRU等技术,这种特性通过少量的内存开销,得到更大的数据读取效率。这种方式,对数据库数据的访问进行了优化,还是以保留了以数据库为中心的思想。
内存消耗:少。(只花费少量内存进行数据的缓存和映射)
访问性能:快/慢。(在内存中的很快,数据库中的很慢,是否快慢全看数据的缓存状况)
对象化:低。(简单的映射,无法改变以本地数据库为中心所遗留的特质)
题外话:在介绍内存存储前不得不介绍这种过渡性的中间存储方式,不然有人会混淆内存存储与映射存储。
总结:映射存储方式在以数据库为中心特性上,通过少量的数据开销,适当优化了数据的读取性能。比较适用性能要求中等,配置较低,开发简单的系统中。
内存管理:在内存中被数据对象管理器所管理数据对象才是应用的数据中心,数据库等本地存储只进行持久化,应用使用数据时,全在内存中进行。
内存中和对象化是内存管理的两大特征,是内存数据管理方式下各种特性的原点。
内存消耗:大。(常用业务数据都在内存中)
访问性能:快。(全在内存中,可以随机访问、贴近进程,并且对象化,访问效率高)
对象化:高。(内存中的数据以业务数据为模型,内存是面向随机访问而设计的,数据层与应用层同在内存侧)
题外话:磁盘的特性是顺序访问,适用于流存储,更适用于结构化,而内存的特性是随机访问,适用于块存储,更适用于对象化。内存中的数据是面向对象化的组织方式,对应用程序来说,不需要额外的结构化到对象化的映射。数据中心的数据对象与使用数据的应用代码同在内存侧,不必进行映射,并且可以按对象的方式进行更加高效的访问。
对比:跟映射方式区别就是,映射以数据库为中心,内存管理以内存为中心。映射是以小的缓存代价获得更多的性能,但是当性能要求更高的时候,缓存的大小已经接近全内存,而此时的内存数据访问效率却由于数据模型的约束,导致同在内存中,也非常低下。
关于持久化:内存管理方式中,内存中数据中心的修改是异步持久化进入数据库,而映射方式是同步持久化进入数据库的,因此同样是持久化,应用读写数据时不受磁盘IO的影响。
总结:以内存为数据存储中心,在纯粹的面向对象的设计,提高内存数据对象的访问效率,获得高的性能。比较适用于内存较大的服务器的服务端开发。
网络存储:将数据分布在多个服务器中,通过网络将各服务器物理上连接起来,构成一个逻辑的数据库。
即使是内存,单机的性能和可靠性是有限的,当有更高的可靠性和性能要求的时候,此时就会用到网络存储。该方式在网管目前尚未有这个需求,在此不以讨论。
作者 |胡朋武
转载请注明出处:华为云博客 https://portal.hwclouds.com/blogs
- 点赞
- 收藏
- 关注作者
评论(0)