国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      內(nèi)存關(guān)系數(shù)據(jù)庫(kù)的數(shù)據(jù)組織及訪問(wèn)方法

      文檔序號(hào):9911245閱讀:674來(lái)源:國(guó)知局
      內(nèi)存關(guān)系數(shù)據(jù)庫(kù)的數(shù)據(jù)組織及訪問(wèn)方法
      【技術(shù)領(lǐng)域】
      [0001]本發(fā)明屬于計(jì)算機(jī)技術(shù)領(lǐng)域,具體涉及一種關(guān)系數(shù)據(jù)庫(kù)在內(nèi)存中的數(shù)據(jù)組織及訪問(wèn)方法。
      [0002]背景意義
      [0003]關(guān)系數(shù)據(jù)庫(kù)(relat1naldatabase)是一種采用關(guān)系模型作為數(shù)據(jù)的組織方式。關(guān)系數(shù)據(jù)庫(kù)的特點(diǎn)在于將具有相同屬性的數(shù)據(jù)獨(dú)立地存儲(chǔ)在一個(gè)表中。用戶(hù)對(duì)數(shù)據(jù)庫(kù)里的表進(jìn)行查詢(xún)、插入、刪除和連接等操作,實(shí)際是讀、寫(xiě)存儲(chǔ)設(shè)備上的數(shù)據(jù)。要從表中數(shù)據(jù)的邏輯地址找到其在存儲(chǔ)設(shè)備上的物理位置,需要有一個(gè)索引結(jié)構(gòu)。因此,訪問(wèn)存儲(chǔ)設(shè)備的性能對(duì)數(shù)據(jù)庫(kù)的性能有至關(guān)重要的影響。
      [0004]內(nèi)存關(guān)系數(shù)據(jù)庫(kù)(in-memorydatabase)是指將關(guān)系數(shù)據(jù)庫(kù)的部分?jǐn)?shù)據(jù)或全部數(shù)據(jù)存放在內(nèi)存中。目前,內(nèi)存數(shù)據(jù)庫(kù)中的數(shù)據(jù)在物理內(nèi)存中有兩種組織及訪問(wèn)方式:
      [0005]1.現(xiàn)有技術(shù)一:數(shù)據(jù)庫(kù)的表以文件的形式存放在內(nèi)存中。這種方式下,訪問(wèn)表中的數(shù)據(jù)實(shí)際是訪問(wèn)文件系統(tǒng)中的文件,需要調(diào)用文件系統(tǒng)的接口,例如read()、write()。訪問(wèn)數(shù)據(jù)庫(kù)的性能依賴(lài)訪問(wèn)文件的性能。
      [0006]現(xiàn)有技術(shù)一有以下缺點(diǎn):
      [0007]應(yīng)用程序訪問(wèn)表中的數(shù)據(jù)需要至少一次拷貝操作,即把數(shù)據(jù)從文件系統(tǒng)拷貝到用戶(hù)緩存。
      [0008]訪問(wèn)表的數(shù)據(jù)需要切換內(nèi)核態(tài),并經(jīng)過(guò)文件系統(tǒng)的多個(gè)軟件層次,例如Linux操作系統(tǒng)中的虛擬文件系統(tǒng)層(virtual file system)。因此會(huì)有較大的性能開(kāi)銷(xiāo)。
      [0009]所以,現(xiàn)有技術(shù)一在組織和訪問(wèn)表的過(guò)程中有較大的軟件層性能開(kāi)銷(xiāo)。
      [0010]2.現(xiàn)有技術(shù)二:使用專(zhuān)有內(nèi)存管理機(jī)制管理數(shù)據(jù)庫(kù)所使用的內(nèi)存。例如目前卡耐基梅隆大學(xué)和Intel的聯(lián)合研究 “Let,s Talk About Storage&Recovery Methods forNon-Volatile Memory Database Systems”,In Proceedings of the 2015ACM SIGMODInternat1nal Conference on Management of Data,Joy Arulraj,Andrew Pavlo,andSubramanya R.Dulloor,ISBN:978-1-4503-2758-9( “談非易失性?xún)?nèi)存數(shù)據(jù)庫(kù)系統(tǒng)的存儲(chǔ)和恢復(fù)方法”,2015美國(guó)計(jì)算機(jī)學(xué)會(huì)SIGMOD數(shù)據(jù)管理國(guó)際會(huì)議,Joy Arulraj ,Andrew Pavlo,and Subramanya R.Dulloor,ISBN: 978-1-4503-2758-9),使用一個(gè)特殊的內(nèi)存分配器給數(shù)據(jù)庫(kù)的表分配內(nèi)存,直接把存放數(shù)據(jù)的物理內(nèi)存映射到一塊用戶(hù)虛擬地址空間。此時(shí)用戶(hù)訪問(wèn)已映射好的內(nèi)存就不再需要拷貝操作。為了確保已映射的物理內(nèi)存不會(huì)丟失,已映射的物理內(nèi)存總是使用固定的用戶(hù)虛擬地址空間,并且在操作系統(tǒng)中保存已有的映射關(guān)系。
      [0011]現(xiàn)有技術(shù)二有以下缺點(diǎn):
      [0012]已有的數(shù)據(jù)持續(xù)占用虛擬地址空間;
      [0013]由于已分配的用戶(hù)虛擬地址空間和物理內(nèi)存有固定的映射關(guān)系,因此需要額外的機(jī)制記錄和回收物理內(nèi)存和虛擬內(nèi)存;
      [0014]數(shù)據(jù)庫(kù)的啟動(dòng)速度慢,需要在用戶(hù)地址空間重建整個(gè)數(shù)據(jù)庫(kù)中數(shù)據(jù)的映射關(guān)系;
      [0015]由于地址映射方式的問(wèn)題,表的大小受限于虛擬地址空間的大小和表的數(shù)量;
      [0016]此外,在表的增長(zhǎng)過(guò)程中會(huì)出現(xiàn)虛擬地址沖突問(wèn)題,需要額外的沖突控制機(jī)制。

      【發(fā)明內(nèi)容】

      [0017]有鑒于此,本發(fā)明提供一種內(nèi)存關(guān)系數(shù)據(jù)庫(kù)的數(shù)據(jù)組織及訪問(wèn)方法,能實(shí)現(xiàn)快速映射和高速訪問(wèn)表中的數(shù)據(jù)。
      [0018]本發(fā)明通過(guò)以下技術(shù)手段解決上述技術(shù)問(wèn)題:
      [0019]內(nèi)存關(guān)系數(shù)據(jù)庫(kù)的數(shù)據(jù)組織方法,包括如下步驟:
      [0020]a)以表的形式組織數(shù)據(jù);
      [0021 ] b)為每個(gè)表建立連續(xù)且獨(dú)立的虛擬地址空間;
      [0022]c)將數(shù)據(jù)在內(nèi)存中的物理地址存儲(chǔ)在表頁(yè)表中;
      [0023]d)將表和表頁(yè)表的映射關(guān)系存放在內(nèi)存關(guān)系數(shù)據(jù)庫(kù)的索引表中;
      [0024]e)用內(nèi)存關(guān)系數(shù)據(jù)庫(kù)管理數(shù)據(jù)和進(jìn)程頁(yè)表的物理內(nèi)存。
      [0025]進(jìn)一步,所述步驟b)中,所述表頁(yè)表為一級(jí)頁(yè)表或多級(jí)頁(yè)表,為多級(jí)頁(yè)表時(shí),其中最后一級(jí)頁(yè)表中存放有數(shù)據(jù)頁(yè)的起始物理地址。
      [0026]進(jìn)一步,所述步驟d)中,索引表的數(shù)據(jù)結(jié)構(gòu)為數(shù)組、鏈表或結(jié)構(gòu)體。
      [0027]進(jìn)一步,所述索引表中保存有表及表頁(yè)表的最尚級(jí)指針,所述最尚級(jí)指針指向表頁(yè)表。
      [0028]內(nèi)存關(guān)系數(shù)據(jù)庫(kù)的數(shù)據(jù)訪問(wèn)方法,包括如下步驟:
      [0029]I)建立映射;具體包括如下步驟:
      [0030]11)接收到進(jìn)程為表建立映射的請(qǐng)求;
      [0031]12)從發(fā)出請(qǐng)求的進(jìn)程的虛擬地址空間中獲得一塊獨(dú)立且連續(xù)的虛擬地址空間,作為要訪問(wèn)的表在進(jìn)程中的虛擬地址空間,并返回表在虛擬地址空間的起始地址;
      [0032]13)利用控制寄存器,訪問(wèn)進(jìn)程的進(jìn)程頁(yè)表,找到表的虛擬地址空間在進(jìn)程頁(yè)表中對(duì)應(yīng)的條目;
      [0033 ] 14)在內(nèi)存關(guān)系數(shù)據(jù)庫(kù)的索引表中找到表的最高級(jí)指針;
      [0034]15)將最高級(jí)指針的值寫(xiě)入進(jìn)程頁(yè)表中對(duì)應(yīng)的條目,即完成表在進(jìn)程頁(yè)表中的映射;
      [0035]2)讀數(shù)據(jù)或?qū)憯?shù)據(jù);
      [0036]讀數(shù)據(jù)時(shí)包括如下步驟:
      [0037]211)接收進(jìn)程讀取表中數(shù)據(jù)的請(qǐng)求;
      [0038]212)通過(guò)表在虛擬地址空間的起始虛擬地址加上進(jìn)程所請(qǐng)求的數(shù)據(jù)在表中的偏移量,計(jì)算出所請(qǐng)求的數(shù)據(jù)的虛擬地址;
      [0039]213)通過(guò)內(nèi)存映射設(shè)備和連接到進(jìn)程頁(yè)表的表頁(yè)表,將步驟212)中獲得的數(shù)據(jù)的虛擬地址轉(zhuǎn)換為數(shù)據(jù)在內(nèi)存關(guān)系數(shù)據(jù)庫(kù)所管理的內(nèi)存上的物理地址;
      [0040]214)進(jìn)程訪問(wèn)物理地址所指數(shù)據(jù)頁(yè)中的數(shù)據(jù);
      [0041 ]寫(xiě)數(shù)據(jù)時(shí)包括如下步驟:
      [0042]221)接收進(jìn)程向表中寫(xiě)數(shù)據(jù)的請(qǐng)求;
      [0043]222)通過(guò)表在虛擬地址空間的起始虛擬地址,加上進(jìn)程寫(xiě)數(shù)據(jù)的位置在表中的偏移量,計(jì)算出寫(xiě)數(shù)據(jù)的位置的虛擬地址;
      [0044]223)判斷寫(xiě)操作是否需要分配新的存儲(chǔ)空間,如是,則執(zhí)行步驟224),如否,執(zhí)行步驟225);
      [0045]224)從內(nèi)存關(guān)系數(shù)據(jù)庫(kù)所管理的物理內(nèi)存中獲取空閑物理頁(yè)面,并加入到表的表頁(yè)表中,完成映射;
      [0046]225)進(jìn)程將數(shù)據(jù)寫(xiě)入表在內(nèi)存關(guān)系數(shù)據(jù)庫(kù)中對(duì)應(yīng)的物理頁(yè)面,并通過(guò)內(nèi)存映射設(shè)備和插入到進(jìn)程頁(yè)表的表頁(yè)表,將步驟222)中得到的虛擬地址轉(zhuǎn)換為內(nèi)存關(guān)系數(shù)據(jù)庫(kù)管理的內(nèi)存的物理地址,完成映射;
      [0047]3)取消映射;具體包括如下步驟
      [0048]31)接收到進(jìn)程為表取消映射的請(qǐng)求;
      [0049]32)釋放表建立映射時(shí)獲得的進(jìn)程中的虛擬地址空間;
      [0050]33)清除虛擬地址空間在進(jìn)程的進(jìn)程頁(yè)表中對(duì)應(yīng)的條目。
      [0051]進(jìn)一步,步驟12)中,返回的表在虛擬地址空間的起始地址記錄在關(guān)系數(shù)據(jù)庫(kù)中、用戶(hù)進(jìn)程中或索引表中。
      [0052]與現(xiàn)有技術(shù)相比,本發(fā)明的有益效果如下:
      [0053 ] 一、數(shù)據(jù)訪問(wèn)速度快。原因有二:
      [0054]1.使用內(nèi)存映射硬件設(shè)備進(jìn)行虛擬地址到物理地址的轉(zhuǎn)換,充分發(fā)揮內(nèi)存的高訪問(wèn)速度。
      [0055]2.利用表頁(yè)表的形式組織數(shù)據(jù)庫(kù)中表,可以保證單個(gè)表具有獨(dú)立且連續(xù)的虛擬地址空間,由于數(shù)據(jù)的組織使用連續(xù)的地址空間,可以從讀寫(xiě)數(shù)據(jù)的起始虛擬地址開(kāi)始,一次性訪問(wèn)讀寫(xiě)長(zhǎng)度內(nèi)的數(shù)據(jù)頁(yè),不需要用軟件反復(fù)查找不同數(shù)據(jù)頁(yè)的虛擬地址。
      [0056]二、常數(shù)時(shí)間內(nèi)建立表的物理地址到虛擬地址的映射。原因:表的組織格式與進(jìn)程頁(yè)表格式相同,實(shí)現(xiàn)零切換,無(wú)需重建,只需要將表頁(yè)表的指針插入進(jìn)程頁(yè)表,是常數(shù)時(shí)間的操作。
      [0057]良好的表保護(hù),不需要額外的寫(xiě)保護(hù)機(jī)制。原因:不同的表各有獨(dú)立的虛擬地址空間,內(nèi)存關(guān)系數(shù)據(jù)庫(kù)在存儲(chǔ)介質(zhì)上的信息受進(jìn)程虛擬地址和內(nèi)存映射硬件設(shè)備的保護(hù),不會(huì)誤寫(xiě)。
      【附圖說(shuō)明】
      [0058]下面結(jié)合附圖和實(shí)施例對(duì)本發(fā)明作進(jìn)一步描述。
      [0059]圖1示出了內(nèi)存關(guān)系數(shù)據(jù)庫(kù)的數(shù)據(jù)組織方法的流程示意圖;
      [0060]圖2示出了內(nèi)存關(guān)系數(shù)據(jù)庫(kù)的數(shù)據(jù)訪問(wèn)方法的流程示意圖。
      【具體實(shí)施方式】
      [0061 ]以下將結(jié)合附圖對(duì)本發(fā)明進(jìn)行詳細(xì)說(shuō)明。
      [0062]—、內(nèi)存關(guān)系數(shù)據(jù)庫(kù)的數(shù)據(jù)組織方法
      [0063]參見(jiàn)圖1,包括如下步驟:
      [0064]a)以表的形式組織數(shù)據(jù);內(nèi)存關(guān)系數(shù)據(jù)庫(kù)的數(shù)據(jù)以一個(gè)或
      當(dāng)前第1頁(yè)1 2 
      網(wǎng)友詢(xún)問(wèn)留言 已有0條留言
      • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1