5步選擇高性能NoSQL數(shù)據(jù)庫(kù)
構(gòu)建在線和運(yùn)營(yíng)應(yīng)用程序的開發(fā)團(tuán)隊(duì)越來越多地選擇一種新的數(shù)據(jù)庫(kù)來支持它們。它被稱為“NoSQL”或“Not Only SQL”,包括Redis,MongoDB等選項(xiàng)。從可用的NoSQL解決方案中選擇正確的數(shù)據(jù)庫(kù)是我們?cè)谠O(shè)計(jì)新應(yīng)用程序時(shí)可以做出的最重要決策之一。因此,如果你正在評(píng)估NoSQL數(shù)據(jù)庫(kù),本文可以作為一個(gè)參考。
選擇數(shù)據(jù)庫(kù)時(shí),我們應(yīng)遵循以下五個(gè)步驟:
- 定義 NoSQL數(shù)據(jù)庫(kù)的目標(biāo)。
- 確定吞吐量和延遲要求。
- 為正確的工作選擇正確的數(shù)據(jù)庫(kù)。
- 選擇或做自己動(dòng)手(DIY)的托管服務(wù)提供商之間。
- 確定 適合你的情況的***部署模式。
1. 為你的數(shù)據(jù)庫(kù)定義目標(biāo)
NoSQL數(shù)據(jù)庫(kù)的目標(biāo)可能是為移動(dòng)設(shè)備上的數(shù)千名用戶提供個(gè)性化數(shù)字體驗(yàn),為后端支付處理應(yīng)用程序存儲(chǔ)數(shù)據(jù),管理有一定時(shí)間生活的短暫數(shù)據(jù),或?qū)⒊志脭?shù)據(jù)存儲(chǔ)為系統(tǒng)記錄。你甚至可以在特定方案的同一數(shù)據(jù)管道中涉及多種類型的數(shù)據(jù)庫(kù)。
無論用例如何,在數(shù)據(jù)管道中定義NoSQL數(shù)據(jù)庫(kù)的特定功能非常重要,包括如何收集,提取和提供數(shù)據(jù)以進(jìn)行分析。
2. 確定吞吐量和延遲要求
在今天這個(gè)時(shí)代,用戶期待即時(shí)體驗(yàn)。通常,這需要你的應(yīng)用程序的響應(yīng)時(shí)間<100毫秒。否則,它將被視為緩慢,你可能會(huì)失去用戶的興趣。但是,一些應(yīng)用程序 - 例如游戲,通信和金融交易系統(tǒng) - 要求其數(shù)據(jù)庫(kù)的響應(yīng)時(shí)間低至13毫秒。
除延遲外,我們還需要確定吞吐量要求。例如,數(shù)據(jù)庫(kù)可以處理數(shù)千個(gè)同步數(shù)據(jù)流,延遲低至50毫秒或更長(zhǎng)?
了解將對(duì)數(shù)據(jù)庫(kù)提出的要求對(duì)于確保用戶體驗(yàn)的質(zhì)量非常重要。
3. 為正確的作業(yè)選擇正確的數(shù)據(jù)庫(kù)
通常,開發(fā)人員選擇NoSQL數(shù)據(jù)庫(kù)是因?yàn)樗鼈冃枰虢Y(jié)構(gòu)化或非結(jié)構(gòu)化數(shù)據(jù),具有靈活的模式,簡(jiǎn)單的查詢模式,高速事務(wù),大量數(shù)據(jù)以及通過分布式計(jì)算和存儲(chǔ)的快速且廉價(jià)的可擴(kuò)展性。你可以通過CAP定理進(jìn)一步縮小選擇范圍,CAP定義定義如下:
- 一致性:每次讀取都會(huì)收到最近的寫入或錯(cuò)誤。
- 可用性:每個(gè)請(qǐng)求都會(huì)收到(非錯(cuò)誤)響應(yīng) - 不保證它包含最近的寫入。
- 分區(qū)容差:盡管節(jié)點(diǎn)之間的網(wǎng)絡(luò)丟棄(或延遲)任意數(shù)量的消息,系統(tǒng)仍繼續(xù)運(yùn)行。
根據(jù)CAP定理,你可以優(yōu)先考慮CA,AP或CP特征。這有助于確定哪個(gè)數(shù)據(jù)庫(kù)最適合你的應(yīng)用程序。
4. 選擇托管服務(wù)提供商和自己動(dòng)手(DIY)
托管服務(wù)解決方案使用經(jīng)驗(yàn)豐富的資源處理數(shù)據(jù)庫(kù)的日常管理。這使你自己的資源能夠?qū)W⒂趹?yīng)用程序所需的創(chuàng)新和效率。如果朝這個(gè)方向發(fā)展,請(qǐng)?jiān)u估提供數(shù)據(jù)庫(kù)即服務(wù)選項(xiàng)的第三方選項(xiàng),并選擇能夠在保證正常運(yùn)行時(shí)間的同時(shí)處理吞吐量和延遲要求的提供商。
當(dāng)然,外包可能并不總是可選的,在這種情況下,應(yīng)該考慮哪些數(shù)據(jù)庫(kù)提供商提供的軟件版本支持大規(guī)模配置,調(diào)度和管理容器。請(qǐng)務(wù)必檢查你最期望的功能,例如可伸縮性,主動(dòng) - 主動(dòng)部署,吞吐量和延遲 - 并在概念驗(yàn)證試驗(yàn)期間對(duì)其進(jìn)行驗(yàn)證。
5. 確定部署模式
理想情況下,你需要一個(gè)數(shù)據(jù)庫(kù)提供程序,它允許在選擇的任何環(huán)境(無論是公共還是私有)中運(yùn)行數(shù)據(jù)庫(kù),并完全控制你的數(shù)據(jù)和配置。數(shù)據(jù)庫(kù)軟件也應(yīng)該作為Docker鏡像提供,這將允許企業(yè)開發(fā)人員在基于Docker的微服務(wù)架構(gòu)中使用它。
如果使用私有平臺(tái)即服務(wù)(PaaS),請(qǐng)確保你的數(shù)據(jù)庫(kù)提供商支持私有PaaS環(huán)境中的無縫擴(kuò)展和輕松高可用性。
如果選擇托管服務(wù)提供商,請(qǐng)確認(rèn)它們支持跨多云提供商的群集部署。
做出正確的NoSQL數(shù)據(jù)庫(kù)選擇的好處
經(jīng)過深思熟慮的決策的一些優(yōu)點(diǎn)包括:
- 加快開發(fā),測(cè)試和生產(chǎn)環(huán)境之間的連續(xù)性,縮短產(chǎn)品上市時(shí)間。
- 與Docker編排工具集成時(shí),高可用性和更輕松的可擴(kuò)展性。
- 更快的吞吐量,最小的延遲和保證正常運(yùn)行時(shí)間
- 全球多云部署選項(xiàng)
- 使用托管服務(wù)提供商可節(jié)省大量成本