作者 | Arslan Ahmad
譯者 | 平川
(資料圖片僅供參考)
策劃 | Tina
什么是 NoSQL 數(shù)據(jù)庫?
通常,“NoSQL 數(shù)據(jù)庫”是指非關系型數(shù)據(jù)庫。不管它是“non SQL”的縮寫,還是“not only SQL”的縮寫,大多數(shù)人都同意,NoSQL 數(shù)據(jù)庫是以關系表之外的格式存儲數(shù)據(jù)的。
NoSQL 數(shù)據(jù)庫之所以如此大受歡迎,是因為它們?yōu)橛脩籼峁┝遂`活的數(shù)據(jù)存儲模式。
為什么要使用 NoSQL 數(shù)據(jù)庫?
NoSQL 數(shù)據(jù)庫性能優(yōu)異、可擴展,而且很靈活,非常適合移動、Web 和游戲應用程序。
可擴展性:NoSQL 數(shù)據(jù)庫通常使用分布式硬件集群進行橫向擴展,而不是通過增加昂貴、健壯的服務器進行縱向擴展。在全托管服務中,有些云提供商在后臺幫用戶完成了所有這些操作。
靈活性:NoSQL 數(shù)據(jù)庫通常都提供了靈活的模式,支持快速迭代開發(fā)。NoSQL 數(shù)據(jù)庫有靈活的數(shù)據(jù)模型,非常適合半結構和非結構化數(shù)據(jù)。
高性能:與關系型數(shù)據(jù)庫相比,NoSQL 數(shù)據(jù)庫針對特定的數(shù)據(jù)模型和訪問模式做了優(yōu)化,進一步提升了性能。
以下是一些知名的 NoSQL 數(shù)據(jù)庫類
鍵值數(shù)據(jù)庫
鍵值數(shù)據(jù)庫成對存儲數(shù)據(jù),每個記錄包含一個唯一 id 和一個值。這類數(shù)據(jù)庫提供了靈活的存儲結構,因為值中可以存儲任意數(shù)量的非結構化數(shù)據(jù)。
應用場景
會話管理、用戶偏好設置和產(chǎn)品推薦。
典型產(chǎn)品
Amazon DynamoDB、Azure Cosmos DB、Riak。
內(nèi)存鍵值數(shù)據(jù)庫
不同于基于磁盤的數(shù)據(jù)庫,這類數(shù)據(jù)庫的數(shù)據(jù)主要保存在內(nèi)存中。通過減少磁盤訪問實現(xiàn)最小響應時間。由于所有數(shù)據(jù)都存儲在內(nèi)存中,在進程或服務器出現(xiàn)故障時,內(nèi)存數(shù)據(jù)庫有丟失數(shù)據(jù)的風險。內(nèi)存數(shù)據(jù)庫可以通過在日志中記錄每個操作或生成數(shù)據(jù)快照的方式將數(shù)據(jù)持久化到磁盤上。
典型產(chǎn)品
Redis、Memcached、Amazon Elasticache。
文檔數(shù)據(jù)庫
文檔數(shù)據(jù)的結構和鍵值數(shù)據(jù)庫類似,只是鍵和值的形式是用標記語言(如 JSON、XML 或 YAML)編寫的文檔。
應用場景
用戶資料、產(chǎn)品目錄和內(nèi)容管理。
典型產(chǎn)品
MongoDB、Amazon DocumentDB、CouchDB。
列式數(shù)據(jù)庫
列式數(shù)據(jù)庫基于表存儲,但沒有嚴格的列格式。列式數(shù)據(jù)庫不要求每一列都有值,而且可以組合包含不同數(shù)據(jù)格式的行段和列段。
應用場景
遙測數(shù)據(jù)、分析數(shù)據(jù)、消息傳遞和時序數(shù)據(jù)。
典型產(chǎn)品
Cassandra、Accumulo、Azure Table Storage、HBase。
NoSQL 數(shù)據(jù)庫的類型
圖數(shù)據(jù)庫
圖數(shù)據(jù)庫使用節(jié)點和邊來映射數(shù)據(jù)之間的關系。節(jié)點是單個的數(shù)據(jù)值,邊是這些值之間的關系
應用場景
社交圖譜、推薦引擎和欺詐檢測。
典型產(chǎn)品
Neo4j、Amazon Neptune、Azure Cosmos DB Gremlin。
時序數(shù)據(jù)庫
這類數(shù)據(jù)庫存儲有時間順序的流式數(shù)據(jù)。數(shù)據(jù)不是按值或 id 排序,而是按收集、攝入時間或元數(shù)據(jù)中包含的其他時間戳排序。
應用場景
工業(yè)遙測數(shù)據(jù)、DevOps 和物聯(lián)網(wǎng)(IOT)應用程序。
典型產(chǎn)品
Graphite、Prometheus、Amazon Timestream。
分類賬數(shù)據(jù)庫
分類賬數(shù)據(jù)庫以日志為基礎,日志中記錄了與數(shù)據(jù)值相關的事件。這類數(shù)據(jù)庫存儲用于驗證數(shù)據(jù)完整性的數(shù)據(jù)更改操作。
應用場景
銀行系統(tǒng)、注冊、供應鏈、記錄系統(tǒng)(systems of record)。
典型產(chǎn)品
Amazon Quantum Ledger Database(QLDB)。
小? ?結
為了選出最合適自己的 NoSQL 數(shù)據(jù)庫,你應該了解各種 NoSQL 數(shù)據(jù)庫之間的差異。
https://levelup.gitconnected.com/system-design-interviews-nosql-databases-and-when-to-use-them-780021f4063
相關閱讀:
為什么 NoSQL 數(shù)據(jù)庫這么受歡迎?(https://xie.infoq.cn/article/b663f3c216b96fc6c8d0710d6 )
SQL 與 NoSQL 最終會走向融合嗎?(https://xie.infoq.cn/article/1601b4dc6dc8a4e8cc1b7b4e6 )
騰訊云 NoSQL 數(shù)據(jù)庫產(chǎn)品 2022 再迎升級,多項技術細節(jié)首次公開 (https://xie.infoq.cn/article/2bca963b0c9d1a6f2a8e654aa )
最全 SQL 與 NoSQL 優(yōu)缺點對比 (https://xie.infoq.cn/article/de732963b420ee35542fb1010 )
聲明:本文為 InfoQ 翻譯,未經(jīng)許可,禁止轉(zhuǎn)載
關鍵詞: NoSQL 數(shù)據(jù)庫如何選型 mysql