在當今精通社交媒體的世界中,我們都熟悉各種社交媒體網(wǎng)站,如 Facebook、Twitter 等,或亞馬遜和 Flipkart 等電子商務(wù)巨頭,或者任何存儲用戶數(shù)據(jù)的網(wǎng)站。這些數(shù)據(jù)可以是客戶姓名、年齡、地址、卡片詳細信息、照片、評論、評論等任何內(nèi)容。因此,簡單地說,數(shù)據(jù)就是存儲在計算機系統(tǒng)上的信息,應(yīng)用程序可以在需要時使用這些信息。當涉及通過互聯(lián)網(wǎng)傳輸?shù)臄?shù)據(jù)時,它存儲在網(wǎng)站的網(wǎng)絡(luò)服務(wù)器上。然后從服務(wù)器將其存儲在數(shù)據(jù)庫中。數(shù)據(jù)庫是可以輕松訪問、管理和更新的有組織的數(shù)據(jù)集合。
開發(fā)應(yīng)用程序時最關(guān)鍵的決定之一是選擇用于存儲數(shù)據(jù)的數(shù)據(jù)庫。而且不管你是否有足夠的技術(shù)知識,這個決定似乎很困難。畢竟,這不僅是存儲數(shù)據(jù)的問題,而且是在短時間內(nèi)檢索數(shù)據(jù)的問題!尤其是考慮到消費市場正在以大量數(shù)據(jù)快速增長——禮貌、物聯(lián)網(wǎng)以及所有社交和連接的事物。如果您正在構(gòu)建一個業(yè)務(wù)應(yīng)用程序,那么您應(yīng)該預料到如此大量的數(shù)據(jù)并應(yīng)對它,數(shù)據(jù)庫的選擇非常重要。
以受歡迎的電子商務(wù)巨頭亞馬遜為例。作為客戶,如果您從亞馬遜購物,您會注意到兩件事。一,無論您的查詢在搜索框中有多長,顯示結(jié)果都需要幾秒鐘(請記住,您的互聯(lián)網(wǎng)連接良好且不差。其次,如果您添加了某些項目到您的購物車或正在瀏覽它們,您會注意到“經(jīng)常一起購買”選項?,F(xiàn)在,想象一下亞馬遜擁有的客戶以及數(shù)據(jù)量,在幾秒鐘內(nèi)對其進行排序是一項艱巨的任務(wù)。但你還沒有經(jīng)歷過這個對吧?嗯,原因是,亞馬遜使用自己的 NoSQL 數(shù)據(jù)庫,DynamoDB,它不會將數(shù)據(jù)存儲在表中,因此更容易找到它。話雖如此,我們將在文章的后半部分介紹它是如何做到這一點的。
繼續(xù)前進,在本文中,我們旨在幫助您了解為什么選擇 NoSQL 數(shù)據(jù)庫從長遠來看會對您有益。但是,在繼續(xù)討論之前,讓我們首先了解數(shù)據(jù)庫的概念、當今可用的流行數(shù)據(jù)庫模型以及您應(yīng)該切換到 NoSQL 模型的原因。
數(shù)據(jù)庫類型:
數(shù)據(jù)庫是可以輕松訪問、管理、更新和刪除的數(shù)據(jù)集合。有幾種數(shù)據(jù)庫類型,但是,數(shù)據(jù)庫可以大致分為以下四種類型:
- OODB 或面向?qū)ο蟮臄?shù)據(jù)庫
- RDB 或關(guān)系數(shù)據(jù)庫
- NoSQL(不僅是 SQL)和,
- NewSQL(RDBMS 的一種)
為了簡單起見,我們將選擇兩種流行的數(shù)據(jù)庫模型,即。關(guān)系數(shù)據(jù)庫和 NoSQL。
在關(guān)系數(shù)據(jù)庫中,數(shù)據(jù)以行和列的形式存儲在“表”中。它使用發(fā)音為“Sequel”的 SQL (結(jié)構(gòu)化查詢語言)來執(zhí)行與數(shù)據(jù)相關(guān)的操作,例如創(chuàng)建表、向/從中插入和讀取數(shù)據(jù)、修改和更新數(shù)據(jù)以及刪除數(shù)據(jù)或表. 這些操作通常稱為 CRUD 操作。數(shù)據(jù)以固定模式相互連接。非正式地,關(guān)系數(shù)據(jù)庫也稱為 SQL 數(shù)據(jù)庫。
總體而言,數(shù)據(jù)庫就像一個包含所有數(shù)據(jù)和日志的中央存儲庫或容器。而模式是數(shù)據(jù)庫中的一個文件夾,它將所有連接的對象邏輯地組合在一起。簡單來說,你的臥室就是一張桌子,你的整個家就是數(shù)據(jù)庫,你的整個平面圖就是架構(gòu)。一些常用的關(guān)系數(shù)據(jù)庫有MySQL、Oracle、Microsoft SQL Server、SQLite 等。
繼續(xù)使用 NoSQL 數(shù)據(jù)庫。NoSQL 是一種非關(guān)系型數(shù)據(jù)庫模型,與關(guān)系型數(shù)據(jù)庫相反,它不以嚴格的模式或表的形式存儲數(shù)據(jù)(我們將在文章的后半部分介紹它是如何存儲數(shù)據(jù)的)。因此,您的數(shù)據(jù)可以是任何類型,并且仍然可以輕松存儲或檢索。
為什么要切換到 NoSQL
盡管關(guān)系數(shù)據(jù)庫已經(jīng)使用了很多年并且過去已經(jīng)滿足了業(yè)務(wù)的需求,但現(xiàn)在情況正在發(fā)生變化。隨著互聯(lián)網(wǎng)的日益普及和社交媒體的使用,所生成的數(shù)據(jù)量甚至比幾年前還要高。
根據(jù)Domo的說法,一個自 2013 年以來一直強調(diào)數(shù)據(jù)量、速度和多樣性的平臺,其互聯(lián)網(wǎng)人口百分比和每分鐘生成的數(shù)據(jù)急劇上升!在其連續(xù)第 7 次報告中,互聯(lián)網(wǎng)已達到世界總?cè)丝诘?56.1%,現(xiàn)在代表了 43 億人,這比 2018 年 1 月增長了 9%。而且就趨勢而言,不會出現(xiàn)負曲線在圖中很久。這一增長可歸因于社交媒體、YouTube、Netflix 等流行互聯(lián)網(wǎng)服務(wù)以及互連傳感器(物聯(lián)網(wǎng)的組成部分)的訪問增加。
鑒于數(shù)據(jù)的驚人增長,管理它可能是一項艱巨的任務(wù),而關(guān)系數(shù)據(jù)庫并不擅長快速處理。這是因為傳入的新數(shù)據(jù)并不總是適合緊隨關(guān)系數(shù)據(jù)庫之后的緊密模式。另一方面,NoSQL 數(shù)據(jù)庫可以輕松管理大量數(shù)據(jù)以及在其上執(zhí)行的操作。
例如,如果您有一個受歡迎的網(wǎng)站,并且擁有至少 10,000 名注冊客戶,并且每天都在增長,那么這些客戶中的每一個都將遵循自己的生命周期和流程。在前端,他們將加載頁面、類似項目、將產(chǎn)品添加到購物車等。但在后端,每當執(zhí)行操作時,都會從數(shù)據(jù)庫中檢索數(shù)據(jù),建議類似項目考慮到的數(shù)量運行特定類型的查詢的時間,依此類推。
如果所有這些操作需要時間來運行,比如說可能超過幾秒或一分鐘(即從數(shù)據(jù)庫中檢索/讀取、搜索、查找和顯示),用戶可能會放棄購物車并去其他地方。
操作緩慢的原因可能是網(wǎng)站加載速度慢或處理數(shù)據(jù)的后端速度慢。如果您有一個關(guān)系數(shù)據(jù)庫,則可能會有無數(shù)行和列,并且找到正確的匹配項需要很長時間。另一方面,如果你使用 NoSQL 數(shù)據(jù)庫,這個問題會明顯減少。
這是一個實時的例子嗎?就是,Amazon 使用最初提到的 DynamoDB,而 Google 使用 BigTable,兩者都是 NoSQL 數(shù)據(jù)庫的示例。
簡而言之,以下是切換到 NoSQL 數(shù)據(jù)庫的 4 個原因:
- 高度可擴展
- 能夠處理大量數(shù)據(jù)——結(jié)構(gòu)和半結(jié)構(gòu)化
- 無模式
- 快速迭代
NoSQL 數(shù)據(jù)庫的類型
了解了切換到 NoSQL 數(shù)據(jù)庫的主要優(yōu)勢之后,現(xiàn)在讓我們繼續(xù)了解 NoSQL 數(shù)據(jù)庫的類型。簡而言之,您應(yīng)該選擇哪種類型的數(shù)據(jù)庫取決于您的業(yè)務(wù)類型。NoSQL 數(shù)據(jù)庫有四種類型,即。鍵值、文檔、列和圖。
- 核心價值
在鍵值類型的數(shù)據(jù)庫中,數(shù)據(jù)以鍵/值對的形式存儲在哈希表中,其中鍵是自動生成且唯一的,而值可以是任何東西,例如字符串、JSON、BLOB等。這種類型的數(shù)據(jù)庫通常用作字典或集合。
你可以在哪里使用它?這種類型的數(shù)據(jù)庫最適合基于電子商務(wù)或購物車的網(wǎng)站。
示例: Riak 和 Amazon 的 DynamoDB 是流行的鍵值 NoSQL 數(shù)據(jù)庫。
- 文檔
在基于文檔的 NoSQL 數(shù)據(jù)庫中,數(shù)據(jù)作為鍵值對存儲和檢索,然而,這里的值以 JSON 的形式存儲。BSON 或 XML 類型的文檔。鍵值數(shù)據(jù)庫和文檔之間的主要區(qū)別之一是后者嵌入了與存儲內(nèi)容相關(guān)聯(lián)的屬性元數(shù)據(jù),這有助于根據(jù)內(nèi)容輕松查詢數(shù)據(jù)。
你可以在哪里使用它?這種類型的數(shù)據(jù)庫主要用于博客或 CMS 平臺、電子商務(wù)應(yīng)用程序或?qū)崟r分析等。
示例: MongoDB和 CouchBase 是流行的基于文檔的 NoSQL 數(shù)據(jù)庫。
- 柱子
在基于列的數(shù)據(jù)庫中,數(shù)據(jù)以列的形式寫入,而不是傳統(tǒng)的行結(jié)構(gòu)?;诹械臄?shù)據(jù)庫使用列方向,其中每列與列鍵相關(guān)聯(lián)。
你可以在哪里使用它?基于列的數(shù)據(jù)庫通常用于管理數(shù)據(jù)倉庫、CRM、商業(yè)智能等。
示例:受 BigTable 啟發(fā)的 Google 的 BigTable 和 HBase 和 Cassandra 是一些廣為人知的 Column 數(shù)據(jù)庫。Cassandra 最初是為了解決 Facebook 的收件箱搜索問題而開發(fā)的。
- 圖形
在基于圖形的數(shù)據(jù)庫中,數(shù)據(jù)通常以靈活的圖形表示形式排列,而不是表或列的限制。在這里,數(shù)據(jù)庫不僅存儲對象,還存儲這些對象之間的關(guān)系。
例如,參考該圖,對象/數(shù)據(jù)被存儲為“節(jié)點”,“關(guān)系”作為邊。邊建立節(jié)點之間的關(guān)系,每個節(jié)點和邊都有唯一的標識符。
你可以在哪里使用它?基于圖的 NoSQL 數(shù)據(jù)庫廣泛用于社交網(wǎng)絡(luò)、空間數(shù)據(jù)、物流等。
示例: Neo4J、Infinite Graph、OrientDB 是一些流行的基于圖的數(shù)據(jù)庫。
它如何幫助您的業(yè)務(wù):
我們已經(jīng)看到了不同類型的 NoSQL 數(shù)據(jù)庫以及使用它們的各種應(yīng)用程序。如果您的業(yè)務(wù)模型屬于其中之一,并且同時處理大量實時數(shù)據(jù),那么切換到 NoSQL 數(shù)據(jù)庫將是一個不錯的決定。同時,不必只有一個數(shù)據(jù)庫,根據(jù)操作和查詢,您可以擁有多個數(shù)據(jù)庫。
例如,它甚至可以將MySQL(一種 RDBMS)用于一個特定操作,因為它是最好的,而 MongoDB 用于另一個操作。最后,真正重要的是您的數(shù)據(jù)有多少以及您認為處理它的最佳方式!