数据库发展的简单理解

        前一段时间,因为兴趣等原因对数据库方面的知识做了一些了解。担心时间长了,会忘记的非常彻底,所以做一个小小的总结,算作是学习笔记。

为什么要有数据库?

        软件是数据和指令的集合。一个简单的软件系统,可能就由一些简单的数据和对数据进行处理的逻辑所组成。这些数据以单个数字、数组、结构体等形式存储在静态存储区、堆、栈或者硬盘等不同的位置。软件逻辑简单时,我们甚至不需要对这些数据的存取做所谓的设计,仅仅依据编码的基本原则进行就可以了。当逻辑变复杂一点,数据量变大一点,数据类型变多样一点后,我们要开始考虑数据和逻辑的封装、开始考虑数据存取的效率、开始考虑多线程对同一份数据的并行操作、开始考虑断电后数据的恢复等,这个时候数据结构的设计和数据的保存会成为软件设计的核心内容。后续软件实现的简单与否、效率的高低、软件扩展性的好坏等等都与数据结构关系密切,甚至可以说数据结构确定以后,软件实现框架也就基本确定了。

        在当今的绝大多数软件系统中,都有着非常庞大的数据量,数据类型也非常的丰富多样,甚至在大数据中,数据本身就是一直财富,一种生产力。由此可知,如何保存好数据,如何做到数据的高效存取是十分关键的,也由此出现了专门的数据管理软件,也就是数据库。

数据库的定义。

        数据库是存放数据的仓库。数据库管理系统(Database Management System)是一种操纵和管理数据库的大型软件,用于建立、使用和维护数据库,简称DBMS。实际上在专业的数据库软件出现之前,计算机的发展已经催生了对大量数据进行处理的诉求。在计算机早期的发展中,文件系统作为操作系统的一部分很早就出现了,大家很容易想到利用文件来存储比较复杂的数据,并利用操作系统的文件读写功能对数据进行操作。文件系统也可以认为是数据库的一种早期的形式。今天广泛使用的excel,其以表格的形式存储数据,也支持通过开放数据库互连(ODBC)访问excel表格。所以excel也可以认为是数据库的一种,虽然其有很多的局限性,也不是特意作为数据库而诞生的。今天我们提到的数据库,通常是指数据库管理软件,在这个基础上,我认为满足如下两个条件就可以称之为数据库:1. 能够创建、使用和维护数据库;2. 支持其他软件系统通过通用接口访问和维护数据库,而不是仅仅依靠人工来操作。在这个条件下,我认为excel可以称之为数据库,而一个手写的笔记本,虽然也能记录很多数据,但不能算数据库。

数据库的发展方向。

        根据数据库的作用,数据的保存和高效存储,随着数据量的不断变大和数据类型的不断丰富,而产生了数据库的几个发展方向。1. 数据量的不断变大。其会带来几个问题,一个数据库表的数据越来越多,索引越来越大,访问效率越来越低。数据在单机都存储不下了等等。这些问题带来了数据库的很多优化技术,包括读写分离,分表分库分区,分布式数据库等。分布式数据库与云计算结合,又催生了云原生数据库等方向。2. 数据类型的不断丰富。其主要表现在早期的SQL关系型数据库无法满足高效的查询,于是出现了NOSQL数据库,其采用键值、图形等数据结构来保存数据。数据库管理软件能支持根据不同的数据类型,来选择不同的数据库(此处的数据库是指创建的数据库报表文件)保存数据。

内存数据库(MMDB main memory database)

        内存数据库比较容易让人误解的一点是认为不需要考虑数据的持久性,这其实是个误解。内存数据库保证数据的持久性也是必要的,其核心仅仅是对数据进行查询存取的操作都是在内存中完成的,不涉及访问速率非常慢的其他存储介质。可以认为内存数据库是为了解决访问效率的问题,对数据存储位置进行优化的一种极致方式。将一定时期需要操作的数据全部放到内存来提高访问速度。这种数据库的应用场景往往是对数据频繁访问,且对访问速度有较高要求的场景。比如曾经参与开发的一个网络通信软件客户端,就使用了SQLite来存储通讯录的资料。SQLite就是一种内存数据库。因此这种数据库的设计也着重这方面的优化,除了数据放在内存,也会进一步利用缓存来提高访问速度,此外还会通过数据结构的设计、索引的设计、并发的控制等来进行查询访问的优化。因为内存数据的易失性,因此数据恢复也是需要进行重点考虑的。

分布式数据库

        面对海量的数据,一个物理节点上无法完全存储下所有的数据,必然会产生分布式的数据库。一个数据库在逻辑上是一个统一的整体,在物理上则是分别存储在不同的物理节点上,就称之为分布式数据库。除了海量数据外,同一个数据库产生和使用数据的主体也可能分布在距离相隔很远的地方,比如跨国公司、全国性的银行等。也会产生数据分布式存储的诉求,海量数据的跨区域频繁通信必然带来时延和带宽的要求,数据也有靠近数据产生和处理主体保存的诉求。

        分布式数据库对数据的分布式存储,带来的几个好处,也是数据库追求的目标。一是可靠性,因为数据存储在多地,提高了数据在灾害等情况下的可靠性。二是可扩展性,分布式的存储天然具备可扩展的优势,可以根据业务的扩展进行灵活的适配。分布式数据库使用了分布式系统的一些通用技术,分布式系统中的部分问题也是分布式数据库要重点考虑的。比如对通信的诉求、数据冗余的问题、不同数据备份之间的同步问题等。

云原生数据库

        关于云原生数据库和分布式数据库的区别,因为没有参与数据库的开发经验,一直都觉得理解起来非常的模糊。仅有几点初步的理解,可能还不对。1. 云原生数据库天然是分布式的。因为云是分布式的,云天然具备了分布式的一些特点,例如存储空间的可扩展性,而且是灵活可扩展性。例如数据多地灾备的可靠性、不同区域数据的通信、多份拷贝的同步等,这些都是云作为分布式系统已经具有的能力。2. 在云上部署一个非分布式的数据库无法完全达到分布式数据库的要求。对于部署在云上的数据库,如果不做特殊的处理,则云只会将其当做普通的数据来对待。非常存储空间可扩展了,异地备份也有了。但是待处理数据是否靠近处理主体,数据如何做到分布式的划分,如果控制冗余度、不同数据之间的备份等,都会是相对比较没有效率的。3.云原生数据库应该是充分利用好云所具备的优势来达成分布式数据库的目标。4. 云原生数据库作为部署在云上的软件,也还需要满足云计算的一些公共要求。

操作型数据库(OLTP)和分析型数据库(OLAP)

        这两个比较好理解,一个注重于实时的查询操作,一个注重于大量数据的非实时分析。这是对数据库几个诉求无法做到同时满足时的一种策略。海量的数据和非常高效率的读写往往不可兼得,于是就使用不同的系统来满足不同的场景。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值