关闭

数据库种类及关系型数据库原理

标签: 数据库
134人阅读 评论(0) 收藏 举报
分类:

一、数据库种类及关系型数据库原理

1.1数据库种类:

按照早期的数据库理论,比较流行的数据库模型有三种:
层次式数据库
网络式数据库
关系型数据库

在当今互联网中,最常用的数据库模型:
关系型数据库
非关系型数据库

关系型数据库使用类似于excel表格来表示
关系型数据库使用结构化查询语言SQL语句来对数据进行存取
代表作品,mysql oracle

随着互联网web2.0网站的兴起,传统的关系型数据库在应付web2.0网站,特别是对于规模日益扩大的海量数据,超大规模和高并发的微博、微信、SNS类型的web2.0纯动态网络瓶颈都难以有效突破,于是开始出现了大批针对特定场景,以高性能和使用便利为目的的功能特异化的数据库产品,NoSQL(非关系型)类的数据库就是在这样的情境中诞生并得到了非常迅速的发展。

【动态请求越来越多,对数据库的要求越来越高,传统的数据库遵循SAD理论(保持数据一致性,存放磁盘等)存取数据很慢,在这种情况下,非关系型数据库就诞生了】

NoSQL:
Google的BigTable
Amazon的Dynamo
成功的商业NoSQL

开源NoSQL:
Facebook的Cassandra
Apache的HBase
Redis,mongodb

1.2非关系型数据库种类

(1)键值(Key-Value)存储数据库

键值数据库就类似传统语言中使用的哈希表。可以通过key来添加、查询或者删除数据,因为使用key主键访问,所以会获得很高的性能及扩展性。
键值(Key-Value)数据库主要是使用一个哈希表,这个表中有一个特定的键和一个特向指定的数据。Key/Value模型对于IT系统来说的有时在于简单、易部署、高并发。
典型产品:Memcached、Redis、MemcacheDB、Berkeley DB

(2)列存储(Column-oriented)数据库

列存储数据库将数据存储在列族(column family)中,一个列族存储经常被一起查询的相关数据。举个例子,如果我们有一个Person类,我们通常会一起查询他们的姓名和年龄而不是薪资。这种情况下,姓名和年龄就会被放入一个列族中,而薪资则在另一个列族中。
这部分数据库通常是用来应对分布式存储的海量数据。键仍然存在,但是它们的特点是指向了多个列。这些列是有列家族来安排的。
典型产品:Cassandra,HBase

(3)面向文档(Document-Oriented)数据库

文档型数据库的灵感是来自于Lotus Notes办公软件的,而且它同第一种键值存储相似。该类型的数据模型是版本化的文档,半结构化的文档以特定的格式存储,比如JSON。文档型数据库可以看作是键值数据库的升级版,允许之间嵌套键值。而且文档型数据库比键值数据库的查询效率更高。
面向文档数据库会将数据以文档的形式存储。每个文档都是自包含的数据单元,是一系列数据项的集合。每个数据项都有一个名称与对应的值,值既可以是简单的数据类型,如字符串、数字和日期等;也可以使复杂的类型,如有序列表和关联对象。数据存储的最小单位是文档,同一个表中存储的文档属性可以是不通的,数据可以使用XML、JSON或者JSONB等多种形式存储。
典型产品:MogoDB、CouchDB

(4)图形(Graph)数据库

图形数据库允许我们将数据库以图的方式存储。实体会被作为顶点,而实体之间的关系则会被作为边。比如我们有三个实体,Steve Jobs、Apple和Next,则会有两个"Founded by"的边将Apple和Next连接到Steve Jobs.
图形结构的数据库同其他行列以及刚性结构的SQL数据库不同,它是使用灵活的图形模型,并且能够扩展到多个服务器上。NoSQL数据库没有标准的查询语言(SQL),因此进行数据库查询需要指定数据模型。许多NoSQL数据库都有REST式的数据接口或者查询API。
典型产品:Neo4J、InfoGrid

1.3非关系型数据库产品介绍

(1)Memcached(key-value)

  Memcached是一个开源的、高性能的、具有分布式内存对象的缓存系统。通过它可以减轻数据库负载,加速动态Web应用,最初版本由LiveJournal的Brad Fitzpatrick在2003年开发完成。目前全球有非常多的用户都在使用它来构建自己的大负载网站或提高自己的高访问网站的响应速度。
注意:Memcache是这个项目的名称,而Memcached是服务器端的主程序文件名。

(2)redis(key-value)

和Memcached类似,redis也是一个key-value型存储系统。但redis支持的存储value类型相对更多,包括string(字符串)、list(链表)、set(集合)和zset(有序集合)等。这些数据类型都支持push/pop、add/remove及取交集、并集、差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不方式的排序。与memcached一样,为了保证效率,redis的数据都是缓存在内存中。区别是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且再此基础上实现了master-slave(主从)同步。
Redis是一个高性能的key-value数据库。redis的出现,很大程度补偿了memcached这类key/value存储的不足,在部分场合可以对关系数据库起到很好的补充作用。它提供了Python,Ruby,Erlang,PHP客户端,使用很方便。
官网:http://www.redis.io/documemtation

redis特点:

1.支持内存缓存,这个功能相当于memcached
2.支持持久化,这个功能相当于memcachedb,ttserver
3.数据类型更丰富。比其他key-value库功能更强
4.支持集群,分布式
5.支持队列等特殊功能

(3)MongoDB(Document-oriented)

MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,累似json的bjson格式,因此可以存储比较复杂的数据类型。Mogodb最大的特点是他支持的查询语言非常强大,它的语法有点类似于面向对象的查询语言,几乎可以实现关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。它的特点是高性能、易部署、易使用,存储数据非常方便。

主要功能特性:

1.面向集合存储,易存储对象类型的数据
2.模式自由
3.支持动态查询
4.支持完全索引, 包含内部对象
5.支持查询
6.支持复制和故障恢复
7.使用高效的二进制数据存储,包括大型对象(如视频等)
8.自动处理碎片,以支持云计算层次的扩展性
9.支持ruby,python,java,c++,php等多种语言
10.文件存储格式为bson(一种json的扩展)
11.可通过网络访问

默认端口27017
http://www.mongodb.org/display/DOCS/Manual
http://www.mongodb.org/display/DOCS/Home

(4)Cassandra(Column-oriented)

    Apache Cassandra是一套开源分布式Key-Value存储系统。它最初由Facebook开发,用于存储特别大的数据。Facebook目前在使用此系统。
    主要特性:
    分布式
    基于column的结构化
    高伸展性
    Cassandra的主要特点就是它不是一个数据库,而是由一堆数据库节点共同构成的一个分布式网络服务,对Cassandra的一个写操作,会被复制到其他节点上去,对Cassandra的读操作,也会被路由到某个节点上面去读取。对于一个Cassandra群集来说,扩展性能是比较简单的事情,只管在集群里面添加节点就可以了。

其他不常用非关系型数据库

HBase,MemcacheDB,Berkeley DB,Tokyo Cabinet\Tokyo Tyrant(ttserver)

0
0
查看评论

数据库中字段类型的含义

INTEGER  BOOL DOUBLE FLOAT REAL CHAR
  • yangfu132
  • yangfu132
  • 2014-07-15 15:58
  • 685

关系型数据库工作原理-数据结构(翻译自Coding-Geek文章)

本文翻译自Coding-Geek文章:《 How does a relational database work》。 原文链接:http://coding-geek.com/how-databases-work/#Buffer-Replacement_strategies 本文翻译了如下章节: ...
  • ylforever
  • ylforever
  • 2016-04-29 07:07
  • 11351

关系型数据库原理

关系型数据库原理这篇文章是对知乎上如何自己实现一个关系型数据库的一个尝试性回答,后续会不断更新。对外数据模型为关系型数据库,内部的实现主要分成两大类,一类是disk-based,比如mysql,postgres,一类是memory based,后者包括MemSQL,SAP HAHA,OceanBas...
  • qq_33528613
  • qq_33528613
  • 2017-10-03 16:32
  • 295

怎样得到数据库中某一个表的某一个字段在设计时候的数据类型

 select sc.name,st.namefrom syscolumns sc left join systypes ston sc.xtype=st.xtypewhere id=object_id(表名) and sc.name=字段名
  • itzhiren
  • itzhiren
  • 2007-04-20 14:32
  • 679

一张图搞清楚中国茶叶分类

中国茶文化博大精深,源远流长。在漫长的历史发展过程中,我国历代茶人富有创造地开发了各种各样的茶类, 外加茶区分布广泛,茶树品种繁多,制茶工艺不断革新,形成了丰富多彩的茶类。 而目前世界上还没有统一规范的分类方法,有的根据制造方法不同划分,有的根据茶叶外形来划分,有的按初、精制情况划分。 ...
  • dtm19931001
  • dtm19931001
  • 2015-05-02 10:36
  • 486

关系型数据库工作原理-高速缓存(翻译自Coding-Geek文章)

原文链接:http://coding-geek.com/how-databases-work/#Buffer-Replacement_strategies先翻译高速缓存章节,后续有时间再翻译其它章节。翻译内容在原文的目录: 数据管理器 数据查询器执行查询操作,从数据表中获取数据,它向Data M...
  • ylforever
  • ylforever
  • 2016-03-27 07:54
  • 2796

02-数据库种类介绍及关系型数据库原理

一.数据库的概述数据库就是一个存放数据的仓库。这个仓库是按照一定的数据结构(数据结构是指数据的组织形式或数据之间的联系)来组织、存储的,我们可以通过数据库提供的多种方法来管理数据库里的数据。 随着数据库的不断发展,数据库不仅仅是存储和管理数据了,而转变成用户所需要的各种数据管理的方式。数据库有很多...
  • hualala_32
  • hualala_32
  • 2017-07-25 19:30
  • 159

数据库原理分析(强烈推荐)

一提到关系型数据库,我禁不住想:有些东西被忽视了。关系型数据库无处不在,而且种类繁多,从小巧实用的 SQLite 到强大的 Teradata 。但很少有文章讲解数据库是如何工作的。你可以自己谷歌/百度一下『关系型数据库原理』,看看结果多么的稀少【译者注:百度为您找到相关结果约1,850,000个…】...
  • ptsx0607
  • ptsx0607
  • 2017-04-01 10:29
  • 5405

二极管分类、符号、型号及作用

二极管分类、符号、参数及应用分析: 1、二极管符号: 2、基本二极管表示符号新旧对比: 3、二极管种类及作用: a.种类:普通二极管、双向二极管、变容二极管、稳压二极管、发光二极管、红外发射二极管等等。 b.作用: (1)整流   利用二极管单向导电性,可以把方向交替变化的交流电变换成单...
  • Dallin0408
  • Dallin0408
  • 2015-11-01 10:26
  • 2800

【自考总结】——数据库原理

回过头来再重新看《数据库原理》,当然会有不一样的认识,很熟悉,又不得不说对它是陌生的。对于这次失败,反思已经过去了,现在重要的是重新拾起来!
  • u013034793
  • u013034793
  • 2015-02-07 11:31
  • 1220
    个人资料
    • 访问:1309次
    • 积分:112
    • 等级:
    • 排名:千里之外
    • 原创:0篇
    • 转载:1篇
    • 译文:0篇
    • 评论:0条
    文章分类
    文章存档