数据库简介

1.1      数据库介绍

1.1.1什么是数据库

简单的说,数据库(database)就是一个存放数据的仓库,这个仓库是按照必定的数据结构(数据结构是指数据的组织形式或数据之间的联系)来组织、存储的,咱们能够经过数据提供的多种方法来管理数据库里的数据。web

当人们收集了大量的数据后,应该把它们保存起来进入近一步的处理,进一步的抽取有用的信息。当年人们把数据存放在文件柜中,可如今随着社会的发展,数据量急剧增加,如今人们就借助计算机和数据库技术科学的保存大量的数据,以便能更好的利用这些数据资源。redis

1.2数据库的种类

    数据库一般分为层次式数据库、网络式数据库和关系式数据库三种。而不一样的数据库是按不一样的数据结构来联系和组织的。而在当今的互联网中,最多见的数据库模型主要是两种,即关系型数据库和非关系型数据库。数据库

1.2.1关系型数据库介绍

1)、关系型数据库的由来编程

    虽然网状数据库和层次数据库已经很好的解决了数据的集中和共享问题,可是在数据库独立性和抽象级别上扔有很大欠缺。用户在对这两种数据库进行存取时,仍然须要明确数据的存储结构,指出存取路径。而关系型数据库就能够较好的解决这些问题。json

2)、关系型数据库介绍后端

  关系型数据库模型是把复杂的数据结构归结为简单的二元关系(即二维表格形式)。在关系型数据库中,对数据的操做几乎所有创建在一个或多个关系表格上,经过对这些关联的表格分类、合并、链接或选取等运算来实现数据库的管理。浏览器

  关系型数据库诞生40多年了,从理论产生发展到现实产品,例如:OracleMySQLOracle在数据库领域上升到霸主地位,造成每一年高达数百亿美圆的庞大产业市场。缓存

3)、关系型数据库表格之间的关系举例安全

 

学生表服务器

学号

姓名

年龄

S001

张三

24

S002

李四

25

S003

王二麻子

26

 

 

课程表

课程号

课程名

学分

C001

Linux

25

C002

Python

25

C003

MySQL

25

 

选课表

学号

课程号

成绩

S001

C001

90

S002

C001

97

S003

C001

94

 

1.2.2非关系型数据库介绍

1.2.2.1 非关系型数据库诞生背景

NoSQL,泛指非关系型的数据库。随着互联网web2.0网站的兴起,传统的关系数据库在应付web2.0网站,特别是超大规模和高并发的SNS类型的web2.0动态网站已经显得力不从心,暴露了不少难以克服的问题,而非关系型的数据库则因为其自己的特色获得了很是迅速的发展。NoSql数据库在特定的场景下能够发挥出不可思议的高效率和高性能,它是做为对传统关系型数据库的一个有效的补充。

   NoSQL(NoSQL = Not Only SQL ),意即不只仅是SQL,是一项全新的数据库革命性运动,早期就有人提出,发展至2009年趋势愈加高涨。NoSQL的拥护者们提倡运用非关系型的数据存储,相对于铺天盖地的关系型数据库运用,这一律念无疑是一种全新的思惟的注入。

 

1.2.2.2 非关系型数据库种类

1)、键值存储数据库(key-value

 键值数据库就相似传统语言中使用的哈希表。能够经过key来添加、查询或者删除数据库,由于使用key主键访问,因此会得到很高的性能及扩展性。

键值数据库主要使用一个哈希表,这个表中有一个特定的键和一个指针指向特定的数据。Key/value模型对于IT系统来讲的优点在于简单、易部署、高并发。

典型产品:MemcachedRedisMemcacheDB

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

列存储数据库将数据存储在列族中,一个列族存储常常被一块儿查询的相关数据,好比人类,咱们常常会查询某我的的姓名和年龄,而不是薪资。这种状况下姓名和年龄会被放到一个列族中,薪资会被放到另外一个列族中。

这种数据库一般用来应对分布式存储海量数据。

典型产品:CassandraHBase

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

文档型数据库的灵感是来自于Lotus Notes办公软件,并且它同第一种键值数据库相似。该类型的数据模型是版本化的文档,半结构化的文档以特定的格式存储,好比JSON。文档型数据库能够看做是键值数据库的升级版,容许之间嵌套键值。并且文档型数据库比键值数据库的查询效率更高。

面向文档数据库会将数据以文档形式存储。每一个文档都是自包含的数据单元,是一系列数据项的集合。每一个数据项都有一个名词与对应值,值既能够是简单的数据类型,如字符串、数字和日期等;也能够是复杂的类型,若有序列表和关联对象。数据存储的最小单位是文档,同一个表中存储的文档属性能够是不一样的,数据可使用XMLJSONJSONB等多种形式存储。

典型产品:MongoDBCouchDB

4)、图形数据库

图形数据库容许咱们将数据以图的方式存储。实体会被做为顶点,而实体之间的关系则会被做为边。好比咱们有三个实体,Steve JobsAppleNext,则会有两个“Founded by”的边将AppleNext链接到Steve Jobs

典型产品:Neo4JInforGrid

1.3 经常使用关系型数据库产品介绍

1.3.1 Oracle数据库

ORACLE数据库系统是美国ORACLE公司(甲骨文)提供的以分布式数据库为核心的一组软件产品,是目前最流行的客户/服务器(CLIENT/SERVER)B/S体系结构的数据库之一。好比SilverStream就是基于数据库的一种中间件。ORACLE数据库是目前世界上使用最为普遍的数据库管理系统,做为一个通用的数据库系统,它具备完整的数据管理功能;做为一个关系数据库,它是一个完备关系的产品;做为分布式数据库它实现了分布式处理功能。但它的全部知识,只要在一种机型上学习了ORACLE知识,便能在各类类型的机器上使用它。

Oracle数据库最新版本为Oracle Database 12cOracle数据库12引入了一个新的多承租方架构,使用该架构可轻松部署和管理数据库云。此外,一些创新特性可最大限度地提升资源使用率和灵活性,如Oracle Multitenant可快速整合多个数据库,而Automatic Data OptimizationHeat Map能以更高的密度压缩数据和对数据分层。这些独一无二的技术进步再加上在可用性、安全性和大数据支持方面的主要加强,使得Oracle数据库12成为私有云和公有云部署的理想平台。

 

1.3.2 MySQL数据库

MySQL(发音为"my ess cue el",不是"my sequel")是一种开放源代码的关系型数据库管理系统(RDBMS),MySQL数据库系统使用最经常使用的数据库管理语言--结构化查询语言SQL)进行数据库管理。

因为MySQL开放源代码的,所以任何人均可以在General Public License的许可下下载并根据个性化的须要对其进行修改。MySQL由于其速度、可靠性和适应性而备受关注。大多数人都认为在不须要事务化处理的状况下,MySQL是管理内容最好的选择。

MySQL这个名字,起源不是很明确。一个比较有影响的说法是,基本指南和大量的库和工具带有前缀“my”已经有10年以上,并且无论怎样,MySQL AB创始人之一的Monty Widenius的女儿也叫My。这两个究竟是哪个给出了MySQL这个名字至今依然是个迷,包括开发者在内也不知道。

 

1.3.3 MariaDB数据库

MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL受权许可。开发这个分支的缘由之一是:甲骨文公司收购了MySQL后,有将MySQL闭源的潜在风险,所以社区采用分支的方式来避开这个风险。 MariaDB的目的是彻底兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。在存储引擎方面,使用XtraDB(英语:XtraDB)来代替MySQLInnoDBMariaDBMySQL的创始人Michael Widenius(英语:Michael Widenius)主导开发,他早前曾以10亿美圆的价格,将本身建立的公司MySQL AB卖给了SUN,此后,随着SUN被甲骨文收购,MySQL的全部权也落入Oracle的手中。MariaDB名称来自Michael Widenius的女儿Maria的名字。

1.3.4 SqlServer数据库

SQL Server是由Microsoft开发和推广的关系数据库管理系统DBMS),它最初是由MicrosoftSybaseAshton-Tate三家公司共同开发的,并于1988年推出了第一个OS/2版本。Microsoft SQL Server近年来不断更新版本,1996年,Microsoft 推出了SQL Server 6.5版本;1998年,SQL Server 7.0版本和用户见面;SQL Server 2000Microsoft公司于2000年推出,目前最新版本20123月份推出的SQL SERVER 2012

1.3.5 Access数据库

Microsoft Office Access是微软把数据库引擎的图形用户界面软件开发工具结合在一块儿的一个数据库管理系统。它是微软OFFICE的一个成员, 在包括专业版和更高版本的office版本里面被单独出售。2012124,最新的微软Office Access 2013在微软Office 2013里发布,微软Office Access 2010 是前一个版本。

MS ACCESS以它本身的格式将数据存储在基于Access Jet的数据库引擎里。它还能够直接导入或者连接数据(这些数据存储在其余应用程序和数据库)

软件开发人员和数据架构师可使用Microsoft Access开发应用软件,“高级用户可使用它来构建软件用程序。和其余办公应用程序同样,ACCESS支持Visual Basic宏语言,它是一个面向对象的编程语言,能够引用各类对象,包括DAO(数据访问对象),ActiveX数据对象,以及许多其余的ActiveX组件。可视对象用于显示表和报表,他们的方法和属性是在VBA编程环境下,VBA代码模块能够声明和调用Windows操做系统函数。

 

1.3.6 其余不经常使用数据库

    DB2PostgreSQLInformixSyase等。

1.4 经常使用非关系型数据库产品介绍

1.4.1 Memcachedkey-value

memcached是一套分布式的快取系统,当初是Danga Interactive为了LiveJournal所发展的,但被许多软件(如MediaWiki)所使用。这是一套开放源代码软件,以BSD license受权协议发布。[1] 

memcached缺少认证以及安全管制,这表明应该将memcached服务器放置在防火墙后。[1] 

memcachedAPI使用32位元的循环冗余校验CRC-32)计算键值后,将资料分散在不一样的机器上。当表格满了之后,接下来新增的资料会以LRU机制替换掉。因为memcached一般只是看成快取系统使用,因此使用memcached的应用程式在写回较慢的系统时(像是后端的数据库)须要额外的程式码更新memcached内的资料[1] 

memcached 是以LiveJournal 旗下Danga Interactive 公司的Brad Fitzpatric 为首开发的一款软件。已成为mixihatenaFacebookVoxLiveJournal等众多服务中提升Web应用扩展性的重要因素。许多Web应用都将数据保存到RDBMS中,应用服务器从中读取数据并在浏览器中显示。但随着数据量的增大、访问的集中,就会出现RDBMS的负担加剧、数据库响应恶化、网站显示延迟等重大影响。

这时就该memcached大显身手了。memcached是高性能的分布式内存缓存服务器。通常的使用目的是,经过缓存数据库查询结果,减小数据库访问次数,以提升动态Web应用的速度、提升可扩展性。

Memcached 的守护进程(daemon )是用C写的,可是客户端能够用任何语言来编写,并经过memcached协议与守护进程通讯。可是它并不提供冗余(例如,复制其hashmap条目);当某个服务器S中止运行或崩溃了,全部存放在S上的键/值对都将丢失。

MemcachedDanga Interactive开发,其最新版本发布于2010年,做者为Anatoly VorobeyBrad Fitzpatrick。用于提高LiveJournal . com访问速度的。LJ每秒动态页面访问量几千次,用户700万。Memcached数据库负载大幅度下降,更好的分配资源,更快速访问。

 

1.4.2 Rediskey-value

redis是一个key-value存储系统。和Memcached相似,它支持存储的value类型相对更多,包括string(字符串)list(链表)set(集合)zset(sorted set --有序集合)hash(哈希类型)。这些数据类型都支持push/popadd/remove及取交集并集和差集及更丰富的操做,并且这些操做都是原子性的。在此基础上,redis支持各类不一样方式的排序。与memcached同样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操做写入追加的记录文件,而且在此基础上实现了master-slave(主从)同步。

Redis 是一个高性能的key-value数据库。 redis的出现,很大程度补偿了memcached这类key/value存储的不足,在部 分场合能够对关系数据库起到很好的补充做用。它提供了JavaC/C++C#PHPJavaScriptPerlObject-CPythonRubyErlang等客户端,使用很方便。[1] 

Redis支持主从同步。数据能够从主服务器向任意数量的从服务器上同步,从服务器能够是关联其余从服务器的主服务器。这使得Redis可执行单层树复制。从盘能够有意无心的对数据进行写操做。因为彻底实现了发布/订阅机制,使得从数据库在任何地方同步树时,可订阅一个频道并接收主服务器完整的消息发布记录。同步对读取操做的可扩展性和数据冗余颇有帮助。

 

1.4.3 MongoDBDocument-oriented

MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。

MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构很是松散,是相似jsonbson格式,所以能够存储比较复杂的数据类型。Mongo最大的特色是他支持的查询语言很是强大,其语法有点相似于面向对象的查询语言,几乎能够实现相似关系数据库单表查询的绝大部分功能,并且还支持对数据创建索引

 

1.4.4 CassandraColumn-oriented

Cassandra是一个混合型的非关系的数据库,相似于GoogleBigTable。其主要功能比Dynamo (分布式的Key-Value存储系统)更丰富,但支持度却不如文档存储MongoDB(介于关系数据库和非关系数据库之间的开源产品,是非关系数据库当中功能最丰富,最像关系数据库的。支持的数据结构很是松散,是相似jsonbjson格式,所以能够存储比较复杂的数据类型)。Cassandra最初由Facebook开发,后转变成了开源项目。它是一个网络社交云计算方面理想的数据库。以Amazon专有的彻底分布式的Dynamo为基础,结合了Google BigTable基于列族(Column Family)的数据模型。P2P去中心化的存储。不少方面均可以称之为Dynamo 2.0[

1.4.5 其余不经常使用非关系型数据库

    HBaseMemacheDBBerkeleyDBTokyo Cabinet

1.5 数据库相关知识

1.5.1数据库软件企业应用排名参考

相关文章
相关标签/搜索