1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

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

        共 4170字,需瀏覽 9分鐘

         ·

        2021-09-30 22:51


        -     前言    -


        依靠?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ī)遇。 

        本白皮書(shū)闡述了內(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)的磁盤(pán)數(shù)據(jù)庫(kù)中,增加內(nèi)存緩沖池,也就是常說(shuō)的共享內(nèi)存技術(shù),其主要目的是最小化磁盤(pán)訪問(wèn)。

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


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


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

        • 1982年之后,隨著80286芯片的推出,開(kāi)始出現(xiàn)30線(Pin)256KB的SIMM內(nèi)存條,被認(rèn)為是內(nèi)存領(lǐng)域的開(kāi)山鼻祖;
        • 在80年代末,386和486時(shí)代的PC向16位發(fā)展,出現(xiàn)了72線的SIMM內(nèi)存,單條容量可達(dá)512KB-2MB;90年代初,EDODRAM開(kāi)始盛行,單條容量在4MB-16MB;
        • 在1995年,計(jì)算機(jī)系統(tǒng)進(jìn)入圖形界面時(shí)代,內(nèi)存技術(shù)也發(fā)生了重要變革,支持64位的SDRAM成為一代經(jīng)典,在性能上有極大提升,容量也達(dá)到了64MB;
        • 隨后的十幾年,內(nèi)存容量開(kā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ù)在提供高性能讀寫(xiě)能力的同時(shí),也存在由于器件導(dǎo)致的數(shù)據(jù)易失問(wèn)題,需要在應(yīng)用中引起注意。

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

        由于省去了磁盤(pán)I/O的開(kāi)銷,在數(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ī)?;逃谩O嘈沤鉀Q了存儲(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ì)比。開(kāi)源產(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ā)度、讀寫(xiě)特性、一致性、響應(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í)延讀寫(xiě)要求的業(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ì)量、開(kāi)發(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)適配、開(kāi)發(fā)語(yǔ)言適配等;

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

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

        手機(jī)掃一掃分享

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

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            操Bxx免费在线视频 | 国产精品久久久久久久久久久久久久 | 久久天天躁狠狠躁夜夜躁2014 | 2021天天干夜夜操 | 黄色欧美在线 | 国产精品三级久久久久三级 | 亚洲欧美精品一区 | 小太正脱裤子裸体网站 | 欧美在线看片 | 插逼视频网站 |