Web探索之旅 | 第二部分第四課:數據庫

做者 謝恩銘,公衆號「程序員聯盟」(微信號:coderhub)。 轉載請註明出處。 原文:www.jianshu.com/p/cc9f2d12a…程序員


《Web探索之旅》全系列sql

內容簡介


  1. 前言
  2. 數據庫
  3. SQL 語言
  4. 動態網站
  5. 總結
  6. 第二部分第五課預告

1. 前言


上一課 Web探索之旅 | 第二部分第三課:框架和內容管理系統 中,咱們學習了一些實用的工具。這一課咱們來看看數據庫吧。數據庫

數據庫的英語是 Database,data 表示「數據」,base 表示「基地,基礎」。顧名思義,數據庫就是「數據的倉庫」的意思。因此數據庫的一大做用就是儲存數據。編程

爲何 Web 領域要有數據庫呢?瀏覽器

數據庫簡單來講可視爲電子化的文件櫃(存儲電子文件的處所),用戶能夠對文件中的數據執行新增、截取、更新、刪除等操做。bash

它是以必定方式儲存在一塊兒、能爲多個用戶共享、具備儘量小的冗餘度、與應用程序彼此獨立的數據集合。服務器

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 的系列教程,有詳細實例:www.w3school.com.cn/sql/index.a…

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 老師,終生學習者。 熱愛生活,喜歡游泳,略懂烹飪。 人生格言:「向着標杆直跑」

相關文章
相關標籤/搜索