一種數(shù)據(jù)查詢(xún)、存儲(chǔ)、及對(duì)存儲(chǔ)數(shù)據(jù)的操作方法及裝置制造方法
【專(zhuān)利摘要】本發(fā)明提供了一種數(shù)據(jù)查詢(xún)、存儲(chǔ)、及對(duì)存儲(chǔ)數(shù)據(jù)的操作方法及裝置,其中數(shù)據(jù)查詢(xún)方法包括接收數(shù)據(jù)查詢(xún)請(qǐng)求;對(duì)數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)配置隨機(jī)加權(quán)值;根據(jù)該加權(quán)值對(duì)數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)的數(shù)據(jù)進(jìn)行查詢(xún);在接收到數(shù)據(jù)查詢(xún)失敗的消息后,重新對(duì)數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)配置隨機(jī)加權(quán)值進(jìn)行查詢(xún),直至得到查詢(xún)結(jié)果。采用本發(fā)明提供的技術(shù)方案,通過(guò)配置隨機(jī)加權(quán)值合理優(yōu)化了應(yīng)用各個(gè)節(jié)點(diǎn)的硬件設(shè)備,減少了查詢(xún)熱點(diǎn)節(jié)點(diǎn);修改、刪除操作限定在同一個(gè)切片的范圍內(nèi),避免了由于誤操作對(duì)數(shù)據(jù)造成的安全隱患;自動(dòng)創(chuàng)建副本,將人工干預(yù)操作轉(zhuǎn)化為自動(dòng)執(zhí)行,保證了高可用性。
【專(zhuān)利說(shuō)明】一種數(shù)據(jù)查詢(xún)、存儲(chǔ)、及對(duì)存儲(chǔ)數(shù)據(jù)的操作方法及裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及數(shù)據(jù)處理領(lǐng)域,特別涉及一種數(shù)據(jù)查詢(xún)、存儲(chǔ)、及對(duì)存儲(chǔ)數(shù)據(jù)的操作方法及裝置。
【背景技術(shù)】
[0002]Apache Solr是基于Lucene的開(kāi)源檢索引擎。Apache Solr提供了豐富的接口實(shí)現(xiàn)了檢索引擎的負(fù)載均衡、數(shù)據(jù)隔離以及高可用性等特性。
[0003]1、對(duì)于負(fù)載均衡:
[0004]Apache Solr使用輪詢(xún)的方式來(lái)確保LoadBalance (負(fù)載均衡)以及failover (失效轉(zhuǎn)移)的過(guò)程。
[0005]用戶(hù)的查詢(xún)請(qǐng)求首先會(huì)發(fā)送至數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)Nodel,Nodel會(huì)首先查詢(xún)自身,若查詢(xún)成功,就會(huì)直接返回;
[0006]若Nodel第一次查詢(xún)失敗,就會(huì)向Node2轉(zhuǎn)發(fā)查詢(xún),Node2查詢(xún)成功,會(huì)將數(shù)據(jù)返回Node I,由Nodel將查詢(xún)結(jié)果發(fā)送用戶(hù);
[0007]若Node2也查詢(xún)失敗,此時(shí)Nodel會(huì)向Node3轉(zhuǎn)發(fā)查詢(xún),若Node3能夠查詢(xún)成功,會(huì)將數(shù)據(jù)返回Node I,由Nodel將查詢(xún)結(jié)果發(fā)送用戶(hù)。
[0008]2、對(duì)于數(shù)據(jù)隔離策略:
[0009]Apache Solr按照集合collect1n >切片shard >核心core從大到小來(lái)組織同一類(lèi)型的索引,在寫(xiě)入數(shù)據(jù)的時(shí)候,Apache Solr只提供了兩種寫(xiě)入數(shù)據(jù)隔離策略,例如在利用DIH(Data Import Handler,數(shù)據(jù)導(dǎo)入處理程序)將數(shù)據(jù)庫(kù)向Apache Solr寫(xiě)入數(shù)據(jù)的時(shí)候:(I)Apache Solr能夠向collect1n中所有的shard中的所有core插入、修改、刪除數(shù)據(jù);(2)或者只向某個(gè)單獨(dú)shard的特定的core插入、修改、刪除數(shù)據(jù)。
[0010]3、對(duì)于高可用性:
[0011]Apache Solr的高可用性的解決方案提供了高可用性的基本解決框架,即提供副本replica機(jī)制來(lái)實(shí)現(xiàn)可用性,但是并不關(guān)心replica自身的靈活性以及容災(zāi)問(wèn)題。
[0012]現(xiàn)有技術(shù)的不足在于:
[0013]采用輪詢(xún)的方式實(shí)現(xiàn)負(fù)載均衡會(huì)帶來(lái)數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)負(fù)載過(guò)高,出現(xiàn)查詢(xún)熱點(diǎn)節(jié)點(diǎn);當(dāng)Nodel出現(xiàn)崩潰時(shí),則不能接受用戶(hù)的查詢(xún)請(qǐng)求,降低用戶(hù)體驗(yàn);另外,輪詢(xún)的方式無(wú)法實(shí)現(xiàn)將查詢(xún)請(qǐng)求優(yōu)先發(fā)送至某個(gè)數(shù)據(jù)查詢(xún)節(jié)點(diǎn)。
[0014]還有,現(xiàn)有的Apache Solr的數(shù)據(jù)隔離策略,可能會(huì)存在數(shù)據(jù)安全隱患,即誤操作(如誤修改、誤刪除)會(huì)在整個(gè)collect1n范圍內(nèi)蔓延;以及數(shù)據(jù)冗余,如插入操作也會(huì)在整個(gè)collect1n都蔓延,所有shard中的core都保存新插入的數(shù)據(jù),會(huì)造成數(shù)據(jù)((Ncore-D+Nrepiica)倍的冗余。
[0015]另外,可以通過(guò)提供副本replica機(jī)制來(lái)實(shí)現(xiàn)可用性,但是Apache Solr的replica需要使用者手動(dòng)創(chuàng)建replica,不夠靈活;當(dāng)replica發(fā)生異常之后,不能自動(dòng)重建replica,無(wú)容災(zāi)操作。
【發(fā)明內(nèi)容】
[0016]本發(fā)明實(shí)施例中提供了一種數(shù)據(jù)查詢(xún)方法,包括步驟:
[0017]接收數(shù)據(jù)查詢(xún)請(qǐng)求;
[0018]對(duì)數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)配置隨機(jī)加權(quán)值;
[0019]根據(jù)該加權(quán)值對(duì)數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)的數(shù)據(jù)進(jìn)行查詢(xún);
[0020]在接收到數(shù)據(jù)查詢(xún)失敗的消息后,重新對(duì)數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)配置隨機(jī)加權(quán)值進(jìn)行查詢(xún),直至得到查詢(xún)結(jié)果。
[0021]本發(fā)明實(shí)施例中還提供了一種數(shù)據(jù)查詢(xún)裝置,包括:
[0022]第一接收模塊,用于接收數(shù)據(jù)查詢(xún)請(qǐng)求;
[0023]加權(quán)模塊,用于對(duì)數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)配置隨機(jī)加權(quán)值;
[0024]查詢(xún)模塊,用于根據(jù)該加權(quán)值對(duì)數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)的數(shù)據(jù)進(jìn)行查詢(xún);
[0025]加權(quán)模塊,進(jìn)一步用于在接收到數(shù)據(jù)查詢(xún)失敗的消息后,重新對(duì)數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)配置隨機(jī)加權(quán)值;
[0026]查詢(xún)模塊,進(jìn)一步用于根據(jù)重新配置的加權(quán)值對(duì)數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)的數(shù)據(jù)進(jìn)行查詢(xún),直至得到查詢(xún)結(jié)果。
[0027]有益效果是:
[0028]本發(fā)明實(shí)施例提供的技術(shù)方案中,通過(guò)在接收到數(shù)據(jù)查詢(xún)請(qǐng)求或收到數(shù)據(jù)查詢(xún)失敗的消息后對(duì)數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)配置隨機(jī)加權(quán)值,根據(jù)該加權(quán)值對(duì)數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)的數(shù)據(jù)進(jìn)行查詢(xún),避免了因輪詢(xún)方式而產(chǎn)生的查詢(xún)熱點(diǎn)節(jié)點(diǎn),在其中一個(gè)數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)崩潰時(shí)并不影響用戶(hù)的查詢(xún),并且可以通過(guò)設(shè)置加權(quán)值高低來(lái)實(shí)現(xiàn)將查詢(xún)請(qǐng)求優(yōu)先發(fā)送至某個(gè)數(shù)據(jù)查詢(xún)節(jié)點(diǎn)。
[0029]本發(fā)明實(shí)施例中又提供了一種對(duì)存儲(chǔ)數(shù)據(jù)的操作方法,包括步驟:
[0030]接收將要存儲(chǔ)的數(shù)據(jù);
[0031]將數(shù)據(jù)分別發(fā)送至集合collect1n下一切片shard下的核心core和副本replica中存儲(chǔ),所述shard是同時(shí)包含core和replica,所述collect1n是包含多個(gè)shardο
[0032]本發(fā)明實(shí)施例中還提供了一種對(duì)存儲(chǔ)數(shù)據(jù)的操作裝置,包括:
[0033]第二接收模塊,用于接收將要存儲(chǔ)的數(shù)據(jù);
[0034]第一存儲(chǔ)模塊,用于將數(shù)據(jù)分別發(fā)送至集合collect1n下一切片shard下的核心core和副本replica中存儲(chǔ),所述shard是同時(shí)包含core和replica,所述collect1n是包含多個(gè)shard。
[0035]有益效果是:
[0036]將待存儲(chǔ)的數(shù)據(jù)發(fā)送至一個(gè)同時(shí)包含core和replica的shard中存儲(chǔ),可以實(shí)現(xiàn)在同一個(gè)shard中的core和replica數(shù)據(jù)的同步,若發(fā)生誤操作,僅在該shard中會(huì)出現(xiàn)問(wèn)題,并不會(huì)蔓延至整個(gè)collect1n ;由于只是將數(shù)據(jù)發(fā)送至某一個(gè)shard中的core和replica中存儲(chǔ),因此不會(huì)造成數(shù)據(jù)的冗余。
[0037]本發(fā)明實(shí)施例中再提供了一種數(shù)據(jù)存儲(chǔ)方法,包括步驟:
[0038]接收將要存儲(chǔ)的數(shù)據(jù);
[0039]將數(shù)據(jù)分別發(fā)送至一個(gè)shard下的core和replica中存儲(chǔ),所述replica是創(chuàng)建core時(shí)創(chuàng)建的。
[0040]本發(fā)明實(shí)施例中還提供了一種數(shù)據(jù)存儲(chǔ)裝置,包括:
[0041]第三接收模塊,用于接收將要存儲(chǔ)的數(shù)據(jù);
[0042]第二存儲(chǔ)模塊,用于將數(shù)據(jù)分別發(fā)送至一個(gè)shard下的core和replica中存儲(chǔ),所述replica是創(chuàng)建core時(shí)創(chuàng)建的。
[0043]有益效果是:
[0044]在創(chuàng)建core時(shí)自動(dòng)創(chuàng)建replica,將人工干預(yù)操作轉(zhuǎn)化為自動(dòng)執(zhí)行,使得replica的創(chuàng)建更加靈活。
【專(zhuān)利附圖】
【附圖說(shuō)明】
[0045]下面將參照附圖描述本發(fā)明的具體實(shí)施例,其中:
[0046]圖1為本發(fā)明實(shí)施例中采用現(xiàn)有輪詢(xún)方式進(jìn)行數(shù)據(jù)查詢(xún)的實(shí)施示意圖;
[0047]圖2為本發(fā)明實(shí)施例中的數(shù)據(jù)查詢(xún)方法的使用流程示意圖;
[0048]圖3為本發(fā)明實(shí)施例中采用加權(quán)隨機(jī)方式進(jìn)行數(shù)據(jù)查詢(xún)的實(shí)施示意圖;
[0049]圖4為本發(fā)明實(shí)施例中的數(shù)據(jù)查詢(xún)裝置的結(jié)構(gòu)示意圖;
[0050]圖5為本發(fā)明實(shí)施例中采用現(xiàn)有技術(shù)對(duì)存儲(chǔ)數(shù)據(jù)進(jìn)行操作的實(shí)施示意圖;
[0051]圖6為本發(fā)明實(shí)施例中的對(duì)存儲(chǔ)數(shù)據(jù)的操作方法的使用流程示意圖;
[0052]圖7為本發(fā)明實(shí)施例中對(duì)存儲(chǔ)數(shù)據(jù)進(jìn)行操作的實(shí)施示意圖;
[0053]圖8為本發(fā)明實(shí)施例中的對(duì)存儲(chǔ)數(shù)據(jù)的操作裝置的結(jié)構(gòu)示意圖;
[0054]圖9為本發(fā)明實(shí)施例中的數(shù)據(jù)存儲(chǔ)方法的使用流程示意圖;
[0055]圖10為本發(fā)明實(shí)施例中的數(shù)據(jù)存儲(chǔ)裝置的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0056]為了使本發(fā)明實(shí)施例中的技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖對(duì)本發(fā)明的示例性實(shí)施例進(jìn)行進(jìn)一步詳細(xì)的說(shuō)明,顯然,所描述的實(shí)施例僅是本發(fā)明的一部分實(shí)施例,而不是所有實(shí)施例的窮舉。
[0057]針對(duì)現(xiàn)有技術(shù)的不足,本發(fā)明實(shí)施例中提供了一種數(shù)據(jù)查詢(xún)、存儲(chǔ)、及對(duì)存儲(chǔ)數(shù)據(jù)的操作方法及裝置,通過(guò)配置隨機(jī)加權(quán)值合理優(yōu)化了應(yīng)用各個(gè)節(jié)點(diǎn)的硬件設(shè)備,減少了查詢(xún)熱點(diǎn)節(jié)點(diǎn);修改、刪除操作限定在同一個(gè)切片的范圍內(nèi),避免了由于誤操作對(duì)數(shù)據(jù)造成的安全隱患;自動(dòng)創(chuàng)建副本,將人工干預(yù)操作轉(zhuǎn)化為自動(dòng)執(zhí)行,保證了高可用性。下面以實(shí)施例進(jìn)行描述。
[0058]Apache Solr的LoadBalance (負(fù)載均衡)以及failover (失效轉(zhuǎn)移)特性保證了用戶(hù)數(shù)據(jù)查詢(xún)請(qǐng)求的能夠正確及時(shí)響應(yīng)。但是它的LoadBalance以及failover策略是輪詢(xún)的方式,如圖1所示。
[0059]圖1為采用現(xiàn)有輪詢(xún)方式進(jìn)行數(shù)據(jù)查詢(xún)的實(shí)施示意圖,如圖所示,可以包括如下情形:
[0060]首先將用戶(hù)的查詢(xún)請(qǐng)求發(fā)送給數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)Nodel,Nodel查詢(xún)自身,若查詢(xún)成功,則直接返回查詢(xún)結(jié)果;
[0061]若Nodel第一次查詢(xún)失敗,此時(shí)向Node2轉(zhuǎn)發(fā)查詢(xún),若Node2查詢(xún)成功,則將查詢(xún)結(jié)果返回Node I,由Nodel將查詢(xún)結(jié)果發(fā)送給用戶(hù);
[0062]若Node2也查詢(xún)失敗,此時(shí)Nodel會(huì)向Node3轉(zhuǎn)發(fā)查詢(xún),若Node3能夠查詢(xún)成功,則將查詢(xún)結(jié)果返回Node I,由Nodel將查詢(xún)結(jié)果發(fā)送給用戶(hù)。
[0063]采用輪詢(xún)方式來(lái)實(shí)現(xiàn)負(fù)載均衡的缺點(diǎn)是:
[0064](I)由于查詢(xún)會(huì)優(yōu)先發(fā)送給數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)Nodel,此時(shí)Nodel節(jié)點(diǎn)的負(fù)載就會(huì)很高,此時(shí)出現(xiàn)查詢(xún)熱點(diǎn)節(jié)點(diǎn)。
[0065](2)由于在實(shí)際生產(chǎn)環(huán)境中,由于硬件配置以及負(fù)載的不一致,需要將某些查詢(xún)請(qǐng)求優(yōu)先發(fā)送到某一臺(tái)Solr上面去,Apache Solr的輪詢(xún)策略就不能達(dá)到此要求了。
[0066](3)若Nodel出現(xiàn)崩潰,此時(shí)Nodel就不能接受用戶(hù)的查詢(xún)請(qǐng)求,此時(shí)用戶(hù)查詢(xún)失敗,降低用戶(hù)體驗(yàn),如圖1所示。
[0067]圖2為本發(fā)明實(shí)施例中的數(shù)據(jù)查詢(xún)方法的使用流程示意圖,如圖所示,可以包括步驟:
[0068]步驟201、接收數(shù)據(jù)查詢(xún)請(qǐng)求;
[0069]步驟202、對(duì)數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)配置隨機(jī)加權(quán)值;
[0070]步驟203、根據(jù)該加權(quán)值對(duì)數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)的數(shù)據(jù)進(jìn)行查詢(xún);
[0071]步驟204、在接收到數(shù)據(jù)查詢(xún)失敗的消息后,重新對(duì)數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)配置隨機(jī)加權(quán)值進(jìn)行查詢(xún),直至得到查詢(xún)結(jié)果。
[0072]實(shí)施中,根據(jù)該加權(quán)值對(duì)數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)的數(shù)據(jù)進(jìn)行查詢(xún)時(shí),還可以包括:
[0073]確定加權(quán)值最高的數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn);
[0074]對(duì)該加權(quán)值最高的數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)的數(shù)據(jù)進(jìn)行查詢(xún)。
[0075]具體實(shí)施中,圖3為采用加權(quán)隨機(jī)方式進(jìn)行數(shù)據(jù)查詢(xún)的實(shí)施示意圖。如圖3所示,可以包括如下情形:
[0076]接收到數(shù)據(jù)查詢(xún)請(qǐng)求后,第一次配置隨機(jī)加權(quán)值,若確定Nodel的加權(quán)值最高,則先查詢(xún)Nodel中的數(shù)據(jù),若查詢(xún)成功,則直接返回查詢(xún)結(jié)果;
[0077]若Nodel第一次查詢(xún)失敗、或者檢測(cè)到異常,此時(shí)進(jìn)行第二次配置隨機(jī)加權(quán)值,確定加權(quán)值最高的數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn),例如獲得Node2,則向Node2發(fā)出查詢(xún)請(qǐng)求,若Node2查詢(xún)成功,則將查詢(xún)結(jié)果返回給用戶(hù);
[0078]若第二次查詢(xún)失敗、或者檢測(cè)到異常,則進(jìn)行第三次配置隨機(jī)加權(quán)值,選擇加權(quán)值最高的數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)進(jìn)行查詢(xún),直至得到查詢(xún)結(jié)果并返回給用戶(hù)。
[0079]實(shí)施中,在接收到數(shù)據(jù)查詢(xún)請(qǐng)求后,對(duì)數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)的數(shù)據(jù)進(jìn)行查詢(xún)之前,還可以包括:
[0080]對(duì)接收到的數(shù)據(jù)查詢(xún)請(qǐng)求進(jìn)行語(yǔ)法解析;
[0081]根據(jù)語(yǔ)法解析確定該查詢(xún)請(qǐng)求將要查詢(xún)的數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn);
[0082]對(duì)該數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)合成數(shù)據(jù)查詢(xún)的查詢(xún)接口。
[0083]具體實(shí)施中,接收到數(shù)據(jù)查詢(xún)請(qǐng)求后,可以對(duì)該數(shù)據(jù)查詢(xún)請(qǐng)求進(jìn)行語(yǔ)法解析,通過(guò)語(yǔ)法解析確定數(shù)據(jù)源(即數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)),該數(shù)據(jù)源可以以服務(wù)形式發(fā)布,數(shù)據(jù)源和shard對(duì)應(yīng)信息發(fā)布到Solr上面。確定了數(shù)據(jù)源之后,可以合成Solr可識(shí)別的查詢(xún)接口,通過(guò)該接口,對(duì)數(shù)據(jù)進(jìn)行查詢(xún)。對(duì)查詢(xún)到的結(jié)果,可以進(jìn)一步進(jìn)行處理,例如拼接、過(guò)濾、或進(jìn)行復(fù)雜運(yùn)算等。
[0084]實(shí)施中,在得到查詢(xún)結(jié)果后,還可以包括:
[0085]對(duì)查詢(xún)到的數(shù)據(jù)進(jìn)行數(shù)據(jù)封裝;
[0086]將該封裝的數(shù)據(jù)返回至發(fā)出查詢(xún)請(qǐng)求的終端。
[0087]具體實(shí)施中,可以將查詢(xún)到的數(shù)據(jù)進(jìn)行數(shù)據(jù)封裝,以便進(jìn)行傳輸,或者將查詢(xún)到的數(shù)據(jù)轉(zhuǎn)化為用戶(hù)設(shè)備可以識(shí)別和使用的形式。這里并不限制數(shù)據(jù)封裝的方法和程序,該步驟是本領(lǐng)域技術(shù)人員容易理解和實(shí)現(xiàn)的。
[0088]實(shí)施中,可以接收數(shù)據(jù)查詢(xún)請(qǐng)求并發(fā)送至開(kāi)源的搜索服務(wù)器Apache Solr,在Apache Solr中對(duì)數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)的數(shù)據(jù)進(jìn)行查詢(xún)。
[0089]具體實(shí)施中,上述數(shù)據(jù)查詢(xún)方法可以適用于開(kāi)源的搜索服務(wù)器Apache Solr0
[0090]基于同一發(fā)明構(gòu)思,本發(fā)明實(shí)施例中還提供了一種數(shù)據(jù)查詢(xún)裝置,由于該裝置解決問(wèn)題的原理與一種數(shù)據(jù)查詢(xún)方法相似,因此該裝置的實(shí)施可以參見(jiàn)方法的實(shí)施,重復(fù)之處不再贅述。
[0091]圖4為本發(fā)明實(shí)施例中數(shù)據(jù)查詢(xún)裝置的結(jié)構(gòu)示意圖,可以包括:
[0092]第一接收模塊401,用于接收數(shù)據(jù)查詢(xún)請(qǐng)求;
[0093]加權(quán)模塊402,用于對(duì)數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)配置隨機(jī)加權(quán)值;
[0094]查詢(xún)模塊403,用于根據(jù)該加權(quán)值對(duì)數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)的數(shù)據(jù)進(jìn)行查詢(xún);
[0095]加權(quán)模塊402,進(jìn)一步用于在接收到數(shù)據(jù)查詢(xún)失敗的消息后,重新對(duì)數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)配置隨機(jī)加權(quán)值;
[0096]查詢(xún)模塊403,進(jìn)一步用于根據(jù)重新配置的加權(quán)值對(duì)數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)的數(shù)據(jù)進(jìn)行查詢(xún),直至得到查詢(xún)結(jié)果。
[0097]實(shí)施中,查詢(xún)模塊403還可以用于在根據(jù)該加權(quán)值對(duì)數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)的數(shù)據(jù)進(jìn)行查詢(xún)時(shí),確定加權(quán)值最高的數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn),并對(duì)該加權(quán)值最高的數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)的數(shù)據(jù)進(jìn)行查詢(xún)。
[0098]實(shí)施中,可以進(jìn)一步包括:
[0099]解析模塊404,用于在接收到數(shù)據(jù)查詢(xún)請(qǐng)求后對(duì)接收到的數(shù)據(jù)查詢(xún)請(qǐng)求進(jìn)行語(yǔ)法解析;
[0100]確定模塊405,用于根據(jù)語(yǔ)法解析確定該查詢(xún)請(qǐng)求將要查詢(xún)的數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn);
[0101]接口模塊406,用于對(duì)數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)的數(shù)據(jù)進(jìn)行查詢(xún)之前對(duì)該數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)合成數(shù)據(jù)查詢(xún)的查詢(xún)接口。
[0102]實(shí)施中,可以進(jìn)一步包括:
[0103]封裝模塊407,用于在將查詢(xún)到的數(shù)據(jù)返回終端之前,對(duì)查詢(xún)到的數(shù)據(jù)進(jìn)行數(shù)據(jù)封裝。
[0104]實(shí)施中,第一接收模塊401還可以用于接收數(shù)據(jù)查詢(xún)請(qǐng)求并發(fā)送至開(kāi)源的搜索服務(wù)器Apache Solr,在Apache Solr中對(duì)數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)的數(shù)據(jù)進(jìn)行查詢(xún)。
[0105]為了描述的方便,以上所述裝置的各部分以功能分為各種部件或單元分別描述。當(dāng)然,在實(shí)施本發(fā)明時(shí)可以把各部件或單元的功能在同一個(gè)或多個(gè)軟件或硬件中實(shí)現(xiàn)。
[0106]下面結(jié)合一個(gè)具體的實(shí)施示例來(lái)進(jìn)行說(shuō)明。
[0107]首先,第一接收模塊401接收到數(shù)據(jù)查詢(xún)請(qǐng)求,將該數(shù)據(jù)查詢(xún)請(qǐng)求發(fā)送至解析模塊404,解析模塊404可以對(duì)該數(shù)據(jù)查詢(xún)請(qǐng)求進(jìn)行語(yǔ)法解析,并將解析結(jié)果發(fā)送至確定模塊405,確定模塊405根據(jù)語(yǔ)法解析結(jié)果及加權(quán)模塊402配置隨機(jī)加權(quán)值的高低確定待查詢(xún)的數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn),確定了要查詢(xún)的數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)之后,接口模塊406可以合成Solr可識(shí)別的查詢(xún)接口,通過(guò)該接口,查詢(xún)模塊403對(duì)數(shù)據(jù)進(jìn)行查詢(xún)。對(duì)查詢(xún)到的結(jié)果,封裝模塊407可以進(jìn)行數(shù)據(jù)封裝后返回給用戶(hù)。
[0108]通過(guò)上述實(shí)施例,可以看出,本發(fā)明實(shí)施例提供的技術(shù)方案通過(guò)在接收到數(shù)據(jù)查詢(xún)請(qǐng)求或收到數(shù)據(jù)查詢(xún)失敗的消息后對(duì)數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)配置隨機(jī)加權(quán)值,根據(jù)該加權(quán)值對(duì)數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)的數(shù)據(jù)進(jìn)行查詢(xún),避免了因輪詢(xún)方式而產(chǎn)生的查詢(xún)熱點(diǎn)節(jié)點(diǎn),在其中一個(gè)數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)崩潰時(shí)并不影響用戶(hù)的查詢(xún),并且可以通過(guò)設(shè)置加權(quán)值高低來(lái)實(shí)現(xiàn)將查詢(xún)請(qǐng)求優(yōu)先發(fā)送至某個(gè)數(shù)據(jù)查詢(xún)節(jié)點(diǎn)。
[0109]此外,Apache Solr按照collect1n > shard > core從大到小來(lái)組織同一類(lèi)型的索引,并為core提供了 replica來(lái)保證索引數(shù)據(jù)的高可用性。
[0110]在寫(xiě)入數(shù)據(jù)的時(shí)候,Apache Solr只提供了兩種寫(xiě)入數(shù)據(jù)隔離策略,例如在利用DIH將數(shù)據(jù)庫(kù)向Apache Solr寫(xiě)入數(shù)據(jù)的時(shí)候:(I) Apache Solr能夠向collect1n中所有的shard中的所有core插入、修改、刪除數(shù)據(jù)(如圖5上圖),或者(2)只向某個(gè)單獨(dú)shard的特定的core插入、修改、刪除數(shù)據(jù)(如圖5下圖)。
[0111]對(duì)于Apache Solr的數(shù)據(jù)隔離策略(I),對(duì)數(shù)據(jù)的操作(插入、修改、刪除)會(huì)在整個(gè)collect1n擴(kuò)展開(kāi)來(lái),增加了數(shù)據(jù)的安全隱患。并且如插入操作也在整個(gè)collect1n蔓延,所有shard中的core都保存新插入的數(shù)據(jù),會(huì)造成數(shù)據(jù)((N_rl)+NreplicJ倍的冗余。
[0112]對(duì)于Apache Solr的數(shù)據(jù)隔離策略(2),將所有的操作限制于某個(gè)特定core,杜絕了數(shù)據(jù)安全隱患,但是其缺點(diǎn)是數(shù)據(jù)寫(xiě)入也只能僅限于特定的core,不能寫(xiě)入到replica中,如圖5下圖所示,在寫(xiě)入數(shù)據(jù)到shardN的corel的時(shí)候,replical不能接收到數(shù)據(jù),此時(shí)高可用性就等于形同虛設(shè)。
[0113]圖6為本發(fā)明實(shí)施例中的對(duì)存儲(chǔ)數(shù)據(jù)操作方法的使用流程示意圖,如圖所示,可以包括步驟:
[0114]步驟601、接收將要存儲(chǔ)的數(shù)據(jù);
[0115]步驟602、將數(shù)據(jù)分別發(fā)送至集合collect1n下一切片shard下的核心core和副本replica中存儲(chǔ),所述shard是同時(shí)包含core和replica,所述collect1n是包含多個(gè)shardο
[0116]實(shí)施中,通過(guò)數(shù)據(jù)導(dǎo)入處理程序DIH將將要存儲(chǔ)的數(shù)據(jù)發(fā)送到一個(gè)shard下的core和replica中存儲(chǔ)。
[0117]實(shí)施中,可以進(jìn)一步包括:
[0118]對(duì)同一個(gè)shard下的core中存儲(chǔ)的數(shù)據(jù)進(jìn)行修改或刪除時(shí),根據(jù)core中修改或刪除的數(shù)據(jù)對(duì)該shard下的replica中存儲(chǔ)的數(shù)據(jù)進(jìn)行修改或刪除。
[0119]具體實(shí)施中,同一個(gè)shard下的core中存儲(chǔ)的數(shù)據(jù)與其對(duì)應(yīng)的replica中存儲(chǔ)的數(shù)據(jù)可以是同步的,core中的數(shù)據(jù)進(jìn)行修改或刪除時(shí),replica中的數(shù)據(jù)根據(jù)core中修改或刪除的數(shù)據(jù)對(duì)該shard下的replica中存儲(chǔ)的數(shù)據(jù)進(jìn)行修改或刪除。
[0120]實(shí)施中,可以接收將要存儲(chǔ)的數(shù)據(jù)并發(fā)送至開(kāi)源的搜索服務(wù)器Apache Solr,在Apache Solr中對(duì)同一個(gè)shard下的core和replica中的數(shù)據(jù)進(jìn)行操作。
[0121]具體實(shí)施中,本發(fā)明實(shí)施例中改進(jìn)了 Apache Solr,使得數(shù)據(jù)隔離策略更加靈活,具體表現(xiàn)為:在Apache Solr兩種的數(shù)據(jù)隔離策略的基礎(chǔ)上面,提供了第三種數(shù)據(jù)隔離側(cè)路,即向同一個(gè)shard下面的所有core寫(xiě)入數(shù)據(jù),如圖7所示。
[0122]圖7為本發(fā)明實(shí)施例中對(duì)存儲(chǔ)數(shù)據(jù)操作方法的實(shí)施示意圖,如圖所示,通過(guò)DIH導(dǎo)入數(shù)據(jù)到Apache Solr的corel中,同時(shí)也會(huì)導(dǎo)入到replical中,但不會(huì)影響到其他shard的數(shù)據(jù);對(duì)某個(gè)core上面的數(shù)據(jù)進(jìn)行操作(刪除或者修改),只會(huì)影響同一 shard下面的core和replica,影響不到其他shard的數(shù)據(jù)。
[0123]基于同一發(fā)明構(gòu)思,本發(fā)明實(shí)施例中還提供了一種對(duì)存儲(chǔ)數(shù)據(jù)的操作裝置,由于該裝置解決問(wèn)題的原理與一種對(duì)存儲(chǔ)數(shù)據(jù)的操作方法相似,因此該裝置的實(shí)施可以參見(jiàn)方法的實(shí)施,重復(fù)之處不再贅述。
[0124]圖8為本發(fā)明實(shí)施例中對(duì)存儲(chǔ)數(shù)據(jù)的操作裝置的結(jié)構(gòu)示意圖,可以包括:
[0125]第二接收模塊801,用于接收將要存儲(chǔ)的數(shù)據(jù);
[0126]第一存儲(chǔ)模塊802,用于將數(shù)據(jù)分別發(fā)送至集合collect1n下一切片shard下的核心core和副本replica中存儲(chǔ),所述shard是同時(shí)包含core和replica,所述collect1n 是包含多個(gè) shard。
[0127]實(shí)施中,第一存儲(chǔ)模塊802還可以用于通過(guò)數(shù)據(jù)導(dǎo)入處理程序DIH將將要存儲(chǔ)的數(shù)據(jù)發(fā)送到一個(gè)shard下的core和replica中存儲(chǔ)。
[0128]實(shí)施中,第一存儲(chǔ)模塊802還可以用于對(duì)同一個(gè)shard下的core中存儲(chǔ)的數(shù)據(jù)進(jìn)行修改或刪除時(shí),根據(jù)core中修改或刪除的數(shù)據(jù)對(duì)該shard下的replica中存儲(chǔ)的數(shù)據(jù)進(jìn)行修改或刪除。
[0129]實(shí)施中,第二接收模決801還可以用于接收將要存儲(chǔ)的數(shù)據(jù)并發(fā)送至開(kāi)源的搜索服務(wù)器Apache Solr,在Apache Solr中對(duì)同一個(gè)shard下的core和replica中的數(shù)據(jù)進(jìn)行操作。
[0130]為了描述的方便,以上所述裝置的各部分以功能分為各種部件或單元分別描述。當(dāng)然,在實(shí)施本發(fā)明時(shí)可以把各部件或單元的功能在同一個(gè)或多個(gè)軟件或硬件中實(shí)現(xiàn)。
[0131]下面結(jié)合一個(gè)具體的實(shí)施示例來(lái)進(jìn)行說(shuō)明。
[0132]首先,第二接收模塊801接收將要存儲(chǔ)的數(shù)據(jù),然后第一存儲(chǔ)模塊802通過(guò)數(shù)據(jù)導(dǎo)入處理程序DIH將將要存儲(chǔ)的數(shù)據(jù)發(fā)送到一個(gè)shard下的core和replica中存儲(chǔ),該shard是同時(shí)包含core和replica。當(dāng)同一個(gè)shard下的core中存儲(chǔ)的數(shù)據(jù)進(jìn)行了修改或刪除后,該shard下的replica會(huì)進(jìn)行數(shù)據(jù)同步,使其中的數(shù)據(jù)與core中的數(shù)據(jù)保持一致。
[0133]通過(guò)上述實(shí)施例,可以看出,本發(fā)明實(shí)施例提供的技術(shù)方案將待存儲(chǔ)的數(shù)據(jù)發(fā)送至一個(gè)同時(shí)包含core和replica的shard中存儲(chǔ),可以實(shí)現(xiàn)在同一個(gè)shard中的core和replica數(shù)據(jù)的同步,若發(fā)生誤操作,僅在該shard中會(huì)出現(xiàn)問(wèn)題,并不會(huì)蔓延至整個(gè)collect1n ;由于只是將數(shù)據(jù)發(fā)送至某一個(gè)shard中的core和replica中存儲(chǔ),因此不會(huì)造成數(shù)據(jù)的冗余。
[0134]另外,本發(fā)明實(shí)施例中還提供了一種數(shù)據(jù)存儲(chǔ)方法,如9為本發(fā)明實(shí)施例中數(shù)據(jù)存儲(chǔ)方法的使用流程示意圖,如圖所示,可以包括步驟:
[0135]步驟901、接收將要存儲(chǔ)的數(shù)據(jù);
[0136]步驟902、將數(shù)據(jù)分別發(fā)送至一個(gè)shard下的core和replica中存儲(chǔ),所述replica是創(chuàng)建core時(shí)創(chuàng)建的。
[0137]具體實(shí)施中,倉(cāng)Il建core時(shí)可以自動(dòng)創(chuàng)建replica。利用這個(gè)特性,本發(fā)明實(shí)施例中提供的技術(shù)方案可以自動(dòng)檢測(cè)replica數(shù)目,并與core對(duì)應(yīng)的創(chuàng)建replica ;當(dāng)某個(gè)replica出現(xiàn)問(wèn)題的時(shí)候,可以自動(dòng)重建replica,這保證了高可用性,并且簡(jiǎn)化了 replica的創(chuàng)建過(guò)程,將人為干預(yù)轉(zhuǎn)化為系統(tǒng)自動(dòng)執(zhí)行,保證了 replica的數(shù)量,確保了數(shù)據(jù)安全。
[0138]實(shí)施中,可以定時(shí)從不同的數(shù)據(jù)源接收將要存儲(chǔ)的數(shù)據(jù)并將其存儲(chǔ)在同一個(gè)shard 下的 core 和 replica 中。
[0139]具體實(shí)施中,定時(shí)從不同數(shù)據(jù)源接收數(shù)據(jù)的任務(wù)能夠方便快捷的實(shí)時(shí)寫(xiě)入來(lái)自各種不同數(shù)據(jù)源的數(shù)據(jù),數(shù)據(jù)寫(xiě)入延時(shí)可以為秒級(jí),從而為用戶(hù)提供近實(shí)時(shí)查詢(xún)服務(wù)。
[0140]實(shí)施中,在core狀態(tài)異常時(shí),可以將數(shù)據(jù)發(fā)送至同一個(gè)shard下的replica中存儲(chǔ)。
[0141]具體實(shí)施中,在core發(fā)生異常時(shí),可以將任務(wù)直接切換到與其對(duì)應(yīng)的replica中,這樣做保證了系統(tǒng)的正常運(yùn)行。
[0142]實(shí)施中,在創(chuàng)建replica失敗、core狀態(tài)異常、以及定時(shí)接收將要存儲(chǔ)的數(shù)據(jù)的過(guò)程發(fā)生異常其中任意一個(gè)出現(xiàn)時(shí),可以進(jìn)行故障通知。
[0143]具體實(shí)施中,本發(fā)明實(shí)施例中可以監(jiān)控各個(gè)部分的狀態(tài)和操作,若出現(xiàn)問(wèn)題,能夠快速及時(shí)的進(jìn)行故障通知,使運(yùn)維人員準(zhǔn)確進(jìn)行故障修理。
[0144]實(shí)施中,可以接收將要存儲(chǔ)的數(shù)據(jù)并發(fā)送至開(kāi)源的搜索服務(wù)器Apache Solr,在Apache Solr中對(duì)同一個(gè)shard下的core和replica中的數(shù)據(jù)進(jìn)行存儲(chǔ)。
[0145]實(shí)施中,倉(cāng)1」建core和replica可以是根據(jù)存儲(chǔ)在Apache Solr上的core基本信息、定時(shí)數(shù)據(jù)導(dǎo)入信息、定時(shí)數(shù)據(jù)導(dǎo)入執(zhí)行信息、以及索引數(shù)據(jù)分布信息來(lái)創(chuàng)建的。
[0146]基于同一發(fā)明構(gòu)思,本發(fā)明實(shí)施例中還提供了一種數(shù)據(jù)存儲(chǔ)裝置,由于該裝置解決問(wèn)題的原理與一種數(shù)據(jù)存儲(chǔ)方法相似,因此該裝置的實(shí)施可以參見(jiàn)方法的實(shí)施,重復(fù)之處不再贅述。
[0147]圖10為本發(fā)明實(shí)施例中數(shù)據(jù)存儲(chǔ)裝置的結(jié)構(gòu)示意圖,可以包括:
[0148]第三接收模塊1001,用于接收將要存儲(chǔ)的數(shù)據(jù);
[0149]第二存儲(chǔ)模塊1002,用于將數(shù)據(jù)分別發(fā)送至一個(gè)shard下的core和replica中存儲(chǔ),該replica是創(chuàng)建core時(shí)創(chuàng)建的。
[0150]實(shí)施中,第三接收模塊1001還可以用于定時(shí)從不同的數(shù)據(jù)源接收將要存儲(chǔ)的數(shù)據(jù);
[0151]第二存儲(chǔ)模塊1002還可以用于將從不同數(shù)據(jù)源接收的數(shù)據(jù)存儲(chǔ)在同一個(gè)shard下的core和replica中。
[0152]實(shí)施中,第二存儲(chǔ)模塊1002還可以用于在core狀態(tài)異常時(shí),將數(shù)據(jù)發(fā)送至同一個(gè)shard下的replica中存儲(chǔ)。
[0153]實(shí)施中,還可以進(jìn)一步包括:
[0154]通知模塊1003,用于在創(chuàng)建r印Iica失敗、core狀態(tài)異常、以及定時(shí)接收將要存儲(chǔ)的數(shù)據(jù)的過(guò)程發(fā)生異常其中任意一個(gè)出現(xiàn)時(shí)進(jìn)行故障通知。
[0155]實(shí)施中,第三接收模塊1001還可以進(jìn)一步用于接收將要存儲(chǔ)的數(shù)據(jù)并發(fā)送至開(kāi)源的搜索服務(wù)器Apache Solr,在Apache Solr中對(duì)同一個(gè)shard下的core和replica中的數(shù)據(jù)進(jìn)行存儲(chǔ)。
[0156]實(shí)施中,還可以進(jìn)一步包括:
[0157]創(chuàng)建模塊1004,用于根據(jù)存儲(chǔ)在Apache Solr上的core基本信息、定時(shí)數(shù)據(jù)導(dǎo)入信息、定時(shí)數(shù)據(jù)導(dǎo)入執(zhí)行信息、以及索引數(shù)據(jù)分布信息來(lái)創(chuàng)建core和replica。
[0158]為了描述的方便,以上所述裝置的各部分以功能分為各種部件或單元分別描述。當(dāng)然,在實(shí)施本發(fā)明時(shí)可以把各部件或單元的功能在同一個(gè)或多個(gè)軟件或硬件中實(shí)現(xiàn)。
[0159]下面結(jié)合一個(gè)具體的實(shí)施示例來(lái)進(jìn)行說(shuō)明。
[0160]首先,第三接收模塊1001接收將要存儲(chǔ)的數(shù)據(jù),然后第二存儲(chǔ)模塊1002將數(shù)據(jù)分別發(fā)送至一個(gè)shard下的core和replica中存儲(chǔ),該replica是創(chuàng)建core時(shí)創(chuàng)建的。同時(shí),第三接收模塊1001會(huì)定時(shí)地從不同的數(shù)據(jù)源接收要存儲(chǔ)的數(shù)據(jù),并發(fā)送至第二存儲(chǔ)模塊1002將其存儲(chǔ)在同一個(gè)shard下的core和replica中。在存儲(chǔ)過(guò)程中出現(xiàn)異常時(shí),若core無(wú)法繼續(xù)存儲(chǔ),則將數(shù)據(jù)發(fā)送至同一個(gè)shard下的replica中存儲(chǔ);若存儲(chǔ)失敗則通知通知模決1003進(jìn)行故障通知。
[0161]通過(guò)上述實(shí)施例,可以看出,本發(fā)明實(shí)施例提供的技術(shù)方案在創(chuàng)建core時(shí)自動(dòng)創(chuàng)建replica,將人工干預(yù)操作轉(zhuǎn)化為自動(dòng)執(zhí)行,使得replica的創(chuàng)建更加靈活。
[0162]本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)明白,本發(fā)明的實(shí)施例可提供為方法、系統(tǒng)、或計(jì)算機(jī)程序產(chǎn)品。因此,本發(fā)明可采用完全硬件實(shí)施例、完全軟件實(shí)施例、或結(jié)合軟件和硬件方面的實(shí)施例的形式。而且,本發(fā)明可采用在一個(gè)或多個(gè)其中包含有計(jì)算機(jī)可用程序代碼的計(jì)算機(jī)可用存儲(chǔ)介質(zhì)(包括但不限于磁盤(pán)存儲(chǔ)器、CD-ROM、光學(xué)存儲(chǔ)器等)上實(shí)施的計(jì)算機(jī)程序產(chǎn)品的形式。
[0163]本發(fā)明是參照根據(jù)本發(fā)明實(shí)施例的方法、設(shè)備(系統(tǒng))、和計(jì)算機(jī)程序產(chǎn)品的流程圖和/或方框圖來(lái)描述的。應(yīng)理解可由計(jì)算機(jī)程序指令實(shí)現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合??商峁┻@些計(jì)算機(jī)程序指令到通用計(jì)算機(jī)、專(zhuān)用計(jì)算機(jī)、嵌入式處理機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器以產(chǎn)生一個(gè)機(jī)器,使得通過(guò)計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的裝置。
[0164]這些計(jì)算機(jī)程序指令也可存儲(chǔ)在能引導(dǎo)計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備以特定方式工作的計(jì)算機(jī)可讀存儲(chǔ)器中,使得存儲(chǔ)在該計(jì)算機(jī)可讀存儲(chǔ)器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能。
[0165]這些計(jì)算機(jī)程序指令也可裝載到計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備上,使得在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計(jì)算機(jī)實(shí)現(xiàn)的處理,從而在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行的指令提供用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的步驟。
[0166]盡管已描述了本發(fā)明的優(yōu)選實(shí)施例,但本領(lǐng)域內(nèi)的技術(shù)人員一旦得知了基本創(chuàng)造性概念,則可對(duì)這些實(shí)施例作出另外的變更和修改。所以,所附權(quán)利要求意欲解釋為包括優(yōu)選實(shí)施例以及落入本發(fā)明范圍的所有變更和修改。
[0167]顯然,本領(lǐng)域的技術(shù)人員可以對(duì)本發(fā)明進(jìn)行各種改動(dòng)和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動(dòng)和變型在內(nèi)。
【權(quán)利要求】
1.一種數(shù)據(jù)查詢(xún)方法,其特征在于,所述方法包括步驟: 接收數(shù)據(jù)查詢(xún)請(qǐng)求; 對(duì)數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)配置隨機(jī)加權(quán)值; 根據(jù)該加權(quán)值對(duì)數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)的數(shù)據(jù)進(jìn)行查詢(xún); 在接收到數(shù)據(jù)查詢(xún)失敗的消息后,重新對(duì)數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)配置隨機(jī)加權(quán)值進(jìn)行查詢(xún),直至得到查詢(xún)結(jié)果。
2.如權(quán)利要求1所述的方法,其特征在于,根據(jù)該加權(quán)值對(duì)數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)的數(shù)據(jù)進(jìn)行查詢(xún)時(shí),進(jìn)一步包括: 確定加權(quán)值最高的數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn); 對(duì)該加權(quán)值最高的數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)的數(shù)據(jù)進(jìn)行查詢(xún)。
3.如權(quán)利要求1或2所述的方法,其特征在于,在接收到數(shù)據(jù)查詢(xún)請(qǐng)求后,對(duì)數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)的數(shù)據(jù)進(jìn)行查詢(xún)之前,進(jìn)一步包括: 對(duì)接收到的數(shù)據(jù)查詢(xún)請(qǐng)求進(jìn)行語(yǔ)法解析; 根據(jù)語(yǔ)法解析確定該查詢(xún)請(qǐng)求將要查詢(xún)的數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn); 對(duì)該數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)合成數(shù)據(jù)查詢(xún)的查詢(xún)接口。
4.如權(quán)利要求1至3任一所述的方法,其特征在于,在得到查詢(xún)結(jié)果后,進(jìn)一步包括: 對(duì)查詢(xún)到的數(shù)據(jù)進(jìn)行數(shù)據(jù)封裝; 將該封裝的數(shù)據(jù)返回至發(fā)出查詢(xún)請(qǐng)求的終端。
5.如權(quán)利要求1至4任一所述的方法,其特征在于,接收數(shù)據(jù)查詢(xún)請(qǐng)求并發(fā)送至開(kāi)源的搜索服務(wù)器Apache Solr,在Apache Solr中對(duì)數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)的數(shù)據(jù)進(jìn)行查詢(xún)。
6.一種數(shù)據(jù)查詢(xún)裝置,其特征在于,所述裝置包括: 第一接收模塊,用于接收數(shù)據(jù)查詢(xún)請(qǐng)求; 加權(quán)模塊,用于對(duì)數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)配置隨機(jī)加權(quán)值; 查詢(xún)模塊,用于根據(jù)該加權(quán)值對(duì)數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)的數(shù)據(jù)進(jìn)行查詢(xún); 加權(quán)模塊,進(jìn)一步用于在接收到數(shù)據(jù)查詢(xún)失敗的消息后,重新對(duì)數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)配置隨機(jī)加權(quán)值; 查詢(xún)模塊,進(jìn)一步用于根據(jù)重新配置的加權(quán)值對(duì)數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)的數(shù)據(jù)進(jìn)行查詢(xún),直至得到查詢(xún)結(jié)果。
7.如權(quán)利要求6所述的裝置,其特征在于,查詢(xún)模塊進(jìn)一步用于在根據(jù)該加權(quán)值對(duì)數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)的數(shù)據(jù)進(jìn)行查詢(xún)時(shí),確定加權(quán)值最高的數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn),并對(duì)該加權(quán)值最高的數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)的數(shù)據(jù)進(jìn)行查詢(xún)。
8.如權(quán)利要求6或7所述的裝置,其特征在于,進(jìn)一步包括: 解析模塊,用于在接收到數(shù)據(jù)查詢(xún)請(qǐng)求后對(duì)接收到的數(shù)據(jù)查詢(xún)請(qǐng)求進(jìn)行語(yǔ)法解析; 確定模塊,用于根據(jù)語(yǔ)法解析確定該查詢(xún)請(qǐng)求將要查詢(xún)的數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn); 接口模塊,用于對(duì)數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)的數(shù)據(jù)進(jìn)行查詢(xún)之前對(duì)該數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)合成數(shù)據(jù)查詢(xún)的查詢(xún)接口。
9.如權(quán)利要求6至8任一所述的裝置,其特征在于,進(jìn)一步包括: 封裝模塊,用于在將查詢(xún)到的數(shù)據(jù)返回終端之前,對(duì)查詢(xún)到的數(shù)據(jù)進(jìn)行數(shù)據(jù)封裝。
10.如權(quán)利要求6至9任一所述的裝置,其特征在于,第一接收模塊進(jìn)一步用于接收數(shù)據(jù)查詢(xún)請(qǐng)求并發(fā)送至開(kāi)源的搜索服務(wù)器Apache Solr,在Apache Solr中對(duì)數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)的數(shù)據(jù)進(jìn)行查詢(xún)。
11.一種對(duì)存儲(chǔ)數(shù)據(jù)的操作方法,其特征在于,所述方法包括步驟: 接收將要存儲(chǔ)的數(shù)據(jù); 將數(shù)據(jù)分別發(fā)送至集合collect1n下一切片shard下的核心core和副本replica中存儲(chǔ),所述shard是同時(shí)包含core和replica,所述collect1n是包含多個(gè)shard。
12.如權(quán)利要求11所述的方法,其特征在于,通過(guò)數(shù)據(jù)導(dǎo)入處理程序DlH將將要存儲(chǔ)的數(shù)據(jù)發(fā)送到一個(gè)shard下的core和replica中存儲(chǔ)。
13.如權(quán)利要求11或12所述的方法,其特征在于,進(jìn)一步包括: 對(duì)同一個(gè)shard下的core中存儲(chǔ)的數(shù)據(jù)進(jìn)行修改或刪除時(shí),根據(jù)core中修改或刪除的數(shù)據(jù)對(duì)該shard下的replica中存儲(chǔ)的數(shù)據(jù)進(jìn)行修改或刪除。
14.如權(quán)利要求11至13任一所述的方法,其特征在于,接收將要存儲(chǔ)的數(shù)據(jù)并發(fā)送至開(kāi)源的搜索服務(wù)器Apache Solr,在Apache Solr中對(duì)同一個(gè)shard下的core和replica中的數(shù)據(jù)進(jìn)行操作。
15.一種對(duì)存儲(chǔ)數(shù)據(jù)的操作裝置,其特征在于,所述裝置包括: 第二接收模塊,用于接收將要存儲(chǔ)的數(shù)據(jù); 第一存儲(chǔ)模塊,用于將數(shù)據(jù)分別發(fā)送至集合collect1n下一切片shard下的核心core和副本replica中存儲(chǔ),所述shard是同時(shí)包含core和replica,所述collect1n是包含多個(gè)shard ο
16.如權(quán)利要求15所述的裝置,其特征在于,第一存儲(chǔ)模塊進(jìn)一步用于通過(guò)數(shù)據(jù)導(dǎo)入處理程序DIH將將要存儲(chǔ)的數(shù)據(jù)發(fā)送到一個(gè)shard下的core和replica中存儲(chǔ)。
17.如權(quán)利要求15或16所述的裝置,其特征在于,第一存儲(chǔ)模塊進(jìn)一步用于對(duì)同一個(gè)shard下的core中存儲(chǔ)的數(shù)據(jù)進(jìn)行修改或刪除時(shí),根據(jù)core中修改或刪除的數(shù)據(jù)對(duì)該shard下的replica中存儲(chǔ)的數(shù)據(jù)進(jìn)行修改或刪除。
18.如權(quán)利要求16至17所述的裝置,其特征在于,第二接收模塊進(jìn)一步用于接收將要存儲(chǔ)的數(shù)據(jù)并發(fā)送至開(kāi)源的搜索服務(wù)器Apache Solr,在Apache Solr中對(duì)同一個(gè)shard下的core和replica中的數(shù)據(jù)進(jìn)行操作。
19.一種數(shù)據(jù)存儲(chǔ)方法,其特征在于,所述方法包括步驟: 接收將要存儲(chǔ)的數(shù)據(jù); 將數(shù)據(jù)分別發(fā)送至一個(gè)shard下的core和replica中存儲(chǔ),所述replica是創(chuàng)建core時(shí)創(chuàng)建的。
20.如權(quán)利要求19所述的方法,其特征在于,定時(shí)從不同的數(shù)據(jù)源接收將要存儲(chǔ)的數(shù)據(jù)并將其存儲(chǔ)在同一個(gè)shard下的core和replica中。
21.如權(quán)利要求19或20所述的方法,其特征在于,在core狀態(tài)異常時(shí),將數(shù)據(jù)發(fā)送至同一個(gè)shard下的replica中存儲(chǔ)。
22.如權(quán)利要求19至21任一所述的方法,其特征在于,在創(chuàng)建replica失敗、core狀態(tài)異常、以及定時(shí)接收將要存儲(chǔ)的數(shù)據(jù)的過(guò)程發(fā)生異常其中任意一個(gè)出現(xiàn)時(shí)進(jìn)行故障通知。
23.如權(quán)利要求19至22任一所述的方法,其特征在于,接收將要存儲(chǔ)的數(shù)據(jù)并發(fā)送至開(kāi)源的搜索服務(wù)器Apache Solr,在Apache Solr中對(duì)同一個(gè)shard下的core和replica中的數(shù)據(jù)進(jìn)行存儲(chǔ)。
24.如權(quán)利要求23所述的方法,其特征在于,其特征在于,創(chuàng)建core和replica是根據(jù)存儲(chǔ)在Apache Solr上的core基本信息、定時(shí)數(shù)據(jù)導(dǎo)入信息、定時(shí)數(shù)據(jù)導(dǎo)入執(zhí)行信息、以及索弓I數(shù)據(jù)分布信息來(lái)創(chuàng)建的。
25.一種數(shù)據(jù)存儲(chǔ)裝置,其特征在于,所述裝置包括: 第三接收模塊,用于接收將要存儲(chǔ)的數(shù)據(jù); 第二存儲(chǔ)模塊,用于將數(shù)據(jù)分別發(fā)送至一個(gè)shard下的core和replica中存儲(chǔ),所述replica是創(chuàng)建core時(shí)創(chuàng)建的。
26.如權(quán)利要求25所述的裝置,其特征在于,第三接收模塊進(jìn)一步用于定時(shí)從不同的數(shù)據(jù)源接收將要存儲(chǔ)的數(shù)據(jù); 第二存儲(chǔ)模塊進(jìn)一步用于將從不同數(shù)據(jù)源接收的數(shù)據(jù)存儲(chǔ)在同一個(gè)shard下的core和 replica 中。
27.如權(quán)利要求25或26所述的裝置,其特征在于,第二存儲(chǔ)模塊進(jìn)一步用于在core狀態(tài)異常時(shí),將數(shù)據(jù)發(fā)送至同一個(gè)shard下的replica中存儲(chǔ)。
28.如權(quán)利要求25至27任一所述的裝置,其特征在于,進(jìn)一步包括: 通知模塊,用于在創(chuàng)建replica失敗、core狀態(tài)異常、以及定時(shí)接收將要存儲(chǔ)的數(shù)據(jù)的過(guò)程發(fā)生異常其中任意一個(gè)出現(xiàn)時(shí)進(jìn)行故障通知。
29.如權(quán)利要求25至28任一所述的裝置,其特征在于,第三接收模塊進(jìn)一步用于接收將要存儲(chǔ)的數(shù)據(jù)并發(fā)送至開(kāi)源的搜索服務(wù)器Apache Solr,在Apache Solr中對(duì)同一個(gè)shard下的core和replica中的數(shù)據(jù)進(jìn)行存儲(chǔ)。
30.如權(quán)利要求29所述的裝置,其特征在于,其特征在于,進(jìn)一步包括: 創(chuàng)建模塊,用于根據(jù)存儲(chǔ)在Apache Solr上的core基本信息、定時(shí)數(shù)據(jù)導(dǎo)入信息、定時(shí)數(shù)據(jù)導(dǎo)入執(zhí)行信息、以及索引數(shù)據(jù)分布信息來(lái)創(chuàng)建core和replica。
【文檔編號(hào)】G06F17/30GK104268262SQ201410531834
【公開(kāi)日】2015年1月7日 申請(qǐng)日期:2014年10月10日 優(yōu)先權(quán)日:2014年10月10日
【發(fā)明者】孫陶然, 楊有鵬, 符子文, 全偉 申請(qǐng)人:拉卡拉支付有限公司