您好,歡迎來(lái)到易龍商務(wù)網(wǎng)!
全國(guó)咨詢(xún)熱線:13573511333

上海高性能時(shí)序數(shù)據(jù)庫(kù)價(jià)格歡迎來(lái)電「美信科技」

【廣告】

發(fā)布時(shí)間:2021-10-24 11:19  
企業(yè)視頻展播,請(qǐng)點(diǎn)擊播放
視頻作者:北京美信時(shí)代科技有限公司









BlueSky高性能時(shí)序數(shù)據(jù)庫(kù)算法

算法 是將之前使用的一個(gè)大的查找結(jié)構(gòu)(造成隨機(jī)讀寫(xiě),影響寫(xiě)性能的結(jié)構(gòu),比如 B 樹(shù)),變換為將寫(xiě)操作順序的保存到有序文件中,且每個(gè)文件只保存短時(shí)間內(nèi)的改動(dòng)。文件是有序的,所以讀取的時(shí)候,查找會(huì)非???。且文件不可修改,新的更新操作只會(huì)寫(xiě)入到新的文件中。讀操作檢查有序的文件。然后周期性的合并文件來(lái)減少文件的個(gè)數(shù)。

寫(xiě)入操作

數(shù)據(jù)先在內(nèi)存中緩存(memtable) 中,memtable 使用樹(shù)的結(jié)構(gòu)來(lái)保持 key 是有序的,同時(shí)使用 WAL 的方式備份數(shù)據(jù)到磁盤(pán)。當(dāng) memtable 中數(shù)據(jù)達(dá)到一定規(guī)模后會(huì)刷新數(shù)據(jù)到磁盤(pán)生成文件。更新寫(xiě)入操作

文件不允許被編輯,所以新的內(nèi)容或修改只是簡(jiǎn)單的生成新的文件。當(dāng)越多的數(shù)據(jù)存儲(chǔ)到系統(tǒng)中,就會(huì)有越多的不可修改、順序的有序文件被創(chuàng)建。但比較舊的文件不會(huì)被更新,重復(fù)的激流只會(huì)通過(guò)創(chuàng)建新的記錄來(lái)達(dá)到覆蓋的目的,但這這就產(chǎn)生了冗余的數(shù)據(jù)。

系統(tǒng)會(huì)周期性的執(zhí)行合并的操作,合并操作用于移除重復(fù)的更新或者刪除記錄,同時(shí)還能夠減少文件個(gè)數(shù)的增加,保證讀操作的性能。讀取操作

查詢(xún)的時(shí)候首先檢查內(nèi)存數(shù)據(jù)(memtable),如果沒(méi)有找到這個(gè) key,就會(huì)逆序的一個(gè)個(gè)的檢查磁盤(pán)上的文件,但讀操作耗時(shí)會(huì)隨著磁盤(pán)上文件個(gè)數(shù)的增加而增加。(O(K log N), K為文件個(gè)數(shù), N 為文件平均大?。???梢允褂萌缦虏呗詼p少耗時(shí)將文件按照 LRU 緩存到內(nèi)存中周期性的合并文件,減少文件的個(gè)數(shù)使用布隆過(guò)濾器避免大量的讀文件操作(如果bloom說(shuō)一個(gè)key不存在,就一定不存在,而當(dāng)bloom說(shuō)一個(gè)文件存在是,可能是不存在的,只是通過(guò)概率來(lái)保證)



時(shí)序數(shù)據(jù)庫(kù)的秘密 —— 快速檢索

碼洞是通過(guò) Lucene 的倒排索引技術(shù)實(shí)現(xiàn)比關(guān)系型數(shù)據(jù)庫(kù)更快的過(guò)濾。特別是它對(duì)多條件的過(guò)濾支持非常好,比如年齡在 18 和 30 之間,性別為女性這樣的組合查詢(xún)。倒排索引很多地方都有介紹,但是其比關(guān)系型數(shù)據(jù)庫(kù)的 b-tree 索引快在哪里?到底為什么快呢?

籠統(tǒng)的來(lái)說(shuō),b-tree 索引是為寫(xiě)入優(yōu)化的索引結(jié)構(gòu)。當(dāng)我們不需要支持快速的更新的時(shí)候,可以用預(yù)先排序等方式換取更小的存儲(chǔ)空間,更快的檢索速度等好處,其代價(jià)就是更新慢。要進(jìn)一步深入的化,還是要看一下 Lucene 的倒排索引是怎么構(gòu)成的




時(shí)序數(shù)據(jù)庫(kù)在風(fēng)電控制系統(tǒng)的中的應(yīng)用

分析了風(fēng)電監(jiān)控系統(tǒng)對(duì)海量數(shù)據(jù)的存儲(chǔ)和訪問(wèn)需求,提出了引入時(shí)序數(shù)據(jù)庫(kù)技術(shù)來(lái)解決傳統(tǒng)數(shù)據(jù)庫(kù)在處理海量數(shù)據(jù)時(shí)碰到的存儲(chǔ)容量和訪問(wèn)效率方面的問(wèn)題。所采用的時(shí)序數(shù)據(jù)庫(kù)和關(guān)系數(shù)據(jù)庫(kù)相結(jié)合的解決方案,在滿(mǎn)足海量數(shù)據(jù)存儲(chǔ)和訪問(wèn)需求的同時(shí),很好地解決了數(shù)據(jù)模型的描述和存儲(chǔ)問(wèn)題。介紹了基于時(shí)序數(shù)據(jù)庫(kù)開(kāi)發(fā)的一些風(fēng)電應(yīng)用。




時(shí)間序列數(shù)據(jù)庫(kù)垂直(縱向)切分垂直切分

常見(jiàn)有垂直分庫(kù)和垂直分表兩種。

垂直分庫(kù)就是根據(jù)業(yè)務(wù)耦合性,將關(guān)聯(lián)度低的不同表存儲(chǔ)在不同的數(shù)據(jù)庫(kù)。做法與大系統(tǒng)拆分為多個(gè)小系統(tǒng)類(lèi)似,按業(yè)務(wù)分類(lèi)進(jìn)行獨(dú)立劃分。與"微服務(wù)治理"的做法相似,每個(gè)微服務(wù)使用單獨(dú)的一個(gè)數(shù)據(jù)庫(kù)。垂直分表是基于數(shù)據(jù)庫(kù)中的"列"進(jìn)行,某個(gè)表字段較多,可以新建一張擴(kuò)展表,將不經(jīng)常用或字段長(zhǎng)度較大的字段拆分出去到擴(kuò)展表中。在字段很多的情況下(例如一個(gè)大表有100多個(gè)字段),通過(guò)"大表拆小表",更便于開(kāi)發(fā)與維護(hù),也能避免跨頁(yè)問(wèn)題,MySQL底層是通過(guò)數(shù)據(jù)頁(yè)存儲(chǔ)的,一條記錄占用空間過(guò)大會(huì)導(dǎo)致跨頁(yè),造成額外的性能開(kāi)銷(xiāo)。另外數(shù)據(jù)庫(kù)以行為單位將數(shù)據(jù)加載到內(nèi)存中,這樣表中字段長(zhǎng)度較短且訪問(wèn)頻率較高,內(nèi)存能加載更多的數(shù)據(jù),命中率更高,減少了磁盤(pán)IO,從而提升了數(shù)據(jù)庫(kù)性能。



行業(yè)推薦