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

作者 谢恩铭,公众号「程序员联盟」(微信号:coderhub)。
转载请注明出处。
原文:https://www.jianshu.com/p/cc9f2d12a6eb


《Web探索之旅》全系列

内容简介


  1. 前言
  2. 数据库
  3. SQL 语言
  4. 动态网站
  5. 总结
  6. 第二部分第五课预告

1. 前言


上一课 Web探索之旅 | 第二部分第三课:框架和内容管理系统 中,我们学习了一些实用的工具。这一课我们来看看数据库吧。

数据库的英语是 Database,data 表示“数据”,base 表示“基地,基础”。顾名思义,数据库就是“数据的仓库”的意思。所以数据库的一大作用就是储存数据。

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

数据库简单来说可视为电子化的文件柜(存储电子文件的处所),用户可以对文件中的数据执行新增、截取、更新、删除等操作。

它是以一定方式储存在一起、能为多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合。

2. 数据库


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

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

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

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

常见的关系型数据库有:

  • MySQL:很著名的开源数据库,常用于博客系统。比如我们前一课提到的 WordPress 使用的数据库就是 MySQL。不过,MySQL 已经被 Oracle 公司收购,收购之后 MySQL 之父联合社区创建了一个叫 MariaDB 的数据库软件。

  • PostgreSQL:MySQL 的竞争对手。

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

  • Oracle:Oracle(甲骨文)公司的主要产品。可以说是关系型数据库中的老大,功能强大,容量也大,但是费用最昂贵。但是对于很多大公司,Oracle 数据库是不可取代的。

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

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

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

NoSQL 分为四大类:

  1. 键值(Key-Value)存储数据库:这一类数据库主要会使用到一个哈希表,这个表中有一个特定的键和一个指针指向特定的数据。Key-Value 模型对于 IT 系统来说的优势在于简单、易部署。但是如果只对部分值进行查询或更新的时候,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,比较容易映射复杂值的环境。
  6. 大规模数据集合,多重数据种类。

3. 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

4. 动态网站


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

  1. 客户机的浏览器(客户端)向服务器请求网页。
  2. 服务器开始生成网页。
  3. 服务器向数据库发出 SQL Request(SQL 请求 )。
  4. 数据库根据收到的 SQL 请求,传输对应的数据给服务器。
  5. 服务器拿到这些数据,在生成的网页中插入这些数据。
  6. 最终服务器将对每个用户定制的网站(HTML,CSS 和 JavaScript 写成)返还给客户端。
  7. 客户端浏览器解释 Web 网页文件,我们就能看到各不相同的网页了。

5. 总结


  1. 数据库:存储数据的重要工具。分为关系型数据库和非关系型数据库。

  2. 比较常用的关系型数据库:MySQL,Oracle,SQlite,等等。你可以在它们之间选择一种你自己喜欢的。

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

6. 第二部分第五课预告


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

下一课:Web探索之旅 | 第二部分第五课:响应式网站和移动应用


我是 谢恩铭,公众号「程序员联盟」(微信号:coderhub)运营者,慕课网精英讲师 Oscar 老师,终生学习者。
热爱生活,喜欢游泳,略懂烹饪。
人生格言:「向着标杆直跑」

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,839评论 6 482
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,543评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 153,116评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,371评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,384评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,111评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,416评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,053评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,558评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,007评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,117评论 1 334
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,756评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,324评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,315评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,539评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,578评论 2 355
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,877评论 2 345

推荐阅读更多精彩内容