[淺談]-NoSQL資料庫怎麼選? - iT 邦幫忙
文章推薦指數: 80 %
然而在市場上有許多種類的NoSQL,如MongoDB、Redis、HBase. ... RDBMS因具備ACID特性,若需要確保資料在任何情況下都穩定的場景就比較推薦。
NoSQL比較適合用在雲端 ...
3
[淺談]-NoSQL資料庫怎麼選?
nosql
資料庫
非關聯資料庫
xiang753017
2021-05-1211:44:00‧1184瀏覽
前言
NoSQL是目前在雲端服務很常使用的一種型態的資料庫,僅具備BASE原則。
然而在市場上有許多種類的NoSQL,如MongoDB、Redis、HBase...等,本文章則從Scalability、Sharding、Replication的角度切入,並同時帶入CAP理論進行分類。
NoSQLv.sRDBMS
[關聯式資料庫(RDBMS)]:
是目前很常用的資料庫,完全遵守ACID原則,在任何情況下(A)都可保持每個Transaction不成功則rollback、(C)資料一致性、(I)讀寫不互相干擾、(D)數據永久性。
然而它只支援垂之擴充,若要應用在大量的資料的時候,就只能透過硬體的升級,如cpu升級、使用NAS、SAN擴充硬碟資源等。
A:Atomicity,C:consistency,I:Isolation,D:duration
[非關聯式資料庫(NoSQL)]:
是目前在雲端服務很常使用的一種型態的資料庫。
僅具備BASE原則,(BA)只保證一定的可用性,(S)不保證在同時有讀寫時資料是一致的,(E)資料最終一致的特性。
但具備水平擴充、垂直擴充。
換句話說只要同步的增加主機數量,NoSQL能力就會成比例上升,或者直接升級單一資料庫的效能能達到效果。
BA:BasicallyAvailable,S:Soft-state,E:Eventuallyconsistent.
[NoSQLv.sRDBMS使用場景]:
RDBMS因具備ACID特性,若需要確保資料在任何情況下都穩定的場景就比較推薦。
NoSQL比較適合用在雲端服務上,或者對於資料的穩定性不這麼高的使用場景。
因為具備水平擴充,因此不會有singlefailed的問題、擴充的成本相對垂直擴充低。
1.[NoSQL分類]-以資料型態分類
主要分為三種,key-value、wide-column、documents的資料型態:
key-value:
在做簡單的Query會比較快,但如果是複雜的Query就不怎麼方便
ex:RedisDB
document:
也是一種key-valuestore,只是限制value的結構為semi-structure,像是JSON等。
ex:MongoDB
wide-column:
透過多個raw、column進行存取,將要的資料拆解成小資料,然後進行組合。
最後可以透過columnkey或者rowkey進行關聯搜索。
好處是有效的壓縮資料以及取用同一等級的資料集相當方便。
2.[NoSQL分類]-CAP(Consistency,Availability,PartitionTolerance)
Consistency:讀寫都會遵循Atomicity原則,Availability:在non-failingnode的時候Client讀、寫都能正常運行,PartitionTolerance:在cluster狀態下,node之間的網路不穩的狀態下,還能夠維持availability。
從上述CAP中,一般資料庫不可能同時達到,因為在Available的情況下,Consistency與PartitionTolerance是互相矛盾的。
(clusternode不能互相溝通時,不能保證資料的一致性),因此大致的分類有AP、CA、CP:
AP:不管是在single-node或者是cluster,只有要node可用就能持續運作
CA:在沒有任何的例外下,都是可用並保證資料的一致性。
CP:在node之前不穩定的時候不接受request。
3.[NoSQL分類]-Sharding
傳統的RDBMS依賴shard-disk架構增加datarepository的容量,NoSQL則是可透過Sharding技術做到。
主要有分三種:RangedSharding、HashSharding、EntitygroupSharding方式。
RangedSharding:
主要是利用編號的方式進行分群,如下圖當x>20的時候,分配給shardC。
HashSharding:
透過Hash的方式進行分群,分佈起來會比較均勻。
RangedSharding則有可能會有分佈不均的問題。
->ConsistentHashing:使得每一個chunk存資料的機率都一樣。
EntityGroupSharding:
將有關聯的欄位做Sharding,這樣一來在搜尋上、資料一致性上都會來的更有保障。
4.[NoSQL分類]-Replication
在大型應用場景域中,幾乎會遇到各種裝置在已知例外、未知例外的情況下導致節點失靈的問題,然而Replication就是屬於用於解決問題的解法。
透過將資料備份的方式使得即使失靈,也不影響運作。
MasterandSlave:當client將資料注入Master資料庫,然而Master會自動透過Replication,將slave更新。
Multi-masterReplication:類似MasterandSlave的方式,Master主機同時也是slave角色,當其中一台Master更新的時候,其他Slave也會同時更新。
Replication的動作可分成Eager(sync)、Lazy(async):
EagerReplication:在同步下,當資料注入的時候,全部的node都會具備相同的資料,但缺點是在效能上必須有所犧牲。
LazyReplication:在非同步下則是透過被動的方式,在一段時間後才會同步完成。
5.[NoSQL比較表]
Dimension
MongoDB
HBase
Cassandra
Riak
Redis
DataStructure
Document
Wide-column
Wide-column
Key-value
Key-value
CAP
CP
CP
AP
AP
CP
Disklatencypergetbyrowkey
Severaldiskseeks
Severaldiskseeks
Severaldiskseeks
Onediskseeks
Memory
Writeperformance
High(I/O)
High(I/O)
High(I/O)
High(I/O)
superHigh(Memory)
Sharding
Hash、range-based
range-based
consistenthashing
consistenthashing
hash
Replication
Master-slave,snycconfigurable
File-system-level
consistenthashing
consistenthashing
Asyncmaster-slave
6.常見資料庫推薦與適合場域
下圖為文獻中的分類表[1],給出不同的需求而所適用的資料庫。
從Query的角度分類,[(左)搜尋速度快、(右)複雜的搜尋],進而對於抓取資料的大小、容量(volume)進行分類,最後則是以資料庫的特性進行分類。
專有名詞:
Unbounded:指的是在分散式架構中,可搜尋的容量為無限
HDD-Size:之的是在singlenode情況下,可搜尋的容量為硬碟容量
Ad-hoc:即時查詢,如sql中的select..fromaDBwhere[condictions..]
Analytics:只的是在query的時候可具備資料分析的能力
OLTP((onlinetransactionprocessing):網路交易process
參考資料
[1]Gessert,Felix,etal.“NoSQLdatabasesystems:asurveyanddecisionguidance.”ComputerScience-ResearchandDevelopment32.3(2017):353–365.
[2]https://docs.mongodb.com/manual/core/ranged-sharding/
[3]https://docs.mongodb.com/manual/core/hashed-sharding/
[4]https://medium.com/@jeeyoungk/how-sharding-works-b4dec46b3f6
[5]https://galeracluster.com/library/documentation/tech-desc-introduction.html
[6]https://stackoverflow.com/questions/2460954/what-is-ad-hoc-query
留言
追蹤
檢舉
尚未有邦友留言
立即登入留言
相關文章
跨多資料庫的資料庫管理工具權威-DatabaseGear產品應用講座2
自製記帳軟件-思考
自製記帳軟件-Schema(二)
DATABASE七日鮮-OaccPFA2014建構全記錄
Day01:什麼是MongoDB?
Day02:MongoDB的安裝與環境配置
Day03:MongoDB的CRUD(1)-資料庫基本操作
Day05:MongoDB的CRUD(3)-Find&Update
Day06:MongoDB的CRUD(4)-Document及對複雜document進行過濾
Day12:進階的CRUD操作(2)-如何透過JSON文件導入資料
iT邦幫忙鐵人賽
參賽組數
1087組
團體組數
52組
累計文章數
20493篇
完賽人數
572人
鐵人賽最新文章
Day37-在AWSLambda建立OpenCVLayer
Day36-使用Container建立AmazonSageMaker端點
Day35-AmazonSageMaker簡介
今天來瞄一眼龍與雀的科技:知覺共享技術Body-sharing
更新網格交易機器人
Day34-實作S3驅動Lambda函數進行YOLO物件辨識
建立第一個RESTfulapiserver(設定環境變數篇)-7(Day19)
Day48.下載個範例iosapp來試著build
原來Arduino開發板的腳位與程式內數字的對應會隨著開發商不同而改變?
EP32:TopStoreAppwith.NETMulti-platformAppUI(MAUI)
前往鐵人賽
技術推廣專區
[Day2]抓取每日收盤價
[Day1]基本工具安裝
利用python取得永豐銀行API的Nonce
永豐金融API測試員
[Day03]tinyML開發板介紹
[Day01]在享受tinyML這道美食之前
[Day3]使用ta-lib製作指標
[Day4]函數打包與買進持有報酬率試算
計算API所需要的參數:HashID
計算API所需要的參數:IV
前往鐵人賽
熱門問題
電信商說我透過Steam或是PS4下載遊戲是異常封包而斷我網路,怎麼辦?
有關新手SQL問題一問
有人知道怎麼解決gmail一直擋信的問題?
Win10的系統還原
線上版文書處理除了Google雲端,365,還有其他選擇嗎?
Windows2008R2如何讀取ISO檔
Server掛掉,Acronis的備份檔無法復原
MSSQL資料庫主機Ping的到,但無法連線
請推薦台中IT委外廠商
MSSQLUNION後進階排序問題請教
IT邦幫忙
站方公告
2021iThome鐵人賽精彩文章超過2萬篇,預計12月揭曉本屆獲勝鐵人
熱門tag
看更多
13th鐵人賽
12th鐵人賽
11th鐵人賽
鐵人賽
2019鐵人賽
2018鐵人賽
javascript
2017鐵人賽
windows
php
python
windowsserver
linux
c#
程式設計
資訊安全
css
vue.js
sql
分享
熱門回答
有關新手SQL問題一問
MSSQL資料庫主機Ping的到,但無法連線
TIPTOPmail
電信商說我透過Steam或是PS4下載遊戲是異常封包而斷我網路,怎麼辦?
MSSQLUNION後進階排序問題請教
線上版文書處理除了Google雲端,365,還有其他選擇嗎?
如果想把現有NAS掛給ESXI6當VM備份儲存區.請問要如何做
新手程式提問
Windows2008R2如何讀取ISO檔
求助!用ExcelUserForm來Update資料到SQL
熱門文章
【第31天】番外篇-Windows+YOLOV4本地端訓練
建立第一個RESTfulapiserver(設定環境變數篇)-7(Day19)
原來Arduino開發板的腳位與程式內數字的對應會隨著開發商不同而改變?
Day48.下載個範例iosapp來試著build
Day34-實作S3驅動Lambda函數進行YOLO物件辨識
【換機必學】將資料從Android轉移到iOS的兩種方法
EP32:TopStoreAppwith.NETMulti-platformAppUI(MAUI)
[Day32]HexoxGitHubPages主題自訂樣式+問題排除
更新網格交易機器人
免費錄影!原來Windows10有内建的螢幕錄影工具
一週點數排行
更多點數排行
海綿寶寶(antijava)
raytracy(raytracy)
ccenjor(ccenjor)
rogeryao(rogeryao)
㊣浩瀚星空㊣(yoching)
純真的人(jer5173)
Samuel(kuanyu)
huahualiu(ffang55tw)
juck30808(juck30808)
淺水員(ren1244)
×
At
輸入對方的帳號或暱稱
Loading
找不到結果。
標記
{{result.label}}
{{result.account}}
關閉
延伸文章資訊
- 1細數5款主流NoSQL資料庫到底哪家強? - 每日頭條
不過鑑於其它NoSql資料庫也具有同樣靈活的數據存儲結構,該優勢在本次選型中並不出彩。 ... 《深度推薦:創業團隊為什麼要選擇Oracle而不是MySQL?》.
- 2該用MySQL 或MongoDB?選擇資料庫前你該了解的事
... 各有各自的優缺點,用來解決不同的問題。這篇文章帶你了解RDBMS和NoSQL的差異,釐清挑選最適合的資料庫,你該了解的事,來幫助你完成任務。
- 3NoSQL - 博客來
最成熟文件資料庫:MongoDB實作整合最佳化微服務架構. 作者:唐卓章. 79折優惠價$695. 7天學會大數據資料處理—NoSQL:MongoDB入門與活用(第四版). 作者:周映樵,黃士嘉.
- 4什麼是NoSQL?| 非關聯式資料庫,彈性的結構描述資料模型
圖形:圖形資料庫的目的在於方便建造與執行作用在高度連結資料集的應用程式。圖形資料庫常見的使用案例包括社群聯網、推薦引擎、詐欺偵測和知識結構圖。Amazon Neptune 是 ...
- 5NoSQL - 天瓏網路書店
虛擬化高性能NoSQL存儲案例精粹-- Redis + Docker · SQL Server 2014 + MongoDB + Python 數據庫技術及應用-cover VIP 95折. $...