首頁  >  文章  >  NoSQL資料庫、SQL資料庫作何選擇

NoSQL資料庫、SQL資料庫作何選擇

-
-原創
2018-03-03 15:09:462197瀏覽

NoSQL資料庫、SQL資料庫作何選擇SQL和NoSQL之爭只不過是關聯式資料庫和非關聯式資料庫的比較。差別在於它們是如何建構的、儲存資訊的種類以及如何儲存資訊。關係資料庫是結構化的,非關聯式資料庫是面向文件、分散式的。四十多年來,結構化查詢語言(SQL)資料庫一直是主要的資料儲存機制。

隨著Web應用程式以及PostgreSQL、MySQL和SQLite等開源技術日益盛行,使用率在上世紀90年代末期急劇提高。儘管NoSQL資料庫自1960年代以來就已存在,但最近開始受到追捧,例如MongoDB、CouchDB、Redis和Apache Cassandra等流行的選擇方案。說到底,SQL和NoSQL都做同樣的事情:儲存數據,只不過方法不一樣。儘管NoSQL日益流行,卻不是取代SQL的技術,而是另一種選擇。有些項目更適合使用SQL資料庫,而其他項目適用於NoSQL。有些項目可以換著使用兩者。

1.SQL

結構化查詢語言(SQL)是儲存資料的更結構化、更僵硬的方式,就像電話簿一樣。關係資料庫要高效,你得以一種非常條理化的方式來儲存資料。 SQL資料庫仍然很流行,因為它們天生適用於許多古老的軟體堆疊,包括LAMP和基於Ruby的堆疊。這些資料庫得到了廣泛的支持,並得到了充分的理解;如果你遇到問題,這可能是一大有利條件。

說到資料庫技術,不存在一應俱全式的解決方案。這就是為什麼大多數公司同時依賴非關聯式資料庫和關聯式資料庫來完成不同的任務。不過在許多情況下,儘管NoSQL資料庫憑藉速度和可擴充性越來越受歡迎,但高度結構化的SQL資料庫更受喜愛。

優點:

ACID(原子性、一致性、隔離性和持久性)合規性準確地表明事務如何與資料庫交互,以此減少異常情況,並保護資料庫的完整性。 NoSQL資料庫常常具有處理速度快、靈活的優點,但卻犧牲了ACID合規性。

你的資料保持不變、結構化。如果貴公司沒有迎來大規模發展(那需要更多的伺服器),而且只處理一致的數據,那麼恐怕沒有理由使用旨在支援高流量和眾多數據類型的系統。

由於很早就面市了,這些工具隨帶更好的支援、產品套件和配件以管理這些資料庫。

缺點:

SQL的主要問題是隨著資料庫變大而擴展。你發現,即使可擴展性通常在生產環境中進行了測試,但常常不如NoSQL資料庫。分片(sharding)同樣存在相當大的問題。

2.NoSQL

如果貴公司在處理大量非結構化數據,你的數據要求一開始又並不清晰,那麼可能無法開發模式(schema)明確定義的關係資料庫。使用非關聯式資料庫可以獲得比傳統資料庫高得多的靈活性。不妨把非關係型資料庫想像成檔案夾,整理各種類型的相關資訊。

優點:

推動NoSQL發展的重大因素是大數據,促使CouchDB、MongoDB、Cassandra和HBase之類的NoSQL資料庫大行其道。 NoSQL資料庫確保:當伺服器端應用程式的所有其他元件都被設計成無縫、快速時,資料並沒有成為瓶頸。

你可以儲存大量幾乎沒有結構的資料。此外,NoSQL資料庫對於可以一起儲存的資料類型沒有限制,你的要求若有變化,可以增加更多的新類型。若使用基於文件的資料庫,也可以將資料儲存在一個地方,無需事先定義資料類型。

基於雲端的儲存是節省成本的優秀解決方案,不過你得將資料分散在多台伺服器上來進行擴充。 NoSQL資料庫旨在直接可以跨多個資料中心進行擴展,沒有太大的麻煩。

你不必事先準備好NoSQL資料。 NoSQL資料庫的非關係性質讓你可以快速建立資料庫,沒必要開發詳細的資料庫模型,進而為你節省大量的開發時間。

缺點:

由於歷史較短,NoSQL社群缺乏MySQL使用者群體的成熟性。雖然眼下NoSQL社群正在快速發展,但相較於MySQL之類的SQL資料庫管理系統,很難與其經驗豐富的最終使用者所組成的龐大網路競爭。

NoSQL資料庫的一大問題是缺乏用於效能測試和分析的報告工具​​。另一方面,使用SQL,你能找到大量報告工具來幫助證明應用程式的有效性。

你將面臨與SQL指令相容的問題。在查詢語言中,​​新的資料庫使用自己的特性,目前還無法與關聯式資料庫中使用的SQL完全相容。

缺乏標準化。現在有許多NoSQL資料庫,卻還是沒有標準,而關聯式資料庫有標準。 NoSQL缺乏標準化的這個現狀可能會在遷移過程中帶來問題。

結論

如今,NoSQL資料庫正成為資料庫市場的重要角色。憑藉著許多優點,它們會成為企業領域真正改變遊戲規則的技術。對於希望整合大數據的公司而言,成本更低、更易於擴展和開源等特性使得NoSQL成為一種誘人的選擇。

即便如此,NoSQL還是比較年輕的技術,沒有MySQL等SQL資料庫提供的那一套標準。有些人認為NoSQL是未來的方向,有些人擔心它缺乏ACID合規性和標準化。最終,貴公司複雜的業務需求以及所使用資料的數量和種類將決定選擇SQL還是選擇NoSQL。

不論好壞,對於大多數專案而言,你可以有一個非分散式、可擴展的關聯式資料庫作為系統中的單一資料來源(single point of truth)。這是保持資料一致性,支援複雜查詢的簡易方法。

我希望這篇文章對你有幫助,但請記住每個專案都不一樣,最終你要了解什麼最適合你的要求。無論選擇是什麼,我們開發人員都很擅長證明我們的技術選擇的合理性。不過我建議在充分考慮風險和優勢後,再試試新技術

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn