日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

NoSql数据库:Cassandra,Mongo,Redis数据库比较

發(fā)布時(shí)間:2023/12/3 数据库 54 豆豆
生活随笔 收集整理的這篇文章主要介紹了 NoSql数据库:Cassandra,Mongo,Redis数据库比较 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1.什么是NoSql數(shù)據(jù)庫?

NoSql(不僅是Sql)數(shù)據(jù)庫是可水平擴(kuò)展,持久存儲半結(jié)構(gòu)或非結(jié)構(gòu)化數(shù)據(jù)并具有靈活模式的非關(guān)系數(shù)據(jù)庫。 這些數(shù)據(jù)庫支持多種數(shù)據(jù)模型,例如鍵值,文檔,列族,基于圖形的,內(nèi)存中的等等,用于管理和訪問數(shù)據(jù)。 NoSql數(shù)據(jù)庫最適合用于構(gòu)建現(xiàn)代應(yīng)用程序,這些應(yīng)用程序需要大數(shù)據(jù)和大量請求,高度可擴(kuò)展,低延遲,高性能和靈活的數(shù)據(jù)模型,以提供出色的客戶體驗(yàn)。

在本文中,我們將討論NoSql數(shù)據(jù)庫,Cassandra,Mongo和Redis數(shù)據(jù)庫的介紹,以及何時(shí)使用這些NoSql數(shù)據(jù)庫以獲得更好的性能。

2. NoSql數(shù)據(jù)庫的功能

2.1多種型號支持

NoSql數(shù)據(jù)庫非常適合持久,管理和訪問半結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù)。

2.2開源

大多數(shù)NoSql數(shù)據(jù)庫都是開源的。 大多數(shù)云提供商通過在后臺管理自動擴(kuò)展,補(bǔ)丁更新等將這些數(shù)據(jù)庫作為托管服務(wù)提供。

2.3可擴(kuò)展性

通過向群集添加更多服務(wù)器,NoSql數(shù)據(jù)庫可進(jìn)行水平擴(kuò)展,并且與可垂直擴(kuò)展的關(guān)系數(shù)據(jù)庫不同,該群集可分布在多個(gè)地理位置(區(qū)域)中。

2.4低延遲

由于數(shù)據(jù)復(fù)制到數(shù)據(jù)庫群集上的多個(gè)節(jié)點(diǎn),因此延遲很短。 延遲和一致性之間的權(quán)衡對于Web和移動軟件應(yīng)用程序很重要。 無論采用哪種復(fù)制方法,都將在一致性和延遲之間進(jìn)行權(quán)衡。

2.5靈活架構(gòu)

NoSql數(shù)據(jù)庫支持具有最終一致性的靈活數(shù)據(jù)模型,并且固有地?zé)o架構(gòu)。 這使NoSql數(shù)據(jù)庫適合于有效存儲半結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù)。

2.6高性能,可用和容錯(cuò)

在NoSql數(shù)據(jù)庫中,數(shù)據(jù)被復(fù)制到群集中的多個(gè)節(jié)點(diǎn)以及其他區(qū)域中的群集中的節(jié)點(diǎn)。 此特性使NoSql數(shù)據(jù)庫具有高可用性和容錯(cuò)能力。 沒有Sql數(shù)據(jù)庫針對文檔,鍵值,列族,圖等數(shù)據(jù)模型及其訪問模式進(jìn)行了高度優(yōu)化,這些模型可提供更高的性能。

3.卡桑德拉

Apache Cassandra是一個(gè)開源,分布式,水平可伸縮,高度可用,容錯(cuò)和寬列NoSql數(shù)據(jù)庫。 它用Java編寫,是一個(gè)列族存儲數(shù)據(jù)庫。 Cassandra群集中的所有節(jié)點(diǎn)都是對等節(jié)點(diǎn),并且在Cassandra中沒有主從范式。 這使得cassandra高度可用,具有容錯(cuò)能力并且沒有單點(diǎn)故障。 Cassandra集群可以水平擴(kuò)展,并且可以分布到多個(gè)數(shù)據(jù)中心。

在cassandra中寫入速度非常快,因?yàn)樗粫人阉魅缓笤賹懭搿?首先將數(shù)據(jù)寫入提交日志 ,然后使用cassandra算法小心將數(shù)據(jù)反映到表中。 在cassandra中,圍繞查詢對數(shù)據(jù)模型進(jìn)行建模,即首先確定應(yīng)用程序查詢,然后對其進(jìn)行數(shù)據(jù)建模。

4. MongoDB

MongoDB是一個(gè)用C ++編寫的開源,跨平臺,面向文檔,高度可用,可擴(kuò)展且靈活的NoSql數(shù)據(jù)庫。 它適用于集合和文檔,并通過副本集提供高可用性。

MongoDB使用類似于JSON的文檔,這些文檔可以具有多種結(jié)構(gòu)。 由于架構(gòu)較少,因此在創(chuàng)建文檔之前無需創(chuàng)建文檔結(jié)構(gòu)。 MongoDB使用MongoDB QL(查詢語言)來訪問存儲在MongoDB中的數(shù)據(jù)。 MongoDB具有非常強(qiáng)大的聚合功能和表達(dá)性聚合框架。

5. Redis(遠(yuǎn)程字典服務(wù)器)

Redis是一個(gè)開源且可擴(kuò)展的數(shù)據(jù)存儲,可以用作數(shù)據(jù)庫,緩存以及消息代理。 它是用ANSI C編寫的。Redis是一種內(nèi)存中數(shù)據(jù)存儲,可以將其狀態(tài)持久保存到磁盤,即使重新啟動Redis節(jié)點(diǎn)也可以恢復(fù)其狀態(tài)。 它的內(nèi)存存儲使其超快。

6. Cassandra vs MongoDB vs Redis

  • Cassandra以Column-Family結(jié)構(gòu)存儲數(shù)據(jù),而MongoDB以JSON文檔格式存儲數(shù)據(jù)。
  • 在Cassandra中,不建議使用二級索引,因?yàn)樗鼈儠档托阅堋?在MongoDB中,最好使用索引,以避免搜索所有文檔以找到所需的文檔并獲得更好的性能。
  • Cassandra是實(shí)現(xiàn)高寫入吞吐量的理想選擇,但是如果您的應(yīng)用程序需要很高的讀取并發(fā)性,請使用MongoDB。
  • Cassandra沒有主節(jié)點(diǎn),所有節(jié)點(diǎn)都是對等節(jié)點(diǎn),而在MongoDB中,只有一個(gè)主節(jié)點(diǎn)。
  • Cassandra最終將寫入的數(shù)據(jù)復(fù)制到集群中復(fù)制因子中指定的節(jié)點(diǎn)數(shù),以及不同區(qū)域中集群中的節(jié)點(diǎn)數(shù)。 MongoDB需要進(jìn)行一些設(shè)置才能進(jìn)行復(fù)制。 您可以設(shè)置輔助數(shù)據(jù)庫,如果主數(shù)據(jù)庫出現(xiàn)故障,則可以自動選擇該數(shù)據(jù)庫。 在MongoDB中,讀取首先首先提交給主副本,然后再復(fù)制到輔助副本。
  • 在這些數(shù)據(jù)庫中,您可以在每條記錄上設(shè)置TTL(生存時(shí)間),因此可以在TTL到期后自動將記錄逐出。
  • Redis是鍵值數(shù)據(jù)存儲,非常有效地用作緩存來提高應(yīng)用程序性能。
  • 擴(kuò)展Cassandra和Mongo比Redis簡單得多。
  • 在Redis中,數(shù)據(jù)存儲的大小不能超過系統(tǒng)上的總內(nèi)存空間,即RAM加交換空間。 Mongo數(shù)據(jù)庫的大小沒有內(nèi)在限制。
  • 可以對Cassandra,MongoDB和Redis數(shù)據(jù)庫進(jìn)行集群,以實(shí)現(xiàn)高可用性,備份并增加數(shù)據(jù)存儲的整體大小。
  • 如果您的應(yīng)用程序需要聚合,請使用MongoDB。 如果您的應(yīng)用程序需要鍵值臨時(shí)存儲,請使用Redis。 如果您的應(yīng)用程序需要輕松擴(kuò)展的高寫入吞吐量的寬列存儲,請使用Cassandra。

7.什么時(shí)候使用哪個(gè)NoSql數(shù)據(jù)庫?

以下是一些使用案例,其中不同的NoSql數(shù)據(jù)庫最適合并提供更好的性能。

選擇以下用例的Cassandra:

  • 線性可擴(kuò)展,高可用性,容錯(cuò)
  • 多數(shù)據(jù)中心部署
  • 很高的寫入吞吐量,但讀取次數(shù)較少。
  • 您想在存儲的數(shù)據(jù)之上建立一個(gè)響應(yīng)Swift的報(bào)告系統(tǒng)
  • 實(shí)時(shí)數(shù)據(jù)分析
  • 您的應(yīng)用程序不需要數(shù)據(jù)庫中的ACID屬性
  • 您的應(yīng)用程序需要與Hadoop,HBase,Spark集成

選擇MongoDB用于以下用例:

  • 即時(shí)擴(kuò)展
  • 基于文檔的存儲
  • 很高的讀取并發(fā)
  • 緩存實(shí)時(shí)分析
  • 內(nèi)容管理
  • 寫入有效負(fù)載很高,即文檔大小很大(最大16MB)
  • 在快速原型制作中非常有用
  • 適合存儲大文本,視頻,圖像,媒體文件等。

選擇以下情況的Redis DB:

  • 緩存更大的有效負(fù)載以提高應(yīng)用程序的性能
  • 永久緩存到磁盤,需要在重啟后恢復(fù)
  • 鍵值對存儲
  • 需要非常高的性能
  • 臨時(shí)數(shù)據(jù)存儲,例如用戶會話
  • 可以使用其發(fā)布/訂閱模型用作消息傳遞隊(duì)列

8. Cassandra vs Mongo vs Redis DB –摘要

了解不同的NoSql數(shù)據(jù)庫對于選擇適合您的應(yīng)用程序需求的數(shù)據(jù)庫至關(guān)重要。 根據(jù)您的應(yīng)用程序使用案例選擇正確的NoSql數(shù)據(jù)庫。 如果您的數(shù)據(jù)關(guān)系太多并且需要ACID屬性,則NoSql數(shù)據(jù)庫不是一個(gè)不錯(cuò)的選擇。 為了提高應(yīng)用程序性能,請使用Redis作為緩存,因?yàn)樗哂袃?nèi)存存儲。 使用MongoDB滿足內(nèi)容管理和文檔類型的存儲需求。 將Cassandra用于高度可用的寬列存儲箱。 選擇正確的數(shù)據(jù)庫直接影響應(yīng)用程序的性能。

翻譯自: https://www.javacodegeeks.com/2019/02/nosql-databases-cassandra-vs-mongo-vs-redis-db-comparison.html

總結(jié)

以上是生活随笔為你收集整理的NoSql数据库:Cassandra,Mongo,Redis数据库比较的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。