數(shù)據(jù)庫(kù)非功能需求分析
作為業(yè)務(wù)研發(fā),我們?cè)谧黾夹g(shù)設(shè)計(jì)的時(shí)候不僅要關(guān)注到功能需求,同樣也需要關(guān)注到非功能需求,在非功能需求中,常見(jiàn)的需要考慮的點(diǎn)有可靠性、可用性、性能、可修改性、可變性、安全性、成本。制約這些非功能需求一個(gè)很重要的組件就是數(shù)據(jù)庫(kù)系統(tǒng)。下面我們就我就來(lái)來(lái)聊聊怎樣來(lái)保證這些非功能需求。
一、數(shù)據(jù)庫(kù)的可用性可靠性需求
我們接到需求后,我們首先要進(jìn)行業(yè)務(wù)需求分析,然后分解到數(shù)據(jù)庫(kù)的需求,我們首先要根據(jù)業(yè)務(wù)場(chǎng)景和數(shù)據(jù)庫(kù)的特點(diǎn)來(lái)選擇數(shù)據(jù)庫(kù)的類(lèi)型,滿(mǎn)足功能、可用性、可靠性的訴求,下面我們就先介紹一些數(shù)據(jù)類(lèi)型和一般所處理的場(chǎng)景。
1、1數(shù)據(jù)類(lèi)型
關(guān)系型數(shù)據(jù)庫(kù)主要有MySQL、Oracle、Microsoft SQL Server和PostgreSQL等,使用表中的行來(lái)存儲(chǔ)數(shù)據(jù),關(guān)系型數(shù)據(jù)庫(kù)適用于事務(wù)處理和需要強(qiáng)大的數(shù)據(jù)一致性、完整性和安全性的應(yīng)用,如企業(yè)應(yīng)用、電子商務(wù)、金融系統(tǒng)等。
非關(guān)系型數(shù)據(jù)庫(kù)(NoSQL)主要有MongoDB、Cassandra、Redis和Elasticsearch等,他們是采用鍵值對(duì)、文檔、列族或圖形等方式來(lái)存儲(chǔ)數(shù)據(jù),它們具有更靈活的數(shù)據(jù)模型和可擴(kuò)展性。非關(guān)系型數(shù)據(jù)庫(kù)適用于需要高可擴(kuò)展性、靈活的數(shù)據(jù)模型和快速讀寫(xiě)訪問(wèn)的應(yīng)用,如大數(shù)據(jù)、實(shí)時(shí)分析、內(nèi)容管理和社交網(wǎng)絡(luò)等。
內(nèi)存數(shù)據(jù)庫(kù)主要有Redis、Memcached,他們是將數(shù)據(jù)存儲(chǔ)在內(nèi)存中,以提供快速的讀寫(xiě)訪問(wèn)速度。通常用于對(duì)讀取操作要求非常高、需要快速響應(yīng)的應(yīng)用場(chǎng)景,如實(shí)時(shí)數(shù)據(jù)分析、高頻交易系統(tǒng)等。
圖數(shù)據(jù)庫(kù)主要有Neo4j,專(zhuān)門(mén)用于存儲(chǔ)和處理圖形數(shù)據(jù)結(jié)構(gòu),如節(jié)點(diǎn)和邊。它們適用于需要進(jìn)行復(fù)雜的關(guān)系分析和圖形遍歷的應(yīng)用,如社交網(wǎng)絡(luò)分析、推薦系統(tǒng)、網(wǎng)絡(luò)關(guān)系圖等。
時(shí)間序列數(shù)據(jù)庫(kù)主要有InfluxDB、Prometheus和OpenTSDB,專(zhuān)門(mén)用于存儲(chǔ)和處理按時(shí)間順序排列的數(shù)據(jù),它們提供了高效的時(shí)間序列數(shù)據(jù)存儲(chǔ)和查詢(xún)功能,適用于實(shí)時(shí)監(jiān)控、物聯(lián)網(wǎng)、日志分析和金融領(lǐng)域等。一些時(shí)間序列數(shù)據(jù)庫(kù)包括InfluxDB、Prometheus和OpenTSDB等。
在使用以上數(shù)據(jù)類(lèi)型的時(shí)候我們要考慮好數(shù)據(jù)、索引、壓縮文件的容量問(wèn)題。
1、2數(shù)據(jù)容量和增長(zhǎng)量速度
我們要和業(yè)務(wù)人員核對(duì)清楚業(yè)務(wù)的增長(zhǎng)模型和背景,根據(jù)歷史數(shù)據(jù)增長(zhǎng)趨勢(shì)和同行數(shù)據(jù)做好數(shù)據(jù)量預(yù)測(cè)和數(shù)據(jù)增長(zhǎng)速度,通常我們需要關(guān)注以下幾個(gè)要素:
業(yè)務(wù)增長(zhǎng)預(yù)測(cè):根據(jù)業(yè)務(wù)發(fā)展趨勢(shì),預(yù)測(cè)未來(lái)數(shù)據(jù)量增長(zhǎng)
數(shù)據(jù)類(lèi)型分析:分析不同類(lèi)型的數(shù)據(jù),預(yù)測(cè)數(shù)據(jù)量增長(zhǎng)
數(shù)據(jù)存儲(chǔ)需求:根據(jù)數(shù)據(jù)存儲(chǔ)需求,預(yù)測(cè)數(shù)據(jù)量增長(zhǎng)
數(shù)據(jù)處理需求:根據(jù)數(shù)據(jù)處理需求,預(yù)測(cè)數(shù)據(jù)量增長(zhǎng)
數(shù)據(jù)備份需求:根據(jù)數(shù)據(jù)備份需求,預(yù)測(cè)數(shù)據(jù)量增長(zhǎng)
只有充分考慮了這些要素,才能確保數(shù)據(jù)庫(kù)容量能夠滿(mǎn)足未來(lái)的需求。
二、數(shù)據(jù)庫(kù)的性能需求
在滿(mǎn)足基本的功能后,我們要考慮到性能的問(wèn)題,數(shù)據(jù)庫(kù)性能方面我們主要考慮響應(yīng)時(shí)間、吞吐量和并發(fā)處理能力。
2、1響應(yīng)時(shí)間
響應(yīng)時(shí)間方面,我們要綜合考慮查詢(xún)速度、事務(wù)處理速度、數(shù)據(jù)加載速度、并發(fā)處理能力以及延遲。這些要素共同決定了數(shù)據(jù)庫(kù)的性能和效率,我們需要充分考慮業(yè)務(wù)場(chǎng)景下的這些依賴(lài)要素,以確保響應(yīng)時(shí)間達(dá)到預(yù)期。
2、2吞吐量
吞吐量是指單位時(shí)間內(nèi)數(shù)據(jù)庫(kù)能夠處理的事務(wù)數(shù)量,其影響因素包括硬件配置、數(shù)據(jù)庫(kù)設(shè)計(jì)和查詢(xún)優(yōu)化等。我們可以通過(guò)壓力測(cè)試、基準(zhǔn)測(cè)試等方法來(lái)評(píng)估數(shù)據(jù)庫(kù)的吞吐量,并采用增加硬件資源、優(yōu)化數(shù)據(jù)庫(kù)結(jié)構(gòu)和優(yōu)化查詢(xún)語(yǔ)句等方法來(lái)進(jìn)行優(yōu)化。
2、3并發(fā)處理能力
并發(fā)處理能力方面我們需要關(guān)注以下幾個(gè)方面:并發(fā)處理能力、事務(wù)處理速度、吞吐量、并發(fā)用戶(hù)數(shù)、響應(yīng)時(shí)間以及資源利用率。
三、數(shù)據(jù)庫(kù)可修改性等需求
在業(yè)務(wù)快速增長(zhǎng)的情況下,我們也需要考慮到數(shù)據(jù)庫(kù)的可修改性、可變性、安全性,在這方面我們主要從升級(jí)路徑、兼容性和備份方案幾方面考慮。
4、1升級(jí)路徑
升級(jí)方面可以從硬件、軟件、數(shù)據(jù)庫(kù)架構(gòu)、數(shù)據(jù)庫(kù)分片和備份與恢復(fù)等方面進(jìn)行考慮,通過(guò)升級(jí)硬件、軟件、采用分布式數(shù)據(jù)庫(kù)架構(gòu)數(shù)據(jù)分片、定期備份數(shù)據(jù)等方式,可以提高數(shù)據(jù)庫(kù)的性能和安全性。
4、2兼容性
兼容性包括數(shù)據(jù)庫(kù)類(lèi)型、版本、操作系統(tǒng)的平臺(tái)、接口、功能以及性能等,這些因素都會(huì)對(duì)數(shù)據(jù)庫(kù)的容量產(chǎn)生影響,因此在選擇數(shù)據(jù)庫(kù)時(shí)需要充分考慮這些因素。
4、3備份方案
容災(zāi)備份方案,包括備份策略、備份位置、備份介質(zhì)和備份恢復(fù)等方面。此外,定期進(jìn)行容災(zāi)演練,可以檢驗(yàn)備份方案的有效性。
備份策略:定期備份、實(shí)時(shí)備份、增量備份等
備份位置:本地備份、異地備份、云備份等
備份介質(zhì):硬盤(pán)、光盤(pán)、磁帶等
備份恢復(fù):數(shù)據(jù)恢復(fù)、系統(tǒng)恢復(fù)等
容災(zāi)演練:定期進(jìn)行容災(zāi)演練,檢驗(yàn)備份方案的有效性
四、數(shù)據(jù)庫(kù)成本需求
在做業(yè)務(wù)需求時(shí),一般都會(huì)計(jì)算roi,其中在現(xiàn)在降本增效的大背景下,現(xiàn)在也出現(xiàn)了finops這樣的理念,所以我們?cè)谧鰯?shù)據(jù)庫(kù)需要的時(shí)候也要考慮數(shù)據(jù)庫(kù)的成本,數(shù)據(jù)庫(kù)的成本主要由硬件、軟件、人力三方面成本構(gòu)成。
3、1硬件成本
在選擇數(shù)據(jù)庫(kù)硬件時(shí),我們需要考慮以下幾個(gè)方面:服務(wù)器類(lèi)型和配置;存儲(chǔ)設(shè)備的選擇,如硬盤(pán)、SSD等,以滿(mǎn)足數(shù)據(jù)庫(kù)數(shù)據(jù)量需求;網(wǎng)絡(luò)設(shè)備的選擇,確保網(wǎng)絡(luò)帶寬足夠,以滿(mǎn)足數(shù)據(jù)庫(kù)數(shù)據(jù)傳輸需求;電源和冷卻系統(tǒng)的穩(wěn)定性和高效性;容錯(cuò)和冗余的需求,為了保證可用性和可靠性,可能需要做容錯(cuò)和冗余,以保證數(shù)據(jù)庫(kù)正常運(yùn)行。
3、2軟件成本
軟件成本我們需要綜合考慮軟件成本、許可證費(fèi)用、維護(hù)費(fèi)用、升級(jí)費(fèi)用、培訓(xùn)費(fèi)用以及定制開(kāi)發(fā)費(fèi)用等,以確保數(shù)據(jù)庫(kù)系統(tǒng)的高效運(yùn)行和可持續(xù)發(fā)展。
3、3人力成本
人力考慮要素包括:招聘和培訓(xùn)數(shù)據(jù)庫(kù)管理員的成本,維護(hù)和升級(jí)數(shù)據(jù)庫(kù)系統(tǒng)的成本,解決數(shù)據(jù)庫(kù)性能問(wèn)題的成本,以及確保數(shù)據(jù)安全和合規(guī)性的成本。
以上就是我們?cè)谧鰳I(yè)務(wù)需求中關(guān)于數(shù)據(jù)庫(kù)方面的非功能需求的考慮點(diǎn),在做一些需求的時(shí)候,我們可能因?yàn)榫ε牌谟邢?,不能考慮的很全面,但是有了上面這個(gè)分享的藍(lán)圖,我們?cè)诨仡^看的時(shí)候,會(huì)記錄好當(dāng)時(shí)留下的技術(shù)債,以便后期排期在合適的時(shí)機(jī)解決。