您的位置:首页 > 数据库

【Web探索之旅】第二部分第四课:数据库

2015-07-03 00:25 369 查看



内容简介

1、第二部分第四课:[b]数据库[/b]

2、第二部分第五课预告:[b]响应式网站[/b]


第二部分第四课:数据库

说到“数据库”,顾名思义,是“数据的仓库”的意思。

所以数据库的一大作用就是储存数据咯。

为什么Web领域要有数据库呢?

数据库的英语是Database,简单来说可视为电子化的文件柜(存储电子文件的处所),用户可以对文件中的数据运行新增、截取、更新、删除等操作。它是以一定方式储存在一起、能为多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合。

关系型数据库和非关系型数据库

常见的数据库主要分为关系型数据库和非关系型数据库。

关系型数据库,是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。现实世界中的各种实体以及实体之间的各种联系均用关系模型来表示。关系模型是由埃德加·科德于1970年首先提出的,并配合“科德十二定律”。

非关系型数据库,通称NoSQL(Not Only SQL,“不仅仅是SQL”),随着互联网Web2.0网站的兴起,传统的关系数据库在应付Web2.0网站,特别是超大规模和高并发的SNS类型的Web2.0纯动态网站已经显得力不从心,暴露了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展。NoSQL数据库的产生就是为了解决大规模数据集合多重数据种类带来的挑战,尤其是大数据应用难题。

常见的关系型数据库有:

MySQL:很著名的开源数据库,常用于博客系统。比如我们前一课提到的Wordpress使用的数据库就是MySQL。

PostgreSQL:MySQL的竞争对手。

SQL Server:Microsoft(微软)的数据库。一般和.NET配合使用。

Oracle:Oracle(甲骨文)公司的主要产品。可以说是关系型数据库中的老大,功能强大,容量也大,但是费用最昂贵,所有一般人们都喜欢使用免费的MySQL。但是对于很多大公司,Oracle数据库是不可取代的。

SQLite:很轻巧,就如它的名字里有lite(英语“淡的”)这个尾缀一般。在嵌入式领域使用还比较广泛,比如Android系统一开始默认使用SQLite数据库。



当然,其他还有很多关系型数据库。没有最好的,只有最对的。

讲完了关系型数据库,我们来谈谈非关系型数据库:

NoSQL分为四大类:

键值(Key-Value)存储数据库:这一类数据库主要会使用到一个哈希表,这个表中有一个特定的键和一个指针指向特定的数据。Key/value模型对于IT系统来说的优势在于简单、易部署。但是如果DBA只对部分值进行查询或更新的时候,Key/value就显得效率低下了。举例如:Tokyo Cabinet/Tyrant, Redis, Voldemort, Oracle BDB。

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

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

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

NoSQL数据库在以下的这几种情况下比较适用:

数据模型比较简单。

需要灵活性更强的IT系统。

对数据库性能要求较高。

不需要高度的数据一致性。

对于给定key,比较容易映射复杂值的环境。

SQL语言

SQL不同于传统的编程语言,它是Structured Query Language(结构化查询语言)的缩写,是1974年由Boyce和Chamberlin提出的一种介于关系代数与关系演算之间的语言,是一个通用的、功能极强的关系型数据库语言。

所以NoSQL(非关系型数据库)是不使用SQL的。

既然数据库存储数据,那么我们如何获取到这些数据呢,如何操纵它们呢?

对于关系型数据库来说,我们有SQL语言可以帮助我们。

SQL的基本语句是这样子的:

SELECT id, name FROM users ORDER BY id DESC


在Web开发中,动态网站的服务器有数据库,服务器向数据库发送“SQL查询”,数据库返回结果(传递数据),服务器将接收到的数据插入到网页代码的相应地方。

比如,我用账号frogoscar登录CSDN,那么CSDN的服务器会从CSDN数据库的众多表格中查找到frogoscar这个用户的所有信息,然后插入到生成的HTML网页中,再把网页传输给我的浏览器,我就能进入自己的账户了,我可以操作我的私人信息:删除,添加,修改,查找,这些都是靠SQL语句在CSDN的数据库里操作的。

大家可以上W3C中文网站学习SQL的系列教程,有详细实例:

http://www.w3school.com.cn/sql/index.asp

动态网站

之前的课程我们已经介绍过静态网站和动态网站的区别了,这一课我们学习了数据库,我们终于能把动态网站如何工作的原理图补完全了:





客户机的浏览器(客户端)向服务器请求网页。

服务器开始生成网页。

服务器向数据库发出SQL Request(SQL请求 )。

数据库根据收到的SQL请求,传输对应的数据给服务器。

服务器拿到这些数据,在生成的网页中插入这些数据。

最终服务器将对每个用户定制的网站(HTML,CSS和JS写成)返还给客户端。

客户端浏览器解释Web网页文件,我们就能看到各不相同的网页了。

总结

数据库:存储数据的重要工具。分为关系型数据库和菲关系型数据库。比较常用的关系型数据库:MySQL,Oracle,SQlite,等。你可以在它们之间选择一种你自己喜欢的。

NoSQL(非关系型数据库):可以在大数据和云时代大展宏图。


第二部分第五课预告

今天的课就到这里,一起加油吧!

下一课我们学习:响应式网站和移动应用




程序员联盟社区

目前有一个微信群和一个QQ群,凡是对编程感兴趣的朋友都可以加,大家可以交流,学习,互动,讨论编写的程序的源代码,编程问答等。

微信群(程序员联盟),加群请私信我(微信群人数超过100之后,不能通过扫描二维码加入了,只能私信我,谢谢)

QQ群: 413981577 (1000人群)

QQ群文件里有很多编程书籍PDF和其他资料。扫描下面二维码加QQ:



我们还建立了一个公共的百度云盘,2TB容量,已有很多优秀编程资源,大家也可以上传。链接加群之后会发送。

百度贴吧 【程序员联盟】 欢迎您加入,交流编程,讨论代码,共享资源,已经有很多话题。吧主就是小编。

http://tieba.baidu.com/f?kw=%E7%A8%8B%E5%BA%8F%E5%91%98%E8%81%94%E7%9B%9F&ie=utf-8

《程序员联盟》的微社区,方便大家提问和互动。可以关注一下。

微社区地址和二维码如下:

http://m.wsq.qq.com/264152148



谢谢!





程序员联盟
微信公众号

*您若觉得本文不错,请点击画面右上角《···》按钮“分享到朋友圈”或“发送给朋友”

*新朋友请关注「程序员联盟」微信搜公众号 ProgrammerLeague

小编微信号:
frogoscar

小编QQ号: 379641629

小编邮箱: enmingx@gmail.com

程序员联盟QQ群:413981577

程序员联盟微信群:先加我微信

有朋友反映看手机端的文章太累,其实是可以用浏览器网页来看的:

方法1. 点击画面右上角的《···》按钮,然后选择“复制链接”,再把链接黏贴到你的浏览器里面或用邮件发送给自己,就可以在电脑的浏览器里打开了



方法2. 头条网www.toutiao.com,搜索我的自媒体“程序员联盟”,内有所有文章,也可以直接进这个链接:http://www.toutiao.com/m3750422747/

方法3. 我的51CTO博客,CSDN博客,博客园和开源中国博客链接(所有文章都在上面)

http://4526621.blog.51cto.com

http://blog.csdn.net/frogoscar

http://www.cnblogs.com/frogoscar

http://my.oschina.net/frogoscar/blog

如何查看所有文章

1. 点击“查看公众号”,再点击“查看历史消息

2. 在公众号回复任何信息,可以看到包含“查看历史消息”的链接。





【支持小编的劳动】

觉得文章对你有帮助,请纪念小编的辛勤劳动,扫描二维码捐赠给小编,谢谢!

支付宝



Paypal



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: