国产精品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>

      一種關(guān)系數(shù)據(jù)緩存及查詢方法及裝置與流程

      文檔序號(hào):11918678閱讀:264來源:國(guó)知局
      一種關(guān)系數(shù)據(jù)緩存及查詢方法及裝置與流程

      本發(fā)明涉及數(shù)據(jù)處理技術(shù)領(lǐng)域,特別涉及一種關(guān)系數(shù)據(jù)緩存及查詢方法及裝置。



      背景技術(shù):

      計(jì)算機(jī)硬件技術(shù)的數(shù)據(jù)交換緩沖區(qū)一般為介于內(nèi)存和CPU之間的存儲(chǔ)模塊,先于內(nèi)存,使得CPU能快速訪問需要的數(shù)據(jù)。軟件技術(shù)中的緩存一般為在內(nèi)存和固態(tài)硬盤中開辟一片區(qū)域,存儲(chǔ)一些經(jīng)常被訪問的數(shù)據(jù),用來補(bǔ)充內(nèi)存的不同以及磁盤訪問過慢的問題。

      目前主流的緩存系統(tǒng)有Memcache d系統(tǒng)和Redis系統(tǒng)。Memcached系統(tǒng)基于Key-Value進(jìn)行數(shù)據(jù)緩存,Key-Value是一種鍵值Key和數(shù)據(jù)Value存儲(chǔ)與訪問方式,比如<1,a>,<2,b>可以通過鍵值1和2,訪問數(shù)據(jù)a和b。Redis系統(tǒng)除了支持Key-Value進(jìn)行數(shù)據(jù)緩存,還可以支持一些基于其他方式的數(shù)據(jù)緩存,例如基于字符串的、哈希表的,列表的、集合的和有序集的。但是上述各數(shù)據(jù)緩存方式雖然簡(jiǎn)單,但是對(duì)于一些復(fù)雜情況,例如關(guān)系數(shù)據(jù)庫的緩存和查詢場(chǎng)景,Memcached系統(tǒng)和Redis系統(tǒng)就沒辦法滿足關(guān)系數(shù)據(jù)庫的查詢需求。

      HBase數(shù)據(jù)庫是一個(gè)分布式的、面向列的開源數(shù)據(jù)庫。但HBase數(shù)據(jù)庫是一個(gè)基于外存的數(shù)據(jù)庫,該數(shù)據(jù)庫緩存數(shù)據(jù)的載體依然是磁盤,雖然有少量數(shù)據(jù)可以緩存到內(nèi)存,但當(dāng)讀取的數(shù)據(jù)超過了內(nèi)存緩存的數(shù)據(jù)量時(shí),讀取性能將會(huì)明顯下降。另外,對(duì)于Hbase數(shù)據(jù)庫而言,在進(jìn)行關(guān)系數(shù)據(jù)緩存時(shí),關(guān)系數(shù)據(jù)需要存儲(chǔ)到不同的列中,在現(xiàn)有的緩存系統(tǒng)中,針對(duì)每個(gè)列都設(shè)置對(duì)應(yīng)的Key-Value,因此造成了Key的冗余,造成存儲(chǔ)空間的浪費(fèi)。另外,在進(jìn)行數(shù)據(jù)存儲(chǔ)和查找時(shí),只能通過Key找Value,而無法實(shí)現(xiàn)整個(gè)關(guān)系數(shù)據(jù)的查找。



      技術(shù)實(shí)現(xiàn)要素:

      本發(fā)明實(shí)施例公開了一種關(guān)系數(shù)據(jù)緩存及查詢方法及裝置,用以提高關(guān)系數(shù)據(jù)的緩存效率,并提高內(nèi)存資源的利用率。

      為達(dá)到上述目的,本發(fā)明實(shí)施例公開了一種關(guān)系數(shù)據(jù)緩存方法,應(yīng)用于電子設(shè)備,該方法包括:

      接收待緩存的關(guān)系數(shù)據(jù),其中所述關(guān)系數(shù)據(jù)中至少包括一個(gè)關(guān)聯(lián)子數(shù)據(jù);

      根據(jù)每個(gè)關(guān)聯(lián)子數(shù)據(jù)與列簇中每列的對(duì)應(yīng)關(guān)系,將每個(gè)關(guān)聯(lián)子數(shù)據(jù)緩存到對(duì)應(yīng)的列中;并

      根據(jù)每列是否緩存了該關(guān)系數(shù)據(jù),更新位圖索引中對(duì)應(yīng)行的位圖標(biāo)識(shí)。

      進(jìn)一步地,所述將每個(gè)關(guān)聯(lián)子數(shù)據(jù)緩存到對(duì)應(yīng)的列中后,所述方法還包括:

      針對(duì)每列,判斷該列對(duì)應(yīng)的過濾器中是否保存有該關(guān)聯(lián)子數(shù)據(jù),如果不存在,則將該關(guān)聯(lián)子數(shù)據(jù)的信息添加到所述過濾器中。

      進(jìn)一步地,所述將每個(gè)關(guān)聯(lián)子數(shù)據(jù)緩存到對(duì)應(yīng)的列中后,所述方法還包括:

      針對(duì)每列,根據(jù)該關(guān)聯(lián)子數(shù)據(jù)緩存的行所在的分區(qū),判斷該列在該分區(qū)中對(duì)應(yīng)的過濾器中是否保存有該關(guān)聯(lián)子數(shù)據(jù),如果不存在,則將該關(guān)聯(lián)子數(shù)據(jù)的信息添加到所述過濾器中。

      進(jìn)一步地,不同的分區(qū)位于同一電子設(shè)備,或不同的電子設(shè)備。

      進(jìn)一步地,所述將每個(gè)關(guān)聯(lián)子數(shù)據(jù)緩存到對(duì)應(yīng)的列中包括:

      針對(duì)每列,識(shí)別該列對(duì)應(yīng)的緩存數(shù)據(jù)的長(zhǎng)度是否固定;

      如果是,直接在該列中緩存該關(guān)聯(lián)子數(shù)據(jù);

      如果否,則根據(jù)該列對(duì)應(yīng)的數(shù)據(jù)長(zhǎng)度,將該列對(duì)應(yīng)的關(guān)聯(lián)子數(shù)據(jù)轉(zhuǎn)換為該數(shù)據(jù)長(zhǎng)度,并在該列中緩存該轉(zhuǎn)換后的關(guān)聯(lián)子數(shù)據(jù)。

      進(jìn)一步地,所述方法還包括:

      按照設(shè)定的時(shí)間間隔,將緩存的關(guān)系數(shù)據(jù)同步到其他系統(tǒng)。

      進(jìn)一步地,所述關(guān)系數(shù)據(jù)緩存在所述電子設(shè)備的內(nèi)存或固態(tài)硬盤上。

      本發(fā)明實(shí)施例提供了一種基于上述關(guān)系數(shù)據(jù)緩存方法的關(guān)系數(shù)據(jù)查詢方法,應(yīng)用于電子設(shè)備,該方法包括:

      接收待查詢的數(shù)據(jù),其中所述數(shù)據(jù)為關(guān)系數(shù)據(jù),或關(guān)系數(shù)據(jù)中的至少一項(xiàng) 關(guān)聯(lián)子數(shù)據(jù);

      將所述數(shù)據(jù)拆分為至少一項(xiàng)關(guān)聯(lián)子數(shù)據(jù);

      針對(duì)每項(xiàng)關(guān)聯(lián)子數(shù)據(jù),根據(jù)緩存該項(xiàng)關(guān)聯(lián)子數(shù)據(jù)的列,判斷該列緩存的關(guān)聯(lián)子數(shù)據(jù)中是否存在該關(guān)聯(lián)子數(shù)據(jù);如果是,根據(jù)所述關(guān)聯(lián)子數(shù)據(jù)所在的位置,查找位圖索引中該位置對(duì)應(yīng)行的位圖標(biāo)識(shí),并根據(jù)所述行的位圖標(biāo)識(shí),在對(duì)應(yīng)的每列相應(yīng)位置提取其他關(guān)聯(lián)子數(shù)據(jù),并組合為關(guān)系數(shù)據(jù);

      將針對(duì)每個(gè)關(guān)聯(lián)子數(shù)據(jù)組合得到的關(guān)第一數(shù)量聯(lián)數(shù)據(jù)的交集作為查詢結(jié)果。

      進(jìn)一步地,所述根據(jù)所述關(guān)聯(lián)子數(shù)據(jù)所在的位置,查找位圖索引中該位置對(duì)應(yīng)行的位圖標(biāo)識(shí)包括:

      根據(jù)該關(guān)聯(lián)子數(shù)據(jù)在該列中緩存的行的行數(shù),在所述位圖索引中根據(jù)緩存有關(guān)聯(lián)子數(shù)據(jù)的第一位圖標(biāo)識(shí),查找第一數(shù)量的第一位圖標(biāo)識(shí)所在位圖索引的行的標(biāo)識(shí)信息,并查找所述行中針對(duì)每列的位圖標(biāo)識(shí),其中所述第一數(shù)量為所述行數(shù);

      所述根據(jù)所述行的位圖標(biāo)識(shí),在對(duì)應(yīng)的每列相應(yīng)位置提取其他關(guān)聯(lián)子數(shù)據(jù)包括:

      根據(jù)所述位圖索引所述行中的每個(gè)第一位圖標(biāo)識(shí),根據(jù)所述第一位圖標(biāo)識(shí)所在的列,針對(duì)該列,按照從前往后的順序識(shí)別所述列中從開始到所述行中出現(xiàn)第一位圖標(biāo)識(shí)的次數(shù),在相應(yīng)的列中提取該對(duì)應(yīng)次數(shù)的行中緩存的其他關(guān)聯(lián)子數(shù)據(jù)。

      進(jìn)一步地,所述判斷該列緩存的關(guān)聯(lián)子數(shù)據(jù)中是否存在該關(guān)聯(lián)子數(shù)據(jù)包括:

      針對(duì)每列,在該列對(duì)應(yīng)的過濾器中,判斷該列存儲(chǔ)的關(guān)聯(lián)子數(shù)據(jù)的信息中是否存在該關(guān)聯(lián)子數(shù)據(jù)。

      進(jìn)一步地,所述判斷該列緩存的關(guān)聯(lián)子數(shù)據(jù)中是否存在該關(guān)聯(lián)子數(shù)據(jù)包括:

      針對(duì)每個(gè)分區(qū)中的每列,在該列對(duì)應(yīng)的每個(gè)過濾器中,判斷該列存儲(chǔ)的關(guān)聯(lián)子數(shù)據(jù)的信息中是否存在該關(guān)聯(lián)子數(shù)據(jù)。

      本發(fā)明實(shí)施例提供了一種關(guān)系數(shù)據(jù)緩存裝置,應(yīng)用于電子設(shè)備,該裝置包 括:

      接收模塊,用于接收待緩存的關(guān)系數(shù)據(jù),其中所述關(guān)系數(shù)據(jù)中至少包括一個(gè)關(guān)聯(lián)子數(shù)據(jù);

      緩存模塊,用于根據(jù)每個(gè)關(guān)聯(lián)子數(shù)據(jù)與列簇中每列的對(duì)應(yīng)關(guān)系,將每個(gè)關(guān)聯(lián)子數(shù)據(jù)緩存到對(duì)應(yīng)的列中;

      更新模塊,用于根據(jù)每列是否緩存了該關(guān)系數(shù)據(jù),更新位圖索引中對(duì)應(yīng)行的位圖標(biāo)識(shí)。

      進(jìn)一步地,所述裝置還包括:

      過濾模塊,用于針對(duì)每列,判斷該列對(duì)應(yīng)的過濾器中是否保存有該關(guān)聯(lián)子數(shù)據(jù),如果不存在,則將該關(guān)聯(lián)子數(shù)據(jù)的信息添加到所述過濾器中。

      進(jìn)一步地,所述裝置還包括:

      過濾模塊,針對(duì)每列,根據(jù)該關(guān)聯(lián)子數(shù)據(jù)緩存的行所在的分區(qū),判斷該列在該分區(qū)中對(duì)應(yīng)的過濾器中是否保存有該關(guān)聯(lián)子數(shù)據(jù),如果不存在,則將該關(guān)聯(lián)子數(shù)據(jù)的信息添加到所述過濾器中。

      進(jìn)一步地,所述緩存模塊,具體用于針對(duì)每列,識(shí)別該列對(duì)應(yīng)的緩存數(shù)據(jù)的長(zhǎng)度是否固定;如果是,直接在該列中緩存該關(guān)聯(lián)子數(shù)據(jù);如果否,則根據(jù)該列對(duì)應(yīng)的數(shù)據(jù)長(zhǎng)度,將該列對(duì)應(yīng)的關(guān)聯(lián)子數(shù)據(jù)轉(zhuǎn)換為該數(shù)據(jù)長(zhǎng)度,并在該列中緩存該轉(zhuǎn)換后的關(guān)聯(lián)子數(shù)據(jù)。

      進(jìn)一步地,所述裝置還包括:

      同步模塊,用于按照設(shè)定的時(shí)間間隔,將緩存的關(guān)系數(shù)據(jù)同步到其他系統(tǒng)。

      本發(fā)明實(shí)施例提供了一種基于上述關(guān)系數(shù)據(jù)緩存裝置的關(guān)系數(shù)據(jù)查詢裝置,應(yīng)用于電子設(shè)備,該裝置包括:

      接收模塊,用于接收待查詢的數(shù)據(jù),其中所述數(shù)據(jù)為關(guān)系數(shù)據(jù),或關(guān)系數(shù)據(jù)中的至少一項(xiàng)關(guān)聯(lián)子數(shù)據(jù);

      拆分模塊,用于將所述數(shù)據(jù)拆分為至少一項(xiàng)關(guān)聯(lián)子數(shù)據(jù);

      查找模塊,用于針對(duì)每項(xiàng)關(guān)聯(lián)子數(shù)據(jù),根據(jù)緩存該項(xiàng)關(guān)聯(lián)子數(shù)據(jù)的列,判 斷該列緩存的關(guān)聯(lián)子數(shù)據(jù)中是否存在該關(guān)聯(lián)子數(shù)據(jù);如果是,根據(jù)所述關(guān)聯(lián)子數(shù)據(jù)所在的位置,查找位圖索引中該位置對(duì)應(yīng)行的位圖標(biāo)識(shí),并根據(jù)所述行的位圖標(biāo)識(shí),在對(duì)應(yīng)的每列相應(yīng)位置提取其他關(guān)聯(lián)子數(shù)據(jù),并組合為關(guān)系數(shù)據(jù);

      提供模塊,用于將針對(duì)每個(gè)關(guān)聯(lián)子數(shù)據(jù)組合得到的關(guān)系數(shù)據(jù)的交集作為查詢結(jié)果。

      進(jìn)一步地,所述查找模塊,具體用于根據(jù)該關(guān)聯(lián)子數(shù)據(jù)在該列中緩存的行的行數(shù),在所述位圖索引中根據(jù)緩存有關(guān)聯(lián)子數(shù)據(jù)的第一位圖標(biāo)識(shí),查找該第一數(shù)量的第一位圖標(biāo)識(shí)所在位圖索引的行的標(biāo)識(shí)信息,并查找所述行中針對(duì)每列的位圖標(biāo)識(shí),其中所述第一數(shù)量為所述行數(shù);根據(jù)所述位圖索引所述行中的每個(gè)第一位圖標(biāo)識(shí),根據(jù)所述第一位圖標(biāo)識(shí)所在的列,針對(duì)該列,按照從前往后的順序識(shí)別所述列中從開始到所述行中出現(xiàn)第一位圖標(biāo)識(shí)的次數(shù),在相應(yīng)的列中提取該對(duì)應(yīng)次數(shù)的行中緩存的其他關(guān)聯(lián)子數(shù)據(jù)。

      進(jìn)一步地,所述查找模塊,具體用于針對(duì)每列,在該列對(duì)應(yīng)的過濾器中,判斷該列存儲(chǔ)的關(guān)聯(lián)子數(shù)據(jù)的信息中是否存在該關(guān)聯(lián)子數(shù)據(jù)。

      進(jìn)一步地,所述查找模塊,具體用于針對(duì)每個(gè)分區(qū)中的每列,在該列對(duì)應(yīng)的每個(gè)過濾器中,判斷該列存儲(chǔ)的關(guān)聯(lián)子數(shù)據(jù)的信息中是否存在該關(guān)聯(lián)子數(shù)據(jù)。

      本發(fā)明實(shí)施例提供了一種關(guān)系數(shù)據(jù)緩存及查詢方法及裝置,該緩存方法包括:接收到待緩存的關(guān)系數(shù)據(jù)后,根據(jù)每個(gè)關(guān)聯(lián)子數(shù)據(jù)與列簇中每列的對(duì)應(yīng)關(guān)系,將每個(gè)關(guān)聯(lián)子數(shù)據(jù)緩存到對(duì)應(yīng)的列中,并根據(jù)每列是否緩存了該關(guān)系數(shù)據(jù),更新位圖索引中對(duì)應(yīng)行的位圖標(biāo)識(shí)。由于在本發(fā)明實(shí)施例中基于位圖索引和每列的對(duì)應(yīng)關(guān)系表,進(jìn)行關(guān)系數(shù)據(jù)緩存,并且關(guān)系數(shù)據(jù)被劃分為多個(gè)關(guān)聯(lián)子數(shù)據(jù),分別進(jìn)行緩存,因此提高了關(guān)系數(shù)據(jù)的緩存效率,并且該方法應(yīng)用于電子設(shè)備的內(nèi)存,提高了內(nèi)存的利用率。

      附圖說明

      為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。

      圖1為本發(fā)明實(shí)施例提供的一種關(guān)系數(shù)據(jù)的緩存過程;

      圖2為本發(fā)明實(shí)施例提供的一種關(guān)系數(shù)據(jù)緩存中列簇表、位圖索引及每列的具體結(jié)構(gòu)示意圖;

      圖3為本發(fā)明一個(gè)實(shí)施例提供的關(guān)系數(shù)據(jù)的緩存過程;

      圖4為本發(fā)明實(shí)施例提供的基于上述緩存方式的一種關(guān)系數(shù)據(jù)查詢過程;

      圖5為本發(fā)明實(shí)施例提供的另一種關(guān)系數(shù)據(jù)緩存中列簇表、位圖索引及每列的具體結(jié)構(gòu)示意圖;

      圖6為本發(fā)明實(shí)施例提供的關(guān)系數(shù)據(jù)緩存裝置結(jié)構(gòu)示意圖;

      圖7為本發(fā)明實(shí)施例提供的基于圖6所示關(guān)系數(shù)據(jù)緩存裝置的關(guān)系數(shù)據(jù)查詢裝置結(jié)構(gòu)示意圖。

      具體實(shí)施方式

      為了提高關(guān)系數(shù)據(jù)的緩存效率,充分利用內(nèi)存資源,本發(fā)明實(shí)施例提供了一種關(guān)系數(shù)據(jù)緩存及查詢方法及裝置。

      下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。

      圖1為本發(fā)明實(shí)施例提供的一種關(guān)系數(shù)據(jù)的緩存過程,該過程包括以下步驟:

      S101:接收待緩存的關(guān)系數(shù)據(jù),其中所述關(guān)系數(shù)據(jù)中至少包括一個(gè)關(guān)聯(lián)子數(shù)據(jù)。

      本發(fā)明實(shí)施例提供的關(guān)系數(shù)據(jù)的緩存過程應(yīng)用于電子設(shè)備,該電子設(shè)備可以是服務(wù)器、PC等進(jìn)行數(shù)據(jù)緩存的設(shè)備。

      關(guān)系數(shù)據(jù)中指包括至少一個(gè)關(guān)聯(lián)子數(shù)據(jù)的數(shù)據(jù),該至少一個(gè)關(guān)聯(lián)子數(shù)據(jù)相互關(guān)聯(lián)對(duì)該數(shù)據(jù)進(jìn)行描述,例如關(guān)聯(lián)子數(shù)據(jù)可以分別為:張三、男、28歲,或者李四、女、49公斤,或者馬五、健康,或者只有姓名等等。

      在本發(fā)明實(shí)施例中對(duì)于緩存的是哪種關(guān)系數(shù)據(jù)是已知的,該關(guān)系數(shù)據(jù)包括哪幾個(gè)關(guān)聯(lián)子數(shù)據(jù)也是已知的。每個(gè)待緩存的關(guān)系數(shù)據(jù)中,可以包括該關(guān)系數(shù)據(jù)的全部關(guān)聯(lián)子數(shù)據(jù),或者只包括部分關(guān)聯(lián)子數(shù)據(jù),例如該關(guān)系數(shù)據(jù)為包括姓名,性別和年齡的關(guān)聯(lián)子數(shù)據(jù)的數(shù)據(jù),則該待緩存的關(guān)系數(shù)據(jù)可以只包括其中的一個(gè)關(guān)聯(lián)子數(shù)據(jù),例如姓名,或者性別;或者包括兩個(gè)關(guān)聯(lián)子數(shù)據(jù),例如包括姓名和性別,或者姓名和年齡等;當(dāng)然該關(guān)系數(shù)據(jù)也可以同時(shí)包括該三個(gè)關(guān)聯(lián)子數(shù)據(jù)。在具體使用時(shí),可以根據(jù)需求進(jìn)行緩存。

      S102:根據(jù)每個(gè)關(guān)聯(lián)子數(shù)據(jù)與緩存列的對(duì)應(yīng)關(guān)系,將每個(gè)關(guān)聯(lián)子數(shù)據(jù)緩存到對(duì)應(yīng)的列中。

      在本發(fā)明實(shí)施例中在進(jìn)行關(guān)系數(shù)據(jù)緩存時(shí),采用的是列式存儲(chǔ)。行式存儲(chǔ)是以行為數(shù)據(jù)緩存的處理對(duì)象,列式存儲(chǔ)是以縱向的列為數(shù)據(jù)緩存的處理對(duì)象。一般根據(jù)關(guān)系數(shù)據(jù)包含的關(guān)聯(lián)子數(shù)據(jù)的數(shù)量,確定進(jìn)行緩存的列的數(shù)量。還以上述例子為例進(jìn)行說明,關(guān)系數(shù)據(jù)為包括姓名,性別和年齡的關(guān)聯(lián)子數(shù)據(jù)的數(shù)據(jù),則進(jìn)行緩存的列的數(shù)量為3,該3個(gè)列可以構(gòu)成一個(gè)列簇。列簇是列式存儲(chǔ)中的概念,列簇中可以包括一個(gè)或兩個(gè)以上的列。

      在對(duì)關(guān)系數(shù)據(jù)進(jìn)行緩存時(shí),可以預(yù)先獲知緩存的關(guān)系數(shù)據(jù)中都包括幾個(gè)關(guān)聯(lián)子數(shù)據(jù),以及哪幾個(gè)關(guān)聯(lián)子數(shù)據(jù),每個(gè)關(guān)聯(lián)子數(shù)據(jù)存儲(chǔ)到哪個(gè)列中也是可以預(yù)先設(shè)置的,因此可以將相應(yīng)的關(guān)聯(lián)子數(shù)據(jù)緩存到對(duì)應(yīng)列中。

      S103:根據(jù)每列是否緩存了該關(guān)系數(shù)據(jù),更新位圖索引中將該行對(duì)應(yīng)的位圖標(biāo)識(shí)。

      位圖索引可以對(duì)每列緩存的關(guān)聯(lián)子數(shù)據(jù)進(jìn)行標(biāo)識(shí),即標(biāo)識(shí)每個(gè)關(guān)系數(shù)據(jù)的具體存儲(chǔ)位置,位圖索引也是由列和行構(gòu)成的,列的數(shù)量與緩存關(guān)系數(shù)據(jù)的列的數(shù)量相同,行的數(shù)量與緩存關(guān)系數(shù)據(jù)的列中包含的行的數(shù)量相同。具體的該位圖索引的同一行標(biāo)識(shí)的是同一個(gè)關(guān)系數(shù)據(jù)的各關(guān)聯(lián)子數(shù)據(jù)的存儲(chǔ)位圖,可以用位圖標(biāo)識(shí)進(jìn)行表示,比如1可以表示存儲(chǔ)了同一關(guān)系數(shù)據(jù)的某一關(guān)聯(lián)子數(shù)據(jù),0則表示未存儲(chǔ)該關(guān)系數(shù)據(jù)的關(guān)聯(lián)子數(shù)據(jù)。該位圖索引與對(duì)關(guān)系數(shù)據(jù)進(jìn)行緩存的列之間具有對(duì)應(yīng)的關(guān)聯(lián)關(guān)系,對(duì)關(guān)系數(shù)據(jù)進(jìn)行緩存的列的每行與位圖索引的每行相對(duì)應(yīng),即對(duì)關(guān)系數(shù)據(jù)進(jìn)行緩存的列中存在多少行,位圖索引中就有相同的行數(shù),且兩者每行之間一一對(duì)應(yīng)。

      為了保證兩者之間的對(duì)應(yīng)關(guān)系,可以將位圖索引與對(duì)關(guān)系數(shù)據(jù)進(jìn)行緩存的列存儲(chǔ)在一起,也可以在位圖索引和對(duì)關(guān)系數(shù)據(jù)進(jìn)行緩存的列中建立一個(gè)指向?qū)Ψ降闹羔槨?/p>

      在對(duì)關(guān)系數(shù)據(jù)進(jìn)行緩存時(shí),根據(jù)每列是否緩存了該關(guān)系數(shù)據(jù),更新位圖索引中將該行對(duì)應(yīng)的位圖標(biāo)識(shí)。具體的,在進(jìn)行緩存時(shí),可能某一關(guān)系數(shù)據(jù)并不包含所有的關(guān)聯(lián)子數(shù)據(jù),此時(shí)進(jìn)行緩存時(shí),該缺失的關(guān)聯(lián)子數(shù)據(jù)對(duì)應(yīng)的列中就沒有數(shù)據(jù)存入,因此將位圖索引中針對(duì)該列,將其對(duì)應(yīng)的位圖標(biāo)識(shí)更新為0,表示該關(guān)系數(shù)據(jù)未存入該列中,關(guān)系數(shù)據(jù)中存在的關(guān)聯(lián)子數(shù)據(jù)存入到對(duì)應(yīng)的列中時(shí),則在位圖索引中針對(duì)列,將其對(duì)應(yīng)的位圖標(biāo)識(shí)更新1,表示該關(guān)系數(shù)據(jù)緩存到了該列中。

      為了實(shí)現(xiàn)關(guān)系數(shù)據(jù)的緩存,標(biāo)識(shí)位圖索引中每個(gè)行是否被占用,在本發(fā)明實(shí)施例中針對(duì)關(guān)系數(shù)據(jù)進(jìn)行緩存的列,可以設(shè)置該有對(duì)應(yīng)的ID表,在ID表中記錄有與其對(duì)應(yīng)的位圖索引中每行是否被占用的信息。ID表包含的行的數(shù)量與位圖索引包含的行的數(shù)量相同,并且ID表中記錄有每行的標(biāo)識(shí)信息,該標(biāo)識(shí)信息可以是該行的行數(shù)。另外,為了方便關(guān)系數(shù)據(jù)的緩存,在ID表中記錄有位圖索引中對(duì)應(yīng)的每行是否被占用的信息,例如01則表示位圖索引中對(duì)應(yīng)行被占用,00則表示位圖索引中對(duì)應(yīng)行未被占用。

      因?yàn)樵诒景l(fā)明實(shí)施例中ID表中記錄的位圖索引對(duì)應(yīng)行被占用的信息,該行數(shù)與實(shí)際緩存的關(guān)系數(shù)據(jù)的數(shù)量是相同的,相應(yīng)的位圖索引中被占用的行的數(shù)量也與緩存的關(guān)系數(shù)據(jù)的數(shù)量是相同的,根據(jù)位圖索引中針對(duì)每列記錄的每行的位圖標(biāo)識(shí),可以確定每列中緩存的關(guān)聯(lián)子數(shù)據(jù)的數(shù)量。

      由于在本發(fā)明實(shí)施例中基于位圖索引和每列的對(duì)應(yīng)關(guān)系表,進(jìn)行關(guān)系數(shù)據(jù)緩存,并且關(guān)系數(shù)據(jù)被劃分為多個(gè)關(guān)聯(lián)子數(shù)據(jù),分別進(jìn)行緩存,因此提高了關(guān)系數(shù)據(jù)的緩存效率,并且該方法應(yīng)用于電子設(shè)備的內(nèi)存,提高了內(nèi)存的利用率。

      本發(fā)明實(shí)施例提供的關(guān)系數(shù)據(jù)緩存方式,應(yīng)用于在電子設(shè)備的內(nèi)存或固態(tài)硬盤上進(jìn)行關(guān)系數(shù)據(jù)的緩存。相應(yīng)的以下各實(shí)施方式也都是可以應(yīng)用在電子設(shè)備的內(nèi)存或固態(tài)硬盤上的。

      圖2為本發(fā)明實(shí)施例提供的一種關(guān)系數(shù)據(jù)緩存中ID表、位圖索引及每列的具體結(jié)構(gòu)示意圖。以圖2為例進(jìn)行說明,圖2中的ID所示即為ID表,ID表中 存在1、2、……k行,由于ID表與位圖索引相對(duì)應(yīng)的,在位圖索引中也存在k行。列簇中對(duì)該關(guān)系數(shù)據(jù)進(jìn)行緩存的列包含2個(gè)列,分別為A列和B列。為了對(duì)每列的占用情況進(jìn)行標(biāo)識(shí),位圖索引中也設(shè)置有兩列,a列和b列,其中a列記錄A列中每個(gè)關(guān)聯(lián)子數(shù)據(jù)的存儲(chǔ)情況,b列記錄B列中每個(gè)關(guān)聯(lián)子數(shù)據(jù)的存儲(chǔ)情況。其中一個(gè)關(guān)系數(shù)據(jù)在該位圖索引中對(duì)應(yīng)一行。

      如圖2所示,在位圖索引的第一行中記錄了位圖標(biāo)識(shí)1和1,說明第一個(gè)關(guān)系數(shù)據(jù)同時(shí)包括兩個(gè)關(guān)聯(lián)子數(shù)據(jù),該關(guān)聯(lián)子數(shù)據(jù)分別存儲(chǔ)到了A列的第一行和B列的第一行,第二行中記錄了位圖標(biāo)識(shí)1和0,說明第二個(gè)關(guān)系數(shù)據(jù)包括一個(gè)關(guān)聯(lián)子數(shù)據(jù),該關(guān)聯(lián)子數(shù)據(jù)存儲(chǔ)在了A列的第二行,第三行記錄了位圖標(biāo)識(shí)0和0,說明第三個(gè)關(guān)系數(shù)據(jù)未存儲(chǔ)在任何一列中,第四行記錄了位圖標(biāo)識(shí)1和1,說明第四個(gè)關(guān)系數(shù)據(jù)同時(shí)包括兩個(gè)關(guān)聯(lián)子數(shù)據(jù),該關(guān)聯(lián)子數(shù)據(jù)分別存儲(chǔ)到了A列的第三行和B列的第二行,依次類推,該位圖索引的第k行記錄了位圖標(biāo)識(shí)1和1,說明第k個(gè)關(guān)系數(shù)據(jù)同時(shí)包括兩個(gè)關(guān)聯(lián)子數(shù)據(jù),該關(guān)聯(lián)子數(shù)據(jù)分別存儲(chǔ)到了A列的第i行和B列的第j行,其中i為A列中存儲(chǔ)關(guān)聯(lián)子數(shù)據(jù)的數(shù)量,j為B列存儲(chǔ)關(guān)聯(lián)子數(shù)據(jù)的數(shù)量。

      根據(jù)上述描述可知,對(duì)于ID表中的第k行,該行對(duì)應(yīng)的位圖索引中對(duì)應(yīng)行的位圖標(biāo)識(shí)的組合Bitmapk=(ak,bk),ak和bk為第k行中a列和b列的位圖標(biāo)識(shí)。對(duì)于ak,它是a列中第i個(gè)非零值,因此在確定ak對(duì)應(yīng)的為a列中的非零值數(shù)量時(shí),可以表示為P(ak)=i,對(duì)于bk,它是b列中第j個(gè)非零值,因此在確定bk對(duì)應(yīng)的為b列中的非零值數(shù)量時(shí),可以表示為P(bk)=j(luò)。相應(yīng)的對(duì)于A列,第i個(gè)數(shù)據(jù)Ai用位圖索引中第k行對(duì)應(yīng)的值標(biāo)識(shí),對(duì)于B列,第j個(gè)數(shù)據(jù)Bj用位圖索引中第k行對(duì)應(yīng)的值標(biāo)識(shí),上述各表直接的對(duì)應(yīng)關(guān)系可以表示為(IDK,Ai,Bj)為同一行數(shù)據(jù),并且P(ak)=i,P(bk)=j(luò)。

      通過上述關(guān)系,可知對(duì)于上述各表中任意一行的任一一列的數(shù)值,都可能通過上述關(guān)系查找。

      在本發(fā)明的另一個(gè)實(shí)施例中,為了實(shí)現(xiàn)關(guān)系數(shù)據(jù)的緩存,方便后續(xù)的查找,所述將每個(gè)關(guān)聯(lián)子數(shù)據(jù)緩存到對(duì)應(yīng)的列中后,所述方法還包括:

      針對(duì)每列,判斷該列對(duì)應(yīng)的過濾器中是否保存有該關(guān)聯(lián)子數(shù)據(jù),如果不存在,則將該關(guān)聯(lián)子數(shù)據(jù)的信息添加到所述過濾器中。

      針對(duì)每列都設(shè)置有過濾器,如圖2所示的Filter,在該過濾器中存儲(chǔ)有該列中緩存的關(guān)聯(lián)子數(shù)據(jù)的信息,具體的該關(guān)聯(lián)子數(shù)據(jù)的信息可以是該列中緩存的每個(gè)關(guān)聯(lián)子數(shù)據(jù),可以是該列緩存的關(guān)聯(lián)子數(shù)據(jù)滿足的相應(yīng)條件。因此當(dāng)在每列緩存了相應(yīng)的關(guān)聯(lián)子數(shù)據(jù)后,判斷過濾器是否保存有該關(guān)聯(lián)子數(shù)據(jù),如果過濾器中存儲(chǔ)了該關(guān)聯(lián)子數(shù)據(jù),則不對(duì)該過濾器進(jìn)行更新,當(dāng)該過濾器中未保存該關(guān)聯(lián)子數(shù)據(jù)時(shí),則將該關(guān)聯(lián)子數(shù)據(jù)的信息添加到過濾器中。

      例如,對(duì)于緩存姓名、性別和年齡關(guān)系數(shù)據(jù)的每個(gè)列,對(duì)于緩存姓名的列,該列對(duì)應(yīng)的過濾器中緩存的可以是該列中包含的每個(gè)姓名,如果該過濾器中沒有保存該姓名,則將該姓名添加到過濾器中;對(duì)于緩存年齡的列,該列對(duì)應(yīng)的過濾器緩存的可以是該列中出現(xiàn)的所有年齡,也可以是所有年齡所在的范圍,例如該列中緩存的年齡包括13、14、15、17,則可以將過濾器中該關(guān)聯(lián)子數(shù)據(jù)的信息設(shè)置為13和17之間,如果某一年齡不在該范圍內(nèi),則對(duì)該范圍進(jìn)行調(diào)整,例如該年齡為18,則將18添加到過濾器中,將過濾器對(duì)應(yīng)的關(guān)聯(lián)子數(shù)據(jù)的信息設(shè)置為13和18之間。

      為了滿足分布式存儲(chǔ)系統(tǒng)的需求,可以將數(shù)據(jù)分塊,不同的數(shù)據(jù)存儲(chǔ)在不同的設(shè)備上,因此相應(yīng)的每列中的所有行可能在不同的分區(qū)中,為了方便后續(xù)數(shù)據(jù)的查找。在本發(fā)明的一個(gè)實(shí)施例中,在每個(gè)分區(qū)中針對(duì)每列可以設(shè)置對(duì)應(yīng)的過濾器,所述將每個(gè)關(guān)聯(lián)子數(shù)據(jù)緩存到對(duì)應(yīng)的列中后,所述方法還包括:

      針對(duì)每列,根據(jù)該關(guān)聯(lián)子數(shù)據(jù)緩存的行所在的分區(qū),判斷該列在該分區(qū)中對(duì)應(yīng)的過濾器中是否保存有該關(guān)聯(lián)子數(shù)據(jù),如果不存在,則將該關(guān)聯(lián)子數(shù)據(jù)的信息添加到所述過濾器中。

      不同的分區(qū)位于同一電子設(shè)備,或不同的電子設(shè)備。

      雖然同一列的不同行可能在不同的設(shè)備上,但是為了便于數(shù)據(jù)的查詢和緩存,列簇表和位圖索引還是使用同一個(gè),并且根據(jù)設(shè)備之間的連續(xù),設(shè)置不同設(shè)備之間行之間的關(guān)系。

      對(duì)每個(gè)列的過濾器中保存的關(guān)聯(lián)子數(shù)據(jù)的信息進(jìn)行更新的過程與上述實(shí)施例中相同,在本發(fā)明實(shí)施例中對(duì)該過程不進(jìn)行贅述。

      圖3為本發(fā)明一個(gè)實(shí)施例提供的關(guān)系數(shù)據(jù)的緩存過程,該過程包括以下步驟:

      S301:接收待緩存的關(guān)系數(shù)據(jù),其中所述關(guān)系數(shù)據(jù)中至少包括一個(gè)關(guān)聯(lián)子數(shù)據(jù)。

      S302:根據(jù)每個(gè)關(guān)聯(lián)子數(shù)據(jù)與列簇中每列的對(duì)應(yīng)關(guān)系,將每個(gè)關(guān)聯(lián)子數(shù)據(jù)緩存到對(duì)應(yīng)的列中。

      S303:根據(jù)ID表中記錄的位圖索引被占用的行的標(biāo)識(shí)信息,確定位圖索引中該關(guān)系數(shù)據(jù)對(duì)應(yīng)行的標(biāo)識(shí)信息。

      S304:根據(jù)每列是否緩存了該關(guān)系數(shù)據(jù),更新位圖索引中將該行對(duì)應(yīng)的位圖標(biāo)識(shí)。

      S305:針對(duì)每列,根據(jù)該關(guān)聯(lián)子數(shù)據(jù)緩存的行所在的分區(qū),判斷該列在該分區(qū)中對(duì)應(yīng)的過濾器中是否保存有該關(guān)聯(lián)子數(shù)據(jù),如果否,則進(jìn)行S306,如果是,該數(shù)據(jù)緩存過程結(jié)束。

      S306:則將該關(guān)聯(lián)子數(shù)據(jù)的信息添加到所述過濾器中。

      上述過程中步驟S306只要位于步驟S302之后即可,本發(fā)明實(shí)施例對(duì)步驟S306與步驟S303~S305之間的順序不做限制。

      為了方便關(guān)系數(shù)據(jù)的緩存,提高關(guān)系數(shù)據(jù)緩存的效率,在本發(fā)明的一個(gè)實(shí)施例中,所述將每個(gè)關(guān)聯(lián)子數(shù)據(jù)緩存到對(duì)應(yīng)的列中包括:

      針對(duì)每列,識(shí)別該列對(duì)應(yīng)的緩存數(shù)據(jù)的長(zhǎng)度是否固定;

      如果是,直接在該列中緩存該關(guān)聯(lián)子數(shù)據(jù);

      如果否,則根據(jù)該列對(duì)應(yīng)的數(shù)據(jù)長(zhǎng)度,將該列對(duì)應(yīng)的關(guān)聯(lián)子數(shù)據(jù)轉(zhuǎn)換為該數(shù)據(jù)長(zhǎng)度,并在該列中緩存該轉(zhuǎn)換后的關(guān)聯(lián)子數(shù)據(jù)。

      在本發(fā)明實(shí)施例中可以采用變長(zhǎng)域的方式進(jìn)行關(guān)聯(lián)子數(shù)據(jù)的存儲(chǔ),也可以采用變長(zhǎng)域與定長(zhǎng)域結(jié)合的方式進(jìn)行關(guān)系數(shù)據(jù)緩存。無論采用哪種方式,每列對(duì)應(yīng)的緩存字長(zhǎng)最好固定,可以統(tǒng)一使用變長(zhǎng)域的方式緩存,也可以統(tǒng)一使用定長(zhǎng)域的方式緩存。

      對(duì)于變長(zhǎng)域的緩存方式,在進(jìn)行緩存時(shí)包括兩部分,分別為變長(zhǎng)域的數(shù)據(jù)長(zhǎng)度F_Length,以及具體的滿足該長(zhǎng)度的數(shù)據(jù)F_Value。對(duì)于定長(zhǎng)域的緩存方式,只要緩存滿足該固定長(zhǎng)度的數(shù)據(jù)F_Value即可。

      為了實(shí)現(xiàn)緩存數(shù)據(jù)之間的交互,在本發(fā)明的另一實(shí)施方式中所述方法還包括:

      按照設(shè)定的時(shí)間間隔,將緩存的關(guān)系數(shù)據(jù)同步到其他系統(tǒng)。

      具體的,在本發(fā)明實(shí)施例中可以通過數(shù)據(jù)連接驅(qū)動(dòng)(Data Connection Driver)模塊,實(shí)現(xiàn)不同系統(tǒng)之間緩存數(shù)據(jù)的交互,常見的數(shù)據(jù)連接驅(qū)動(dòng)有java數(shù)據(jù)庫連接(Java Data Base Connectivity,JDBC),開放數(shù)據(jù)庫互連(Open Database Connectivity,ODBC)。

      圖4為本發(fā)明實(shí)施例提供的基于上述緩存方式的一種關(guān)系數(shù)據(jù)查詢過程,該過程包括以下步驟:

      S401:接收待查詢的數(shù)據(jù),其中所述數(shù)據(jù)為關(guān)系數(shù)據(jù),或關(guān)系數(shù)據(jù)中的至少一項(xiàng)關(guān)聯(lián)子數(shù)據(jù)。

      該數(shù)據(jù)可能是關(guān)系數(shù)據(jù),也可能是該關(guān)系數(shù)據(jù)中的至少一項(xiàng)關(guān)聯(lián)子數(shù)據(jù)。關(guān)系數(shù)據(jù)中指包括至少一個(gè)關(guān)聯(lián)子數(shù)據(jù)的數(shù)據(jù),該至少一個(gè)關(guān)聯(lián)子數(shù)據(jù)相互關(guān)聯(lián)對(duì)該數(shù)據(jù)進(jìn)行描述,例如關(guān)聯(lián)子數(shù)據(jù)可以分別為:張三、男、28歲,或者李四、女、49公斤,或者馬五、健康,或者只有姓名等等。

      S402:將所述數(shù)據(jù)拆分為至少一項(xiàng)關(guān)聯(lián)子數(shù)據(jù)。

      在對(duì)關(guān)系數(shù)據(jù)進(jìn)行查找時(shí),可以預(yù)先獲知查找的關(guān)系數(shù)據(jù)中都包括幾個(gè)關(guān)聯(lián)子數(shù)據(jù),以及哪幾個(gè)關(guān)聯(lián)子數(shù)據(jù),因此可以實(shí)現(xiàn)該數(shù)據(jù)的拆分。并可以在對(duì)應(yīng)的列中查找該關(guān)聯(lián)子數(shù)據(jù)。

      S403:針對(duì)每項(xiàng)關(guān)聯(lián)子數(shù)據(jù),根據(jù)緩存該項(xiàng)關(guān)聯(lián)子數(shù)據(jù)的列,判斷該列緩存的關(guān)聯(lián)子數(shù)據(jù)中是否存在該關(guān)聯(lián)子數(shù)據(jù),如果是,進(jìn)行步驟S404,否則,該查詢過程結(jié)束。

      由于每項(xiàng)關(guān)聯(lián)子數(shù)據(jù)緩存在對(duì)應(yīng)的列中,因此對(duì)關(guān)聯(lián)子數(shù)據(jù)進(jìn)行查找時(shí),在對(duì)應(yīng)的列中查找即可,根據(jù)兩個(gè)關(guān)聯(lián)子數(shù)據(jù)是否相同,判斷該列中每行緩存的關(guān)聯(lián)子數(shù)據(jù)中是否存在該關(guān)聯(lián)子數(shù)據(jù),判斷兩個(gè)關(guān)聯(lián)子數(shù)據(jù)是否相同的過程屬于現(xiàn)有技術(shù),在本發(fā)明實(shí)施例中對(duì)該過程不進(jìn)行贅述。

      S404:根據(jù)所述關(guān)聯(lián)子數(shù)據(jù)所在的位置,查找位圖索引中該位置對(duì)應(yīng)行的位圖標(biāo)識(shí),并根據(jù)所述行的位圖標(biāo)識(shí),在對(duì)應(yīng)的每列相應(yīng)位置提取其他關(guān)聯(lián)子 數(shù)據(jù),并組合為關(guān)系數(shù)據(jù)。

      在本發(fā)明實(shí)施例中位圖索引可以對(duì)每列緩存的關(guān)聯(lián)子數(shù)據(jù)進(jìn)行標(biāo)識(shí),即標(biāo)識(shí)每個(gè)關(guān)系數(shù)據(jù)的具體存儲(chǔ)位置,具體同一行標(biāo)識(shí)的是同一個(gè)關(guān)系數(shù)據(jù)的存儲(chǔ)位圖,可以用位圖標(biāo)識(shí)進(jìn)行表示,比如1可以表示對(duì)應(yīng)列中存儲(chǔ)了同一關(guān)系數(shù)據(jù)的某一關(guān)聯(lián)子數(shù)據(jù),0則表示對(duì)應(yīng)列中未存儲(chǔ)該關(guān)系數(shù)據(jù)的關(guān)聯(lián)子數(shù)據(jù)。

      具體的,當(dāng)存在ID表時(shí),該位圖索引與ID表之間具有對(duì)應(yīng)的關(guān)聯(lián)關(guān)系,ID表中的每行與位圖索引的每行相對(duì)應(yīng),即ID表中存在多少行,位圖索引中就有相同的行數(shù),且兩者每行之間一一對(duì)應(yīng)。根據(jù)ID表中每行的標(biāo)識(shí)信息,可以查找位圖索引中該行的具體占用信息,并且位圖索引也可以反查ID表中對(duì)應(yīng)行的標(biāo)識(shí)信息。

      根據(jù)圖2所示,每個(gè)列簇都有相應(yīng)的ID表,圖2中的ID所示即為該ID表,ID表中存在1、2、……k行,由于ID表與位圖索引項(xiàng)對(duì)應(yīng)的,在位圖索引中也存在k行。列簇中對(duì)該關(guān)系數(shù)據(jù)進(jìn)行緩存的列包含2個(gè)列,分別為A列和B列。為了對(duì)每列的占用情況進(jìn)行標(biāo)識(shí),位圖索引中也設(shè)置有兩列,a列和b列,其中a列記錄A列中每個(gè)關(guān)聯(lián)子數(shù)據(jù)的存儲(chǔ)情況,b列記錄B列中每個(gè)關(guān)聯(lián)子數(shù)據(jù)的存儲(chǔ)情況。其中一個(gè)關(guān)系數(shù)據(jù)在該位圖索引中對(duì)應(yīng)一行。

      如圖2所示,在位圖索引的第一行中記錄了位圖標(biāo)識(shí)1和1,說明第一個(gè)關(guān)系數(shù)據(jù)同時(shí)包括兩個(gè)關(guān)聯(lián)子數(shù)據(jù),該關(guān)聯(lián)子數(shù)據(jù)分別存儲(chǔ)到了A列的第一行和B列的第一行,第二行中記錄了位圖標(biāo)識(shí)1和0,說明第二個(gè)關(guān)系數(shù)據(jù)包括一個(gè)關(guān)聯(lián)子數(shù)據(jù),該關(guān)聯(lián)子數(shù)據(jù)存儲(chǔ)在了A列的第二行,第三行記錄了位圖標(biāo)識(shí)0和0,說明第三個(gè)關(guān)系數(shù)據(jù)未存儲(chǔ)在任何一列中,第四行記錄了位圖標(biāo)識(shí)1和1,說明第四個(gè)關(guān)系數(shù)據(jù)同時(shí)包括兩個(gè)關(guān)聯(lián)子數(shù)據(jù),該關(guān)聯(lián)子數(shù)據(jù)分別存儲(chǔ)到了A列的第三行和B列的第二行,依次類推,該位圖索引的第k行記錄了位圖標(biāo)識(shí)1和1,說明第k個(gè)關(guān)系數(shù)據(jù)同時(shí)包括兩個(gè)關(guān)聯(lián)子數(shù)據(jù),該關(guān)聯(lián)子數(shù)據(jù)分別存儲(chǔ)到了A列的第i行和B列的第j行,其中i為A列中存儲(chǔ)關(guān)聯(lián)子數(shù)據(jù)的數(shù)量,j為B列存儲(chǔ)關(guān)聯(lián)子數(shù)據(jù)的數(shù)量。

      所述根據(jù)所述關(guān)聯(lián)子數(shù)據(jù)所在的位置,查找位圖索引中該位置對(duì)應(yīng)行的位圖標(biāo)識(shí)包括:

      根據(jù)該關(guān)聯(lián)子數(shù)據(jù)在該列中緩存的行的行數(shù),在所述位圖索引中根據(jù)緩存 有關(guān)聯(lián)子數(shù)據(jù)的第一位圖標(biāo)識(shí),查找第一數(shù)量的第一位圖標(biāo)識(shí)所在位圖索引的行的標(biāo)識(shí)信息,并查找所述行中針對(duì)每列的位圖標(biāo)識(shí),其中所述第一數(shù)量為所述行數(shù);

      所述根據(jù)所述行的位圖標(biāo)識(shí),在對(duì)應(yīng)的每列相應(yīng)位置提取其他關(guān)聯(lián)子數(shù)據(jù)包括:

      根據(jù)所述位圖索引所述行中的每個(gè)第一位圖標(biāo)識(shí),根據(jù)所述第一位圖標(biāo)識(shí)所在的列,針對(duì)該列,按照從前往后的順序識(shí)別所述列中從開始到所述行中出現(xiàn)第一位圖標(biāo)識(shí)的次數(shù),在相應(yīng)的列中提取該對(duì)應(yīng)次數(shù)行中緩存的其他關(guān)聯(lián)子數(shù)據(jù)。

      其中緩存有關(guān)聯(lián)子數(shù)據(jù)的第一位圖標(biāo)識(shí),即上述所述的位圖標(biāo)識(shí)1,第二位圖標(biāo)識(shí)為位圖標(biāo)識(shí)0,為未緩存關(guān)聯(lián)子數(shù)據(jù)。根據(jù)圖2所示,對(duì)于ID表中的第k行,該行對(duì)應(yīng)的位圖索引中對(duì)應(yīng)行的位圖標(biāo)識(shí)的組合Bitmapk=(ak,bk),ak和bk為第k行中a列和b列的位圖標(biāo)識(shí)。對(duì)于ak,它是a列中第i個(gè)非零值,因此在確定ak對(duì)應(yīng)的為a列中的非零值數(shù)量時(shí),可以表示為P(ak)=i,對(duì)于bk,它是b列中第j個(gè)非零值,因此在確定bk對(duì)應(yīng)的為b列中的非零值數(shù)量時(shí),可以表示為P(bk)=j(luò)。相應(yīng)的對(duì)于A列,第i個(gè)數(shù)據(jù)Ai用位圖索引中第k行對(duì)應(yīng)的值標(biāo)識(shí),對(duì)于B列,第j個(gè)數(shù)據(jù)Bj用位圖索引中第k行對(duì)應(yīng)的值標(biāo)識(shí),上述各表直接的對(duì)應(yīng)關(guān)系可以表示為(IDK,Ai,Bj)為同一行數(shù)據(jù),并且P(ak)=i,P(bk)=j(luò)。

      通過上述關(guān)系,可知對(duì)于上述各表中任意一行的任一一列的數(shù)值,都可能通過上述關(guān)系查找。

      S405:將針對(duì)每個(gè)關(guān)聯(lián)子數(shù)據(jù)組合得到的關(guān)系數(shù)據(jù)的交集作為查詢結(jié)果。

      針對(duì)每個(gè)關(guān)聯(lián)子數(shù)據(jù)都可以查找到相應(yīng)的關(guān)系數(shù)據(jù),當(dāng)該待查詢的關(guān)系數(shù)據(jù)中包含兩個(gè)以上的關(guān)聯(lián)子數(shù)據(jù)時(shí),將針對(duì)每個(gè)關(guān)聯(lián)子數(shù)據(jù)查找到的關(guān)系數(shù)據(jù)取交集即為最終的查詢結(jié)果。

      例如該待查詢數(shù)據(jù)為男、14歲,還依照上述實(shí)施例的描述,將該數(shù)據(jù)拆分為兩項(xiàng)關(guān)聯(lián)子數(shù)據(jù)男和14歲,分別在性別所在列和年齡所在列查找滿足性別為男的關(guān)系數(shù)據(jù)以及滿足年齡為14的關(guān)系數(shù)據(jù),根據(jù)性別查找到的關(guān)系數(shù)據(jù)為第一關(guān)系數(shù)據(jù)、第二關(guān)系數(shù)據(jù)和第三關(guān)系數(shù)據(jù),根據(jù)年齡查找到的關(guān)系數(shù)據(jù)為第 一關(guān)系數(shù)據(jù)、第二關(guān)系數(shù)據(jù)和第四關(guān)系數(shù)據(jù),兩個(gè)關(guān)聯(lián)子數(shù)據(jù)組合得到的關(guān)系數(shù)據(jù)的交集為第一關(guān)系數(shù)據(jù)和第二關(guān)系數(shù)據(jù)。

      由于在本發(fā)明實(shí)施例中針對(duì)每個(gè)關(guān)系數(shù)據(jù),通過位圖索引記錄該關(guān)系數(shù)據(jù)的每個(gè)關(guān)聯(lián)子數(shù)據(jù)的緩存位置,因此可以根據(jù)位圖索引查找對(duì)應(yīng)的關(guān)系數(shù)據(jù),方便關(guān)系數(shù)據(jù)的查詢,并提高內(nèi)存等存儲(chǔ)空間的利用率。

      在本發(fā)明的一個(gè)實(shí)施例中,所述判斷每列存儲(chǔ)的關(guān)聯(lián)子數(shù)據(jù)中是否存在該關(guān)聯(lián)子數(shù)據(jù)包括:

      針對(duì)每列,在該列對(duì)應(yīng)的過濾器中,判斷該列存儲(chǔ)的關(guān)聯(lián)子數(shù)據(jù)的信息中是否存在該關(guān)聯(lián)子數(shù)據(jù)。

      在上述實(shí)施例中,針對(duì)每列都設(shè)置有過濾器,如圖2所示的Filter,在該過濾器中存儲(chǔ)有該列中緩存的關(guān)聯(lián)子數(shù)據(jù)的信息,具體的該關(guān)聯(lián)子數(shù)據(jù)的信息可以是該列中緩存的每個(gè)關(guān)聯(lián)子數(shù)據(jù),可以是該列緩存的關(guān)聯(lián)子數(shù)據(jù)滿足的相應(yīng)條件。因?yàn)楫?dāng)在每列緩存了相應(yīng)的關(guān)聯(lián)子數(shù)據(jù)后,判斷過濾器是否保存有該關(guān)聯(lián)子數(shù)據(jù),如果過濾器中存儲(chǔ)了該關(guān)聯(lián)子數(shù)據(jù),則不對(duì)該過濾器進(jìn)行更新,當(dāng)該過濾器中未保存該關(guān)聯(lián)子數(shù)據(jù)時(shí),則將該關(guān)聯(lián)子數(shù)據(jù)的信息添加到過濾器中。因此根據(jù)每個(gè)列對(duì)應(yīng)的過濾器中保存的關(guān)聯(lián)子數(shù)據(jù)的信息,可以加快查詢的速度。如果該過濾器中存在該關(guān)聯(lián)子數(shù)據(jù),則繼續(xù)在該列中一一查找,如果該過濾器中不存在該關(guān)聯(lián)子數(shù)據(jù),則可以省去后續(xù)查找步驟,直接輸出未查詢到相應(yīng)結(jié)果的提示信息。

      在本發(fā)明的一個(gè)實(shí)施例中,所述判斷每列存儲(chǔ)的關(guān)聯(lián)子數(shù)據(jù)中是否存在該關(guān)聯(lián)子數(shù)據(jù)包括:

      針對(duì)每個(gè)分區(qū)中的每列,在該列對(duì)應(yīng)的每個(gè)過濾器中,判斷該列存儲(chǔ)的關(guān)聯(lián)子數(shù)據(jù)的信息中是否存在該關(guān)聯(lián)子數(shù)據(jù)。

      為了滿足分布式存儲(chǔ)系統(tǒng)的需求,可以將數(shù)據(jù)分塊,不同的數(shù)據(jù)存儲(chǔ)在不同的設(shè)備上,因此相應(yīng)的每列中的所有行可能在不同的分區(qū)中,為了方便后續(xù)數(shù)據(jù)的查找。在不同的分區(qū)針對(duì)每列設(shè)置有對(duì)應(yīng)的過濾器。

      不同的分區(qū)位于同一電子設(shè)備,或不同的電子設(shè)備。

      雖然同一列的不同行可能在不同的設(shè)備上,但是為了便于數(shù)據(jù)的查詢和緩 存,列簇表和位圖索引還是使用同一個(gè),并且根據(jù)設(shè)備之間的連續(xù),設(shè)置不同設(shè)備之間行之間的關(guān)系。對(duì)每個(gè)列的過濾器中查找關(guān)聯(lián)子數(shù)據(jù)的過程與上述實(shí)施例中相同,在本發(fā)明實(shí)施例中對(duì)該過程不進(jìn)行贅述。

      下面結(jié)合一個(gè)具體的實(shí)施例,對(duì)本發(fā)明實(shí)施例的關(guān)系數(shù)據(jù)緩存和查詢過程進(jìn)行說明,結(jié)合圖5所示的各表間的關(guān)系示意圖所示。

      關(guān)系數(shù)據(jù)包括:姓名、性別和年齡關(guān)聯(lián)子數(shù)據(jù),第一個(gè)緩存的關(guān)系數(shù)據(jù)為張三、男、21歲,第二緩存的關(guān)系數(shù)據(jù)為李四、女、23歲,第三個(gè)緩存的關(guān)系數(shù)據(jù)為20歲,第四個(gè)緩存的關(guān)系數(shù)據(jù)為馬五、女、20歲。

      在進(jìn)行緩存時(shí)姓名緩存在A列,性別緩存在B列,年齡緩存在C列,在進(jìn)行緩存的關(guān)系數(shù)據(jù)中拆分出每個(gè)關(guān)系子數(shù)據(jù),將每個(gè)關(guān)系子數(shù)據(jù)緩存在對(duì)應(yīng)列中。具體的將第一個(gè)緩存的關(guān)系數(shù)據(jù)拆分為張三、男、21歲,將張三緩存在A列的第一行,將男緩存在B列的第一行,將21歲緩存在C列的第一行。當(dāng)前該ID表還沒有被使用,相應(yīng)的位圖索引也未被使用,因此將該關(guān)系數(shù)據(jù)的信息添加到位圖索引的第一行中,具體的在該位圖索引的第一行針對(duì)A列的位置添加位圖標(biāo)識(shí)1,針對(duì)B列的位置添加位圖標(biāo)識(shí)1,針對(duì)C類的位置添加1。并在該ID表中記錄第一行被占用的信息。

      另外,在將關(guān)聯(lián)子數(shù)據(jù)緩存到A列時(shí),該A列對(duì)應(yīng)的數(shù)據(jù)長(zhǎng)度為變長(zhǎng)域長(zhǎng)度,因此根據(jù)該列對(duì)應(yīng)的數(shù)據(jù)長(zhǎng)度,將姓名轉(zhuǎn)換為該數(shù)據(jù)長(zhǎng)度,并在該列中緩存該轉(zhuǎn)換后的關(guān)聯(lián)子數(shù)據(jù)。B列和C列對(duì)應(yīng)的為固定數(shù)據(jù)長(zhǎng)度,則直接在相應(yīng)列中緩存關(guān)聯(lián)子數(shù)據(jù)。

      針對(duì)每列的過濾器,根據(jù)緩存的每個(gè)關(guān)聯(lián)子數(shù)據(jù),添加每個(gè)關(guān)聯(lián)子數(shù)據(jù)的信息。并且通過數(shù)據(jù)連接驅(qū)動(dòng)(Data Connection Driver)可以按照設(shè)定的時(shí)間間隔,將緩存的關(guān)系數(shù)據(jù)同步到其他文件系統(tǒng)(FileSystem)。

      同樣的針對(duì)第二個(gè)、第三個(gè)、第四個(gè)緩存的關(guān)系數(shù)據(jù),采用相同的方式進(jìn)行緩存,并對(duì)該位圖索引中第二行、第三行和第四行的相應(yīng)位置添加位圖標(biāo)識(shí),如圖5中位圖索引的前四行。之后還會(huì)緩存其他的關(guān)系數(shù)據(jù),為了簡(jiǎn)單此處只以緩存四個(gè)關(guān)系數(shù)據(jù)為例進(jìn)行說明。

      當(dāng)接收到的待查詢的數(shù)據(jù)為李四、女、23歲時(shí),將該數(shù)據(jù)拆分為三項(xiàng)關(guān)聯(lián)子數(shù)據(jù)分別為李四、女、23歲,則分別在A列、B列和C列中進(jìn)行查詢。

      當(dāng)在A列中進(jìn)行查詢時(shí),A列對(duì)應(yīng)的過濾器,判斷是否緩存有李四的信息,則在A列的每行中進(jìn)行查找,查找到第二行存儲(chǔ)有李四的信息。因?yàn)槔钏氖谴鎯?chǔ)在A列的第二行的,因此在位圖索引中查找出現(xiàn)第二個(gè)位圖標(biāo)識(shí)為1的行,具體的為位圖索引中的第二行。根據(jù)位圖索引的第二行的位圖標(biāo)識(shí),可知A、B、C列中都緩存有該關(guān)系數(shù)據(jù)的關(guān)聯(lián)子數(shù)據(jù)。B列中圖標(biāo)識(shí)1為第二次出現(xiàn),則在B列的第二行中提取李四對(duì)應(yīng)的其他關(guān)聯(lián)子數(shù)據(jù),C列中圖標(biāo)識(shí)1為也是第二次出現(xiàn),則在C列的第二行中提取李四對(duì)應(yīng)的其他關(guān)聯(lián)子數(shù)據(jù)。

      當(dāng)接收到的待查詢的數(shù)據(jù)為20時(shí),該數(shù)據(jù)為關(guān)系數(shù)據(jù)的關(guān)聯(lián)子數(shù)據(jù),并且存儲(chǔ)在C列中,則根據(jù)C列對(duì)應(yīng)的過濾器中,判斷是否緩存有20的信息,如果存在,則在C列中進(jìn)行查找,查找到C列的第三行和第四行都存儲(chǔ)有20的信息。因此根據(jù)C列中存儲(chǔ)的20的行數(shù),可知,分別為第三行和第四行,則在位圖索引中查找與C列對(duì)應(yīng)的列中出現(xiàn)第三個(gè)位圖標(biāo)識(shí)1的行數(shù)和出現(xiàn)第四個(gè)位圖標(biāo)識(shí)1的行數(shù),分別為位圖索引中的第三行和第四行。根據(jù)位圖索引第三行中的每個(gè)位圖標(biāo)識(shí)可知,對(duì)應(yīng)的關(guān)系數(shù)據(jù)只包含關(guān)聯(lián)子數(shù)據(jù)20,根據(jù)位圖索引第四行中的每個(gè)位圖標(biāo)識(shí)可知,對(duì)應(yīng)的關(guān)系數(shù)據(jù)在A列和B列中也有存儲(chǔ)。對(duì)于A列,根據(jù)位圖索引中第四行中與A列對(duì)應(yīng)的列中,第四行的位圖標(biāo)識(shí)1從頭到第四行出現(xiàn)的次數(shù)為3,因此可知該關(guān)系數(shù)據(jù)的其他關(guān)聯(lián)子數(shù)據(jù)緩存在A列的第3行;根據(jù)位圖索引中第四行中與B列對(duì)應(yīng)的列中,第四行的位圖標(biāo)識(shí)1從頭到第四行出現(xiàn)的次數(shù)為3。因此可知該關(guān)系數(shù)據(jù)的其他關(guān)聯(lián)子數(shù)據(jù)緩存在B列的第3行,提取A列和B列中第3行存儲(chǔ)的其他關(guān)聯(lián)子數(shù)據(jù),與從C列第四行查找到關(guān)聯(lián)子數(shù)據(jù)進(jìn)行組合得到第一關(guān)系數(shù)據(jù),并將從C列第三行查找到的關(guān)聯(lián)子數(shù)據(jù)作為第二關(guān)系數(shù)據(jù),將第一關(guān)系數(shù)據(jù)和第二關(guān)系數(shù)據(jù)作為查詢結(jié)果。

      依據(jù)其他關(guān)聯(lián)子數(shù)據(jù)進(jìn)行查找的過程與上述過程類似,在這里就不進(jìn)行贅述。

      圖6為本發(fā)明實(shí)施例提供的關(guān)系數(shù)據(jù)緩存裝置結(jié)構(gòu)示意圖,應(yīng)用于電子設(shè)備,該裝置包括:

      接收模塊61,用于接收待緩存的關(guān)系數(shù)據(jù),其中所述關(guān)系數(shù)據(jù)中至少包括一個(gè)關(guān)聯(lián)子數(shù)據(jù);

      緩存模塊62,用于根據(jù)每個(gè)關(guān)聯(lián)子數(shù)據(jù)與列簇中每列的對(duì)應(yīng)關(guān)系,將每個(gè) 關(guān)聯(lián)子數(shù)據(jù)緩存到對(duì)應(yīng)的列中;

      更新模塊63,用于根據(jù)每列是否緩存了該關(guān)系數(shù)據(jù),更新位圖索引中對(duì)應(yīng)行的位圖標(biāo)識(shí)。

      所述裝置還包括:

      過濾模塊64,用于針對(duì)每列,判斷該列對(duì)應(yīng)的過濾器中是否保存有該關(guān)聯(lián)子數(shù)據(jù),如果不存在,則將該關(guān)聯(lián)子數(shù)據(jù)的信息添加到所述過濾器中。

      所述裝置還包括:

      過濾模塊64,針對(duì)每列,根據(jù)該關(guān)聯(lián)子數(shù)據(jù)緩存的行所在的分區(qū),判斷該列在該分區(qū)中對(duì)應(yīng)的過濾器中是否保存有該關(guān)聯(lián)子數(shù)據(jù),如果不存在,則將該關(guān)聯(lián)子數(shù)據(jù)的信息添加到所述過濾器中。

      所述緩存模塊62,具體用于針對(duì)每列,識(shí)別該列對(duì)應(yīng)的緩存數(shù)據(jù)的長(zhǎng)度是否固定;如果是,直接在該列中緩存該關(guān)聯(lián)子數(shù)據(jù);如果否,則根據(jù)該列對(duì)應(yīng)的數(shù)據(jù)長(zhǎng)度,將該列對(duì)應(yīng)的關(guān)聯(lián)子數(shù)據(jù)轉(zhuǎn)換為該數(shù)據(jù)長(zhǎng)度,并在該列中緩存該轉(zhuǎn)換后的關(guān)聯(lián)子數(shù)據(jù)。

      所述裝置還包括:

      同步模塊65,用于按照設(shè)定的時(shí)間間隔,將緩存的關(guān)系數(shù)據(jù)同步到其他系統(tǒng)。

      具體的,所述關(guān)系數(shù)據(jù)緩存在所述電子設(shè)備的內(nèi)存或固態(tài)硬盤上。

      圖7為本發(fā)明實(shí)施例提供的基于圖6所示關(guān)系數(shù)據(jù)緩存裝置的關(guān)系數(shù)據(jù)查詢裝置結(jié)構(gòu)示意圖,應(yīng)用于電子設(shè)備,該裝置包括:

      接收模塊71,用于接收待查詢的數(shù)據(jù),其中所述數(shù)據(jù)為關(guān)系數(shù)據(jù),或關(guān)系數(shù)據(jù)中的至少一項(xiàng)關(guān)聯(lián)子數(shù)據(jù);

      拆分模塊72,用于將所述數(shù)據(jù)拆分為至少一項(xiàng)關(guān)聯(lián)子數(shù)據(jù);

      查找模塊73,用于針對(duì)每項(xiàng)關(guān)聯(lián)子數(shù)據(jù),根據(jù)緩存該項(xiàng)關(guān)聯(lián)子數(shù)據(jù)的列,判斷該列緩存的關(guān)聯(lián)子數(shù)據(jù)中是否存在該關(guān)聯(lián)子數(shù)據(jù);如果是,根據(jù)所述關(guān)聯(lián)子數(shù)據(jù)所在的位置,查找位圖索引中該位置對(duì)應(yīng)行的位圖標(biāo)識(shí),并根據(jù)所述行的位圖標(biāo)識(shí),在對(duì)應(yīng)的每列相應(yīng)位置提取其他關(guān)聯(lián)子數(shù)據(jù),并組合為關(guān)系數(shù)據(jù);

      提供模塊74,用于將針對(duì)每個(gè)關(guān)聯(lián)子數(shù)據(jù)組合得到的關(guān)系數(shù)據(jù)的交集作為查詢結(jié)果。

      所述查找模塊73,具體用于根據(jù)該關(guān)聯(lián)子數(shù)據(jù)在該列中緩存的行的行數(shù),在所述位圖索引中根據(jù)緩存有關(guān)聯(lián)子數(shù)據(jù)的第一位圖標(biāo)識(shí),查找該第一數(shù)量的第一位圖標(biāo)識(shí)所在位圖索引的行的標(biāo)識(shí)信息,并查找所述行中針對(duì)每列的位圖標(biāo)識(shí),其中所述第一數(shù)量為所述行數(shù);根據(jù)所述位圖索引所述行中的每個(gè)第一位圖標(biāo)識(shí),根據(jù)所述第一位圖標(biāo)識(shí)所在的列,針對(duì)該列,按照從前往后的順序識(shí)別所述列中從開始到所述行中出現(xiàn)第一位圖標(biāo)識(shí)的次數(shù),在相應(yīng)的列中提取該對(duì)應(yīng)次數(shù)的行中緩存的其他關(guān)聯(lián)子數(shù)據(jù)。

      所述查找模塊73,具體用于針對(duì)每列,在該列對(duì)應(yīng)的過濾器中,判斷該列存儲(chǔ)的關(guān)聯(lián)子數(shù)據(jù)的信息中是否存在該關(guān)聯(lián)子數(shù)據(jù)。

      所述查找模塊73,具體用于針對(duì)每個(gè)分區(qū)中的每列,在該列對(duì)應(yīng)的過濾器中,判斷該列存儲(chǔ)的關(guān)聯(lián)子數(shù)據(jù)的信息中是否存在該關(guān)聯(lián)子數(shù)據(jù)。

      本發(fā)明實(shí)施例提供了一種關(guān)系數(shù)據(jù)緩存及查詢方法及裝置,該緩存方法包括:接收到待緩存的關(guān)系數(shù)據(jù)后,根據(jù)每個(gè)關(guān)聯(lián)子數(shù)據(jù)與列簇中每列的對(duì)應(yīng)關(guān)系,將每個(gè)關(guān)聯(lián)子數(shù)據(jù)緩存到對(duì)應(yīng)的列中,并根據(jù)每列是否緩存了該關(guān)系數(shù)據(jù),更新位圖索引中對(duì)應(yīng)行的位圖標(biāo)識(shí)。由于在本發(fā)明實(shí)施例中基于位圖索引和每列的對(duì)應(yīng)關(guān)系表,進(jìn)行關(guān)系數(shù)據(jù)緩存,并且關(guān)系數(shù)據(jù)被劃分為多個(gè)關(guān)聯(lián)子數(shù)據(jù),分別進(jìn)行緩存,因此提高了關(guān)系數(shù)據(jù)的緩存效率,并且該方法應(yīng)用于電子設(shè)備的內(nèi)存,提高了內(nèi)存的利用率。

      對(duì)于系統(tǒng)/裝置實(shí)施例而言,由于其基本相似于方法實(shí)施例,所以描述的比較簡(jiǎn)單,相關(guān)之處參見方法實(shí)施例的部分說明即可。

      需要說明的是,在本文中,諸如第一和第二等之類的關(guān)系術(shù)語僅僅用來將一個(gè)實(shí)體或者操作與另一個(gè)實(shí)體或操作區(qū)分開來,而不一定要求或者暗示這些實(shí)體或操作之間存在任何這種實(shí)際的關(guān)系或者順序。而且,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設(shè)備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設(shè)備所固有的要素。在沒有更多限制的情況下,由語句“包括一個(gè)……”限定的要素,并不排除在包括所述要 素的過程、方法、物品或者設(shè)備中還存在另外的相同要素。

      本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述方法實(shí)施方式中的全部或部分步驟是可以通過程序來指令相關(guān)的硬件來完成,所述的程序可以存儲(chǔ)于計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中,這里所稱得的存儲(chǔ)介質(zhì),如:ROM/RAM、磁碟、光盤等。

      以上所述僅為本發(fā)明的較佳實(shí)施例而已,并非用于限定本發(fā)明的保護(hù)范圍。凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換、改進(jìn)等,均包含在本發(fā)明的保護(hù)范圍內(nèi)。

      當(dāng)前第1頁1 2 3 
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1