本發(fā)明涉及數(shù)據(jù)庫
技術(shù)領(lǐng)域:
:,尤其涉及一種數(shù)據(jù)操作方法和數(shù)據(jù)管理服務(wù)器。
背景技術(shù):
::基于資源最大化共享的目的,在數(shù)據(jù)庫存儲(chǔ)數(shù)據(jù)時(shí),軟件即服務(wù)(softwareasaservice,簡(jiǎn)稱saas)提供商優(yōu)先選擇共享數(shù)據(jù)庫、共享數(shù)據(jù)表模式,即在數(shù)據(jù)庫中的一個(gè)數(shù)據(jù)表中同時(shí)存儲(chǔ)多個(gè)租戶的數(shù)據(jù),通過租戶標(biāo)識(shí)字段識(shí)別數(shù)據(jù)所屬的租戶,這樣能夠?qū)崿F(xiàn)數(shù)據(jù)庫資源共享程度最高、資源開銷最小,從而支持大規(guī)模中小企業(yè)達(dá)到收益最大化。現(xiàn)有技術(shù)中,在共享數(shù)據(jù)庫、共享數(shù)據(jù)表模式下租戶定制字段有著有巨大的差異性,導(dǎo)致實(shí)現(xiàn)租戶定制需求非常復(fù)雜。現(xiàn)有技術(shù)在解決租戶靈活定制的同時(shí)帶來數(shù)據(jù)讀寫復(fù)雜的問題,而這種復(fù)雜性是不應(yīng)該被用戶感知的,用戶只需知道表的所有字段(基線字段和租戶的定制字段),并不需要關(guān)注數(shù)據(jù)庫擴(kuò)展的復(fù)雜數(shù)據(jù)存儲(chǔ)模型。為了避免租戶進(jìn)行數(shù)據(jù)處理的復(fù)雜性并提高開發(fā)效率,現(xiàn)有數(shù)據(jù)管理模型需要對(duì)用戶提交的數(shù)據(jù)操作結(jié)構(gòu)化查詢語言(structuredquerylanguage,簡(jiǎn)稱sql)先解析,再根據(jù)定制元數(shù)據(jù)翻譯重寫面向?qū)嶋H存儲(chǔ)模型的sql,這個(gè)步驟一般都比較復(fù)雜,并且每次sql請(qǐng)求都要重復(fù)該步驟,這樣在大并發(fā)量時(shí)會(huì)消耗大量的性能資源,并降低系統(tǒng)性能。另外,由于多租戶共享數(shù)據(jù)表,為了隔離租戶數(shù)據(jù),會(huì)在重寫sql時(shí)增加租戶標(biāo)識(shí)(identification,簡(jiǎn)稱id)進(jìn)行過濾,但這只是邏輯上隔離,數(shù)據(jù)并未進(jìn)行物理隔離。在這種情況下,有可能出現(xiàn)在增加租戶id進(jìn)行過濾之前,通過sql注入等攻擊方法繞過根據(jù)租戶id過濾的現(xiàn)象,發(fā)生租戶之間的數(shù)據(jù)泄露干擾,因此存在潛在的數(shù)據(jù)安全隱患。技術(shù)實(shí)現(xiàn)要素:本發(fā)明提供了一種數(shù)據(jù)操作方法和數(shù)據(jù)管理服務(wù)器,能夠避免復(fù)雜的sql重寫過程,提高數(shù)據(jù)操作效率,同時(shí)能夠保證租戶的數(shù)據(jù)安全。第一方面,提供了一種數(shù)據(jù)操作方法,所述方法包括:獲取租戶的標(biāo)識(shí)和數(shù)據(jù)操作請(qǐng)求,所述數(shù)據(jù)操作請(qǐng)求用于請(qǐng)求對(duì)所述租戶的數(shù)據(jù)進(jìn)行數(shù)據(jù)操作,所述數(shù)據(jù)操作請(qǐng)求包括所述數(shù)據(jù)對(duì)應(yīng)的第一表名;根據(jù)所述租戶的標(biāo)識(shí)和所述第一表名確定所述數(shù)據(jù)在所述第一數(shù)據(jù)庫中對(duì)應(yīng)的數(shù)據(jù)表的第二表名,其中所述第一數(shù)據(jù)庫用于存儲(chǔ)多個(gè)租戶各自的數(shù)據(jù)表,每個(gè)租戶的數(shù)據(jù)表與所述每個(gè)租戶的標(biāo)識(shí)相對(duì)應(yīng),所述租戶為所述多個(gè)租戶之一;將所述數(shù)據(jù)操作請(qǐng)求對(duì)應(yīng)的第一結(jié)構(gòu)化查詢語言sql中的所述第一表名替換為所述第二表名;請(qǐng)求所述第一數(shù)據(jù)庫執(zhí)行替換后的第一sql,完成對(duì)所述數(shù)據(jù)的所述數(shù)據(jù)操作。其中,所述數(shù)據(jù)操作為讀操作或?qū)懖僮???蛇x地,獲取租戶的標(biāo)識(shí)包括:接收saas應(yīng)用服務(wù)器發(fā)送的租戶的標(biāo)識(shí)??蛇x地,獲取數(shù)據(jù)操作請(qǐng)求對(duì)包括:接收saas應(yīng)用服務(wù)器發(fā)送的數(shù)據(jù)操作請(qǐng)求。需要說明的是,所述數(shù)據(jù)操作請(qǐng)求可以為sql,也可以為其他查詢語言,例如領(lǐng)域特定語言(domainspecificlanguage,簡(jiǎn)稱dsl)。當(dāng)所述數(shù)據(jù)操作請(qǐng)求為sql時(shí),所述第一sql即為所述數(shù)據(jù)操作請(qǐng)求本身;當(dāng)所述數(shù)據(jù)操作請(qǐng)求為其他查詢語言時(shí),所述方法還包括:將所述數(shù)據(jù)操作請(qǐng)求轉(zhuǎn)換為sql,得到所述第一sql。可選地,所述第一數(shù)據(jù)庫為內(nèi)存數(shù)據(jù)庫。通過內(nèi)存計(jì)算能夠進(jìn)一步提高數(shù)據(jù)操作性能。本發(fā)明中,數(shù)據(jù)管理服務(wù)器只需將sql中的數(shù)據(jù)對(duì)應(yīng)的表名替換為該數(shù)據(jù)在數(shù)據(jù)庫中對(duì)應(yīng)的表名,然后請(qǐng)求數(shù)據(jù)庫執(zhí)行替換后的sql即可對(duì)數(shù)據(jù)進(jìn)行數(shù)據(jù)操作,能夠避免復(fù)雜的sql重寫過程,提高數(shù)據(jù)操作效率。同時(shí),由于在數(shù)據(jù)庫中每個(gè)租戶的數(shù)據(jù)表相互隔離,能夠防止租戶之間數(shù)據(jù)干擾,保證數(shù)據(jù)安全。結(jié)合第一方面,在第一方面的第一種可能的實(shí)現(xiàn)方式中,在所述獲取第一sql之前,所述方法還包括:獲取基線表的元數(shù)據(jù);根據(jù)所述租戶的標(biāo)識(shí)和基線表的表名生成所述第二表名;根據(jù)所述第二表名和所述基線表的元數(shù)據(jù)生成第二sql,所述第二sql用于創(chuàng)建所述數(shù)據(jù)表;請(qǐng)求所述第一數(shù) 據(jù)庫執(zhí)行所述第二sql。這樣能夠在第一數(shù)據(jù)庫中為租戶創(chuàng)建數(shù)據(jù)表。例如,數(shù)據(jù)管理服務(wù)器可以被配置為當(dāng)監(jiān)測(cè)到所述租戶開通了服務(wù)之后,根據(jù)所述租戶的標(biāo)識(shí)和所述基線表的表名生成所述第二表名,并根據(jù)所述第二表名和所述基線表的元數(shù)據(jù)生成用于創(chuàng)建所述數(shù)據(jù)表的第二sql。此時(shí),所述數(shù)據(jù)表包括基線字段??蛇x地,當(dāng)所述第一數(shù)據(jù)庫創(chuàng)建的所述數(shù)據(jù)表無法滿足所述租戶的需求時(shí),數(shù)據(jù)管理服務(wù)器可以獲取所述租戶提交的(例如通過saas應(yīng)用服務(wù)器提交)更新數(shù)據(jù)表的請(qǐng)求。所述請(qǐng)求中可以包括所述租戶的定制字段的元數(shù)據(jù),所述數(shù)據(jù)管理服務(wù)器根據(jù)所述租戶的定制字段的元數(shù)據(jù)生成用于更新所述數(shù)據(jù)表的sql,并請(qǐng)求所述第一數(shù)據(jù)庫執(zhí)行所述sql,即可完成所述租戶的數(shù)據(jù)表的更新和擴(kuò)展。這樣能夠滿足多租戶共享數(shù)據(jù)庫情況下表結(jié)構(gòu)的靈活擴(kuò)展。此時(shí),所述數(shù)據(jù)表包括基線字段和所述租戶的定制字段。結(jié)合第一方面或第一方面的第一種可能的實(shí)現(xiàn)方式,在第一方面的第二種可能的實(shí)現(xiàn)方式中,所述數(shù)據(jù)操作為寫操作,所述方法還包括:獲取所述數(shù)據(jù)表的數(shù)據(jù)更新信息;根據(jù)所述數(shù)據(jù)表的數(shù)據(jù)更新信息,對(duì)所述數(shù)據(jù)表中更新的數(shù)據(jù)進(jìn)行備份。其中,所述數(shù)據(jù)更新信息可以包括更新的字段名稱以及更新的值。當(dāng)對(duì)第一數(shù)據(jù)庫中的數(shù)據(jù)表進(jìn)行寫操作時(shí),數(shù)據(jù)表中的數(shù)據(jù)會(huì)發(fā)生變化,此時(shí)獲取數(shù)據(jù)表的數(shù)據(jù)更新信息,對(duì)數(shù)據(jù)表中更新的數(shù)據(jù)進(jìn)行備份能保證數(shù)據(jù)的持久化存儲(chǔ)??蛇x地,當(dāng)所述數(shù)據(jù)操作為讀操作時(shí),對(duì)第一數(shù)據(jù)庫中的數(shù)據(jù)表進(jìn)行數(shù)據(jù)讀操作,此時(shí)數(shù)據(jù)表中的數(shù)據(jù)不發(fā)生變化。通過對(duì)第一數(shù)據(jù)庫中存儲(chǔ)的租戶的數(shù)據(jù)表中的數(shù)據(jù)進(jìn)行備份,能夠保證數(shù)據(jù)安全,以對(duì)數(shù)據(jù)進(jìn)行持久化的存儲(chǔ)。結(jié)合的第一方面的第二種可能的實(shí)現(xiàn)方式,在第一方面的第三種可能的實(shí)現(xiàn)方式中,所述根據(jù)所述數(shù)據(jù)表的數(shù)據(jù)更新信息,對(duì)所述數(shù)據(jù)表中更新的數(shù)據(jù)進(jìn)行備份包括:根據(jù)所述數(shù)據(jù)表的數(shù)據(jù)更新信息,請(qǐng)求第二數(shù)據(jù)庫更新備份的所述數(shù)據(jù)表中的數(shù)據(jù)。所述第二數(shù)據(jù)庫用于對(duì)所述第一數(shù)據(jù)庫中的所述多個(gè)租戶的數(shù)據(jù)表中的數(shù)據(jù)進(jìn)行備份。第一數(shù)據(jù)庫也可以稱為主數(shù)據(jù)庫,第二數(shù)據(jù)庫也可以稱為 從數(shù)據(jù)庫。結(jié)合第一方面的第三種可能的實(shí)現(xiàn)方式,在第一方面的第四種可能的實(shí)現(xiàn)方式中,在所述第二數(shù)據(jù)庫中所述多個(gè)租戶各自的數(shù)據(jù)表中的數(shù)據(jù)存儲(chǔ)在共享的業(yè)務(wù)數(shù)據(jù)表中,所述根據(jù)所述數(shù)據(jù)更新信息,請(qǐng)求第二數(shù)據(jù)庫更新備份的所述數(shù)據(jù)表的數(shù)據(jù)包括:獲取基線表的元數(shù)據(jù);根據(jù)所述數(shù)據(jù)更新信息和所述基線表的元數(shù)據(jù)生成第三sql,所述第三sql用于更新所述業(yè)務(wù)數(shù)據(jù)表中所述數(shù)據(jù)表的數(shù)據(jù);請(qǐng)求所述第二數(shù)據(jù)庫執(zhí)行所述第三sql??蛇x地,如果所述數(shù)據(jù)表為根據(jù)所述租戶的定制字段更新后的數(shù)據(jù)表,此時(shí)所述數(shù)據(jù)表包括所述租戶的定制字段,則所述方法還包括:獲取所述租戶的定制字段的元數(shù)據(jù)和映射元數(shù)據(jù),所述映射元數(shù)據(jù)用于指示所述數(shù)據(jù)表中所述租戶的定制字段在所述業(yè)務(wù)數(shù)據(jù)表中所對(duì)應(yīng)的字段;所述根據(jù)所述數(shù)據(jù)更新信息和所述基線表的元數(shù)據(jù)生成第三sql包括:根據(jù)所述數(shù)據(jù)更新信息、所述基線表的元數(shù)據(jù)、所述租戶的定制字段的元數(shù)據(jù)和所述映射元數(shù)據(jù)生成所述第三sql。所述第二數(shù)據(jù)庫中可以采用共享的業(yè)務(wù)數(shù)據(jù)表存儲(chǔ)多個(gè)租戶的數(shù)據(jù)表中的數(shù)據(jù),此時(shí)第二數(shù)據(jù)庫的數(shù)據(jù)模型與第一數(shù)據(jù)庫的數(shù)據(jù)模型不同,因此數(shù)據(jù)管理服務(wù)器需要根據(jù)第一數(shù)據(jù)庫中的數(shù)據(jù)更新信息生成適用于第二數(shù)據(jù)庫的sql,以用于第二數(shù)據(jù)庫更新數(shù)據(jù)的sql??蛇x地,在所述第二數(shù)據(jù)庫中還可以分別存儲(chǔ)多個(gè)租戶各自的數(shù)據(jù)表,即所述第二數(shù)據(jù)庫可以采用第一數(shù)據(jù)庫相同的數(shù)據(jù)模型存儲(chǔ)多個(gè)租戶的數(shù)據(jù)。此時(shí)數(shù)據(jù)管理服務(wù)器請(qǐng)求第二數(shù)據(jù)庫執(zhí)行替換后的第一sql即可完成對(duì)所述數(shù)據(jù)的所述數(shù)據(jù)操作。結(jié)合第一方面的第二種至第四種可能的實(shí)現(xiàn)方式中的任一種可能的實(shí)現(xiàn)方式,在第一方面的第五種可能的實(shí)現(xiàn)方式中,所述獲取所述數(shù)據(jù)表的數(shù)據(jù)更新信息包括:解析所述替換后的第一sql,獲取所述數(shù)據(jù)表的數(shù)據(jù)更新信息;或者,讀取日志文件,獲取所述數(shù)據(jù)表的數(shù)據(jù)更新信息。例如,數(shù)據(jù)管理服務(wù)器可以定時(shí)檢測(cè)第一數(shù)據(jù)庫連接,獲取數(shù)據(jù)操作的sql?;蛘?,數(shù)據(jù)管理服務(wù)器還可以定時(shí)讀取日志文件更新時(shí)間或文件大小判斷日志發(fā)生變更,讀取變更后的數(shù)據(jù)進(jìn)行分析獲取數(shù)據(jù)更新信息。結(jié)合第一方面或第一方面的上述任一種可能的實(shí)現(xiàn)方式,在第一方面的第六種可能的實(shí)現(xiàn)方式中,還包括:當(dāng)所述第一數(shù)據(jù)庫中的基線表的元數(shù)據(jù) 和/或所述租戶的定制字段的元數(shù)據(jù)發(fā)生變更時(shí),根據(jù)變更后的基線表的元數(shù)據(jù)和/或所述租戶的定制字段的元數(shù)據(jù)生成第四sql,所述第四sql用于更新所述數(shù)據(jù)表;請(qǐng)求所述第一數(shù)據(jù)庫執(zhí)行所述第四sql。通過根據(jù)變更后的基線表的元數(shù)據(jù)和/或租戶的定制字段的元數(shù)據(jù)生成sql,并在第一數(shù)據(jù)庫中執(zhí)行該sql,能夠?qū)崿F(xiàn)基線表升級(jí)和/或租戶再次定制數(shù)據(jù)表的同步。第二方面,提供了一種數(shù)據(jù)管理服務(wù)器,包括用于執(zhí)行第一方面或第一方面的任一種可能實(shí)現(xiàn)方式所述的方法的單元。第三方面,提供了一種數(shù)據(jù)管理服務(wù)器,包括:處理器、存儲(chǔ)器和總線系統(tǒng),所述處理器和所述存儲(chǔ)器通過所述總線系統(tǒng)相連,所述存儲(chǔ)器用于存儲(chǔ)指令,所述處理器用于執(zhí)行該存儲(chǔ)器存儲(chǔ)的指令,使得所述數(shù)據(jù)管理服務(wù)器執(zhí)行如第一方面或第一方面的任一種可能的實(shí)現(xiàn)方式所述的方法。第四方面,提供了一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),所述計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)存儲(chǔ)有程序,所述程序使得數(shù)據(jù)管理服務(wù)器執(zhí)行上述第一方面或第一方面的任一種可能的實(shí)現(xiàn)方式所述的方法。第五方面,提供了一種計(jì)算機(jī)程序產(chǎn)品,所述計(jì)算機(jī)程序產(chǎn)品包括計(jì)算機(jī)程序代碼,當(dāng)所述計(jì)算機(jī)程序代碼被數(shù)據(jù)管理服務(wù)器運(yùn)行時(shí),使得所述數(shù)據(jù)管理服務(wù)器執(zhí)行上述第一方面或第一方面的任一種可能的實(shí)現(xiàn)方式所述的方法。本發(fā)明中,數(shù)據(jù)管理服務(wù)器只需將sql中數(shù)據(jù)對(duì)應(yīng)的表名替換為該數(shù)據(jù)在數(shù)據(jù)庫中對(duì)應(yīng)的表名,然后請(qǐng)求數(shù)據(jù)庫執(zhí)行替換后的sql即可對(duì)數(shù)據(jù)進(jìn)行數(shù)據(jù)操作,能夠避免復(fù)雜的sql重寫過程,提高數(shù)據(jù)操作效率。同時(shí),由于在數(shù)據(jù)庫中每個(gè)租戶的數(shù)據(jù)表相互隔離,能夠防止租戶之間數(shù)據(jù)干擾,保證數(shù)據(jù)安全。附圖說明圖1是根據(jù)本發(fā)明實(shí)施例的網(wǎng)絡(luò)部署示意圖;圖2是根據(jù)本發(fā)明實(shí)施例的數(shù)據(jù)管理服務(wù)器的結(jié)構(gòu)示意圖;圖3是根據(jù)本發(fā)明實(shí)施例的數(shù)據(jù)操作方法的示意性流程圖;圖4是根據(jù)本發(fā)明另一實(shí)施例的數(shù)據(jù)管理服務(wù)器的結(jié)構(gòu)示意圖。具體實(shí)施方式下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行描述。為方便理解本發(fā)明實(shí)施例,首先介紹本發(fā)明實(shí)施例描述中涉及到的術(shù)語:基線表(baselinetable)的元數(shù)據(jù):定義基線表的信息描述,包括但不限于表名、字段名(fieldname)、字段類型(fieldtype)、索引、主鍵、外鍵等;定制字段的元數(shù)據(jù):定義定制字段的信息描述,包括但不限于字段名、字段類型、索引等;定制表的元數(shù)據(jù):定義定制表的信息描述,包括但不限于表名、字段名、字段類型、索引、主鍵、外鍵等,其中定制表由多個(gè)定制字段組成;租戶:訂購使用saas應(yīng)用系統(tǒng)的企業(yè),企業(yè)職員為用戶。例如,字段類型可以為“int”、“string”等。以租戶的數(shù)據(jù)表為職員表為例,租戶的數(shù)據(jù)表中字段名可以包括name(姓名)、age(年齡)、sex(性別)、tel(電話)等。下文中將基線表中的字段描述為基線字段。數(shù)據(jù)庫創(chuàng)建的每個(gè)租戶的數(shù)據(jù)表中均包括基線字段,根據(jù)租戶的個(gè)性化定制需求,還可以包括租戶的定制字段。本發(fā)明實(shí)施例中在多租戶共享的數(shù)據(jù)庫中面向租戶進(jìn)行數(shù)據(jù)建模,根據(jù)租戶定制擴(kuò)展模型構(gòu)建租戶特有的數(shù)據(jù)模型,為租戶提供數(shù)據(jù)讀寫。每個(gè)租戶的數(shù)據(jù)作為獨(dú)立的數(shù)據(jù)表進(jìn)行存儲(chǔ),每個(gè)租戶的數(shù)據(jù)表和每個(gè)租戶的標(biāo)識(shí)相對(duì)應(yīng),使得各個(gè)租戶的數(shù)據(jù)表之間形成物理隔離。也就是說,每個(gè)數(shù)據(jù)表只存一個(gè)租戶的數(shù)據(jù),每個(gè)數(shù)據(jù)表包括基線字段和一個(gè)租戶所有的定制字段。同時(shí),租戶的數(shù)據(jù)讀寫操作重定向到數(shù)據(jù)庫中該租戶的數(shù)據(jù)表,無需進(jìn)行復(fù)雜的sql解析、重寫過程,提升了操作的靈活性。另外租戶的數(shù)據(jù)表從物理上進(jìn)行隔離能夠避免數(shù)據(jù)泄露干擾,保證數(shù)據(jù)安全。為了保證數(shù)據(jù)的持久化存儲(chǔ),還可以對(duì)數(shù)據(jù)庫中存儲(chǔ)的租戶的數(shù)據(jù)表進(jìn)行備份。例如,可以采用文件存儲(chǔ)的方式對(duì)該數(shù)據(jù)庫中所有租戶的數(shù)據(jù)進(jìn)行備 份,如可以采用json格式或xml(extensiblemarkuplanguage,可擴(kuò)展標(biāo)記語言)格式的文件存儲(chǔ)。還可以采用磁盤存儲(chǔ)的方式對(duì)該數(shù)據(jù)庫中所有租戶的數(shù)據(jù)進(jìn)行備份。還可以通過另一數(shù)據(jù)庫中對(duì)租戶的數(shù)據(jù)進(jìn)行備份。例如,主數(shù)據(jù)庫用于存儲(chǔ)多個(gè)租戶各自的數(shù)據(jù)表,每個(gè)租戶的數(shù)據(jù)表與每個(gè)租戶的標(biāo)識(shí)相對(duì)應(yīng),從數(shù)據(jù)庫用于對(duì)主數(shù)據(jù)庫中存儲(chǔ)的租戶的數(shù)據(jù)進(jìn)行備份。例如,從數(shù)據(jù)庫中所有租戶可以共享業(yè)務(wù)數(shù)據(jù)表,該業(yè)務(wù)數(shù)據(jù)表包括所有租戶的數(shù)據(jù)表中的數(shù)據(jù);或者從數(shù)據(jù)庫中也可以按照主數(shù)據(jù)庫中的數(shù)據(jù)模型存儲(chǔ)多個(gè)租戶的數(shù)據(jù)表。圖1是本發(fā)明實(shí)施例的網(wǎng)絡(luò)部署示意圖。應(yīng)注意,圖1所示僅以從數(shù)據(jù)庫對(duì)主數(shù)據(jù)庫備份為例進(jìn)行描述,還可以采用上述其他方式對(duì)主數(shù)據(jù)庫中的數(shù)據(jù)進(jìn)行備份。租戶的用戶可以通過saas應(yīng)用服務(wù)器發(fā)起數(shù)據(jù)操作請(qǐng)求。saas應(yīng)用服務(wù)器可以根據(jù)發(fā)起數(shù)據(jù)操作請(qǐng)求的用戶所屬的租戶的標(biāo)識(shí),請(qǐng)求數(shù)據(jù)管理服務(wù)器按租戶讀、寫數(shù)據(jù)。數(shù)據(jù)管理服務(wù)器可以監(jiān)聽saas應(yīng)用服務(wù)器發(fā)起的連接,獲取租戶發(fā)起的數(shù)據(jù)操作請(qǐng)求,并請(qǐng)求主數(shù)據(jù)庫執(zhí)行相應(yīng)的數(shù)據(jù)操作。數(shù)據(jù)管理服務(wù)器還可以根據(jù)基線表的元數(shù)據(jù)、租戶的定制字段的元數(shù)據(jù)請(qǐng)求主數(shù)據(jù)庫為租戶創(chuàng)建包含基線字段和租戶的定制字段的數(shù)據(jù)表。主數(shù)據(jù)庫面向租戶進(jìn)行數(shù)據(jù)建模,根據(jù)租戶的定制擴(kuò)展模型構(gòu)建租戶特有的數(shù)據(jù)模型,為租戶提供數(shù)據(jù)操作。租戶的數(shù)據(jù)讀寫都重定向到數(shù)據(jù)庫中租戶的數(shù)據(jù)表,能夠避免復(fù)雜的sql重寫過程,提高數(shù)據(jù)操作效率。主數(shù)據(jù)庫可以包括多個(gè)租戶各自的數(shù)據(jù)表。每個(gè)租戶的數(shù)據(jù)表與每個(gè)租戶的標(biāo)識(shí)相對(duì)應(yīng)。主數(shù)據(jù)庫可以根據(jù)數(shù)據(jù)管理服務(wù)器的請(qǐng)求對(duì)租戶的數(shù)據(jù)表執(zhí)行相應(yīng)的數(shù)據(jù)操作。由于租戶的數(shù)據(jù)表形成了物理隔離,使得租戶只能對(duì)租戶自身的數(shù)據(jù)表進(jìn)行數(shù)據(jù)操作,防止了租戶之間的數(shù)據(jù)干擾,保證了租戶的數(shù)據(jù)安全。每個(gè)租戶的數(shù)據(jù)表可以包括基線表字段和租戶的定制字段?;€表字段和租戶的定制字段的類型可以一致。從數(shù)據(jù)庫可以用于備份主數(shù)據(jù)庫。例如,從數(shù)據(jù)庫可以存儲(chǔ)多個(gè)租戶共享的業(yè)務(wù)數(shù)據(jù)表,業(yè)務(wù)數(shù)據(jù)表包括數(shù)據(jù)庫中的多個(gè)租戶的數(shù)據(jù)表的數(shù)據(jù),通 過租戶的標(biāo)識(shí)字段值進(jìn)行租戶數(shù)據(jù)隔離。從數(shù)據(jù)庫中表結(jié)構(gòu)可以保持不變,以固定模型存儲(chǔ)多租戶數(shù)據(jù),可以實(shí)現(xiàn)對(duì)主數(shù)據(jù)庫中的數(shù)據(jù)進(jìn)行穩(wěn)定長(zhǎng)久的存儲(chǔ)。主數(shù)據(jù)庫在對(duì)數(shù)據(jù)表進(jìn)行數(shù)據(jù)操作時(shí),對(duì)數(shù)據(jù)表的數(shù)據(jù)寫操作通過異步的方式把寫的數(shù)據(jù)更新到從數(shù)據(jù)庫中進(jìn)行存儲(chǔ)。例如,數(shù)據(jù)管理服務(wù)器監(jiān)聽到主數(shù)據(jù)庫完成對(duì)數(shù)據(jù)的數(shù)據(jù)操作并把操作結(jié)果反饋給saas應(yīng)用服務(wù)器之后,數(shù)據(jù)管理服務(wù)器再請(qǐng)求從數(shù)據(jù)庫執(zhí)行主數(shù)據(jù)庫中的數(shù)據(jù)操作。另外,為了保證主數(shù)據(jù)庫和從數(shù)據(jù)庫的數(shù)據(jù)同步保持一致,如果從數(shù)據(jù)在執(zhí)行更新數(shù)據(jù)的備份過程中失敗時(shí),數(shù)據(jù)管理服務(wù)器還可以請(qǐng)求主數(shù)據(jù)庫將數(shù)據(jù)恢復(fù)到更新之前的值。需要說明的是,當(dāng)主數(shù)據(jù)庫可用時(shí),數(shù)據(jù)管理服務(wù)器可以優(yōu)先在主數(shù)據(jù)庫中進(jìn)行數(shù)據(jù)操作。當(dāng)主數(shù)據(jù)庫不可用時(shí),數(shù)據(jù)管理服務(wù)器還可以通過sql翻譯、重寫直接請(qǐng)求從數(shù)據(jù)庫進(jìn)行數(shù)據(jù)操作。本發(fā)明實(shí)施例中,可以建立包括主數(shù)據(jù)庫和從數(shù)據(jù)庫的二級(jí)數(shù)據(jù)庫,以從數(shù)據(jù)庫作為一級(jí)數(shù)據(jù)庫構(gòu)建租戶數(shù)據(jù)擴(kuò)展模型并根據(jù)擴(kuò)展模型存儲(chǔ)租戶數(shù)據(jù)且保證數(shù)據(jù)結(jié)構(gòu)的固定性;以主數(shù)據(jù)庫作為二級(jí)數(shù)據(jù)庫面向租戶進(jìn)行數(shù)據(jù)建模,根據(jù)租戶定制擴(kuò)展模型構(gòu)建租戶特有的數(shù)據(jù)模型,為租戶提供數(shù)據(jù)讀寫,所有租戶數(shù)據(jù)讀寫都重定向到主數(shù)據(jù)庫中租戶的數(shù)據(jù)表,能夠避免復(fù)雜的sql重寫過程,提高數(shù)據(jù)操作效率,同時(shí)能夠保證租戶的數(shù)據(jù)安全。圖2所示為根據(jù)本發(fā)明實(shí)施例的數(shù)據(jù)管理服務(wù)器200的結(jié)構(gòu)示意圖。如圖2所示,數(shù)據(jù)管理服務(wù)器200可包括處理器201、存儲(chǔ)器202、網(wǎng)絡(luò)接口203和總線系統(tǒng)204。數(shù)據(jù)管理服務(wù)器200可以通過網(wǎng)絡(luò)接口203與saas應(yīng)用服務(wù)器進(jìn)行通信。處理器201控制數(shù)據(jù)管理服務(wù)器200的操作,處理器201還可以稱為中央處理單元(centralprocessingunit,簡(jiǎn)稱cpu)。存儲(chǔ)器202可以包括只讀存儲(chǔ)器和隨機(jī)存取存儲(chǔ)器,并向處理器201提供指令和數(shù)據(jù)。存儲(chǔ)器202的一部分還可以包括非易失性隨機(jī)存取存儲(chǔ)器(nvram)。具體的應(yīng)用中,客戶端200的各個(gè)組件通過總線系統(tǒng)204耦合在一起,其中總線系統(tǒng)204除包括數(shù)據(jù)總線之外,還可以包括電源總線、控制總線和狀態(tài)信號(hào)總線等。但是為了清楚說明起見,在圖中將各種總線都標(biāo)為總線系統(tǒng)204。在本發(fā)明實(shí)施例中,處理器201可以通過調(diào)用存儲(chǔ)器202存儲(chǔ)的操作指令,使得數(shù)據(jù)管理服務(wù)器執(zhí)行根據(jù)本發(fā)明實(shí)施例的數(shù)據(jù)操作方法的相應(yīng)流程,具體可參考下文圖3所示的根據(jù)本發(fā)明實(shí)施例的數(shù)據(jù)操作方法300的相關(guān)描述,為避免重復(fù),在此不再贅述。下文中本發(fā)明實(shí)施例揭示的數(shù)據(jù)操作方法300可以應(yīng)用于處理器201中,或者由處理器201實(shí)現(xiàn)。處理器201可能是一種集成電路芯片,具有信號(hào)的處理能力。在實(shí)現(xiàn)過程中,上述方法的各步驟可以通過處理器201中的硬件的集成邏輯電路或者軟件形式的指令完成。上述的處理器201可以是通用處理器、數(shù)字信號(hào)處理器(dsp)、專用集成電路(asic)、現(xiàn)成可編程門陣列(fpga)或者其他可編程邏輯器件、分立門或者晶體管邏輯器件、分立硬件組件??梢詫?shí)現(xiàn)或者執(zhí)行本發(fā)明實(shí)施例中的公開的各方法、步驟及邏輯框圖。通用處理器可以是微處理器或者該處理器也可以是任何常規(guī)的處理器等。結(jié)合本發(fā)明實(shí)施例所公開的方法的步驟可以直接體現(xiàn)為硬件譯碼處理器執(zhí)行完成,或者用譯碼處理器中的硬件及軟件模塊組合執(zhí)行完成。軟件模塊可以位于隨機(jī)存儲(chǔ)器,閃存、只讀存儲(chǔ)器,可編程只讀存儲(chǔ)器或者電可擦寫可編程存儲(chǔ)器、寄存器等本領(lǐng)域成熟的存儲(chǔ)介質(zhì)中。該存儲(chǔ)介質(zhì)位于存儲(chǔ)器202,處理器201讀取存儲(chǔ)器202中的信息,結(jié)合其硬件完成本發(fā)明實(shí)施例所公開的方法的步驟。存儲(chǔ)器202中還可以存儲(chǔ)創(chuàng)建數(shù)據(jù)表所需的數(shù)據(jù),例如,基線表的元數(shù)據(jù)、定制字段的元數(shù)據(jù)、定制表的元數(shù)據(jù)、映射元數(shù)據(jù)等。圖3是根據(jù)本發(fā)明實(shí)施例的數(shù)據(jù)操作方法300的示意性流程圖。如圖3所示,數(shù)據(jù)操作方法300包括如下內(nèi)容。301、租戶的用戶向saas應(yīng)用服務(wù)器提交請(qǐng)求信息,請(qǐng)求對(duì)租戶的數(shù)據(jù)進(jìn)行數(shù)據(jù)操作。具體的,數(shù)據(jù)操作為讀操作或?qū)懖僮鳌?02、saas應(yīng)用服務(wù)器根據(jù)用戶提交的請(qǐng)求信息,確定該數(shù)據(jù)操作對(duì)應(yīng)的sql,該sql中包括該數(shù)據(jù)對(duì)應(yīng)的第一表名。第一表名可以為租戶獲知的表名。例如,第一表名可以為呈現(xiàn)給租戶的表名。第一表名可以與基線表的表名一致。另外,saas應(yīng)用服務(wù)器還可以根據(jù)用戶的標(biāo)識(shí)確定該用戶所屬的租戶的標(biāo)識(shí)。303、saas應(yīng)用服務(wù)器與數(shù)據(jù)管理服務(wù)器建立連接,向數(shù)據(jù)管理服務(wù)器發(fā)送該sql??蛇x地,還可以向數(shù)據(jù)管理服務(wù)器發(fā)送該租戶的標(biāo)識(shí)。需要說明的是,saas應(yīng)用服務(wù)器可以同時(shí)發(fā)送sql和租戶的標(biāo)識(shí),也可以分開發(fā)送sql和租戶的標(biāo)識(shí),本發(fā)明實(shí)施例對(duì)此并不限定。304、數(shù)據(jù)管理服務(wù)器接收saas應(yīng)用服務(wù)器發(fā)送的sql和租戶的標(biāo)識(shí),根據(jù)租戶的標(biāo)識(shí)和第一表名確定該數(shù)據(jù)在主數(shù)據(jù)庫中對(duì)應(yīng)的數(shù)據(jù)表的第二表名,并將該sql中的第一表名替換為第二據(jù)表名。第二表名為該數(shù)據(jù)對(duì)應(yīng)的數(shù)據(jù)表在第一數(shù)據(jù)庫中存儲(chǔ)的表名。第一表名與租戶的標(biāo)識(shí)無關(guān),第二表名與租戶的標(biāo)識(shí)相關(guān)。例如,第一表名為“職員表”,第二表名為“職員表-租戶a”。305、數(shù)據(jù)管理服務(wù)器請(qǐng)求主數(shù)據(jù)庫中執(zhí)行替換后的sql。306、主數(shù)據(jù)庫執(zhí)行替換后的sql,完成對(duì)該租戶的數(shù)據(jù)的數(shù)據(jù)操作。具體的,主數(shù)據(jù)庫根據(jù)第二表名確定執(zhí)行數(shù)據(jù)操作的數(shù)據(jù)表,對(duì)該數(shù)據(jù)表中的數(shù)據(jù)進(jìn)行數(shù)據(jù)操作。本發(fā)明實(shí)施例中,數(shù)據(jù)管理服務(wù)器只需將sql中數(shù)據(jù)對(duì)應(yīng)的表名替換為該數(shù)據(jù)在數(shù)據(jù)庫中對(duì)應(yīng)的表名,然后請(qǐng)求數(shù)據(jù)庫執(zhí)行替換后的sql即可對(duì)數(shù)據(jù)進(jìn)行數(shù)據(jù)操作,能夠避免復(fù)雜的sql重寫過程,提高數(shù)據(jù)操作效率。同時(shí),由于在數(shù)據(jù)庫中每個(gè)租戶的數(shù)據(jù)表相互隔離,能夠防止租戶之間數(shù)據(jù)干擾,保證數(shù)據(jù)安全。需要說明的是,當(dāng)數(shù)據(jù)操作為寫操作時(shí),由于主數(shù)據(jù)庫中數(shù)據(jù)表的數(shù)據(jù)發(fā)生了變更,需要將發(fā)生變更的信息同步到從數(shù)據(jù)庫中。此時(shí),還需要執(zhí)行以下步驟307~309。307、數(shù)據(jù)管理服務(wù)器獲取數(shù)據(jù)表的數(shù)據(jù)更新信息。數(shù)據(jù)更新信息可以包括更新的字段名稱和更新的值。308、數(shù)據(jù)管理服務(wù)器根據(jù)數(shù)據(jù)表的數(shù)據(jù)更新信息,請(qǐng)求從數(shù)據(jù)庫更新存儲(chǔ)的數(shù)據(jù)。例如,從數(shù)據(jù)庫中多個(gè)租戶的數(shù)據(jù)存儲(chǔ)在共享的業(yè)務(wù)數(shù)據(jù)表中。具體地,數(shù)據(jù)管理服務(wù)器可以獲取基線表的元數(shù)據(jù)、租戶的定制字段元數(shù)據(jù)和映射元數(shù)據(jù),該映射元數(shù)據(jù)用于指示數(shù)據(jù)表中租戶的定制字段在從數(shù)據(jù)庫存儲(chǔ)的業(yè)務(wù)數(shù)據(jù)表中所對(duì)應(yīng)的字段;根據(jù)數(shù)據(jù)更新信息、基線表的元數(shù)據(jù)、租戶的定 制字段的元數(shù)據(jù)和映射元數(shù)據(jù)生成sql,該sql用于更新該數(shù)據(jù)表;請(qǐng)求從數(shù)據(jù)庫執(zhí)行該sql。例如,映射元數(shù)據(jù)中可以包括租戶的標(biāo)識(shí)、租戶的定制字段與業(yè)務(wù)數(shù)據(jù)表中的字段的對(duì)應(yīng)關(guān)系。表1所示為租戶的定制字段的元數(shù)據(jù)的例子,表2所示為映射元數(shù)據(jù)的例子,表3所示為從數(shù)據(jù)庫中租戶共享的業(yè)務(wù)數(shù)據(jù)表的例子,根據(jù)表2即可確定各租戶的定制字段在業(yè)務(wù)數(shù)據(jù)表中所對(duì)應(yīng)的字段。表1租戶(tenant)表名(tablename)字段名(fieldname)類型(type)a職員表性別stringb職員表年齡intb職員表idstringc職員表qqstringc職員表電話stringc職員表年齡int表2租戶表名字段名映射字段名a職員表性別flex0b職員表年齡flex0b職員表idflex1c職員表qqflex0c職員表電話flex1c職員表年齡flex2表3租戶表名flex0flex1flex2…flexna職員表男性b職員表25100ac職員表1452135…30需要說明的是,如果租戶的數(shù)據(jù)表中只包括基線字段時(shí),數(shù)據(jù)管理服務(wù)器根據(jù)數(shù)據(jù)更新信息和基線表的元數(shù)據(jù)生成用于更新數(shù)據(jù)的sql,請(qǐng)求從數(shù)據(jù)庫執(zhí)行該sql即可完成更新。309、從數(shù)據(jù)庫更新業(yè)務(wù)數(shù)據(jù)表的數(shù)據(jù)。需要說明的是,在步驟301之前,數(shù)據(jù)管理服務(wù)器還需要在主數(shù)據(jù)庫中為每個(gè)租戶創(chuàng)建數(shù)據(jù)表。具體地,數(shù)據(jù)管理服務(wù)器根據(jù)租戶的標(biāo)識(shí)和基線表的表名生成租戶的數(shù)據(jù)表在主數(shù)據(jù)庫中存儲(chǔ)的表名(即第二表名),并根據(jù)該租戶的數(shù)據(jù)表的表名和基線表的元數(shù)據(jù)生成用于創(chuàng)建該租戶的數(shù)據(jù)表的sql,然后請(qǐng)求所述主數(shù)據(jù)庫執(zhí)行該sql,創(chuàng)建該租戶的數(shù)據(jù)表。此時(shí),創(chuàng)建的該租戶的數(shù)據(jù)表中只包括基線字段??蛇x地,當(dāng)?shù)谝粩?shù)據(jù)庫創(chuàng)建的數(shù)據(jù)表無法滿足租戶的需求時(shí),租戶可以提交(例如通過saas應(yīng)用服務(wù)器提交)更新數(shù)據(jù)表的請(qǐng)求,相應(yīng)地?cái)?shù)據(jù)管理服務(wù)器可以獲取該更新數(shù)據(jù)表的請(qǐng)求。該請(qǐng)求中可以包括租戶的定制字段的元數(shù)據(jù),數(shù)據(jù)管理服務(wù)器根據(jù)租戶的定制字段的元數(shù)據(jù)生成用于更新數(shù)據(jù)表的sql,并請(qǐng)求所述第一數(shù)據(jù)庫執(zhí)行該sql,即可完成租戶的數(shù)據(jù)表的更新和擴(kuò)展,這樣能夠滿足多租戶共享數(shù)據(jù)庫情況下表結(jié)構(gòu)的靈活擴(kuò)展。此時(shí),更新后的數(shù)據(jù)表包括基線字段和租戶的定制字段??蛇x地,初始啟動(dòng)從數(shù)據(jù)庫時(shí),如果從數(shù)據(jù)庫檢測(cè)到主數(shù)據(jù)庫中數(shù)據(jù)表創(chuàng)建完成,則從數(shù)據(jù)庫會(huì)按租戶將初始化數(shù)據(jù)同步到租戶在主數(shù)據(jù)庫中的數(shù)據(jù)表中。將初始化數(shù)據(jù)同步到租戶的數(shù)據(jù)表中之后,用戶可以通過數(shù)據(jù)管理服務(wù)器對(duì)主數(shù)據(jù)庫中的數(shù)據(jù)表進(jìn)行數(shù)據(jù)操作。其中,初始化數(shù)據(jù)可以包括系統(tǒng)通用數(shù)據(jù)以及初始化運(yùn)行所需的數(shù)據(jù)。相應(yīng)地,數(shù)據(jù)管理服務(wù)器還可以接收從數(shù)據(jù)庫的數(shù)據(jù)同步請(qǐng)求,并根據(jù)該數(shù)據(jù)同步請(qǐng)求,請(qǐng)求主數(shù)據(jù)庫中將該初始化數(shù)據(jù)同步到為租戶創(chuàng)建的數(shù)據(jù)表中。圖4是根據(jù)本發(fā)明實(shí)施例的數(shù)據(jù)管理服務(wù)器的結(jié)構(gòu)示意圖。如圖4所示,數(shù)據(jù)管理服務(wù)器400包括:獲取單元410和處理單元420。獲取單元410用于獲取租戶的標(biāo)識(shí)和數(shù)據(jù)操作請(qǐng)求,數(shù)據(jù)操作請(qǐng)求用于請(qǐng)求對(duì)租戶的數(shù)據(jù)進(jìn)行數(shù)據(jù)操作,數(shù)據(jù)操作請(qǐng)求包括數(shù)據(jù)對(duì)應(yīng)的第一表名。處理單元420用于根據(jù)獲取單元410獲取的租戶的標(biāo)識(shí)和第一表名確定數(shù)據(jù)在第一數(shù)據(jù)庫中對(duì)應(yīng)的數(shù)據(jù)表的第二表名,其中第一數(shù)據(jù)庫用于存儲(chǔ)多 個(gè)租戶的數(shù)據(jù)表,每個(gè)租戶的數(shù)據(jù)表與每個(gè)租戶的標(biāo)識(shí)相對(duì)應(yīng),該租戶為多個(gè)租戶之一。第一數(shù)據(jù)庫可以為內(nèi)存數(shù)據(jù)庫,這樣能夠進(jìn)一步提高數(shù)據(jù)的讀寫操作效率。處理單元420還用于將數(shù)據(jù)操作請(qǐng)求對(duì)應(yīng)的第一sql中的第一表名替換為第二表名;并請(qǐng)求第一數(shù)據(jù)庫執(zhí)行替換后的第一sql,以完成對(duì)數(shù)據(jù)表中數(shù)據(jù)的數(shù)據(jù)操作。本發(fā)明實(shí)施例中,數(shù)據(jù)管理服務(wù)器只需將sql中的表名替換為在數(shù)據(jù)庫中的表名,然后請(qǐng)求數(shù)據(jù)庫執(zhí)行替換后的sql即可對(duì)數(shù)據(jù)進(jìn)行讀寫操作,能夠避免復(fù)雜的sql重寫過程,提高數(shù)據(jù)操作效率。同時(shí),由于在數(shù)據(jù)庫中每個(gè)租戶的數(shù)據(jù)表相互隔離,能夠防止租戶之間數(shù)據(jù)干擾,保證數(shù)據(jù)安全??蛇x地,獲取單元410還用于,在獲取第一sql之前,獲取基線表的元數(shù)據(jù)。相應(yīng)地,處理單元420還用于:根據(jù)租戶的標(biāo)識(shí)和該基線表的表名生成第二表名;根據(jù)第二表名和基線表的元數(shù)據(jù)生成第二sql,第二sql用于創(chuàng)建數(shù)據(jù)表;請(qǐng)求第一數(shù)據(jù)庫執(zhí)行第二sql。可選地,數(shù)據(jù)管理服務(wù)器400還可以包括存儲(chǔ)單元430,存儲(chǔ)單元430可用于存儲(chǔ)創(chuàng)建租戶的數(shù)據(jù)表所需的數(shù)據(jù),如基線表的元數(shù)據(jù)、租戶的定制字段的元數(shù)據(jù)等。獲取單元410可以具體用于從存儲(chǔ)單元430獲取基線表的元數(shù)據(jù)和租戶的定制字段的元數(shù)據(jù)。可選地,數(shù)據(jù)操作為寫操作。相應(yīng)地,獲取單元410還用于,獲取數(shù)據(jù)表的數(shù)據(jù)更新信息;處理單元420還用于,根據(jù)數(shù)據(jù)表的數(shù)據(jù)更新信息,對(duì)數(shù)據(jù)表中更新的數(shù)據(jù)進(jìn)行備份。可選地,處理單元420具體用于:根據(jù)數(shù)據(jù)表的數(shù)據(jù)更新信息,請(qǐng)求第二數(shù)據(jù)庫更新備份的數(shù)據(jù)表的數(shù)據(jù)??蛇x地,在第二數(shù)據(jù)庫中多個(gè)租戶各自的數(shù)據(jù)表中的數(shù)據(jù)可以存儲(chǔ)在共享的業(yè)務(wù)數(shù)據(jù)表中。相應(yīng)地,獲取單元410還用于,獲取基線表的元數(shù)據(jù)。處理單元420還用于:根據(jù)數(shù)據(jù)更新信息和基線表的元數(shù)據(jù)生成第三sql,第三sql用于更新第二數(shù)據(jù)庫中存儲(chǔ)的業(yè)務(wù)數(shù)據(jù)表的數(shù)據(jù);請(qǐng)求第二數(shù)據(jù)庫執(zhí)行第三sql??蛇x地,獲取單元410具體用于:根據(jù)替換后的第一sql,獲取數(shù)據(jù)表的數(shù)據(jù)更新信息;或者,根據(jù)日志文件,獲取數(shù)據(jù)表的數(shù)據(jù)更新信息??蛇x地,處理單元420還用于:當(dāng)?shù)谝粩?shù)據(jù)庫中的基線表的元數(shù)據(jù)和/或租戶的定制字段的元數(shù)據(jù)發(fā)生變更時(shí),根據(jù)變更后的基線表的元數(shù)據(jù)和/或租戶的定制字段的元數(shù)據(jù)生成第四sql,第四sql用于更新數(shù)據(jù)表;請(qǐng)求第一數(shù)據(jù)庫執(zhí)行第四sql。根據(jù)本發(fā)明實(shí)施例的數(shù)據(jù)管理服務(wù)器400可對(duì)應(yīng)于方法300中的數(shù)據(jù)管理服務(wù)器,并且數(shù)據(jù)管理服務(wù)器400中的各個(gè)單元的上述和其他操作和/或功能分別為了實(shí)現(xiàn)圖3所示的方法300的相應(yīng)流程。為了簡(jiǎn)潔,在此不再贅述。應(yīng)注意,本發(fā)明實(shí)施例中的獲取單元410和處理單元420可以由圖2所示的數(shù)據(jù)管理服務(wù)器200中的處理器201實(shí)現(xiàn)。存儲(chǔ)單元430可以由圖2所示的數(shù)據(jù)管理服務(wù)器200中的存儲(chǔ)器202實(shí)現(xiàn)。本領(lǐng)域普通技術(shù)人員可以意識(shí)到,結(jié)合本文中所公開的實(shí)施例描述的各示例的單元及算法步驟,能夠以電子硬件、或者計(jì)算機(jī)軟件和電子硬件的結(jié)合來實(shí)現(xiàn)。這些功能究竟以硬件還是軟件方式來執(zhí)行,取決于技術(shù)方案的特定應(yīng)用和設(shè)計(jì)約束條件。專業(yè)技術(shù)人員可以對(duì)每個(gè)特定的應(yīng)用來使用不同方法來實(shí)現(xiàn)所描述的功能,但是這種實(shí)現(xiàn)不應(yīng)認(rèn)為超出本發(fā)明的范圍。所屬領(lǐng)域的技術(shù)人員可以清楚地了解到,為描述的方便和簡(jiǎn)潔,上述描述的系統(tǒng)、裝置和單元的具體工作過程,可以參考前述方法實(shí)施例中的對(duì)應(yīng)過程,在此不再贅述。在本申請(qǐng)所提供的幾個(gè)實(shí)施例中,應(yīng)該理解到,所揭露的系統(tǒng)、裝置和方法,可以通過其它的方式實(shí)現(xiàn)。例如,以上所描述的裝置實(shí)施例僅僅是示意性的,例如,所述單元的劃分,僅僅為一種邏輯功能劃分,實(shí)際實(shí)現(xiàn)時(shí)可以有另外的劃分方式,例如多個(gè)單元或組件可以結(jié)合或者可以集成到另一個(gè)系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點(diǎn),所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些接口,裝置或單元的間接耦合或通信連接,可以是電性,機(jī)械或其它的形式。所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個(gè)地方,或者也可以分布到多個(gè)網(wǎng)絡(luò)單元上。可以根據(jù)實(shí)際的需要選擇其中的部分或者全部單元來實(shí)現(xiàn)本實(shí)施例方案的目的。另外,在本發(fā)明各個(gè)實(shí)施例中的各功能單元可以集成在一個(gè)處理單元中,也可以是各個(gè)單元單獨(dú)物理存在,也可以兩個(gè)或兩個(gè)以上單元集成在一 個(gè)單元中。所述功能如果以軟件功能單元的形式實(shí)現(xiàn)并作為獨(dú)立的產(chǎn)品銷售或使用時(shí),可以存儲(chǔ)在一個(gè)計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中。基于這樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分或者該技術(shù)方案的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計(jì)算機(jī)軟件產(chǎn)品存儲(chǔ)在一個(gè)存儲(chǔ)介質(zhì)中,包括若干指令用以使得一臺(tái)計(jì)算機(jī)設(shè)備(可以是個(gè)人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個(gè)實(shí)施例所述方法的全部或部分步驟。而前述的存儲(chǔ)介質(zhì)包括:u盤、移動(dòng)硬盤、只讀存儲(chǔ)器(rom,read-onlymemory)、隨機(jī)存取存儲(chǔ)器(ram,randomaccessmemory)、磁碟或者光盤等各種可以存儲(chǔ)程序代碼的介質(zhì)。以上所述,僅為本發(fā)明的具體實(shí)施方式,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本
技術(shù)領(lǐng)域:
:的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)以所述權(quán)利要求的保護(hù)范圍為準(zhǔn)。當(dāng)前第1頁12當(dāng)前第1頁12