炼数成金 门户 大数据 数据库 查看内容

【原创】数据库管理简史

2017-4-20 15:50| 发布者: 炼数成金_小数| 查看: 11835| 评论: 0

摘要: 数据库管理系统能让人通过计算机组织存储以及取回数据。是和计算机“存储的记忆”的一种交流方式。早年间,“穿孔卡片”被用来作为输入输出以及数据存储的介质。穿孔卡片作为输入和取回数据的方式是很快的。Herman H ...

管理 数据库 SQL 存储 NoSQL

数据库管理系统能让人通过计算机组织存储以及取回数据。是和计算机“存储的记忆”的一种交流方式。早年间,“穿孔卡片”被用来作为输入输出以及数据存储的介质。穿孔卡片作为输入和取回数据的方式是很快的。Herman Hollerith由于在1890年,将织布机使用的穿孔卡片作为存储机制引入机械制表机,而被人们铭记。 而数据库的出现则是很久以后的事情了。


数据库(或者DB)在计算机的演变过程中扮演了很重要的角色。50年代最初的计算机程序几乎全都是着重于语言和算法。那时候,计算机基本上相当于一个巨大的计算器,而数据(名字,电话号码)则被认为是信息处理的产物。 当计算机开始应用于商业用途时,当商人们开始为了现实世界的目的而开始使用他们时,作为产物的数据突然之间变得重要起来。


现在来谈数据库管理系统(DBMS)。数据库作为一个信息的集合,可以被组织起来,以便数据库管理系统能够访问和查询特定的信息。1960年,Charles W. Bachman 设计了第一个数据库系统:集成数据库系统。IBM不甘居后,也建立了他们自己的数据库管理系统,叫IMS。这两个数据库系统都被视为“可导航”数据库的前身。


到了60年代中期,随着计算机的速度和灵活性都获得了大幅提升,开始流行起来,涌现了很多种类的通用数据库系统。这使客户们一致要求制定一个通用标准,这导致了由Bachman领导的数据库任务小组的成立。这个小组的任务就是设计和标准化一门语言,叫通用面向业务对象语言(COBOL)。数据库任务小组在1971年公布了这个标准,也被人们称之为“CODASYL 方式”。


CODASYL方式是一个非常复杂的系统,而且要求大量的培训。它依赖于使用一套互连数据集的“手动式”导航,从而构成了一个庞大的网络。可以使用以下三种技术来搜索记录:


使用主键(也称为CALC键) 在记录之间移动关系(或称为集合) 顺序扫描所有的记录

最终,由于更加简单易用的系统的出现,CODASYL方式渐渐式微。


Edgar Codd 在IBM本来是从事硬盘系统开发的,对CODASYL方式以及IMS模型缺乏一个有效的搜索引擎很失望。他在1970年发表了一系列文章,描述了新的数据库构建方式。最终,在大型共享数据的关系模型一文中,他综合阐述了一个存储和处理大型数据库的全新方式。 记录将不再像CODASYL导航模型中那样存储为自由格式的链表,而是存储在“有固定宽度记录的表”中。


IBM由于在IMS模型上的巨大投入,而对Codd的研究并不是很感兴趣。幸运的是,有人感兴趣,他们可不为IBM干活。1973年,Michael Stonebraker 和 Eugene Wong (当时二人均在伯克利)决定研究关系型数据库系统。项目的名字叫INGRES (互动式图像查询系统),成功地证明了关系模型是可行的并很有效。INGRES使用一种叫QUEL的查询语言,随后,IBM也于1974年被迫开发了更先进的SQL,(SQL于1986年和1987年分别成为了ANSI和OSI标准)。SQL很快的就取代QUEL成为了更加有效的查询语言。


RDBM 系统 存储和处理结构化数据非常有效。但是接着就是“非结构化”数据(艺术,照片,音乐等等)越来越常见了。非结构化数据既无关系又无明显的结构可言,而传统的关系型数据库系统根本就不是设计用来处理这类数据的。


NoSQL

NoSQL (“不止” 结构化查询语言) 的出现因应于互联网以及对非结构化数据处理速度的需求。基本上,NoSQL 数据库在某些情况下因为其速度和灵活性比关系型数据库更合适。NoSQL 模型 是非关系型的,且使用了“分布式”数据库的系统。 非关系型系统速度更快,可以使用特别的方法组织数据,并能处理大量各种不同类型的数据。


“NoSQL” 不仅能够处理结构以及非结构化数据,还能非常快速的处理非结构化的大数据。NoSQL的广泛应用体现在Twitter, LinkedIn, Facebook, 以及 Google等大公司对外提供的服务上,他们每家都存储并处理着巨量的非结构化数据。NoSQL相对于传统的SQL以及RDBMS的优势在于:


高可伸缩性 分布式计算系统 较低的成本 灵活的结构 可以处理非结构化以及半结构化数据 没有复杂的关系

很不幸的是,NoSQL 也有自己的 短处。 有些NoSQL数据库属于资源密集型的,需要大量的内存和CPU。对开源NoSQL数据库系统的故障支持也很不如人意。


NoSQL 的数据分布

硬件难免会发生故障,但是NoSQL数据库采用了分布式设计,已经考虑了存储以及功能的冗余。这主要是通过多节点(数据库服务器)来实现的。一个或多个节点的失败,并不能妨碍其他节点的正常操作,也不会造成数据丢失。只要使用得当,NoSQL 数据库可以在超大规模情况下提供超高的性能,且永不宕机。总的来说,一共有4类 NoSQL 数据库,各有其特殊的性能和特点。


文档仓库

文档仓库(通常叫做 面向文档的数据库)管理,存储并查询半结构化数据(也被称之为面向文档的信息)。文档可以描述为独立的单元,由此可以提高性能并更容易在多个服务器之间分散存储。文档仓库通常有一个非常强大的查询引擎和索引控制器,以使查询更加快速和简单易用。Mongo DB 和 Amazon Dynamo DB 就属于文档仓库。


文档仓库把所有的信息都存储在一个数据库“对象”里,对象之间则可以完全不相同。这是的对象到数据库的映射很容易,而且对于Web应用程序的文档存储需求很有吸引力。(一个“对象”就是一个关系的集合。一个文章对象可以关联到一个标签[另一个对象],一个分类[另一个对象],或是一个评论[另一个对象])。


列存储数据库

使用列存储的数据库和传统的关系型数据库是完全不同的。它按列而不是按行存储数据。从行到列的焦点转变,使得列存储数据库在碰到单个列内包含了大量数据的情况下可以获得较好的性能。这个有点可以扩展到数据仓库以及CRM应用程序中。比较典型的列式数据库有: Cloudera, Cassandra, 和 HBase (基于 Hadoop).


键-值对数据库

键-值对数据库非常适用于购物车和用户属性方面的应用。所有的数据库访问都是通过主键来完成的。通常没有固定的模式或者数据模型。主键可以是一长串随机数据。当数据元素之间有着复杂的关联关系或者需要通过其他非主键条件查询时,键值对数据库就不好用了。Riak, Berkeley DB 和 Aerospike 都是键-值对数据库。

数据元素:可以是任一单个命名的存储单元,也可以包含或不包含其他子数据元素。


图式数据库

基于位置的系统,线路规划系统以及调度系统,包括社交网络都是图式数据库(也叫图式数据仓库)的主要用户。 这些数据库是基于图论的,很善于处理可以显示为图的数据。可以让人们在处理大数据的时候轻松获得非常实用且紧密耦合的总览性图像。

不同于关系型数据库以及其他NoSQL数据库,图式数据库是把数据的关系切实作为关系存储起来的。通过使用不确定数目的关联将数据元素之间互联起来,这种存储方式使得不断演变的数据模式和真实数据库之间的隔断更少了。Neo4j, GraphBase 和 Titan 都是图式数据库。


持久化的多样化(或多样化存储)

持久化的多样化是从“多语言编程”(最早由Neal Ford于2006年提出)衍生而来的概念。最初的想法是提倡使用多种语言开发应用程序,因为某种特定的语言更适合解决特定类型的问题,而其他语言就有难度了。不同语言解决不同问题。


很多NoSQL系统都运行在众多的节点或者大型集群上。这使得优异的可伸缩性以及在每个节点上保有冗余备份成为可能。而在不同节点上使用不同的技术也是的持久化的多样化成为可能。这意味着因为特定技术解决特定问题更容易,所以可以使用不同的技术存储数据。而应用程序则可以通过访问不同的数据管理系统以使用较佳技术(组合)达到最终目的。


欢迎加入本站公开兴趣群

软件开发技术群

兴趣范围包括:Java,C/C++,Python,PHP,Ruby,shell等各种语言开发经验交流,各种框架使用,外包项目机会,学习、培训、跳槽等交流

QQ群:26931708

Hadoop源代码研究群

兴趣范围包括:Hadoop源代码解读,改进,优化,分布式系统场景定制,与Hadoop有关的各种开源项目,总之就是玩转Hadoop

QQ群:288410967 


鲜花

握手

雷人

路过

鸡蛋

相关阅读

最新评论

热门频道

  • 大数据
  • 商业智能
  • 量化投资
  • 科学探索
  • 创业

即将开课

 

GMT+8, 2018-10-17 00:04 , Processed in 0.163032 second(s), 24 queries .