新聞中心
隨著互聯(lián)網(wǎng)的快速發(fā)展,大數(shù)據(jù)時(shí)代已經(jīng)來臨。數(shù)據(jù)量大、變化快的情況下,設(shè)計(jì)一種高效的數(shù)據(jù)庫(kù)的技術(shù)顯得尤為重要。內(nèi)存數(shù)據(jù)庫(kù)是一種將數(shù)據(jù)存儲(chǔ)在內(nèi)存中的數(shù)據(jù)庫(kù)管理系統(tǒng),由于它極高的讀寫性能和可擴(kuò)展性,已經(jīng)成為大數(shù)據(jù)存儲(chǔ)和管理的首選。

10年積累的成都做網(wǎng)站、成都網(wǎng)站設(shè)計(jì)、成都外貿(mào)網(wǎng)站建設(shè)經(jīng)驗(yàn),可以快速應(yīng)對(duì)客戶對(duì)網(wǎng)站的新想法和需求。提供各種問題對(duì)應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識(shí)你,你也不認(rèn)識(shí)我。但先網(wǎng)站設(shè)計(jì)后付款的網(wǎng)站建設(shè)流程,更有大東免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。
然而,內(nèi)存數(shù)據(jù)庫(kù)的設(shè)計(jì)和開發(fā)具有一定的挑戰(zhàn)性。核心是如何有效地存儲(chǔ)和檢索數(shù)據(jù)。一些優(yōu)化措施應(yīng)該采取,以提高內(nèi)存數(shù)據(jù)庫(kù)的性能和可用性。本文將介紹一種內(nèi)存數(shù)據(jù)庫(kù)優(yōu)化的技術(shù):將數(shù)據(jù)存儲(chǔ)為ON格式。
1. 數(shù)據(jù)存儲(chǔ)格式的選擇
內(nèi)存數(shù)據(jù)庫(kù)中,數(shù)據(jù)存儲(chǔ)方式直接影響性能和使用效果,選擇合適的存儲(chǔ)格式非常重要。針對(duì)傳統(tǒng)的數(shù)據(jù)存儲(chǔ)方式,內(nèi)存數(shù)據(jù)庫(kù)提出了自己的解決方案:將數(shù)據(jù)存儲(chǔ)為ON格式。ON是一種輕量級(jí)且易于讀寫的數(shù)據(jù)交換格式,它在內(nèi)存數(shù)據(jù)庫(kù)中占據(jù)了重要的地位。
2. ON的優(yōu)勢(shì)
ON作為內(nèi)存數(shù)據(jù)庫(kù)的存儲(chǔ)格式,有以下幾點(diǎn)優(yōu)勢(shì):
(1) 可讀性強(qiáng)
ON數(shù)據(jù)格式直接對(duì)應(yīng)JavaScript對(duì)象。因此,數(shù)據(jù)類似于鍵值對(duì)的形式存儲(chǔ),易于理解和閱讀。
(2) 節(jié)省存儲(chǔ)空間
相比傳統(tǒng)的數(shù)據(jù)格式(如XML、CSV等),ON格式的數(shù)據(jù)中的標(biāo)識(shí)符和數(shù)據(jù)之間的分隔符都非常簡(jiǎn)潔,無需使用復(fù)雜的結(jié)構(gòu)體(如類、對(duì)象等),因此可以節(jié)省存儲(chǔ)空間。
(3) 有效性高
ON數(shù)據(jù)格式采用了層級(jí)結(jié)構(gòu),數(shù)據(jù)之間有明確的層級(jí)關(guān)系,使得數(shù)據(jù)檢索更加高效,便于處理大規(guī)模的數(shù)據(jù)。
(4) 支持多種編程語(yǔ)言
ON格式可以支持多種編程語(yǔ)言,包括JavaScript、Python、Ruby等,這意味著在不同平臺(tái)上存儲(chǔ)和傳遞數(shù)據(jù)非常方便。
3. 存儲(chǔ)和檢索數(shù)據(jù)
將數(shù)據(jù)存儲(chǔ)為ON格式后,存儲(chǔ)和檢索數(shù)據(jù)變得更加簡(jiǎn)單和高效。下面是存儲(chǔ)和檢索ON格式數(shù)據(jù)的一些技巧:
(1) 存儲(chǔ)多個(gè)ON對(duì)象
在內(nèi)存數(shù)據(jù)庫(kù)中,存儲(chǔ)多個(gè)ON對(duì)象可以使用數(shù)組。例如:
“`json
[
{
“id”: 1,
“name”: “Steve”,
“age”: 20
},
{
“id”: 2,
“name”: “Lucy”,
“age”: 18
}
]
“`
(2) 按照鍵值檢索數(shù)據(jù)
ON數(shù)據(jù)格式具有層級(jí)結(jié)構(gòu),可以通過鍵值來檢索數(shù)據(jù)。例如:
“`json
[
{
“id”: 1,
“name”: “Steve”,
“age”: 20
},
{
“id”: 2,
“name”: “Lucy”,
“age”: 18
}
]
“`
可以這樣來查找某個(gè)id對(duì)應(yīng)的數(shù)據(jù):
“`javascript
var data = [
{
“id”: 1,
“name”: “Steve”,
“age”: 20
},
{
“id”: 2,
“name”: “Lucy”,
“age”: 18
}
];
function findById(data,id){
for(let i = 0; i
if(data[i].id === id){
return data[i];//找到
}
}
return null;//沒找到
}
console.log(findById(data,1)); //輸出: { “id”: 1,”name”: “Steve”,”age”: 20}
“`
4. 應(yīng)用場(chǎng)景
將數(shù)據(jù)存儲(chǔ)為ON格式可以應(yīng)用于多種場(chǎng)景,包括但不限于:
(1) NoSQL 數(shù)據(jù)庫(kù)
NoSQL數(shù)據(jù)庫(kù)是一種大規(guī)模數(shù)據(jù)存儲(chǔ)策略,其中包含了多種將數(shù)據(jù)存儲(chǔ)為ON(或類ON)格式的方案,以滿足海量數(shù)據(jù)的高效存儲(chǔ)和查詢。
(2) 數(shù)據(jù)緩存和較小的數(shù)據(jù)類型
內(nèi)存數(shù)據(jù)庫(kù)采用ON存儲(chǔ),可以存儲(chǔ)一些較小的數(shù)據(jù)類型,如顏色、版本號(hào)等數(shù)據(jù),且這些數(shù)據(jù)是在內(nèi)存中直接讀取和存儲(chǔ)的,不需要經(jīng)過磁盤讀寫,速度快。
5.
本文介紹了內(nèi)存數(shù)據(jù)庫(kù)的優(yōu)化技術(shù)之一:將數(shù)據(jù)存儲(chǔ)為ON格式。我們了解到,ON數(shù)據(jù)格式具有易讀性、省空間、有效性高和支持多種編程語(yǔ)言等優(yōu)勢(shì)。對(duì)于存儲(chǔ)和檢索數(shù)據(jù),ON格式更加簡(jiǎn)單和高效。與其他數(shù)據(jù)存儲(chǔ)格式相比,它更適合NoSQL數(shù)據(jù)庫(kù)、數(shù)據(jù)緩存和較小的數(shù)據(jù)類型等。
通過將數(shù)據(jù)存儲(chǔ)為ON格式,可以提高內(nèi)存數(shù)據(jù)庫(kù)的性能和可用性,應(yīng)用到更多的領(lǐng)域中,方便多語(yǔ)言數(shù)據(jù)的交互和查詢。
相關(guān)問題拓展閱讀:
- HTAP需求不能被HTAP數(shù)據(jù)庫(kù)解決
HTAP需求不能被HTAP數(shù)據(jù)庫(kù)解決
HTAP(Hybrid Transaction and Analytical Process,混合事務(wù)和分析處理)自 2023 年明確提出以后成為了很多數(shù)據(jù)庫(kù)廠商努力的方向。其實(shí) HATP 并不新鮮,早年 RDB 剛興起時(shí)本來就是用一個(gè)數(shù)據(jù)庫(kù)同時(shí)做事務(wù)和分析,但隨著數(shù)據(jù)規(guī)模不斷變大再直接基于業(yè)務(wù)庫(kù)做分析就會(huì)影響業(yè)務(wù),這時(shí)數(shù)據(jù)倉(cāng)庫(kù)出現(xiàn)了,將業(yè)務(wù)數(shù)據(jù)導(dǎo)入數(shù)據(jù)倉(cāng)庫(kù)來專門應(yīng)對(duì)分析需求,同時(shí)與業(yè)務(wù)庫(kù)隔離,這樣不僅可以更好地服務(wù)分析場(chǎng)景,又不會(huì)對(duì)業(yè)務(wù)系統(tǒng)產(chǎn)生影響,這是“合久必分”的階段。但是由于數(shù)據(jù)倉(cāng)庫(kù)將 歷史 數(shù)據(jù)與實(shí)時(shí)數(shù)據(jù)分開了,有時(shí)經(jīng)常還會(huì)采用異構(gòu)數(shù)據(jù)庫(kù)(或大數(shù)據(jù)平臺(tái)),如果要分析實(shí)時(shí)全量數(shù)據(jù)(T+0)就非常困難了,而 T+0 又是很多及時(shí)性業(yè)務(wù)必須的,這就造成了“數(shù)據(jù)倉(cāng)庫(kù)之殤”。為了解決這個(gè)問題,能不能把 AP 和 TP 在一個(gè)數(shù)據(jù)庫(kù)內(nèi)同時(shí)滿足呢?于是 HTAP 再次登場(chǎng)了,這又到了“分久必合”的階段。
但我們知道,AP 和 TP 兩個(gè)場(chǎng)景有顯著不同,前者涉及的數(shù)據(jù)量很大,并且計(jì)算邏輯復(fù)雜,但并發(fā)量往往不大,沒有數(shù)據(jù)一致性要求,甚至經(jīng)常為了使用方便可以不滿足范式;后者恰恰相反,數(shù)據(jù)量不大且數(shù)據(jù)處理邏輯簡(jiǎn)單,但并發(fā)量很大,有數(shù)據(jù)強(qiáng)一致性要求。從功能上講,TP 數(shù)據(jù)庫(kù)本來就能執(zhí)行 SQL,也本來就具有一定的 AP 功能。當(dāng)初手畢薯之所以要把 TP 和 AP 分開,就是因?yàn)榫薮髷?shù)據(jù)量時(shí),繼續(xù)采用偏向 TP 的技術(shù)就不能高效地處理 AP 的需求(比如 AP 要求高性能需要使用列存,但 TP 為了寫入更新便利需要使用行存),TP 和 AP 的這些巨大差異就決定了這兩個(gè)場(chǎng)景不能采用一個(gè)技畢者術(shù)體系來同時(shí)滿足,而這件事到現(xiàn)在并沒有實(shí)質(zhì)性地改變。
即使如此,還是有一些廠商嘗試在同一引擎中同時(shí)滿足 TP 和 AP 的需求,實(shí)現(xiàn)上有幾種方式。一種是采用多副本的方式,其中某一個(gè)副本(可能使用列存)專門用來滿足 AP 的需求;一種是采用行列混合存儲(chǔ),行存和列存各一份,二者之間自動(dòng)轉(zhuǎn)換;還有一種方式可以不區(qū)分行列存儲(chǔ),通過單一存儲(chǔ)引擎支撐 TP 和 AP 場(chǎng)景,常見的是某些內(nèi)存數(shù)據(jù)庫(kù)。這類 HTAP 數(shù)據(jù)庫(kù)在實(shí)現(xiàn)上會(huì)優(yōu)先滿足 TP 的需要,在此基礎(chǔ)上再發(fā)展 AP 的功能,因此在滿足 AP 需求時(shí)相對(duì)一般專用的 AP 產(chǎn)品往往會(huì)有很大差距。
另一種 HTAP 數(shù)據(jù)庫(kù)的做法是在底層仍然將兩個(gè)場(chǎng)景分離,以“模塊化”的方式來設(shè)計(jì)存儲(chǔ),業(yè)務(wù)數(shù)據(jù)產(chǎn)生后就會(huì)被復(fù)制兩份(不考慮副本的情況),一份仍然使用行存用于交易,一份復(fù)制使用列存用于分析。相應(yīng)的存儲(chǔ)和計(jì)算再借助原本在 TP 和 AP 領(lǐng)域已經(jīng)成熟的技術(shù)進(jìn)行封裝和優(yōu)化,同時(shí)設(shè)計(jì)統(tǒng)一的對(duì)外訪問接口,底層的差異對(duì)應(yīng)用層完全透明,這樣就形成了可用數(shù)缺的 HTAP 產(chǎn)品。
無論采用哪種方式設(shè)計(jì) HTAP 數(shù)據(jù)庫(kù),在應(yīng)用時(shí)都會(huì)碰到一個(gè)問題,如果原來的業(yè)務(wù)數(shù)據(jù)庫(kù)不是(大概率)采用 HTAP 數(shù)據(jù)庫(kù)就要涉及數(shù)據(jù)庫(kù)遷移,這將面臨巨大的風(fēng)險(xiǎn)和成本。不僅要考量數(shù)據(jù)類型差異導(dǎo)致的數(shù)據(jù)結(jié)構(gòu)遷移過程中需要進(jìn)行改造和處理,還會(huì)涉及視圖、存儲(chǔ)過程以及復(fù)雜 SQL 的改造等,還有在遷移工程中遇到的種種問題要解決,可謂坑多且深。由此帶來的業(yè)務(wù)影響可能會(huì)帶來極大價(jià)值損耗。
此外,現(xiàn)代業(yè)務(wù)系統(tǒng)不僅涉及 RDB,還有 MongoDB、InfluxDB 等 NoSQL,以及各種自己封裝的業(yè)務(wù)數(shù)據(jù)源,種類很多五花八門。這些數(shù)據(jù)源要遷移到新數(shù)據(jù)庫(kù)就沒那么簡(jiǎn)單了,像 MongoDB 數(shù)據(jù)轉(zhuǎn)存到 RDB 會(huì)發(fā)現(xiàn)實(shí)現(xiàn)很困難。MongoDB 中的很多數(shù)據(jù)類型和之間的關(guān)系在 RDB 中并不存在,比如嵌入式的數(shù)據(jù)結(jié)構(gòu)、數(shù)組和哈希等類型、多對(duì)多關(guān)系的實(shí)現(xiàn)。這些問題并不是簡(jiǎn)單通過數(shù)據(jù)遷移就能解決的,需要在遷移之前先對(duì)部分?jǐn)?shù)據(jù)結(jié)構(gòu)進(jìn)行重構(gòu),這需要事先投入相當(dāng)多的人工和時(shí)間成本去梳理業(yè)務(wù)并設(shè)計(jì)目標(biāo)數(shù)據(jù)組織方式。即使最后花費(fèi)很大代價(jià)把業(yè)務(wù)數(shù)據(jù)源遷移到 HTAP 上,原來那些多樣性數(shù)據(jù)源自身的優(yōu)勢(shì)卻又喪失了,得失之間有時(shí)甚至很難權(quán)衡是否值得。
我們知道,數(shù)據(jù)計(jì)算性能和數(shù)據(jù)組織密不可分,在 AP 類場(chǎng)景中通常要使用列存來發(fā)揮計(jì)算優(yōu)勢(shì),但只有列存是遠(yuǎn)遠(yuǎn)不夠的,有些復(fù)雜計(jì)算需要針對(duì)計(jì)算特點(diǎn)專門設(shè)計(jì)數(shù)據(jù)存儲(chǔ)形式(比如有序存儲(chǔ)、數(shù)據(jù)類型轉(zhuǎn)換、預(yù)計(jì)算等)。而這些對(duì)性能要求高的復(fù)雜計(jì)算在 AP 類場(chǎng)景中并不少見,但無論采用何種方式的 HTAP,簡(jiǎn)單“自動(dòng)化”地行存轉(zhuǎn)列存并不能實(shí)現(xiàn)相對(duì)“個(gè)性化”的效果,性能往往無法達(dá)標(biāo)。這個(gè)道理也很簡(jiǎn)單,天下沒有什么都好的事兒,你想融合就必須容忍在某一或某些方面的不足。
遷移風(fēng)險(xiǎn)大、成本高、有損失、性能還可能不達(dá)標(biāo),考慮到這些問題,我們不禁會(huì)問:HTAP 數(shù)據(jù)庫(kù)這個(gè)技術(shù)路線對(duì)嗎?
說到這里我們?cè)倩仡^看一下 HTAP 的目的,為什么要用 HTAP?
其實(shí)就是為了進(jìn)行全量數(shù)據(jù)實(shí)時(shí)查詢統(tǒng)計(jì),也就是 T+0!
如果數(shù)據(jù)倉(cāng)庫(kù)等相關(guān)技術(shù)能搞定這個(gè)問題,那自然也就不需要 HTAP 了。不過很遺憾,數(shù)據(jù)倉(cāng)庫(kù)仍然延用了關(guān)系數(shù)據(jù)庫(kù)的封閉體系,數(shù)據(jù)要先入庫(kù)才能計(jì)算,而且入庫(kù)又有較強(qiáng)約束。這些導(dǎo)致數(shù)據(jù)倉(cāng)庫(kù)無法很好實(shí)現(xiàn)跨數(shù)據(jù)源尤其是異構(gòu)和非關(guān)系型數(shù)據(jù)源的混合計(jì)算,很難實(shí)現(xiàn) T+0 的目標(biāo)。
但集算器 SPL 可以。
集算器 SPL(Structured Process Language),一個(gè)專門面向結(jié)構(gòu)化數(shù)據(jù)計(jì)算的
開源
計(jì)算引擎和程序語(yǔ)言。除了提供了豐富的計(jì)算類庫(kù)使其擁有不依賴數(shù)據(jù)庫(kù)的獨(dú)立計(jì)算能力外,SPL 可以對(duì)接多種數(shù)據(jù)源并完成多源混合計(jì)算,從而輕松完成跨數(shù)據(jù)源的 T+0 查詢。
SPL 通過與現(xiàn)有系統(tǒng)融合的方式實(shí)現(xiàn) HTAP,這樣原有系統(tǒng)的改動(dòng)很小,TP 部分幾乎不動(dòng),甚至原有的 AP 數(shù)據(jù)源也可以繼續(xù)工作,逐步使用 SPL 接管 AP 業(yè)務(wù)。SPL 部分或全部接管 AP 業(yè)務(wù)后, 歷史 冷數(shù)據(jù)使用 SPL 高性能文件存儲(chǔ),原來針對(duì)業(yè)務(wù)庫(kù)到數(shù)據(jù)倉(cāng)庫(kù)的 ETL 過程可以直接移植到 SPL 上。冷數(shù)據(jù)量大且不再變化使用 SPL 高性能文件存儲(chǔ)可以獲得更高地計(jì)算性能;熱數(shù)據(jù)量小仍然存放在原有 TP 數(shù)據(jù)源中,SPL 直接讀取計(jì)算,由于熱數(shù)據(jù)量并不大,直接基于 TP 數(shù)據(jù)源查詢也不會(huì)對(duì)其造成太大影響,訪問時(shí)間也不會(huì)太長(zhǎng)。再利用 SPL 的冷熱數(shù)據(jù)混合計(jì)算能力,就可以獲得針對(duì)全量數(shù)據(jù)的 T+0 實(shí)時(shí)查詢。我們只要定期將變冷的數(shù)據(jù)固化到 SPL 的高性能存儲(chǔ)中,原數(shù)據(jù)源只需要保持少量近期新產(chǎn)生的熱數(shù)據(jù)即可。這樣不僅實(shí)現(xiàn)了 HTAP,而且還是高性能的 HTAP,且對(duì)應(yīng)用架構(gòu)沖擊很小。
現(xiàn)代信息系統(tǒng)中建設(shè)數(shù)據(jù)倉(cāng)庫(kù)等專門服務(wù)分析場(chǎng)景已然十分常見,加之?dāng)?shù)據(jù)源種類繁多,將這些數(shù)據(jù)都遷移到一處代價(jià)太大了,對(duì)于這點(diǎn)前文我們已經(jīng)分析過。如果能在現(xiàn)有架構(gòu)的基礎(chǔ)上增加跨數(shù)據(jù)源的實(shí)時(shí)混合計(jì)算能力,就相當(dāng)于插上了 HTAP 的翅膀,在不改變現(xiàn)有架構(gòu)的情況下快速實(shí)現(xiàn) HTAP 的需求,而這正是 SPL 的強(qiáng)項(xiàng)。
SPL 支持多種數(shù)據(jù)源,RDB、NoSQL 以及 RESTful 等都可以直接使用,還可以解析 ON/XML 等類型數(shù)據(jù),可以對(duì)接 Elasticsearch、Kafka 等數(shù)據(jù)源,此外傳統(tǒng) / 新興數(shù)據(jù)倉(cāng)庫(kù)、大數(shù)據(jù)平臺(tái)等也可以直接取數(shù)計(jì)算。
在對(duì)接的同時(shí)可以針對(duì)任意多種數(shù)據(jù)源進(jìn)行混合計(jì)算,這樣實(shí)時(shí)數(shù)據(jù)從生產(chǎn)庫(kù)中讀與取自 歷史 庫(kù) / 數(shù)據(jù)倉(cāng)庫(kù) / 大數(shù)據(jù)平臺(tái)的冷數(shù)據(jù)混合計(jì)算就可以實(shí)現(xiàn) T+0 全量實(shí)時(shí)數(shù)據(jù)查詢。這樣原有應(yīng)用架構(gòu)幾乎不用變動(dòng)(尤其是生產(chǎn)庫(kù))就可以獲得 HTAP(架構(gòu)層面)期望的效果,成本極低。
使用 SPL 在現(xiàn)有架構(gòu)上輸出 HTAP 能力還有一個(gè)好處是可以充分保留原有數(shù)據(jù)源的優(yōu)勢(shì)。NoSQL 仍然可以繼續(xù)使用而不必強(qiáng)行將結(jié)構(gòu)拉成 RDB 的形式,自己封裝的數(shù)據(jù)訪問與交互接口也不必費(fèi)心去遷就新數(shù)據(jù)庫(kù),原來的優(yōu)勢(shì)與個(gè)性化仍然保持,風(fēng)險(xiǎn)很低的同時(shí)價(jià)值幾乎沒有損耗。
在分析側(cè)也一樣,基于 SPL 也可以繼續(xù)使用原本建設(shè)好的分析平臺(tái)。但如前所述,分析場(chǎng)景面臨的數(shù)據(jù)量大且計(jì)算邏輯復(fù)雜,尤其需要高性能。SPL 還提供了高性能計(jì)算機(jī)制,可以全面接管原來分析側(cè)(AP)的業(yè)務(wù)實(shí)現(xiàn)高性能數(shù)據(jù)計(jì)算。
我們知道,高性能計(jì)算涉及兩方面,一個(gè)是數(shù)據(jù)組織方式即數(shù)據(jù)存儲(chǔ),另一個(gè)是算法,這二者密不可分,很多高性能算法需要將數(shù)據(jù)組織成相應(yīng)格式(如有序)才能發(fā)揮作用。SPL 提供了自有的高性能存儲(chǔ)機(jī)制,直接采用文件系統(tǒng)。將數(shù)據(jù)存儲(chǔ)特定格式的文件中,不僅可以獲得更高的 IO 存取效率以及文件系統(tǒng)靈活的管理能力,還可以充分利用自有格式的列存、有序、壓縮、并行分段等數(shù)據(jù)存儲(chǔ)優(yōu)勢(shì),從而高效地發(fā)揮高性能算法效力。
而在算法方面,SPL 提供了十分豐富的高性能算法庫(kù)。遍歷復(fù)用、有序歸并、外鍵預(yù)關(guān)聯(lián)、標(biāo)簽位維度、并行計(jì)算等,都已經(jīng)封裝好,可以直接使用,配合 SPL 的存儲(chǔ)機(jī)制就能獲得高性能。而且這其中有很多算法都是 SPL 獨(dú)創(chuàng)的,在業(yè)內(nèi)也是首次提出。
如果簡(jiǎn)單地將 TP 中的行存轉(zhuǎn)換成 SPL 中的列存,工作量也非常低。但為了獲得高性能,常常還需要精心設(shè)計(jì)存儲(chǔ)方式,這時(shí),將會(huì)有一定量的 ETL 動(dòng)作,但這個(gè)工作與原來從業(yè)務(wù)系統(tǒng) ETL 數(shù)據(jù)到數(shù)據(jù)倉(cāng)庫(kù)基本是一樣的,并不會(huì)更復(fù)雜,而且這個(gè)工作對(duì)于高性能是少不了的。和一般 HTAP 數(shù)據(jù)庫(kù)很難實(shí)施經(jīng)過有效設(shè)計(jì)的存儲(chǔ)相比,SPL 將冷熱數(shù)據(jù)分離后可以從容不迫地像以前 TP/AP 分離時(shí)那樣實(shí)施更高效的存儲(chǔ)組織,這樣更能將 TP 和 AP 雙邊的性能發(fā)揮到極致。相對(duì)大幅的性能提升,數(shù)據(jù)組織的工作往往是值得的。
在實(shí)戰(zhàn)中,使用 SPL 存儲(chǔ)和算法提升數(shù)倍數(shù)十倍性能的案例很多。比如在某保險(xiǎn)公司車險(xiǎn)保單跑批的案例( 開源 SPL 優(yōu)化保險(xiǎn)公司跑批優(yōu)從 2 小時(shí)到 17 分鐘 )中,使用 SPL 將計(jì)算時(shí)間從 2 小時(shí)縮短到 17 分鐘。這里使用 SPL 接管存儲(chǔ)后再利用 SPL 特有的遍歷復(fù)用技術(shù)(在對(duì)大數(shù)據(jù)的一次遍歷過程中實(shí)現(xiàn)多種運(yùn)算)有效地減少外了存訪問量,同時(shí)將涉及對(duì)一個(gè)大表進(jìn)行三次關(guān)聯(lián)和匯總的運(yùn)算只需要遍歷一次(SQL 要將大表遍歷三次),并在關(guān)聯(lián)運(yùn)算上采用了不同的算法,因此獲得了巨大的性能提升。
還有在 開源 SPL 將銀行手機(jī)賬戶查詢的預(yù)先關(guān)聯(lián)變成實(shí)時(shí)關(guān)聯(lián) 的案例中,使用 SPL 將原本只能預(yù)關(guān)聯(lián)的手機(jī)賬戶查詢變成實(shí)時(shí)關(guān)聯(lián),同時(shí)服務(wù)器數(shù)量從 6 臺(tái)降為 1 臺(tái)。這里充分利用了 SPL 的有序存儲(chǔ)機(jī)制,一次性讀取整個(gè)賬戶數(shù)據(jù)時(shí)可以有效減少硬盤時(shí)間(物理存儲(chǔ)連續(xù)),再借助區(qū)分維表和事實(shí)表的外鍵實(shí)時(shí)關(guān)聯(lián)技術(shù)使用單機(jī)就能完成實(shí)時(shí)關(guān)聯(lián)查詢,性能提升明顯,硬件需求也降低了許多。
基于 SPL 的 HTAP,并不止于 T+0 和高性能。
數(shù)據(jù)計(jì)算(主要指 OLAP 場(chǎng)景)一向有兩個(gè)難點(diǎn),跑得慢(性能)和寫得簡(jiǎn)單(開發(fā)效率)。前者我們說過了,后者使用 SPL 還可以獲得很大改善。
現(xiàn)在我們處理數(shù)據(jù)還主要基于 SQL(其他高級(jí)語(yǔ)言太麻煩),但 SQL 仍然有很多不好描述的運(yùn)算,這個(gè)原因主要是 SQL 的理論限制,這里我們不多說,感興趣的小伙伴可以閱讀這篇文章: 寫著簡(jiǎn)單跑得又快的數(shù)據(jù)庫(kù)語(yǔ)言 SPL
鑒于 SQL 在復(fù)雜計(jì)算方面的描述能力(開發(fā)效率)太差,SPL 并沒有沿用 SQL 體系,而是基于新的理論重新設(shè)計(jì)了一套敏捷計(jì)算語(yǔ)法,基于這個(gè)語(yǔ)法再實(shí)施計(jì)算尤其復(fù)雜計(jì)算會(huì)更有優(yōu)勢(shì),寫法也更簡(jiǎn)單。
我們可以通過電商系統(tǒng)中常見的漏斗運(yùn)算來感受一下 SPL 的簡(jiǎn)潔性。
SQL(oracle)實(shí)現(xiàn):
SPL 實(shí)現(xiàn):
oracle 的 SQL 寫出來要三十多行,理解起來有相當(dāng)?shù)碾y度。而且這段代碼和漏斗的步驟數(shù)量相關(guān),每增加一步數(shù)就要再增加一段子查詢。這種 SQL,寫出來就已經(jīng)不易,性能優(yōu)化更是無從談起。
相比之下,SPL 就簡(jiǎn)單得多,處理任意步驟數(shù)都是這段代碼。
好了,說到這里各位看官應(yīng)該了解了,SPL 并不是一個(gè) HTAP 數(shù)據(jù)庫(kù),而是提供了一種新思路來滿足 HTAP 的需要。HTAP 數(shù)據(jù)庫(kù)很熱,廠商的宣傳口號(hào)很容易讓我們陷入只能使用一種數(shù)據(jù)庫(kù)來解決 HTAP 問題的藩籬而不自知。但只要我們?cè)俣嘞胍稽c(diǎn)就會(huì)發(fā)現(xiàn),HTAP 是一種合理的業(yè)務(wù)需求,滿足它或許并不需要一種新數(shù)據(jù)庫(kù),而是能夠解決問題的新技術(shù)和架構(gòu),而 SPL 提供了這種可能。
SPL下載e/
SPL開源roc
內(nèi)存數(shù)據(jù)庫(kù) json的介紹就聊到這里吧,感謝你花時(shí)間閱讀本站內(nèi)容,更多關(guān)于內(nèi)存數(shù)據(jù)庫(kù) json,內(nèi)存數(shù)據(jù)庫(kù)優(yōu)化:將數(shù)據(jù)存儲(chǔ)為 ON 格式,HTAP需求不能被HTAP數(shù)據(jù)庫(kù)解決的信息別忘了在本站進(jìn)行查找喔。
香港服務(wù)器選創(chuàng)新互聯(lián),2H2G首月10元開通。
創(chuàng)新互聯(lián)(www.cdcxhl.com)互聯(lián)網(wǎng)服務(wù)提供商,擁有超過10年的服務(wù)器租用、服務(wù)器托管、云服務(wù)器、虛擬主機(jī)、網(wǎng)站系統(tǒng)開發(fā)經(jīng)驗(yàn)。專業(yè)提供云主機(jī)、虛擬主機(jī)、域名注冊(cè)、VPS主機(jī)、云服務(wù)器、香港云服務(wù)器、免備案服務(wù)器等。
網(wǎng)頁(yè)題目:內(nèi)存數(shù)據(jù)庫(kù)優(yōu)化:將數(shù)據(jù)存儲(chǔ)為ON格式(內(nèi)存數(shù)據(jù)庫(kù)json)
標(biāo)題網(wǎng)址:http://fisionsoft.com.cn/article/dpphiji.html


咨詢
建站咨詢
