在如今這個精通社交媒體的世界裏,人們都熟悉各種社交媒體網站,如 Facebook 、 Twitter 等,或電子商務巨頭,如亞馬遜和 Flipkart 或任何儲存多用户資料的網站。這些資料可以是任何東西,包括客户姓名、年齡、地址、信用卡資訊、照片、評價、論述等。因此,簡單地説,資料就是儲存在計算機站羣系統上的資訊,應用程式可以在需要時進行使用。對於通過互聯網傳輸的資料,它被儲存在網站的網絡站羣服務器上。站羣服務器將其儲存在資料庫中。資料庫是可以方便地訪問、管理和更新的有組織的資料集合。 WordPress 站羣香港 WP 虛擬主機為您介紹 NoSQL 資料庫的內容、原因和方式。
開發應用程式時,最關鍵的決定之一是選擇用於儲存資料的資料庫。無論是否有足夠的技術知識,這個決定似乎都很困難。畢竟,這不僅是在短時間內存儲資料的問題,也是檢索資料的問題! 尤其是考慮到消費市場正在以快速的速度增長,資料堆積如山——物聯網以及所有社交和互聯的事物。如果要構建商業應用,那麼應該預料到如此大量的資料,為了應對它,資料庫的選擇極為重要。
NoSQL 資料庫的內容、原因和方式
以熱門 WordPress 電商巨頭亞馬遜為例。作為客户,如果在亞馬遜購物過,會注意到兩點。其一,無論在搜索框中查詢的時間有多長,都需要幾秒鐘的時間才能顯示出結果 (記住,網絡連線很好) 。其二,如果已經將某些商品加入購物車或正在瀏覽,會注意到” 經常一起買 “的選項。現在,想象一下亞馬遜擁有的客户以及大量的資料,要在幾秒鐘內把這個整理出來,是一件艱鉅的任務。但是,沒有經歷過延遲的情況吧? 原因是,亞馬遜使用的是自己的 NoSQL 資料庫 DynamoDB,它不把資料儲存在表中,因此,定位起來比較方便。也就是説,本文的後半部分將介紹它如何做到這一點。
本文的目的是幫助理解為什麼選擇 NoSQL 資料庫會對長遠發展有利。然而,在繼續前進之前,首先了解資料庫的概念,當今流行的資料庫模型,以及應該切換到 NoSQL 模型的原因。
資料庫的型別:
資料庫是資料的集合,可以很容易地訪問、管理、更新和刪除。有很多資料庫型別,然而,資料庫大致可以分為以下四種型別:
OODB 或物件導向的資料庫
RDB 或關係型資料庫
NoSQL(不僅是 SQL) 。
新 SQL
為了簡單起見,將選擇介紹兩種流行的資料庫模型,即關係型資料庫和 NoSQL 。
在關係型資料庫中,資料以行和列的形式儲存在” 表” 中。它使用 SQL(結構化查詢語言) 執行資料相關的操作,如建立表,向表中插入資料或從中讀取資料,修改和更新資料,刪除資料或表。這些操作通常被稱為 CRUD 操作。資料以固定的模式相互連線。在非正式的情況下,關係型資料庫也被稱為 SQL 資料庫。
總的來説,資料庫就包含雖有資料和日誌的中央儲存庫或容器。而模式則是資料庫中的一個資料夾,它將所有連線的物件按邏輯分組。簡單來説,卧室就是一張表,整個房屋就是資料庫,整個平面圖就是架構。
常用的關係型資料庫有,MySQL 、 Oracle 、 Microsoft SQL Server 、 SQLite 等。
接著説説 NoSQL 資料庫。 NoSQL 是一種非關聯式資料庫模型,與關聯式資料庫相比,它不以嚴格的模式或表的形式儲存資料 (文章的後半部分將介紹它如何儲存資料) 。因此,資料可以是任何型別,而且仍然可以輕鬆地儲存或檢索。推薦閲讀:《WP 虛擬主機有哪些資料庫型別?》
為什麼應該轉到 NoSQL
雖然關聯式資料庫已經使用了很多年,並且在過去已經滿足了業務需求,但現在情況正在發生變化。隨著互聯網日益普及和社交媒體的使用,產生的資料量比幾年前可能還要高。
作為 2013 年以來就一直強調資料量、速度和種類的平台,Domo 的資料顯示,互聯網人口的比例和每分鐘產生的資料都在陡然上升! 在連續 7 年的報告中,互聯網人口占世界總人口的比例已經達到 56.1%,目前已佔 43 億人,這比 2022 年 1 月增長了 9% 。而就趨勢而言,在很長一段時間內,不會出現負曲線。這種增長可以歸因於對社交媒體、 YouTube 、 Netflix 等流行的互聯網服務以及互連的感測器——物聯網構件——的增加。
鑑於這種驚人的資料增長,管理資料是一項艱鉅的任務,而關聯式資料庫並不擅長快速處理這種資料。這是由於新進來的資料並不總是適合關聯式資料庫所遵循的緊密模式。而 NoSQL 資料庫則可以輕鬆地管理大量的資料和對其進行的操作。
例如,如果有一個很受歡迎的網站,比如説有至少一萬個註冊客户,而且每天都在增長,這些客户都會遵循自己的生命週期和流程。在前端,他們會載入頁面、同類商品、將產品加入購物車等,但在後端,每當執行一個操作,就會從資料庫中檢索資料,考慮某類查詢的次數,建議同類商品,等等。
搜索
基於搜索的建議
如果所有這些操作都需要時間來執行,比如説可能超過幾秒或一分鐘 (即從資料庫中檢索/讀取、搜索、查詢和顯示),多用户可能會放棄購物車,去其他地方。
操作緩慢的原因可能是網站載入速度慢,也可能是處理資料的後台慢。如果有關聯式資料庫,有可能會有無數的行和列,找到正確的匹配會花很長時間。另一方面,如果使用 NoSQL 資料庫,這個問題會大大減少。
那麼這是實時的例子嗎? 是的,亞馬遜使用最初提到的 DynamoDB,谷歌使用 BigTable,都是 NoSQL 資料庫的例子。推薦閲讀:《保護資料庫安全的五個方法》
簡單來説,以下是轉用 NoSQL 資料庫的 4 個理由:
高度的可擴充套件性
能夠處理大量的資料——結構化和半結構化的資料。
無模式
快速迭代
NoSQL 資料庫型別
看過了轉用 NoSQL 資料庫的主要優勢,現在瞭解一下 NoSQL 資料庫的型別。簡單地説,應該根據業務型別去選擇資料庫的型別。
NoSQL 資料庫有四種型別,即:Key-value(鍵值) 、 Document(文件) 、 Column(列) 和 Graph(圖) 。
鍵值
在鍵值資料庫中,資料以鍵/值對的形式儲存在雜湊表中,其中鍵是自動生成和唯一的,而值可以是任何東西,例如字串、 JSON 、 BLOB 等。這種型別的資料庫通常被用作字典或集合。
可以用在哪裏? 這種型別的資料庫最適合用於電子商務或基於購物車的網站。
文件
在基於文件的 NoSQL 資料庫中,資料以鍵值對的形式進行儲存和檢索,但是,這裏的值以 JSON 的形式儲存。 BSON 或 XML 型別的文件。鍵值資料庫和文件之間的關鍵區別之一是,後者嵌入了與儲存內容相關的屬性後設資料,從而有助於根據內容輕鬆查詢資料。
可以用在哪裏? 這種型別的資料庫多用於 Blogging 或 CMS 平台、 WordPress 電商應用或實時分析等。
列
在基於列的資料庫中,資料以列的形式寫入,而不是傳統的行結構。基於列的資料庫使用列定向,每個列都與一個列鍵相關聯。
可以用在哪裏? 基於列的資料庫通常用於管理資料倉儲、 CRM 、商業智慧等。
圖
在基於圖的資料庫中,資料通常以靈活的圖形表示方式進行排列,而不是表或列的限制。在這裏,資料庫不僅儲存了物件,而且還儲存了這些物件之間的關係。
可以用在哪裏? 基於圖的 NoSQL 資料庫被廣泛應用於社交網絡、空間資料、物流等領域。推薦閲讀:《Python 資料庫建立 mysql 資料庫表和寫入 mysql 資料庫》
它對業務的幫助:
介紹了不同型別的 NoSQL 資料庫和各種應用,以及在哪裏使用它們。如果業務模式屬於其中的一種,同時又要處理大量的實時資料,那麼改用 NoSQL 資料庫將是一個不錯的決定。同時,不一定只需要有一個資料庫,根據業務和查詢的情況,可以有多個資料庫。
最後,真正重要的是資料有多少,以及認為哪種處理方式最好! 推薦相關閲讀:《美國獨立主機如何建立資料庫》