<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          內(nèi)存數(shù)據(jù)庫(kù)及技術(shù)選型

          共 4170字,需瀏覽 9分鐘

           ·

          2021-09-17 09:15


          -     前言    -


          依靠?jī)?nèi)存來(lái)存儲(chǔ)數(shù)據(jù)的數(shù)據(jù)庫(kù)管理系統(tǒng),也稱為內(nèi)存數(shù)據(jù)庫(kù),成為了解決高并發(fā)、低時(shí)延數(shù)據(jù)管理需求的技術(shù)路線。近年來(lái),隨著動(dòng)態(tài)隨機(jī)存儲(chǔ)器(DRAM)容量的上升和單位價(jià)格的下降,使大量數(shù)據(jù)在內(nèi)存中的存儲(chǔ)和處理成為可能,Redis、Memcached等內(nèi)存數(shù)據(jù)庫(kù)管理軟件逐漸成熟,應(yīng)用范圍越來(lái)越廣。

          未來(lái)幾年,隨著非易失性存儲(chǔ)器件(NVM)逐步投入商用,新硬件將會(huì)給內(nèi)存數(shù)據(jù)庫(kù)帶來(lái)更大的發(fā)展機(jī)遇。 

          本白皮書闡述了內(nèi)存數(shù)據(jù)庫(kù)的概念,梳理了內(nèi)存數(shù)據(jù)庫(kù)的發(fā)展歷史和核心屬性,分析了在電商、直播和電信行業(yè)的典型應(yīng)用場(chǎng)景,并對(duì)主流的內(nèi)存數(shù)據(jù)庫(kù)進(jìn)行了介紹和對(duì)比,從技術(shù)和管理兩個(gè)角度提出了產(chǎn)品選型和硬件選型建議,并總結(jié)了內(nèi)存數(shù)據(jù)庫(kù)的發(fā)展趨勢(shì):

          內(nèi)存數(shù)據(jù)庫(kù)又稱主存數(shù)據(jù)庫(kù)(In-memory或main memory database),是一種主要依靠?jī)?nèi)存來(lái)存儲(chǔ)數(shù)據(jù)的數(shù)據(jù)庫(kù)管理系統(tǒng)。

          在數(shù)據(jù)庫(kù)技術(shù)中,有一類內(nèi)存優(yōu)化技術(shù),是在傳統(tǒng)的磁盤數(shù)據(jù)庫(kù)中,增加內(nèi)存緩沖池,也就是常說(shuō)的共享內(nèi)存技術(shù),其主要目的是最小化磁盤訪問(wèn)。

          而內(nèi)存數(shù)據(jù)庫(kù)技術(shù),幾乎把整個(gè)數(shù)據(jù)庫(kù)放進(jìn)了內(nèi)存中,相較于傳統(tǒng)數(shù)據(jù)庫(kù)使用的磁盤讀寫機(jī)制,內(nèi)存具備更極致的讀寫速度,性能會(huì)比傳統(tǒng)的磁盤數(shù)據(jù)庫(kù)有數(shù)量級(jí)的提升。因此內(nèi)存數(shù)據(jù)庫(kù)通常被用于對(duì)性能要求較高的場(chǎng)景中。


          -     內(nèi)存技術(shù)的成熟    -


          內(nèi)存器件的容量密度在快速上升。最早期的內(nèi)存和今天常見的內(nèi)存條不同,是直接焊接在主板上的內(nèi)存芯片,容量普遍在64KB以下。

          • 1982年之后,隨著80286芯片的推出,開始出現(xiàn)30線(Pin)256KB的SIMM內(nèi)存條,被認(rèn)為是內(nèi)存領(lǐng)域的開山鼻祖;
          • 在80年代末,386和486時(shí)代的PC向16位發(fā)展,出現(xiàn)了72線的SIMM內(nèi)存,單條容量可達(dá)512KB-2MB;90年代初,EDODRAM開始盛行,單條容量在4MB-16MB;
          • 在1995年,計(jì)算機(jī)系統(tǒng)進(jìn)入圖形界面時(shí)代,內(nèi)存技術(shù)也發(fā)生了重要變革,支持64位的SDRAM成為一代經(jīng)典,在性能上有極大提升,容量也達(dá)到了64MB;
          • 隨后的十幾年,內(nèi)存容量開始穩(wěn)定地遵循摩爾定律翻倍,持續(xù)到2019年,DDR3內(nèi)存的容量已經(jīng)可以達(dá)到16GB。

          內(nèi)存器件的單位價(jià)格也在逐年快速下降。從1970年代至今,內(nèi)存每兆字節(jié)的價(jià)格下降了近9個(gè)數(shù)量級(jí),根據(jù)2019年最新的統(tǒng)計(jì)數(shù)據(jù),平均花費(fèi)3-5美元就可以購(gòu)買到1GB的內(nèi)存。內(nèi)存容量的持續(xù)上漲以及價(jià)格的下降,使大量數(shù)據(jù)在內(nèi)存中進(jìn)行存儲(chǔ)和操作成為可能。




          -     內(nèi)存技術(shù)的瓶頸與突破    -


          過(guò)去幾十年,計(jì)算機(jī)系統(tǒng)的存儲(chǔ)體系結(jié)構(gòu)被設(shè)計(jì)成如圖2的金字塔形模型。這樣的存儲(chǔ)結(jié)構(gòu)利用局部性原理盡量將熱數(shù)據(jù)存儲(chǔ)在靠近CPU的地方。在傳統(tǒng)模式中,內(nèi)存數(shù)據(jù)庫(kù)的所有數(shù)據(jù)都保存在DRAM介質(zhì)中。

          雖然DRAM的價(jià)格已經(jīng)大幅下降,但在海量數(shù)據(jù)存儲(chǔ)的需求下,內(nèi)存的成本依然是很大的問(wèn)題;另外由于DRAM屬于易失性介質(zhì),掉電后所有數(shù)據(jù)都會(huì)丟失,需要額外考慮數(shù)據(jù)持久化的方案,會(huì)極大的限制內(nèi)存數(shù)據(jù)庫(kù)的性能和使用場(chǎng)景。



          針對(duì)DRAM現(xiàn)存的一些硬件瓶頸,業(yè)界已經(jīng)研發(fā)出了持久型內(nèi)存(PM,Persistent Memory),學(xué)術(shù)名為存儲(chǔ)級(jí)內(nèi)存(SCM,Storage ClassMemory),和DRAM一樣,都是安裝在機(jī)器主板的內(nèi)存槽接口中。

          參考圖2,DDRDRAM及以上的易失性存儲(chǔ)CPU可以通過(guò)load/store指令直接訪問(wèn),而NANDSSD及以下的非易失性存儲(chǔ)CPU無(wú)法直接訪問(wèn),需要先加載到易失性存儲(chǔ)中,可以看出DRAM與SSD之間存在巨大的性能鴻溝,在訪問(wèn)時(shí)延上出現(xiàn)了跳變。

          而持久型內(nèi)存位于DRAM與SSD之間,以load/store指令的方式訪問(wèn)并支持?jǐn)?shù)據(jù)的持久化,也填補(bǔ)了DRAM與SSD在時(shí)延上存在的鴻溝。相比DRAM,持久型內(nèi)存在性能上處于劣勢(shì),但容量和價(jià)格均占據(jù)優(yōu)勢(shì);相比NANDSSD,持久型內(nèi)存在性能上處于優(yōu)勢(shì),但容量和價(jià)值處于劣勢(shì)。


          -     內(nèi)存數(shù)據(jù)庫(kù)的發(fā)展歷程    -



          內(nèi)存數(shù)據(jù)庫(kù)的發(fā)展主要經(jīng)歷了雛形期、理論成熟期、市場(chǎng)成長(zhǎng)期及高速發(fā)展期四個(gè)階段。



          -     內(nèi)存數(shù)據(jù)庫(kù)的優(yōu)勢(shì)與挑戰(zhàn)    -



          內(nèi)存數(shù)據(jù)庫(kù)在提供高性能讀寫能力的同時(shí),也存在由于器件導(dǎo)致的數(shù)據(jù)易失問(wèn)題,需要在應(yīng)用中引起注意。

          1).優(yōu)勢(shì):高性能讀寫

          由于省去了磁盤I/O的開銷,在數(shù)據(jù)訪問(wèn)的時(shí)延上內(nèi)存型數(shù)據(jù)庫(kù)可以達(dá)到傳統(tǒng)關(guān)系型數(shù)據(jù)庫(kù)無(wú)法達(dá)到的微秒級(jí)別,單機(jī)內(nèi)存數(shù)據(jù)庫(kù)的QPS也可以達(dá)到10萬(wàn)以上,配合上用戶態(tài)協(xié)議棧、內(nèi)存大頁(yè)等技術(shù)之后,更是可以輕松達(dá)到幾十萬(wàn)QPS的量級(jí),這是傳統(tǒng)的關(guān)系型數(shù)據(jù)庫(kù)很難做到的。

          2).挑戰(zhàn):內(nèi)存數(shù)據(jù)易失

          內(nèi)存數(shù)據(jù)庫(kù)當(dāng)前主要使用DRAM作為存儲(chǔ)介質(zhì),DRAM屬于掉電易失性介質(zhì),為了保證數(shù)據(jù)的可靠性,內(nèi)存數(shù)據(jù)庫(kù)需要考慮持久化方案。現(xiàn)階段主流的鍵值對(duì)內(nèi)存數(shù)據(jù)庫(kù)對(duì)于持久化的支持較為薄弱,持久化性能也不如傳統(tǒng)數(shù)據(jù)庫(kù)。

          內(nèi)存型數(shù)據(jù)庫(kù)中克服掉電易失性來(lái)保障數(shù)據(jù)可靠性的方法主要是以下兩種:

          • 一是每次操作都進(jìn)行數(shù)據(jù)持久化,這種方式勢(shì)必會(huì)大幅降低內(nèi)存數(shù)據(jù)庫(kù)的性能;
          • 二是按照一定的策略進(jìn)行操作的持久化,這樣可以達(dá)到一定程度的優(yōu)化和緩解,但極端情況下數(shù)據(jù)丟失的情況仍不可避免。

          現(xiàn)階段新型的非易失性存儲(chǔ)器件已經(jīng)發(fā)布但尚未規(guī)模化商用。相信解決了存儲(chǔ)易失性的難題后,內(nèi)存數(shù)據(jù)庫(kù)會(huì)具備更多的應(yīng)用。


          -     內(nèi)存數(shù)據(jù)庫(kù)的分類    -



          主流的內(nèi)存數(shù)據(jù)庫(kù)可分為鍵值對(duì)內(nèi)存數(shù)據(jù)庫(kù)、關(guān)系型內(nèi)存數(shù)據(jù)庫(kù)以及其他數(shù)據(jù)庫(kù),用戶可根據(jù)自身的業(yè)務(wù)需求選擇適合自己的內(nèi)存數(shù)據(jù)庫(kù)類型。


          1).鍵值對(duì)內(nèi)存數(shù)據(jù)庫(kù)

          鍵值對(duì)(KV, Key-Value)內(nèi)存數(shù)據(jù)庫(kù)指的是一種以鍵值對(duì)為主要存儲(chǔ)結(jié)構(gòu)的內(nèi)存數(shù)據(jù)庫(kù)。鍵值對(duì)內(nèi)存數(shù)據(jù)庫(kù)通常按鍵進(jìn)行數(shù)據(jù)存取操作,值通常支持各種數(shù)據(jù)類型,使用鍵值存儲(chǔ)的數(shù)據(jù)模型相對(duì)簡(jiǎn)單,更適合要求性能高、計(jì)算簡(jiǎn)單的一些場(chǎng)景。鍵值對(duì)內(nèi)存數(shù)據(jù)庫(kù)的典型代表為 Redis、Memcached 和 Aerospike。

          2).關(guān)系型內(nèi)存數(shù)據(jù)庫(kù)

          關(guān)系型內(nèi)存數(shù)據(jù)庫(kù)是一種基于數(shù)據(jù)關(guān)系模型的內(nèi)存數(shù)據(jù)庫(kù)。關(guān)系型內(nèi)存數(shù)據(jù)庫(kù)將傳統(tǒng)的關(guān)系型數(shù)據(jù)庫(kù)表搬到內(nèi)存中,支持通過(guò) SQL語(yǔ)句的方式實(shí)現(xiàn)對(duì)內(nèi)存數(shù)據(jù)的訪問(wèn),在實(shí)現(xiàn)復(fù)雜分析功能的同時(shí),提升數(shù)據(jù)訪問(wèn)速度。關(guān)系型內(nèi)存數(shù)據(jù)庫(kù)的典型代表軟件為 Oracle TimesTen、SAP HANA、MemSQL 和 SQLite。

          3).其他類型的內(nèi)存數(shù)據(jù)庫(kù)

          除鍵值對(duì)內(nèi)存數(shù)據(jù)庫(kù)、關(guān)系型內(nèi)存數(shù)據(jù)庫(kù)之外,其他比較小眾的內(nèi)存數(shù)據(jù)庫(kù)稱為其他內(nèi)存數(shù)據(jù)庫(kù),比如圖內(nèi)存數(shù)據(jù)庫(kù) RedisGraph 等。


          -     內(nèi)存數(shù)據(jù)庫(kù)產(chǎn)品現(xiàn)狀    -



          DB-Engines Ranking 是公認(rèn)較權(quán)威的數(shù)據(jù)庫(kù)排行,我們選取了其中最為活躍的 10 款典型內(nèi)存數(shù)據(jù)庫(kù)進(jìn)行對(duì)比。開源產(chǎn)品中,Redis 和 Memcached 是最受歡迎的兩款鍵值對(duì)內(nèi)存數(shù)據(jù)庫(kù);而 SQLite 是最受歡迎的關(guān)系型內(nèi)存數(shù)據(jù)庫(kù)。表中大部分的關(guān)系型內(nèi)存數(shù)據(jù)庫(kù)為商用數(shù)據(jù)庫(kù),其中熱度最高的是 SAP HANA。


          早在 1995 年就發(fā)布第一版的Oracle TimesTen 仍然在榜上活躍;2014 年新發(fā)布 Apache Ignite 兼容鍵值和關(guān)系型數(shù)據(jù)結(jié)構(gòu),熱度正穩(wěn)步攀升。事務(wù)支持方面,大部分的關(guān)系型內(nèi)存數(shù)據(jù)庫(kù)稱可以支持 ACID,但都需要在性能上作出妥協(xié)。




          -     內(nèi)存數(shù)據(jù)庫(kù)選型建議    -



          技術(shù)服務(wù)于業(yè)務(wù),內(nèi)存數(shù)據(jù)庫(kù)的選型應(yīng)首先遵循業(yè)務(wù)場(chǎng)景的需求。業(yè)務(wù)特性決定了數(shù)據(jù)的應(yīng)用特性,包括數(shù)據(jù)量、并發(fā)度、讀寫特性、一致性、響應(yīng)時(shí)間、操作復(fù)雜度、業(yè)務(wù)連續(xù)性等要求,對(duì)應(yīng)數(shù)據(jù)庫(kù)的一致性、容錯(cuò)性、擴(kuò)展性、安全性等技術(shù)要求。在做內(nèi)存數(shù)據(jù)庫(kù)的選型前,建議先梳理業(yè)務(wù)需求并進(jìn)行量化;再將核心數(shù)據(jù)應(yīng)用特性映射成數(shù)據(jù)庫(kù)技術(shù)要求;最后按篩選出的技術(shù)要求進(jìn)行選型。


          1).技術(shù)因素

          按照技術(shù)要求進(jìn)行內(nèi)存數(shù)據(jù)庫(kù)選型時(shí),可主要考察業(yè)務(wù)的性能、一致性要求和 SQL 兼容性三個(gè)因素。



          業(yè)務(wù)是否有很高的性能要求?一般有高并發(fā)、低時(shí)延讀寫要求的業(yè)務(wù),如游戲?qū)崟r(shí)排行、直播粉絲關(guān)注等,建議選擇內(nèi)存數(shù)據(jù)庫(kù)。


          業(yè)務(wù)數(shù)據(jù)是否要求強(qiáng)一致性?如果業(yè)務(wù)對(duì)數(shù)據(jù)的可靠性和一致性要求較高、需要 ACID 級(jí)別的事務(wù)支持,則建議使用 MySQL 等傳統(tǒng)的關(guān)系型數(shù)據(jù)庫(kù)。但需要注意的是,強(qiáng)一致性的要求會(huì)對(duì)數(shù)據(jù)庫(kù)的性能造成一定的影響;如果需要兼具高性能和強(qiáng)一致性,則需要在應(yīng)用架構(gòu)層面進(jìn)行優(yōu)化,單靠數(shù)據(jù)庫(kù)的能力還無(wú)法實(shí)現(xiàn)。


          數(shù)據(jù)處理是否要求 SQL 兼容性?在高性能要求的場(chǎng)景下,業(yè)務(wù)中如果數(shù)據(jù)結(jié)構(gòu)固定、有復(fù)雜的關(guān)聯(lián)計(jì)算要求,或是需要 SQL 語(yǔ)法支持的情況,建議使用關(guān)系型內(nèi)存數(shù)據(jù)庫(kù);對(duì)于數(shù)據(jù)結(jié)構(gòu)多變、擴(kuò)展性要求高、數(shù)據(jù)模型和操作簡(jiǎn)單的場(chǎng)景,建議使用鍵值對(duì)內(nèi)存數(shù)據(jù)庫(kù)。

          除了這三條考察指標(biāo),還可以結(jié)合數(shù)據(jù)容量、成本、擴(kuò)展性、可維護(hù)性等需求進(jìn)行綜合考量。

          2).非技術(shù)因素

          上述選型方法主要考量的是技術(shù)因素,除此以外還可以結(jié)合實(shí)際情況,引入一些其他維度的考量,進(jìn)行綜合評(píng)估,最終挑選出適合的產(chǎn)品。包括但不限于以下維度:

          1. 生態(tài)成熟度。指數(shù)據(jù)庫(kù)產(chǎn)品的狀態(tài),包括各種配套工具、技術(shù)架構(gòu)成熟度、代碼質(zhì)量、開發(fā)模式、社區(qū)建設(shè)、商業(yè)支持服務(wù)、版權(quán)協(xié)議等;

          2. 應(yīng)用架構(gòu)適配度。指應(yīng)用架構(gòu)對(duì)數(shù)據(jù)庫(kù)架構(gòu)的兼容性、以及適配改造友好度,包括技術(shù)架構(gòu)適配、開發(fā)語(yǔ)言適配等;

          3. 團(tuán)隊(duì)適應(yīng)度。指開發(fā)團(tuán)隊(duì)、維護(hù)團(tuán)隊(duì)對(duì)數(shù)據(jù)庫(kù)的熟悉程度、偏好程度、學(xué)習(xí)成本以及配套運(yùn)維工具等。


          瀏覽 65
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  淫色人妻一区二区三区 | 欧美性爱网址在线观看 | 小黄网站在线观看 | 五月激情丁香 | 欧美日韩在线一区 |