内容简介

1第二部分第四课:数据库

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


第二部分第四课:数据库

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

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

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

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


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

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

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

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

常见的关系型数据库有:

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

  2. PostgreSQL:MySQL的竞争对手。

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

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

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

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

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

NoSQL分为四大类:

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

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

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

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

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

  1. 数据模型比较简单。

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

  3. 对数据库性能要求较高。

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

  5. 对于给定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


动态网站

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

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

  2. 服务器开始生成网页。

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

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

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

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

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


总结

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

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


第二部分第五课预告

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

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


程序员联盟 微信公众号

*您若觉得本文不错,请点击画面右上角《···》按钮分享

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

程序员联盟官网:

http://coderunity.com/

小编微信号: frogoscar

小编邮箱:    enmingx@gmail.com

小编QQ号:  379641629

程序员联盟QQ群:413981577

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

头条网自媒体“程序员联盟”:

http://www.toutiao.com/m3750422747/

小编的51CTO博客,CSDN博客,博客园,新浪博客和开源中国博客
http://4526621.blog.51cto.com

http://blog.csdn.net/frogoscar

http://www.cnblogs.com/frogoscar

http://blog.sina.com.cn/frogoscar

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

【打赏小编】

觉得文章对您有帮助,请纪念小编的辛勤劳动,扫描二维码打赏小编,谢谢!

支付宝

Paypal

【Web探索之旅】第二部分第四课:数据库的更多相关文章

  1. 【Web探索之旅】第四部分:Web程序员

    内容简介 1.第四部分第一课:什么是Web程序员? 2.第四部分第二课:如何成为Web程序员? 3.第四部分第三课:成为优秀Web程序员的秘诀 第四部分:Web程序员(完结篇) 大家好.终于来到了[W ...

  2. 【Web探索之旅】第二部分第三课:框架和内容管理系统

    内容简介 1.第二部分第三课:框架和内容管理系统 2.第二部分第四课预告:数据库   第二部分第三课:框架和内容管理系统 上一课我们介绍了服务器端的编程语言,有PHP,Java,Python,Ruby ...

  3. 【Linux探索之旅】第二部分第四课:文件操纵,鼓掌之中

    内容简介 1.第二部分第四课:文件操纵,鼓掌之中 2.第二部分第五课预告:用户和权限 文件操纵,鼓掌之中 既然上一课我们学习了Linux中的文件组织方式,那么现在就该是玩弄,啊不,是操纵它们的时候了. ...

  4. 【C语言探索之旅】 第二部分第四课:字符串

    内容简介 1.课程大纲 2.第二部分第四课: 字符串 3.第二部分第五课预告: 预处理 课程大纲 我们的课程分为四大部分,每一个部分结束后都会有练习题,并会公布答案.还会带大家用C语言编写三个游戏. ...

  5. 【Web探索之旅】第三部分第一课:服务器

    内容简介 1.第三部分第一课:服务器 2.第三部分第二课预告:IP地址和域名 第三部分第一课:服务器 大家好,欢迎来到[Web探索之旅]的第三部分.这一部分有不少原理,还是很重要的. 这一部分我们会着 ...

  6. 【Web探索之旅】第一部分:什么是Web?

    内容简介 1.Web探索之旅:开宗明义 2.第一部分第一课:什么是Web? 3.第一部分第二课:Web,服务和云 4.第一部分第三课:Web的诞生史 Web探索之旅:开宗明义 大家好. 我们这个系列课 ...

  7. 【Web探索之旅】第三部分第一课:server

    wx_fmt=jpeg" alt="0? wx_fmt=jpeg" style="height:auto"> 内容简单介绍 .第三部分第一课:s ...

  8. 【Web探索之旅】第三部分第二课:IP地址和域名

    内容简介 1.第三部分第二课:IP地址和域名 2.第三部分第三课预告:协议 第三部分第二课:IP地址和域名 上一课我们说了在Web之中,全球各地有无数台机器,有些充当客户机,有些作为服务器. 那么这些 ...

  9. 【Web探索之旅】第二部分第五课:响应式网站和移动应用

    内容简介 1.第二部分第五课:响应式网站和移动应用 2.第三部分第一课预告:服务器 第二部分第五课:响应式网站和移动应用 在我们开始聊响应式网站之前,我们可以聊聊移动App(App是Applicati ...

随机推荐

  1. (ZT)LoadRunner9.0成功破解方法

    LoadRunner9.0软件下载地址: http://www.3atesting.com/filedown/LR9Download.exe 破解所需文件 http://download.csdn.n ...

  2. Android中倒计时代码

    布局: maina.xml <DigitalClock android:id="@+id/myClock" android:layout_width="wrap_c ...

  3. poj3278(bfs)

    题目链接:http://poj.org/problem?id=3278 分析:广搜,每次三种情况枚举一下,太水不多说了. #include <cstdio> #include <cs ...

  4. cocos2d-x 3.0游戏实例学习笔记《卡牌塔防》第八部---怪物出场

    /* 说明: **1.本次游戏实例是<cocos2d-x游戏开发之旅>上的最后一个游戏,这里用3.0重写并做下笔记 **2.我也问过木头本人啦,他说:随便写.第一别全然照搬代码.第二能够说 ...

  5. Software Development and Newton&#39;s Laws of Motion

    Software Development and Newton's Laws of Motion Intro I have no idea since when the word velocity f ...

  6. POJ 1753 位运算+枚举

    题意: 给出4*4的棋盘,只有黑棋和白棋,问你最少几步可以使棋子的颜色一样. 游戏规则是:如果翻动一个棋子,则该棋子上下左右的棋子也会翻一面,棋子正反面颜色相反. 思路: 都是暴搜枚举. 第一种方法: ...

  7. UILabel iOS添加文本控件

    UILabel这是iOS控制,这是UIView子类,只有在UIView文字显示功能的基础上加入.UILabel还查看课程和UIView类别似     //1.创建一个视图对象     //2.配置视图 ...

  8. Luci - UCI (Unified Configuration Interface)

    参考: http://wiki.openwrt.org/doc/techref/uc http://luci.subsignal.org/api/luci/modules/luci.model.uci ...

  9. 天嵌E9平台下进行USB Wifi模块RT3070驱动的移植

    因为项目工作须要,要在天嵌E9平台下实现wifi的点对点,点对多点的传输. Wifi 模块芯片:雷凌3070芯片 嵌入式平台:E9(ARM) 交叉编译环境:arm-none-linux-gnueabi ...

  10. NET通用平台

    NET通用平台.通用权限.易扩展.多语言.多平台架构框架 先拿出我半前年前平台的设计初稿,经过半年的努力我已经完成了该设计稿的所有功能.并且理念已经远远超出该设计稿. 下面是一些博友对我贴子的评价: ...