精品国产一级在线观看,国产成人综合久久精品亚洲,免费一级欧美大片在线观看

當前位置:大數據數據庫 → 正文

全面梳理SQL和NoSQL數據庫的技術差別

責任編輯:editor005 |來源:企業網D1Net  2014-11-20 11:32:33 本文摘自:36大數據

數據庫

創新的背后往往會刺激痛苦。這一點在PDD(我們親切地稱為痛處驅動開發)軟件開發領域尤為真實。從上世紀80年代以來,我們就都知道如何處理關系型數據——只要把數據放到關系型數據庫管理系統(RDBMS)中,就可以使用SQL語句操作數據。然而,在過去幾年來,我們的行業采納NoSQL數據庫的趨勢在增長,數據不見得都在關系型數據庫中存儲了。

誠然,在互聯網上有成千上萬關于選擇SQL還是NoSQL的辯論。但是,這兩者是不是必須站在對立面戰斗呢?如果你選擇一種或另一種,你知道為什么做選擇,知道各自有何潛在益處嗎?本文簡要地討論了SQL和NoSQL兩種方法最常見的優點和缺點,包括簡單的比較和開發者考慮的因素。像別的一些話題一樣,這個問題沒有對錯,永遠正確的經典答案依然是:具體問題具體分析。

數據表VS.數據集

關系型和非關系型數據庫的主要差異是數據存儲的方式。關系型數據天然就是表格式的,因此存儲在數據表的行和列中。數據表可以彼此關聯協作存儲,也很容易提取數據。與其相反,非關系型數據不適合存儲在數據表的行和列中,而是大塊組合在一起。非關系型數據通常存儲在數據集中,就像文檔、鍵值對或者圖結構。你的數據及其特性是選擇數據存儲和提取方式的首要影響因素。

預定義結構VS.動態結構

關系型數據通常對應于結構化數據,因為數據表都有預定義好的結構(列的定義),結構描述了數據的形式和內容。這一點對數據建模至關重要,你必須“第一時間先把結構定義好”。雖然預定義結構帶來了可靠性和穩定性,但是已經存入數據的表結構要修改就非常痛苦了。另一方面,非關系型數據基于動態結構,通常適用于非結構化數據。非關系型數據可以很容易適應數據類型和結構的變化,因為動態結構本身就支持這一點。

存儲規范化VS存儲代價

關系型數據庫的數據存儲是為了更高的規范性,把數據分隔成最小的邏輯表(關系表)以避免重復,獲得最精簡的空間利用。雖然數據規范性會使數據管理更清晰,但它通常也會帶來一點點復雜性,尤其是單個操作可能涉及多個關系表的時候,數據管理就有點麻煩。另外,更精簡的空間利用通常可以節約寶貴的數據存儲,但是在當今世界我們基本可以認為存儲的代價(磁盤空間)是微不足道的。而非關系型數據存儲在平面數據集中,數據經常可能存在重復。單個數據庫很少被分隔開,而是存儲成一個整體,這樣是為了整塊數據更容易讀寫。

縱向擴容VS橫向擴容

SQL和NoSQL數據庫最大的差別可能是在擴展方式上,要支持日益增長的需求當然要擴展。要支持更多并發量,SQL數據庫是縱向擴展,也就是說提高處理能力,使用速度更快速的計算機,這樣處理相同的數據集就更快了。因為數據存儲在關系表中,操作的性能瓶頸可能涉及很多個表,這都需要通過提高計算機性能來客服。雖然SQL數據庫有很大擴展空間,但最終肯定會達到縱向擴展的上限。而NoSQL數據庫是橫向擴展的。非關系型數據存儲天然就是分布式的,NoSQL數據庫的擴展可以通過給資源池添加更多普通的數據庫服務器(節點)來分擔負載。

結構化查詢VS非結構化查詢

關系型數據庫通過所謂結構化查詢語言(也就是我們常說的SQL)來操作數據。SQL支持數據庫CRUD(增加,查詢,更新,刪除)操作的功能非常強大,是業界標準用法。非關系型數據庫以塊(像文檔一樣)為單元操縱數據,使用所謂的非結構化查詢語言(UnQL),它是沒有標準的,因數據庫提供商的不同而不同。關系型表中主鍵的概念對應非關系存儲中的文檔Id。SQL數據庫使用預定義優化方式(比如列索引定義)幫助加速查詢操作,而NoSQL數據庫采用更簡單而精確的數據訪問模式。

映射VS本地化

SQL和NoSQL數據存儲的選擇還取決于開發人員,盡管這個因素影響不大。采用面向對象編程語言的開發人員通常會同時操作一個或多個數據實體(包括嵌套數據、列表和數組的復雜結構),把數據傳遞給應用程序用戶界面。要是討論到底層數據庫,事情就并不總是那么公平合理了。在關系型存儲中,數據實體通常需要分成多個部分進行規范化,然后分開存儲到多個關系型表中精簡存儲。幸運的是,這是一個長期存在的問題,大部分編程平臺都有相應的簡單解決方案,比如ORM層(對象關系映射)。ORM是位于關系型數據源和開發者使用的面向對象數據實體之間的一個映射層。然而,對于非關系型存儲,不需要規范化數據,復雜數據實體可以整體存放在獨立單元中。應用程序中使用的對象通常序列化為JSon串,存儲在NoSQL數據庫的JSon文檔中。

事務性VS純擴展性

如果你的數據操作需要高事務性或者復雜數據查詢需要控制執行計劃,那么傳統的SQL數據庫從性能和穩定性方面考慮是你的最佳選擇。SQL數據庫支持對事務原子性細粒度控制,并且易于回滾事務。雖然NoSQL數據庫也可以使用事務操作,但它們真正閃亮的價值是在操作的擴展性和大數據量處理方面。

ACID VS CAP

SQL 數據庫久負盛名的價值就是通過所謂的ACID屬性(原子性,一致性,隔離性,持久性)保證數據完整性,大部分關系型存儲供應商都支持ACID。我們的目標是支持隔離不可分割的事務,其變化是持久的,數據也保持一致狀態。而NoSQL數據庫是讓你在CAP(一致性,可用性,分區容忍度)中的任意兩項中選擇,因為在基于節點的分布式系統中,很難做到三項都滿足。

數據VS大數據

SQL數據庫可以可靠地存儲和處理數據,而NoSQL最大的優勢是在應對大數據方面,也就是由我們社會或者計算機每天產生的大量非結構化的數據實體。NoSQL用無模式方式做數據管理,所以其橫向擴展潛力是無限的,這可能是深度處理大數據捕獲、管理、檢索、分析和可視化的唯一有效途徑。

數據記錄VS物聯網和人聯網

關系數據庫在關注數據規范化和保證性能的基礎上精簡存儲。但是近年來,我們產生數據的速度遠大于關系型存儲能滿足存儲的能力增長。刺激數據如此迅猛增長的原因是:巨大量的用戶數和物聯網。連接到互聯網的用戶在成倍增加,在同步使用我們的應用。由于大量移動設備數據傳感設備接入互聯網,機器產生的數據量也大幅增加。因此企業必須尋求NoSQL技術及基礎架構來處理持續涌入的半結構化和非結構化數據。

內部部署VS云計算

云計算現在已經無處不在了,它兼具SQL和NoSQL數據庫的益處。云環境中的關系型存儲通常是以服務形式提供的,是可復制、高可用性且分布式的,極大地提高了橫向擴展能力。托管于云服務中的NoSQL數據庫也天然享有自動分片的好處,可以階段性地靈活彈性處理,集成高速緩存和巨大的計算能力來捕獲、存儲和分析大數據。

付費VS開源

有一種看法認為,SQL數據庫大多數比較昂貴,而NoSQL數據庫通常都是開源的。事實上,兩種類型數據庫都有開源的和商業的。常見的SQL 數據庫有微軟公司的SQL Server,MySQL,SQLite,Oracle和PostGres。流行的NoSQL數據庫有Couchbase,MongoDB,Redis,BigTable和RavenDB。

結論

就像Neo之于Matrix,你可以選擇。幸福的無知和幻想或者接受殘酷的現實。但是,盲目選擇使用SQL還是NoSQL技術,或者根據大眾需求選擇都是在幻想有魔法會自動選擇合適的方案。SQL和NoSQL這兩者都有各自的優缺點,選擇正確的架構取決于你構建應用的需求。傳統SQL數據庫依然非常強大,可以可靠地處理你的事務性需求并保持完整性。只有在你接近關系數據庫局限性邊緣時,或者你的數據處理量浩如煙海時,操作擴展需要更加分布式的系統時,才考慮NoSQL方案。考慮這些因素之后再做選擇,你就可以變成釋放你的數據構建下一代應用令人嘆為觀止的神人。

關鍵字:NoSQLSQL數據庫數據捕獲

本文摘自:36大數據

x 全面梳理SQL和NoSQL數據庫的技術差別 掃一掃
分享本文到朋友圈
當前位置:大數據數據庫 → 正文

全面梳理SQL和NoSQL數據庫的技術差別

責任編輯:editor005 |來源:企業網D1Net  2014-11-20 11:32:33 本文摘自:36大數據

數據庫

創新的背后往往會刺激痛苦。這一點在PDD(我們親切地稱為痛處驅動開發)軟件開發領域尤為真實。從上世紀80年代以來,我們就都知道如何處理關系型數據——只要把數據放到關系型數據庫管理系統(RDBMS)中,就可以使用SQL語句操作數據。然而,在過去幾年來,我們的行業采納NoSQL數據庫的趨勢在增長,數據不見得都在關系型數據庫中存儲了。

誠然,在互聯網上有成千上萬關于選擇SQL還是NoSQL的辯論。但是,這兩者是不是必須站在對立面戰斗呢?如果你選擇一種或另一種,你知道為什么做選擇,知道各自有何潛在益處嗎?本文簡要地討論了SQL和NoSQL兩種方法最常見的優點和缺點,包括簡單的比較和開發者考慮的因素。像別的一些話題一樣,這個問題沒有對錯,永遠正確的經典答案依然是:具體問題具體分析。

數據表VS.數據集

關系型和非關系型數據庫的主要差異是數據存儲的方式。關系型數據天然就是表格式的,因此存儲在數據表的行和列中。數據表可以彼此關聯協作存儲,也很容易提取數據。與其相反,非關系型數據不適合存儲在數據表的行和列中,而是大塊組合在一起。非關系型數據通常存儲在數據集中,就像文檔、鍵值對或者圖結構。你的數據及其特性是選擇數據存儲和提取方式的首要影響因素。

預定義結構VS.動態結構

關系型數據通常對應于結構化數據,因為數據表都有預定義好的結構(列的定義),結構描述了數據的形式和內容。這一點對數據建模至關重要,你必須“第一時間先把結構定義好”。雖然預定義結構帶來了可靠性和穩定性,但是已經存入數據的表結構要修改就非常痛苦了。另一方面,非關系型數據基于動態結構,通常適用于非結構化數據。非關系型數據可以很容易適應數據類型和結構的變化,因為動態結構本身就支持這一點。

存儲規范化VS存儲代價

關系型數據庫的數據存儲是為了更高的規范性,把數據分隔成最小的邏輯表(關系表)以避免重復,獲得最精簡的空間利用。雖然數據規范性會使數據管理更清晰,但它通常也會帶來一點點復雜性,尤其是單個操作可能涉及多個關系表的時候,數據管理就有點麻煩。另外,更精簡的空間利用通常可以節約寶貴的數據存儲,但是在當今世界我們基本可以認為存儲的代價(磁盤空間)是微不足道的。而非關系型數據存儲在平面數據集中,數據經常可能存在重復。單個數據庫很少被分隔開,而是存儲成一個整體,這樣是為了整塊數據更容易讀寫。

縱向擴容VS橫向擴容

SQL和NoSQL數據庫最大的差別可能是在擴展方式上,要支持日益增長的需求當然要擴展。要支持更多并發量,SQL數據庫是縱向擴展,也就是說提高處理能力,使用速度更快速的計算機,這樣處理相同的數據集就更快了。因為數據存儲在關系表中,操作的性能瓶頸可能涉及很多個表,這都需要通過提高計算機性能來客服。雖然SQL數據庫有很大擴展空間,但最終肯定會達到縱向擴展的上限。而NoSQL數據庫是橫向擴展的。非關系型數據存儲天然就是分布式的,NoSQL數據庫的擴展可以通過給資源池添加更多普通的數據庫服務器(節點)來分擔負載。

結構化查詢VS非結構化查詢

關系型數據庫通過所謂結構化查詢語言(也就是我們常說的SQL)來操作數據。SQL支持數據庫CRUD(增加,查詢,更新,刪除)操作的功能非常強大,是業界標準用法。非關系型數據庫以塊(像文檔一樣)為單元操縱數據,使用所謂的非結構化查詢語言(UnQL),它是沒有標準的,因數據庫提供商的不同而不同。關系型表中主鍵的概念對應非關系存儲中的文檔Id。SQL數據庫使用預定義優化方式(比如列索引定義)幫助加速查詢操作,而NoSQL數據庫采用更簡單而精確的數據訪問模式。

映射VS本地化

SQL和NoSQL數據存儲的選擇還取決于開發人員,盡管這個因素影響不大。采用面向對象編程語言的開發人員通常會同時操作一個或多個數據實體(包括嵌套數據、列表和數組的復雜結構),把數據傳遞給應用程序用戶界面。要是討論到底層數據庫,事情就并不總是那么公平合理了。在關系型存儲中,數據實體通常需要分成多個部分進行規范化,然后分開存儲到多個關系型表中精簡存儲。幸運的是,這是一個長期存在的問題,大部分編程平臺都有相應的簡單解決方案,比如ORM層(對象關系映射)。ORM是位于關系型數據源和開發者使用的面向對象數據實體之間的一個映射層。然而,對于非關系型存儲,不需要規范化數據,復雜數據實體可以整體存放在獨立單元中。應用程序中使用的對象通常序列化為JSon串,存儲在NoSQL數據庫的JSon文檔中。

事務性VS純擴展性

如果你的數據操作需要高事務性或者復雜數據查詢需要控制執行計劃,那么傳統的SQL數據庫從性能和穩定性方面考慮是你的最佳選擇。SQL數據庫支持對事務原子性細粒度控制,并且易于回滾事務。雖然NoSQL數據庫也可以使用事務操作,但它們真正閃亮的價值是在操作的擴展性和大數據量處理方面。

ACID VS CAP

SQL 數據庫久負盛名的價值就是通過所謂的ACID屬性(原子性,一致性,隔離性,持久性)保證數據完整性,大部分關系型存儲供應商都支持ACID。我們的目標是支持隔離不可分割的事務,其變化是持久的,數據也保持一致狀態。而NoSQL數據庫是讓你在CAP(一致性,可用性,分區容忍度)中的任意兩項中選擇,因為在基于節點的分布式系統中,很難做到三項都滿足。

數據VS大數據

SQL數據庫可以可靠地存儲和處理數據,而NoSQL最大的優勢是在應對大數據方面,也就是由我們社會或者計算機每天產生的大量非結構化的數據實體。NoSQL用無模式方式做數據管理,所以其橫向擴展潛力是無限的,這可能是深度處理大數據捕獲、管理、檢索、分析和可視化的唯一有效途徑。

數據記錄VS物聯網和人聯網

關系數據庫在關注數據規范化和保證性能的基礎上精簡存儲。但是近年來,我們產生數據的速度遠大于關系型存儲能滿足存儲的能力增長。刺激數據如此迅猛增長的原因是:巨大量的用戶數和物聯網。連接到互聯網的用戶在成倍增加,在同步使用我們的應用。由于大量移動設備數據傳感設備接入互聯網,機器產生的數據量也大幅增加。因此企業必須尋求NoSQL技術及基礎架構來處理持續涌入的半結構化和非結構化數據。

內部部署VS云計算

云計算現在已經無處不在了,它兼具SQL和NoSQL數據庫的益處。云環境中的關系型存儲通常是以服務形式提供的,是可復制、高可用性且分布式的,極大地提高了橫向擴展能力。托管于云服務中的NoSQL數據庫也天然享有自動分片的好處,可以階段性地靈活彈性處理,集成高速緩存和巨大的計算能力來捕獲、存儲和分析大數據。

付費VS開源

有一種看法認為,SQL數據庫大多數比較昂貴,而NoSQL數據庫通常都是開源的。事實上,兩種類型數據庫都有開源的和商業的。常見的SQL 數據庫有微軟公司的SQL Server,MySQL,SQLite,Oracle和PostGres。流行的NoSQL數據庫有Couchbase,MongoDB,Redis,BigTable和RavenDB。

結論

就像Neo之于Matrix,你可以選擇。幸福的無知和幻想或者接受殘酷的現實。但是,盲目選擇使用SQL還是NoSQL技術,或者根據大眾需求選擇都是在幻想有魔法會自動選擇合適的方案。SQL和NoSQL這兩者都有各自的優缺點,選擇正確的架構取決于你構建應用的需求。傳統SQL數據庫依然非常強大,可以可靠地處理你的事務性需求并保持完整性。只有在你接近關系數據庫局限性邊緣時,或者你的數據處理量浩如煙海時,操作擴展需要更加分布式的系統時,才考慮NoSQL方案。考慮這些因素之后再做選擇,你就可以變成釋放你的數據構建下一代應用令人嘆為觀止的神人。

關鍵字:NoSQLSQL數據庫數據捕獲

本文摘自:36大數據

電子周刊
回到頂部

關于我們聯系我們版權聲明隱私條款廣告服務友情鏈接投稿中心招賢納士

企業網版權所有 ©2010-2024 京ICP備09108050號-6 京公網安備 11010502049343號

^
  • <menuitem id="jw4sk"></menuitem>

    1. <form id="jw4sk"><tbody id="jw4sk"><dfn id="jw4sk"></dfn></tbody></form>
      主站蜘蛛池模板: 米易县| 兴义市| 科技| 崇文区| 民丰县| 鄂尔多斯市| 安平县| 图片| 年辖:市辖区| 抚州市| 栖霞市| 通许县| 阿合奇县| 新津县| 浮梁县| 镇远县| 财经| 达拉特旗| 云浮市| 格尔木市| 城市| 鹿泉市| 石台县| 鄱阳县| 兴化市| 清徐县| 崇明县| 东丽区| 华阴市| 黄陵县| 汕头市| 南部县| 曲阜市| 苍山县| 杭州市| 若尔盖县| 新乐市| 兴城市| 宁海县| 松阳县| 五常市|