数据库

Posted aliceyang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据库相关的知识,希望对你有一定的参考价值。

1.1 数据库介绍

什么是数据库

简单的说,数据库就是一个存放计算机数据的仓库,这个仓库是按照一定的数据结构(数据结构是指数据的组织形式或数据之间的联系)来对数据进行组织和存储的,我们可以通过数据库提供的多种方法来管理其中的数据。

 

1.2 数据库的种类

     按照早期的数据库理论,比较流行的数据库模型有三种,分别为层次式数据库、网状数据库和关系型数据库。而在当今的互联网企业中,最常用的数据库模式主要有两种,即关系型数据库和非关系型数据库。

 

1.2.1 关系型数据库介绍

(1)关系型数据库由来

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

(2)关系型数据库介绍

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

关系型数据库诞生距今已有40多年了,从理论产生到发展到实现产品,例如:常见的mysql和Oracle数据库,oracle在数据库领域里上升到了霸主地位,形成每年高达数百亿美元的庞大产业市场,而MySQL也是不容忽视的数据库,以至于被Oracle重金收购了。

 

 

关系型数据库知识和特点小结:

1)关系型数据库在存储数据时实际就是采用的一张二维表(和Word和excell里表格几乎一样)。

2)市场占有量较大的是MySQL和oracle数据库,而互联网场景最常用的是MySQL数据库。

3)它通过SQL结构化查询语言来存取、管理关系型数据库的数据。

4)关系型数据库在保持数据安全和数据一致性方面很强,遵循ACID理论

 

1.2.2 非关系型数据库介绍

1、非关系数据库诞生的背景

非关系型数据库也被称为NoSQL数据库,NoSQL的本意是“Not Only SQL”,指的是非关系型数据库,而不是“NO SQL”的意思,因此,NoSQL的产生并不是要彻底否定关系型数据库,而是作为传统数据库的一个有效补充。NoSQL数据库在特定的场景下可以发挥难以想象的高效率和高性能。

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

NoSQL是非关系型数据库的广义定义。它打破了长久以来关系型数据库与ACID理论大一统的局面。NoSQL数据存储不需要固定的表结构,通常也不存在连续操作。在大数据存取上具备关系型数据库无法比拟的性能优势。该术语(NoSQL)在2009年初得到了广泛认同。

当今的应用体系结构需要数据存储在横向伸缩性上能够满足需求。而NoSQL存储就是为了实现这个需求而诞生的。Google的BigTable与Amazon的Dynamo是非常成功的商业NoSQL实现。一些开源的NoSQL体系,如Facebook的Cassandra,Apache的HBase,也得到了广泛认同,redis,mongodb也逐渐的越来越受到各类大中小型公司的欢迎和追捧。

NOSQL非关系型数据库小结:

1)NOSQL数据库不是否定关系型数据库,而是作为关系数据库的一个重要补充。

2)NOSQL数据库为了灵活及高性能、高并发而生,忽略影响高性能、高并发的功能。

3)在NOSQL数据库领域,当今的最典型产品为Redis(持久化缓存)、Mongodb、Memcached(纯内存)等。

4)NOSQL数据库没有标准的查询语言(SQL),通常使用REST式的数据接口或者查询API。

 

2、非关系型数据库种类

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

键值数据库就类似传统语言中使用的哈希表。可以通过key来添加、查询或者删除数据,因为使用key主键访问,所以会获得很高的性能及扩展性。

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

典型产品:Memcached、Redis、MemcacheDB、Berke ley DB

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

列存储数据库将数据存储存在列族(column family)中,一个列族存储经常被一起查询的相关数据。举个例子,如果我们有一个Person类,我们通常会一起查询他们的姓名和年龄而不是薪资。这种情况下,姓名和年龄就会被放入一个列族中,而薪资则在另一个列族中。

这部分数据库通常用来应对分布式存储的海量数据。键仍然存在,但是他们的特点是指向了多个列。这些列是由列家族来安排的。

典型产品:Cassandra,HBase

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

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

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

典型产品:MongDB、CouchDB

4)图形(Graph)数据库

图形数据库允许我们将数据以图的方式存储。实体会被作为顶点,而实体之间的关系则会被作为边。比如我们有三个实体,Steve Jobs、Apple和Next,则会有两个“Founded by”的边将Apple和Next连接到Steve Jobs。

图形结构的数据库同其他行列以及刚性结构的SQL数据库不同,它是使用灵活的图形模型,并且能够扩展到多个服务器上。NoSQL数据库没有标准的查询语言(SQL),因此进行数据查询需要定制数据模型。许多NoSQL数据库都有REST的数据接口或者查询API。

典型产品:Neo4J、InfoGr id

 

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

1.3.1 ORACLE数据库

Oracle前身叫SDL,由Larry Ellison和另两个编程人员在1977创办,他们开发了自己的拳头产品,在市场上大量销售,1979年,Oracle公司引入了第一个商用SQL关系数据库管理系统。Oracle公司是最早开发关系数据库的厂商之一,其产品支持最广泛的操作系统平台。目前Oracle关系数据库产品的市场占有率数一数二。

Oracle公司是目前全球最大的数据库软件公司,也是近年业务增长极为迅速的软件提供与服务商。

2007年7月12日,甲骨文公司在美国纽约宣布推出数据库Oracle llg,这是Oracle数据库的最新版本。Oracle介绍说,Oracle llg有400多项功能,经过了1500万个小时的测试,开发工作量达到了3.6万人/月。Oraclellg在安全,XML DB,备份等方面得到了很大提升。

主要应用范围:传统大企业,大公司,政府,金融,证券等等。

版本升级:Oracle8i,Oracle9i,Oracle1Og,Oracle11g,Oracle12c。

 

1.3.2 MySQL数据库

MySQL数据库是一个中小型关系型数据库管理系统,软件开发者为瑞典MySQL AB公司。在2008年1月16号被Sun公司收购,后Sun公司又被oracle公司收购。目前MySQL被广泛地应用在Internet上的大中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多大中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库,甚至国内知名的淘宝网也选择弃用ORACLE而更换为更开放的MySQL。

MySQL数据库主要应用范围:互联网领域,大中小型网站,游戏公司,电商平台等等。

 

1.3.3 MariaDB数据库

MariaDB数据库管理系统是MySQL数据库的一个分支,主要由开源社区维护,采用GPL授权许可。开发这个MariaDB数据库分支的可能原因之一是:甲骨文公司收购了MySQL后,有将MySQL闭源的潜在风险,因此MySQL开源社区采用分支的方式来避开这个风险。

开发MariaDB数据库的目的是完全兼容MySQL数据库,包括API和命令行,使之能轻松的成为MySQL的代替品。在存储引擎方面,使用XtraDB (英语:XtraDB)来代替MySQL的 InnoDB MariaDB 由MySQL的创始人 Michael Widenius(英语:Michael Widenius)主导开发,他早前曾以10亿美元的价格,将自己创建的公司MySQL AB卖给了SUN,此后,随着SUN被甲骨文收购,MySQL的所有权也落入Oracle的手中,MariaDB数据库的名称来自MySQL的创始人Michael Widenius的女儿Maria的名字。

MariaDB基于事务的Maria存储引擎,替换了MySQL的MylSAM存储引擎,它使用了Percona的XtraDB(InnoDB的变体)。这个版本还包括了PrimeBaseXT(PBXT)和 FederatedX存储引擎。

MariaDB数据库直到5.5版本,均依照MySQL的版本发行。因此,使用MariaDB5.5 的人会从MySQL5.5中了解到MariaDB的所有功能。

 

1.3.4 SQL Server 数据库

Microsoft SQL Server是微软公司开发的大型关系型数据库系统。SQL Server的功能比

较全面,效率高,可以作为中型企业或单位的数据库平台。SQL Server可以与Windows操 作系统紧密集成,不论是应用程序开发速度还是系统事务处理运行速度,都能得到较大的 提升。对于在Windows平台上开发的各种企业级信息管理系统来说,不论是C/S(客户机/ 服务器)架构还是B/S(浏览器/服务器)架构,SQL Server都是一个很好的选择。SQL Server的缺点是只能在Windows系统下运行。

1987年,微软和IBM合作开发完成OS/2,IBM在其销售的OS/2 ExtendedEdition系统中绑定了OS/2 DatabaseManager,而微软产品线中尚缺少数据库产品。为此,微软将目光投向Sybase,同Sybase签订了合作协议,使用Sybase的技术开发基于OS/2平台的关系型数据库。1989年,微软发布了SQLServer1.0版。Microsoft在与Sybase分道扬镳后,随后在其6.05和7.0版本中重写了核心数据库系统,如今SQL Server 2008即将到来。

主要应用范围:部分企业电商(央视购物),使用windows服务器平台的企业。

 

1.3.5 Access 数据库

美国Microsoft公司于1994年推出的微机数据库管理系统。它具有界面友好、易学易

用、开发简单、接口灵活等特点,是典型的新一代桌面关系型数据库管理系统。它结合了 Microsoft Jet Database Engine和图形用户界面两项特点,是Microsoft Office的成员之一。 Access 能够存取 Access/Jet、Microsoft SQL Server、Oracle,或者任何ODBC兼容数据库的资料。Access界面友好而且易学易用,作为Office套件的一部分,可以与Office集成,实现无缝连接Access 提供了表(Table)、查询(Query)、窗体(Form)、报表(Report)、宏(Macro)、 模块(Module)等用来建立数据库系统的对象。提供了多种向导、生成器、模板,把数据存储、数据查询、界面设计、报表生成等操作规范化。

Access是入门级小型桌面数据库,性能安全性都很一般。可供个人管理或小型网站之用。Access不是数据库语言,只是一个数据库程序。目前最新版本为Office2007。其主要特点 如下:

1)完善地管理各种数据库对象,具有强大的数据组织、用户管理、安全检查等功能。

2)强大的数据处理功能,在一个工作组级别的网络环境中,使用Access开发的多用户数据库管理系统具有传统的XBASE(DBASE、FoxBASE的统称)数据库系统所无法实现的客户服务器(Cient/Server)结构和相应的数据库安全机制,Access具备了许多先进的大型数据库管理系统所具备的特征,如事务处理/出错回滚能力等。

3)可以方便地生成各种数据对象,利用存储的数据建立窗体和报表,可视性好。

4)作为Office套件的一部分,可以与Office集成,实现无缝连接。

5)能够利用Web检索和发布数据,实现与Internet的连接。Acess主要适用于中小型应用系统,或作为客户机/服务器系统中的客户端数据库。

早期应用领域:小型程序系统asp+access系统,留言板,校友录等。

 

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

DB2, PostgreSQL,Informix,Sybase等。这些关系型数据库逐步的淡出了普通运维的视线,特别是互联网公司几乎见不到,因此我们这里就不多介绍了。

 

参考了:https://www.cnblogs.com/zhaojingyu/p/8873991.html

 

以上是关于数据库的主要内容,如果未能解决你的问题,请参考以下文章

数据库类型——系统数据库/用户数据库

关系型数据库与文档型数据库的差别?

数据库数据库管理系统数据库系统

mysql数据库的基本操作:创建数据库查看数据库修改数据库删除数据库

如何清理mysql数据库缓存数据?

JDBC访问数据库的步骤