redis nosql_NoSql数据库:Cassandra,Mongo,Redis数据库比较
redis nosql
1.什么是NoSql數據庫?
NoSql(不僅是Sql)數據庫是可水平擴展,持久存儲半結構或非結構化數據并具有靈活模式的非關系數據庫。 這些數據庫支持多種數據模型,例如鍵值,文檔,列族,基于圖形的,內存中的等等,用于管理和訪問數據。 NoSql數據庫最適合于構建現代應用程序,這些應用程序需要大數據和大量請求,高度可擴展,低延遲,高性能和靈活的數據模型,以提供出色的客戶體驗。
在本文中,我們將討論NoSql數據庫,Cassandra,Mongo和Redis數據庫的介紹,以及何時使用這些NoSql數據庫來實現更好的性能。
2. NoSql數據庫的功能
2.1多種型號支持
NoSql數據庫非常適合持久化,管理和訪問半結構化和非結構化數據。
2.2開源
大多數NoSql數據庫都是開源的。 大多數云提供商通過后臺管理自動擴展,補丁更新等將這些數據庫作為托管服務提供。
2.3可擴展性
通過向群集添加更多服務器,NoSql數據庫可進行水平擴展,并且與可垂直擴展的關系數據庫不同,該群集可分布在多個地理位置(區域)中。
2.4低延遲
由于將數據復制到數據庫群集上的多個節點,因此延遲很短。 延遲和一致性之間的權衡對于Web和移動軟件應用程序很重要。 無論采用哪種復制方法,都將在一致性和延遲之間進行權衡。
2.5靈活架構
NoSql數據庫支持具有最終一致性的靈活數據模型,并且固有地無架構。 這使NoSql數據庫適合有效地存儲半結構化和非結構化數據。
2.6高性能,可用和容錯
在NoSql數據庫中,數據被復制到群集中的多個節點以及其他區域中的群集中的節點。 這種特性使NoSql數據庫具有高可用性和容錯能力。 沒有Sql數據庫針對文檔,鍵值,列族,圖等數據模型及其訪問模式進行了高度優化,這些模型可提供更高的性能。
3.卡桑德拉
Apache Cassandra是一個開源,分布式,水平可伸縮,高度可用,容錯和寬列的NoSql數據庫。 它用Java編寫,是一個列族存儲數據庫。 Cassandra群集中的所有節點都是對等節點,并且在Cassandra中沒有主從范式。 這使得卡桑德拉具有高可用性,容錯能力和無單點故障點。 Cassandra集群可以水平擴展,并且可以分布到多個數據中心。
在cassandra中寫入速度非常快,因為它不會先搜索然后再寫入。 首先將數據寫入提交日志 ,然后使用cassandra算法小心將數據反映到表中。 在cassandra中,圍繞查詢對數據模型進行建模,即首先確定應用程序查詢,然后對其進行數據建模。
4. MongoDB
MongoDB是一個用C ++編寫的開源,跨平臺,面向文檔,高度可用,可擴展且靈活的NoSql數據庫。 它適用于集合和文檔,并通過副本集提供高可用性。
MongoDB使用類似于JSON的文檔,這些文檔可以具有多種結構。 由于架構較少,因此在創建文檔之前無需創建文檔結構。 MongoDB使用MongoDB QL(查詢語言)來訪問存儲在MongoDB中的數據。 MongoDB具有非常強大的聚合功能和表達性聚合框架。
5. Redis(遠程字典服務器)
Redis是一個開源且可擴展的數據存儲,可以用作數據庫,緩存以及消息代理。 它是用ANSI C編寫的。Redis是一種內存中數據存儲,可以將其狀態持久保存到磁盤,即使重新啟動Redis節點后也可以恢復其狀態。 它的內存存儲使其超快。
6. Cassandra vs MongoDB vs Redis
- Cassandra以Column-Family結構存儲數據,而MongoDB以JSON文檔格式存儲數據。
- 在Cassandra中,不建議使用二級索引,因為它們會降低性能。 在MongoDB中,最好使用索引,以避免搜索所有文檔以找到請求的文檔并獲得更好的性能。
- Cassandra是實現高寫入吞吐量的理想選擇,但是如果您的應用程序需要很高的讀取并發性,請使用MongoDB。
- Cassandra沒有主節點,所有節點都是對等節點,而在MongoDB中,只有一個主節點。
- Cassandra最終將寫入的數據復制到集群中復制因子中指定的節點數,以及不同區域中集群中的節點數。 MongoDB需要進行一些設置才能進行復制。 您可以設置輔助數據庫,如果主數據庫出現故障,則可以自動選擇該數據庫。 在MongoDB中,讀取首先首先提交給主副本,然后再復制到輔助副本。
- 在這些數據庫中,您可以在每條記錄上設置TTL(生存時間),因此可以在TTL過期后自動將記錄清除。
- Redis是鍵值數據存儲,非常有效地用作緩存來提高應用程序性能。
- 擴展Cassandra和Mongo比Redis簡單得多。
- 在Redis中,數據存儲的大小不能超過系統上的總內存空間,即RAM加交換空間。 Mongo數據庫的大小沒有內在限制。
- 可以對Cassandra,MongoDB和Redis數據庫進行集群,以實現高可用性,備份并增加數據存儲的整體大小。
- 如果您的應用程序需要聚合,請使用MongoDB。 如果您的應用程序需要鍵值臨時存儲,請使用Redis。 如果您的應用程序需要輕松擴展的高寫入吞吐量的寬列存儲,請使用Cassandra。
7.何時使用哪個NoSql數據庫?
以下是一些使用案例,其中不同的NoSql數據庫最適合并提供更好的性能。
為以下用例選擇Cassandra:
- 線性可擴展,高度可用,容錯
- 多數據中心部署
- 很高的寫入吞吐量,但讀取次數較少。
- 您想在存儲的數據之上建立一個響應Swift的報告系統
- 實時數據分析
- 您的應用程序不需要數據庫中的ACID屬性
- 您的應用程序需要與Hadoop,HBase,Spark集成
選擇MongoDB用于以下用例:
- 即時擴展
- 基于文檔的存儲
- 很高的讀取并發
- 緩存實時分析
- 內容管理
- 寫入有效負載高,即文檔大小高(最大16MB)
- 在快速原型制作中非常有用
- 適合存儲大文本,視頻,圖像,媒體文件等。
選擇以下情況的Redis DB:
- 緩存更大的有效負載以提高應用程序的性能
- 永久緩存到磁盤,需要在重新啟動后恢復
- 鍵值對存儲
- 需要非常高的性能
- 臨時數據存儲,例如用戶會話
- 可以使用其發布/訂閱模型用作消息傳遞隊列
8. Cassandra vs Mongo vs Redis DB –摘要
了解不同的NoSql數據庫對于選擇適合您的應用程序需求的數據庫至關重要。 根據您的應用程序使用案例選擇正確的NoSql數據庫。 如果您的數據關系太多并且需要ACID屬性,則NoSql數據庫不是一個不錯的選擇。 為了提高應用程序性能,請使用Redis作為緩存,因為它具有內存存儲。 使用MongoDB滿足內容管理和文檔類型的存儲需求。 將Cassandra用于高度可用的寬列存儲箱。 選擇正確的數據庫直接影響應用程序的性能。
翻譯自: https://www.javacodegeeks.com/2019/02/nosql-databases-cassandra-vs-mongo-vs-redis-db-comparison.html
redis nosql
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的redis nosql_NoSql数据库:Cassandra,Mongo,Redis数据库比较的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 苹果12预计售价(苹果12预计售价多少钱
- 下一篇: react提交数据到数据库_React型