MongoDB 1: NoSQL 和 SQL的區別


導讀:本篇博客,主要是結合自己在項目中的使用,簡單的闡述一下NoSQL和SQL的區別。那么,根據自己的應用,NoSQL這邊,選擇的是MongoDB(Redis雖然也是,但屬於內存存儲,這里不予說明)。SQL這邊,選擇的是MySQL。

一、簡單概述

SQL:對於SQL來說,也是我們最常說的關系型數據庫,比如:MySQL,SQLServer等。那么,它的一個最明顯的表示是,它的數據,全部是通過表單進行存儲,有行和列之分。

NoSQL:相對於SQL而言,NoSQL則是一種非關系型的數據庫。NoSQL(not only SQL),它的數據存儲是以文檔或者集合的形式進行,沒有行列之分。

1.1,從數據存儲來看:


1.2,從功能來看:


1.3,從查詢語言來看:


個人感覺,關系型和非關系,在本質上並沒有什么區別。而在應用層面上,查詢語言幾乎是相同的,區別比較少,學習的成本也是相對較低。


二、實例說明

需求:希望獲取一個用戶的完整銀行賬戶信息

2.1,使用關系型

我們通常的做法,是建立一個用戶表,是存儲用戶的基本信息;再建立一個銀行賬戶表,存儲銀行賬戶信息。然后通過外鍵,使這兩者之間產生聯系。

表一:用戶表


表二:用戶記錄


那么當我們想要獲取用戶的完整信息時,我們通常通過外鍵,去獲得兩張表信息的聯合;


我們通過使用關系型數據庫,無法一次性獲得所有的數據,通常通過聯合。那么,如果數據表過多,會發生什么?PS:維護過數據庫的應該有所體會。


可是,如果通過非關系型的數據塊進行存儲呢?比如MongoDB

2.2,使用非關系型


MongoDB允許你查找文檔中的任何東西,這也就意味着,不用聯合,就可以一次性的獲取所有的數據。


三、思考總結

在之前的項目中,使用了MongoDB去存儲考生的頭像或者說是音頻文件。那么事實上,大多數數據庫都支持image的存儲,對於音頻文件,也都是使用大型的二進制存儲結構進行存儲,或者轉換成文件流的形式寫入數據庫。

如果說使用MongoDB僅是為了存儲頭像或者說音頻,那么我認為這是一件有待商榷的事兒。一個考生在當場考試配置下,只會對應一份考試信息,那么作為頭像來說,是完全可以通過關系型,也就是我們一直使用的MySQL去實現的。


PS:一直很費解,為什么僅僅用MongoDB去存了圖片?它的出現和要解決的問題,並不是對於流性文件或者圖片的存儲!


后續,將介紹MongoDB的簡單安裝和使用,以及使用MongoDB的問題和解決方案。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM