大數據時代下的新寵:是時候熟悉NoSQL資料庫了!

2020-12-21 讀芯術

全文共5201字,預計學習時長18分鐘

在大數據時代,數據是信息系統的核心,數據組織和運營的效率是任何公司都關心的問題,業務專長和對現有技術解決方案的理解是非常必要的。因此,公司必須同時繼續評估和選擇能夠滿足其未來需求和支持其增長的資料庫。

關係資料庫已經被用於存儲數據幾十年了,它們仍是許多用例的可行解決方案。而NoSQL資料庫則是針對關係資料庫技術的局限性而創建的。

與關係型資料庫相比,NoSQL資料庫具有更強的可擴展性和更好的性能,它彌補了關係型資料庫的一些不足。

NoSQL資料庫旨在解決大數據環境中的海量,多源和多格式的數據處理問題。它們提供了一種新的方法來滿足容量需求以及新的數據類型。如今,NoSQL資料庫的數量變得越來越重要。了解了它們之間的差異是至關重要的,你才能採用正確的技術進行正確的應用。

本文將闡述從RDBMS遷移到NoSQL的困難、過程和好處。

1. 簡介

SQL:

SQL是結構化查詢語言的縮寫。IT工程師在大型關係資料庫(DBMS)中快速搜索信息已經有很長一段時間了。

SQL如今被廣泛使用,因為它是最結構化、最快的資料庫組織和查詢設備之一;不同的名字代表不同的改進版本,如Oracle的MySQL和微軟的SQL Server。此外,SQL具有預定義的結構和模式,是許多公司最推薦的選擇。

NoSQL:

「NoSQL」這個縮略語有兩種不同的解釋,目前尚不明確:

· 對有些人來說是「No SQL」,也就是說,使用了另一種不同於SQL的查詢語言。

· 對於其他人,它不僅是「SQL」,也就是說,是SQL與其他信息檢索工具的結合使用。

這個術語既與技術特徵有關,也與20世紀10年代出現的歷史性一代DBMS有關。導致NoSQL發明的主要原因是,它解決了這樣一個問題,即一個網站上的同一個資料庫可以在全世界範圍內被數百萬用戶同時使用;像亞馬遜這樣的公司就存在這種典型問題……

筆者試圖通過NoSQL來降低查詢語言的複雜性,簡化資料庫的體系結構。這些資料庫包括面向列、面向文檔、面向圖形和面向鍵/值的數據。NoSQL由各種產品組成,每個產品都有一組獨特的功能。

圖源:unsplash

主要差別:

· SQL資料庫有一個預定義的模式,而NoSQL資料庫有一個用於非結構化數據的動態模式。

· SQL資料庫是可垂直擴展的,而NoSQL資料庫是可水平擴展的。SQL資料庫是通過增加CPU、RAM或SSD等硬體的能力來擴展的。

· NoSQL資料庫通過增加數據伺服器的數量來減少負載。這就像在同一棟建築上增加更多的樓層,而不是在鄰近地區增加更多的建築。

· SQL資料庫使用SQL(結構化查詢語言)來定義和操作數據,這是非常強大的。在NoSQL資料庫中,查詢的重點是文檔收集。有時也稱為UnQL(非結構化查詢語言)。在不同的NoSQL資料庫之間,使用UnQL的語法差異很大。

· SQL資料庫是基於表的資料庫,而NoSQL資料庫是基於鍵值對的資料庫。這意味著SQL資料庫以表的形式表示數據,表由表示數據的一定數量的行組成,而NoSQL資料庫是鍵值對、文檔、圖形資料庫等的集合。

2. 歷史因素

關係型DBMS的歷史支配地位

· 20世紀70年代創建的關係型DBMS已經逐漸成為主流, 20世紀90年代初成為了非常普遍的主流資料庫範式。

圖源:unsplash

· 在20世紀90年代,許多物流公司的銷售人員開始使用它來存儲業務數據。事實上,他們既沒有滑鼠,也沒有用戶界面來搜索存儲在伺服器上的某些信息,伺服器通常由專業線連接並且相距很遠,它們用於通過鍵盤輸入SQL命令,並且能夠在幾秒內檢索到特定產品或原材料可用性的相關信息。

· 出現了其他幾種資料庫模型,如面向對象的資料庫管理系統、層次資料庫管理系統、對象關係資料庫管理系統,但它們的使用非常有限。

· 從本世紀初開始,隨著谷歌、亞馬遜等大型網際網路公司的發展,出現了大量的非結構化數據,其增長速度遠遠超過不再符合RDBMS關係模式的結構化數據。集群計算也得到了發展,關係模型的主導地位由於其在新實踐上的限制受到了質疑。

NoSQL模型的先驅

大型web公司必須處理非常大的數據量,這就是為什麼它們首先要面對傳統關係型DBMS的固有限制。

圖源:unsplash

這些系統嚴格應用ACID屬性(原子性、一致性、隔離性、持久性),通常設計為在單臺計算機上運行,很快就出現了可伸縮性問題。為了滿足這些限制,一些公司已經開始開發自己的資料庫管理系統,這些系統可以在分布式硬體架構上運行,可以處理大量數據:

· 谷歌(BigTable),

· 亞馬遜(DynamoDB),

· LinkedIn(Voldemort ),

· Facebook (Cassandra和HBase),

· 百度(Hypertable)

通過簡單增加伺服器數量,性能保持良好,這是降低成本的合理解決方案,特別是如果收入隨著活動的增長而增長的話。

3. 流行的資料庫

為了選擇合適的管理系統,了解市場上存在什麼是很重要的。看看下面5個流行的SQL和NoSQL資料庫,其中有付費的也有免費的。

SQL資料庫產品:

1. MySql:

它是免費的,即使是免費的資料庫引擎也提供了很多功能。

2.Postgres:

這個資料庫管理引擎是可擴展的,可以處理tb級的數據,具有各種預定義的功能。

3.Oracle:

Oracle資料庫管理工具集最新的創意和功能於一身,非常強大。

4. SQL Server:

非常快速和穩定,與微軟的其他產品配合得很好。

5.SQLite:

SQLite資料庫非常靈巧,並且可以快速地設置,它還可以用於在智慧型手機應用程式(iPhone或Android)的實際資料庫中存儲數據。

NoSQL資料庫產品:

1.MongoDB:

MongoDB是一個靈活/可靠的資料庫,它會把讀者吸引到NoSQL的世界中來。管理和維護非常簡單快捷。

2.Hbase:

它是一個面向列的資料庫,有助於提高查詢性能和集合。

3.Cassandra:

Cassandra提供的線性可伸縮性,允許通過簡單地添加/刪除伺服器來輕鬆地擴展/縮小集群。

4.Redis:

使用非常簡單和直接。下載Redis,並在接下來的五分鐘內開始使用它。

5.CouchDb:

由於CouchDB能夠存儲序列化(JSON格式)的非結構化數據和Restful HTTP API,因此它非常適合用於Web和行動應用程式。

4. NoSQL資料庫設計

NoSQLDBMS的主要特點,在於支持對大量數據的操作和水平可伸縮性。然而,目前大多數公司面臨的困難是,如何用最適當的技術解決問題,使應用作出反應。

要解決這個問題,首先要很好地理解不同類型的NoSQL資料庫。

有一個普遍的誤解,所有的NoSQL資料庫都是平等創建的。實際上,這些資料庫可以分為四類:面向文檔的資料庫、鍵/值資料庫、列資料庫和面向圖形的資料庫。它們都有一個共同點:支持比傳統關係資料庫更靈活和更動態的模型。

事實上,每個類別都有自己的屬性和限制。沒有資料庫可以解決所有問題。必須根據項目的需要選擇資料庫。

必須考慮將操作什麼類型的數據,以及應用程式最終將如何使用這些數據。

面向文檔的資料庫:混合結構

面向文檔的NoSQL資料庫將數據存儲和提取為鍵/值對,但是值部分存儲為文檔。文檔以JSON或XML格式存儲。

MongoDB, Apache CouchDB, MarkLogic是面向文檔的資料庫

鍵/值資料庫:

面向鍵值的資料庫有大量的鍵和值散列。它代表了NoSQL資料庫的最簡單形式。將唯一的鍵與數據中的值相關聯,目的是基於相對簡單的數據集極大地提高應用程式的性能。

Redis, Riak, Memcached 和 Aerospike 就是鍵值資料庫的例子。

列資料庫:

列資料庫將數據保存在具有大量列的表中。每個存儲塊包含來自單個列的數據,並且每個列被單獨處理。它們在諸如COUNT、SUM、AVG、MAX等聚合查詢上有很高的性能,因為數據很容易從列中取出。

HBase, Cassandra 和 Accumulo 就是列資料庫的例子。

面向圖形的資料庫:

基於圖的資料庫是一種網絡資料庫,它將數據元素存儲在「圖」結構中,使得在節點之間創建關聯成為可能,最終成為推薦引擎或社交網絡的基礎。

從圖形資料庫中可以獲得很多信息。例如,可以使用圖形技術根據不同人的興趣來確定他們之間的關係。

Neo4J, InfiniteGraph 和 FlockDB 就是面向圖形資料庫的例子。

5.為應用程式選擇適當的資料庫類型的5個標準

如何選擇哪種類型的資料庫最適合一個項目?可以根據以下清單做決定:

· 要存儲的數據類型:SQL資料庫不適合分層數據存儲。但是,NoSQL資料庫更適合分層數據存儲,因為它遵循鍵值對方法或圖方法。NoSQL資料庫是大型數據集的首選。

· 可伸縮性:在大多數情況下,SQL資料庫是可垂直伸縮的。可以通過增加單個伺服器上的處理器、RAM、SSD等來管理增加的負載。另一方面,NoSQL資料庫是可水平伸縮的。可以簡單地將一些額外的伺服器添加到NoSQL資料庫基礎設施中來處理繁重的數據流。因此,可以根據設備選擇適合的資料庫類型。

· 高度事務性應用程式:SQL資料庫更穩定並且可以保證原子性和數據完整性,因此更適合密集使用的事務類型的應用程式。雖然可以將NoSQL用於事務性目的,但它仍然不能與SQL相提並論,但可以用於複雜的事務性應用程式。

· 複雜查詢:SQL資料庫非常適合需要很多查詢的環境,而NoSQL資料庫不適合複雜查詢。所以NoSQL中的查詢不如SQL查詢語言強大。

· 屬性:SQL資料庫強調ACID屬性(原子性、一致性、隔離性、持久性),而NoSQL資料庫遵循Brewers CAP定理(一致性、可用性和分區容限)。

6.從RDBMS轉向NoSQL

無論選擇哪種NoSQL資料庫設計,將數據遷移到其中都會遇到一些嚴峻的挑戰。NoSQL中數據模型的設計具有額外的複雜性,你需要知道數據的最終用途。僅僅知道應用程式將處理帳單和客戶信息是不夠的,還必須知道這些數據將如何展示給最終用戶。

因此,NoSQL資料庫中的數據建模除了需要對最終用戶的使用有深入的了解外,還需要真正的技術專長。

是時候用NoSQL解決方案替換SQL了嗎?

在筆者看來,這是一個很難回答的問題。因為在大多數情況下,不是用NoSQL解決方案替換SQL,而是在應用程式和用例顯示需要更改時,從一種解決方案轉換到另一種解決方案。

通常,在構建現代Web和行動應用程式時,對靈活性和可伸縮性的需求將推動這種轉變。

許多公司試圖在其web應用程式中支持負載,因此選擇簡單地將web伺服器添加到負載平衡器之後以支持更多用戶。

毫無疑問,在日益重要的雲計算世界中,擴展能力是一個基本的競爭優勢,可以輕鬆地添加或刪除虛擬機實例,以滿足變化不定的需求。

關係型資料庫(RDBMS)不允許簡單的擴展,也不提供靈活的數據模型。管理更多的用戶意味著添加更大的伺服器,而大型伺服器非常複雜和昂貴,不像低成本的硬體、「商品硬體」和雲架構。

組織開始看到現有或新應用程式的關係資料庫的性能問題。特別是隨著用戶數量的日益增加,他們意識到對更快速、更靈活的資料庫的需求變得非常重要。是時候轉移到NoSQL了!

從SQL到NoSQL的轉換需要哪些主要步驟?

應用程式/項目可能因每個組織而有很大的差異,因此轉換將取決於使用用例。以下是一些關於過渡的通用準則:

1.理解應用的核心需求:

以下是與NoSQL資料庫的需求相對應的一些要求:

· 可擴展性

· 快速的應用程式開發:不斷變化的市場需求和持續的數據修改

· 性能穩定:響應時間短,可帶來更好的用戶體驗

· 運行可靠性:管理錯誤的高可用性,對應用程式的影響最小,並且集成了監視API以便更好維護

2.了解NoSQL提供的不同類型:

如前所述,有不同類型的NoSQL資料庫管理系統。例如面向文檔的NoSQL資料庫—Couchbase和MongoDB是兩個最著名和最廣泛採用的例子。

此外,Cassandra可能也是一個解決方案,可以使用它的柱狀模型進行數據分析。Neo4j是一個圖形資料庫,對於需要存儲實體間關係的應用程式來說,它可能是一個完美的資料庫。

3.建立一個原型:

一旦縮小了資料庫類型的可能選擇範圍,就可以嘗試開發一個集成了應用程式主要特徵的原型。這個原型將幫助評估響應時間、吞吐量方面的性能和易於擴展的能力。

4.文檔建模與開發:

對於面向文檔的資料庫,請花幾天時間從固定的表格圖開始對數據建模,以獲取靈活的文檔模型。

5.部署然後生產:

操作穩定性是交互式web應用程式的一個非常重要的方面。對部署進行一次又一次的測試,就像對通常使用傳統RDBMS系統的應用程式進行測試一樣。

6.緊跟最新趨勢:

今天,有大量的高質量培訓提供了NoSQL的實踐課程,確保NoSQL成功實現的最佳方法是更新最新版本。

不要擔心,你會很容易接受某些NoSQL技術,特別是如果熟悉JSON文檔格式。廣泛使用SQL的開發人員可能需要適應和學習文檔建模方法。重新思考如何使用文檔在邏輯上構造數據,而不是將數據規範化為固定的資料庫模式,這是一個重要的方面。

7.結論

本文旨在介紹存在的主要差異,以幫助讀者做出正確的決策並塑造信息系統(或簡單應用程式)的未來。

可以看到,SQL和NoSQL資料庫最終做的是幾乎相同的事情(存儲數據),但方式不同。資料庫管理系統(DBMS)的選擇對於任何數據項目來說都是一個重要的和結構化的時刻。當然,總是可以選擇一個選項,然後切換到另一個選項。但是在項目開始時進行一點概念分析和思考將節省時間和金錢。

今天的市場上到處都是NoSQL資料庫——每天都要面對兩三個這樣的資料庫,因為對於開發人員來說,轉到NoSQL有很多優勢。更靈活的數據模型和擺脫僵化模式是一個很大的優勢。還可以看到性能的顯著提高和水平伸縮。

但大多數NoSQL產品仍處於產品周期的早期階段。在複雜連接之類的特性上,開發人員可能更喜歡使用傳統的RDBMS。對於某些項目,混合方法可能是最佳選擇。最後,根據項目的需求,每個公司都有自己的偏好。

因此,確定需求和資料庫,甚至使用混合方法,為項目的開發提供集成支持才是最合適的做法。

留言點讚關注

我們一起分享AI學習與發展的乾貨

如轉載,請後臺留言,遵守轉載規範

相關焦點

  • 大數據之HBASE資料庫
    近日,大數據、雲計算、人工智慧作為新基建發展核心內容的一部分,重新回到人們視野中心。在大數據技術領域,海量數據和超高並發讓傳統的 Web2.0 網站有點力不從心,暴露了很多難以克服的問題。HBase(Hadoop Database)是一個高可靠性、高性能、面向列、可伸縮的分布式資料庫,典型的 NoSQL資料庫。2010年5月,Apache HBase 從 Hadoop脫離,成為 Apache 基金的頂級項目。
  • CPDA數據分析師:NoSQL的數據建模如何改善敏捷開發
    來源:CPDA數據分析師網 / 作者:數據君 這種數據建模的觀點對於當前的程式設計師來說並不是新事物 也不是NoSQL資料庫或敏捷開發的新方法。
  • 數據表明NoSQL市場急需人才
    文章內容如下:我們從2月的就業數據看看NoSQL的就業趨勢。這個名單包括9種不同的NoSQL資料庫的就業數據——Cassandra,Redis,Voldemort,SimpleDB,CouchDB,MongoDB,HBase,Hypertable和Riak。
  • MarkLogic的同名NoSQL資料庫的第9版將於今年年底上市
    資料庫的格局比以往更加多樣化,這在很大程度上要歸功於大數據。在星期二,今天的新競爭者之一發布了即將發布的具有重大安全性的版本。MarkLogic的同名NoSQL資料庫的第9版將於今年年底上市,其主要的新功能之一是包含Cryptsoft的KMIP(密鑰管理互操作性協議)技術。MarkLogic 9計劃於12月全面上市。
  • ISC 2020大數據安全論壇:新基建時代下的數據安全
    論壇上,阿里巴巴集團安全總監洪澄、中國科學院信息工程研究所研究員鄧燚、上海交通大學教授鬱昱、長亭科技聯合創始人楊坤、區塊鏈安全負責人於曉航等產學研多領域的資深專家齊聚雲端,圍繞新基建時代下大數據安全各自展開了深入淺出的論述。
  • Nosqli:一款功能強大的NoSql注入命令行接口工具
    $ nosqli  NoSQLInjector is a CLI tool for testing Datastores that  do not depend    Usage:    nosqli [command]
  • DTCC2020阿里雲李飛飛:雲原生分布式資料庫與數據倉庫系統點亮數據...
    雲計算時代,雲原生分布式資料庫和數據倉庫開始崛起,提供彈性擴展、高可用、分布式等特性。資料庫將面臨怎樣的變革?雲原生資料庫與數據倉庫有哪些獨特優勢?:一、背景與趨勢1.背景資料庫的本質是全鏈路的對「數據」進行管理,包括了生產—處理—存儲—消費等,在當下的數據化時代,數據是所有企業最核心的資產之一,所以資料庫的價值一直在不斷地提升,不斷地在新領域發現新的價值。
  • 對話阿里雲李飛飛:雲原生資料庫的時代來了
    目前擔任了中國計算機學會 CCF 大數據專家委員會副主任、CCF 資料庫專業委員會常委等職務,也是國際頂級資料庫與大數據學術及技術會議 VLDB 2021 和 IEEE ICDE 2021 的工業界大會主席。
  • 大數據的定義以及對時代的影響
    最近幾年大數據也已經被大多數人所熟知,人們用它來定義當今信息量爆炸的時代,而世界各個主流媒體也紛紛出專欄來介紹它的產生背景。與此同時國內的網際網路、新聞媒體等都寫了投資推薦報告,這也標誌著大數據時代的來臨。
  • 大數據時代的到來(下)
    大數據的概念最初是指那些需要處理但信息量過大,超出一般計算機在運行時使用的內存量,因而工程師們需改進處理數據的工具。而大數據時代正是在信息數據的爆炸性擴張和技術進步對信息處理提出更高要求的背景下應運而生的。
  • 大數據時代,如何培養數據分析思維?
    大數據時代來臨,「數據」熱度飆升,衍生出的行業也受到追捧。據悉,中國大數據行業人才需求2020年將達210萬,未來5年需求量在2000萬人左右。可見,國內數據分析崗錢途與前景並存,想入門該朝陽產業,需要先明白數據分析究竟是什麼?
  • 理解資料庫與數據模型的概念
    在這一管理方式下,應用程式和數據之間相互結合,不可分割,數據獨立性差,缺少共享性,編程效率低下。這一階段稱為人工管理階段。隨著計算機軟、硬體的發展,數據管理進入了文件管理階段,這一階段的主要標誌是計算機有了專門管理資料庫的軟體——作業系統(文件管理)。文件管理方式是把有關的數據組織成一種文件,這種數據文件可以脫離程序而獨立存在,有一個專門的文件管理系統實施統一管理。
  • 「醫學之本,睿珀未來」 大數據時代下病理發展的機遇和挑戰
    」接受了健康界的專訪,共同探討大數據時代下腫瘤結構化病理報告和相關醫療大數據對病理科和臨床所帶來的影響。大數據時代下病理診斷和臨床研究工作的轉變病理科作為醫院的傳統科室,不僅承擔著臨床病理診斷工作,應時代發展的需求,也同時承擔著越來越多的臨床研究工作。伴隨著現今大數據時代的到來,病理科在臨床治療決策和臨床研究過程中的角色也變得越來越重要,病理學科必須向著數據化和智能化的方向發展。
  • 星環科技同時獲得大數據與資料庫服務能力評估最高等級
    2020年12月18日,在中國信息通信研究院、中國通信標準化協會主辦的「2020數據資產管理大會」上,星環科技獲得了中國信息通信研究院頒發的「大數據服務能力評估-數據工程專項-量化管理級(四級)」和「資料庫服務能力評估-實施部署專項-量化管理級(四級)」,成為了首批通過評估且在數據工程專項的參評企業中獲得最高評估等級的公司,體現了星環科技在數據平臺的實施建設和部署運營上共同處於領導者地位
  • 《大數據時代1:信息圍城》大數據時代讓我們無所遁形!
    就這樣,在電視上看完電影,後面刷頭條或百度等平臺時,「恰巧」就推送過來剛才看過電影的訊息,當時覺得匪夷所思,雖然覺得奇妙,但並沒有意識到,原來「大數據時代」已經早已遍布我們的周圍了。針對這一與日俱增的引起民眾關注的爆點話題,國內90後青年美女作家夏予川創作了以「大數據」為主導思想的小說《大數據時代1:信息圍城》,為我們講述了在當下信息最發達的時代,發生在人們身上的跟大數據有關的故事。
  • 大數據時代背景下美國教育數據管理與公開體系建設研究
    加拿大 多倫多 M5S 1V6  內容提要:在大數據迅速發展的新時代背景下,建立完善的教育數據管理與公開體系顯得格外重要。  (二)信息公開細則  在《公共信息獲取規劃與政策條例》框架下,聯邦教育部針對刊物材料與數據信息兩大類制定了較詳細的管理與公開細則。該細則不僅要求所有由聯邦教育部資助的項目負責人認真履行研究數據公開的基本義務,也規定該條例適用範圍包括所有使用教育部數據的研究者(含內部工作人員)。
  • 唯一同時獲得大數據與資料庫服務能力評估最高級
    2020年12月18日,在中國信息通信研究院、中國通信標準化協會主辦的「2020數據資產管理大會」上,星環科技獲得了中國信息通信研究院頒發的「大數據服務能力評估-數據工程專項-量化管理級(四級)」和「資料庫服務能力評估-實施部署專項-量化管理級(四級)」,
  • 一周數據集推薦|全球森林火災數據、全球恐怖主義資料庫
    一周數據集推薦|全球森林火災數據、全球恐怖主義資料庫 2019-08-28 18:33 來源:澎湃新聞·澎湃號·湃客
  • 基於C 的帶式輸送機選型系統中 資料庫數據自動添加的研究
    本軟體致力於提高設計效率,體現智能化,將物料等參數彙編到資料庫中,用戶可以省去大量查閱工作。但是資料庫中數據需要及時完善、更新,否則無法面向更多用戶。1 C# 語言與資料庫的概述隨著大數據時代的到來,各行各業以此為契機,迅速將計算機和網際網路技術運用到本行業中,使得原本繁重的工作變得高效、簡捷。
  • 大數據+物聯網+智能化時代背景下針對服裝行業前沿的幾點思考
    戳藍字▲關注oIBP歐睿數據動態oIBP原創 | oIBP資訊 | oIBP活動新時代下,服裝企業商品管理該何去何從?大商品時代下的思維典型我們提出一個問題,眼鏡是基於什麼提供它的服務的?視頻中的眼鏡基於需求搜集相關信息,並提供信息,提供分析建議。最終達成的效果——不是由顧客想要什麼商品,而是引導顧客選擇了什麼商品!在大數據時代的背景下,這樣的場景真是細思極恐!