近几年的流行热词"大数据时代"是由著名的麦肯锡咨询公司提出的概念,是的,现代社会是信息爆炸的时代,数据作为信息的载体,其重要性不言而喻。那么数据库作为保存数据的容器,我们又该如何来学习和认知呢?
什么是数据库?这个问题应该不难回答,通俗的说,就是能储存数据的仓库。但是,仅仅存储是不够的,早期的人工管理和文件系统数据库,存在数据文件相互独立、数据冗余、查询不便、逻辑独立性差等缺点,所以数据库一定是按照某种特定的组织结构长期存储在计算机系统中并能共享访问的数据集合。
现代社会数据文件规模日趋庞大,数据量急剧增加,传统的人工管理和文件系统已不能满足企业和科研的要求。1970年 IBM 高级研究员 Codd 发表论文提出了关系数据模型及其相关概念,应用数学的方法来处理数据库中的数据。关系模型是用二维表结构来表示实体集与实体集之间的联系的一种模型,包括一对一、一对多、多对多这三种联系和关系数据结构、关系数据操作和关系完整性约束这三要素,有着严格的数学基础,抽象级别很高,奠定了现代关系数据库的理论基础。
因此,现代数据库系统 (Database System) 应运而生,是为了实现有组织的、动态的存储大量关联数据,方便多用户查询访问的计算机软件、硬件和数据资源组成的系统。其中不仅包含了数据库、数据库管理系统 (Database Management System),还有相应的软件、硬件和管理员。简单的说:
数据库系统 = 计算机系统(软硬件平台、管理员) + 数据库管理系统 + 数据库。
关系数据库的研究和发展三十多年来取得了辉煌的成就,但是,随着互联网 Web 2.0 网站的兴起,传统的关系数据库在应付 Web2.0网站,特别是超大规模和高并发的社交网络类型的动态网站已经显得力不从心,暴露了很多难以克服的问题。1998年 Carlo Strozzi 提出了 NoSQL (Not Only SQL) 的概念,主要指他开发的一个没有 SQL 功能,轻量级的开源的关系型数据库。虽然与现在 NoSQL 的定义大相径庭,但是为后人提供了 No Relational 的理念,非关系型数据库提出以键值对存储,并且结构可以不固定,每一个元组可以有不一样的字段,每个元组可以根据需要增加一些自己的键值对,这样就不会局限于固定的结构,可以减少一些时间和空间的开销。通过这种方式用户可以根据需要去添加自己需要的字段,不需要像关系型数据库中,要对多表进行关联查询,大大减少了数据库系统的查询次数。
严格意义上来说,非关系型数据库并不是一种数据库,应该是一种数据结构化存储方法的集合。尽管 NoSQL 的诞生和流行是为了解决关系型数据库的缺点,但非关系型数据库相对关系型数据库来说并不是更新换代的进步,二者在各自擅长的领域更好的服务人类和社会。