欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

數(shù)據(jù)庫查詢語言適配方法及裝置、分布式數(shù)據(jù)存儲系統(tǒng)與流程

文檔序號:12466137閱讀:223來源:國知局
本發(fā)明涉及計(jì)算機(jī)軟件領(lǐng)域,具體涉及一種數(shù)據(jù)庫查詢語言適配方法及裝置。
背景技術(shù)
::數(shù)據(jù)庫可以存儲和管理數(shù)據(jù),還提供給用戶所需要的各種數(shù)據(jù)管理的方式。如支持用戶對數(shù)據(jù)庫中存儲的數(shù)據(jù)進(jìn)行如查詢、修改、插入、刪除等操作。目前使用的數(shù)據(jù)庫多種多樣,有關(guān)系型數(shù)據(jù)庫,如Oracle,Mysql,SqlServer等,也有非關(guān)系型數(shù)據(jù)庫如MongoDB,CouchDB,DynamoDB,Cassandra等。不同類型數(shù)據(jù)庫使用的數(shù)據(jù)庫語言也各不同。關(guān)系型數(shù)據(jù)庫在進(jìn)行數(shù)據(jù)查詢時(shí)使用標(biāo)準(zhǔn)的結(jié)構(gòu)化查詢語言(StructuredQueryLanguage),而非關(guān)系型數(shù)據(jù)庫則主要基于各自定義的領(lǐng)域?qū)S谜Z言(DSL,domainspecificlanguage)。由于不同數(shù)據(jù)庫使用的語言不一致,這樣可能導(dǎo)致在數(shù)據(jù)庫發(fā)生更換時(shí),往往需要將之前使用的數(shù)據(jù)庫語言相關(guān)的代碼、邏輯進(jìn)行修改,重新測試等,需要花費(fèi)很多的時(shí)間和人力,其工作量巨大。例如,數(shù)據(jù)庫由Mysql遷移到MongoDB,原客戶端的所有與數(shù)據(jù)庫相關(guān)的如查詢、修改、插入、刪除等操作相關(guān)的代碼、邏輯都需要進(jìn)行修改,從而帶來龐大的工作量。且在修改后還需要在進(jìn)行測試等工作,耗費(fèi)巨大的人力、物力和時(shí)間。技術(shù)實(shí)現(xiàn)要素:鑒于上述問題,提出了本發(fā)明以便提供一種克服上述問題或者至少部分地解決上述問題的數(shù)據(jù)庫查詢語言適配方法及裝置。根據(jù)本發(fā)明的一個(gè)方面,提供了一種數(shù)據(jù)庫查詢語言適配方法,方法基于預(yù)先設(shè)置的數(shù)據(jù)庫操作的預(yù)設(shè)標(biāo)簽和預(yù)設(shè)操作規(guī)則實(shí)現(xiàn),方法包括:獲取客戶端按照預(yù)設(shè)標(biāo)簽和預(yù)設(shè)操作規(guī)則所編輯的數(shù)據(jù)庫操作相關(guān)的代碼;根據(jù)預(yù)設(shè)操作規(guī)則和數(shù)據(jù)庫適配器,對代碼進(jìn)行解析,得到數(shù)據(jù)庫的操作語言;利用數(shù)據(jù)庫的操作語言實(shí)現(xiàn)對數(shù)據(jù)庫的操作。根據(jù)本發(fā)明的另一方面,提供了一種數(shù)據(jù)庫查詢語言適配裝置,裝置基于預(yù)先設(shè)置的數(shù)據(jù)庫操作的預(yù)設(shè)標(biāo)簽和預(yù)設(shè)操作規(guī)則實(shí)現(xiàn),裝置包括:獲取模塊,適于獲取客戶端按照預(yù)設(shè)標(biāo)簽和預(yù)設(shè)操作規(guī)則所編輯的數(shù)據(jù)庫操作相關(guān)的代碼;解析模塊,適于根據(jù)預(yù)設(shè)操作規(guī)則和數(shù)據(jù)庫適配器,對代碼進(jìn)行解析,得到數(shù)據(jù)庫的操作語言;執(zhí)行模塊,適于利用數(shù)據(jù)庫的操作語言實(shí)現(xiàn)對數(shù)據(jù)庫的操作。根據(jù)本發(fā)明的又一方面,提供了一種分布式數(shù)據(jù)存儲系統(tǒng),包括:客戶端、分布式組件和數(shù)據(jù)庫;其中,分布式組件包括上述的數(shù)據(jù)庫查詢語言適配裝置。根據(jù)本發(fā)明提供的數(shù)據(jù)庫查詢語言適配方法及裝置、分布式數(shù)據(jù)存儲系統(tǒng),基于預(yù)先設(shè)置的數(shù)據(jù)庫操作的預(yù)設(shè)標(biāo)簽和預(yù)設(shè)操作規(guī)則實(shí)現(xiàn)。獲取客戶端按照預(yù)設(shè)標(biāo)簽和預(yù)設(shè)操作規(guī)則所編輯的數(shù)據(jù)庫操作相關(guān)的代碼;根據(jù)預(yù)設(shè)操作規(guī)則和數(shù)據(jù)庫適配器,對代碼進(jìn)行解析,得到數(shù)據(jù)庫的操作語言;利用數(shù)據(jù)庫的操作語言實(shí)現(xiàn)對數(shù)據(jù)庫的操作。利用本發(fā)明可以對客戶端屏蔽數(shù)據(jù)庫的差異性,使客戶端不需要考慮數(shù)據(jù)庫的類型和數(shù)據(jù)庫使用的操作語言。同樣,對于客戶端使用的不同操作系統(tǒng),僅需要基于預(yù)設(shè)標(biāo)簽和預(yù)設(shè)操作規(guī)則實(shí)現(xiàn),而不需要統(tǒng)一客戶端使用的語言。保持了客戶端、數(shù)據(jù)庫之間的相對獨(dú)立性。對客戶端而言,無論何種數(shù)據(jù)庫都可以統(tǒng)一使用同一套數(shù)據(jù)操作的代碼。對于數(shù)據(jù)庫,涉及數(shù)據(jù)庫更換時(shí),也無需修改所有客戶端的代碼,極大的節(jié)省了人力、物力和時(shí)間,也使得客戶端的代碼具有極高的復(fù)用性。上述說明僅是本發(fā)明技術(shù)方案的概述,為了能夠更清楚了解本發(fā)明的技術(shù)手段,而可依照說明書的內(nèi)容予以實(shí)施,并且為了讓本發(fā)明的上述和其它目的、特征和優(yōu)點(diǎn)能夠更明顯易懂,以下特舉本發(fā)明的具體實(shí)施方式。附圖說明通過閱讀下文優(yōu)選實(shí)施方式的詳細(xì)描述,各種其他的優(yōu)點(diǎn)和益處對于本領(lǐng)域普通技術(shù)人員將變得清楚明了。附圖僅用于示出優(yōu)選實(shí)施方式的目的,而并不認(rèn)為是對本發(fā)明的限制。而且在整個(gè)附圖中,用相同的參考符號表示相同的部件。在附圖中:圖1示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的數(shù)據(jù)庫查詢語言適配方法的流程圖;圖2示出了根據(jù)本發(fā)明分布式數(shù)據(jù)存儲系統(tǒng)框架示意圖;圖3示出了根據(jù)本發(fā)明另一個(gè)實(shí)施例的數(shù)據(jù)庫查詢語言適配方法的流程圖;圖4示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的數(shù)據(jù)庫查詢語言適配裝置的功能框圖。具體實(shí)施方式下面將參照附圖更詳細(xì)地描述本公開的示例性實(shí)施例。雖然附圖中顯示了本公開的示例性實(shí)施例,然而應(yīng)當(dāng)理解,可以以各種形式實(shí)現(xiàn)本公開而不應(yīng)被這里闡述的實(shí)施例所限制。相反,提供這些實(shí)施例是為了能夠更透徹地理解本公開,并且能夠?qū)⒈竟_的范圍完整的傳達(dá)給本領(lǐng)域的技術(shù)人員。圖1示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的數(shù)據(jù)庫操作方法的流程圖。如圖1所示,數(shù)據(jù)庫查詢語言適配方法具體包括如下步驟:步驟S101,獲取客戶端按照預(yù)設(shè)標(biāo)簽和預(yù)設(shè)操作規(guī)則所編輯的數(shù)據(jù)庫操作相關(guān)的代碼。在本步驟之前,本實(shí)施例還可以包括了預(yù)先設(shè)置數(shù)據(jù)庫操作的預(yù)設(shè)標(biāo)簽和預(yù)設(shè)操作規(guī)則的步驟。由于不同的數(shù)據(jù)庫適用不同的數(shù)據(jù)庫操作語言,因此,在客戶端需要根據(jù)具體使用的數(shù)據(jù)庫編輯合適的代碼,以便于對使數(shù)據(jù)庫執(zhí)行相應(yīng)操作。即客戶端在使用不同的數(shù)據(jù)庫時(shí),需要編輯不同的代碼。針對此種情況,通過預(yù)先設(shè)置數(shù)據(jù)庫操作的預(yù)設(shè)標(biāo)簽和預(yù)設(shè)操作規(guī)則,使客戶端按照預(yù)設(shè)標(biāo)簽和預(yù)設(shè)操作規(guī)則編輯的數(shù)據(jù)庫操作相關(guān)的代碼。即客戶端可以根據(jù)預(yù)設(shè)標(biāo)簽和預(yù)設(shè)操作規(guī)則編輯一套代碼,可以適用于不同的數(shù)據(jù)庫。本實(shí)施例可以適用于如分布式數(shù)據(jù)存儲系統(tǒng),系統(tǒng)具體包括:客戶端、Linux虛擬服務(wù)器集群(LVS)、分布式組件(HustDBHA,簡稱HA)和數(shù)據(jù)庫。本實(shí)施例基于分布式組件側(cè)進(jìn)行實(shí)施。如圖2中所示??蛻舳丝梢圆捎貌煌牟僮飨到y(tǒng),如IOS系統(tǒng)、android系統(tǒng)、Windows系統(tǒng)、macOS系統(tǒng)等等,不同的系統(tǒng)采用的語言也可以不同。數(shù)據(jù)庫可以包括關(guān)系型數(shù)據(jù)庫和/或非關(guān)系型數(shù)據(jù)庫。關(guān)系型數(shù)據(jù)庫,如Oracle,Mysql,SqlServer等,非關(guān)系型數(shù)據(jù)庫如MongoDB,CouchDB,DynamoDB,Cassandra等。其中,圖2中僅示出了客戶端、數(shù)據(jù)庫及服務(wù)器端。服務(wù)器端可以包括Linux虛擬服務(wù)器集群和分布式組件。需要說明的是,本實(shí)施例可以基于多種系統(tǒng)架構(gòu)進(jìn)行實(shí)施,而不僅限于上述的分布式數(shù)據(jù)存儲系統(tǒng)的架構(gòu)。預(yù)先設(shè)置預(yù)設(shè)標(biāo)簽和預(yù)設(shè)操作規(guī)則可以由分布式組件完成。在預(yù)先設(shè)置數(shù)據(jù)庫的預(yù)設(shè)標(biāo)簽時(shí),根據(jù)各種數(shù)據(jù)庫操作語言進(jìn)行分析,從中提取出其中包含的要素,將其設(shè)置為數(shù)據(jù)庫的預(yù)設(shè)標(biāo)簽。如預(yù)設(shè)標(biāo)簽包括數(shù)據(jù)庫名稱、數(shù)據(jù)表名稱、操作類型、查詢參數(shù)集合、數(shù)據(jù)值集合等。通過數(shù)據(jù)庫名稱和數(shù)據(jù)表名稱可以確定要操作的具體對象。操作類型具體包括了如查詢select、更新update、插入insert、刪除delete、自定義操作customize等操作類型,其中。查詢select、更新update、插入insert、刪除delete等是數(shù)據(jù)庫常用的實(shí)現(xiàn)對數(shù)據(jù)庫中數(shù)據(jù)操作的數(shù)據(jù)操縱語言。自定義操作customize為數(shù)據(jù)庫自定義的對數(shù)據(jù)庫的操作。操作類型中可以包括對數(shù)據(jù)庫中數(shù)據(jù)的不同類型的操作,還可以包括對數(shù)據(jù)庫中數(shù)據(jù)表、權(quán)限的不同類型的操作,根據(jù)實(shí)施情況進(jìn)行設(shè)置,此處不做限定。數(shù)據(jù)值集合中可以以key:value的形式,將數(shù)據(jù)庫中數(shù)據(jù)字段與對應(yīng)的數(shù)據(jù)值進(jìn)行記錄。查詢參數(shù)集合包括了各種查詢條件可能出現(xiàn)的情況。其以查詢query預(yù)設(shè)標(biāo)簽進(jìn)行總體設(shè)置。由于查詢時(shí)可以涉及多個(gè)方面,因此,查詢參數(shù)集合具體可以包括如各種函數(shù)集合、分頁、排序、分組、條件集合等。函數(shù)集合包括了數(shù)據(jù)庫使用的函數(shù),如求和函數(shù)sum、最大值函數(shù)max、最小值函數(shù)min、唯一不同值函數(shù)distinct、計(jì)數(shù)函數(shù)count等,使用這些函數(shù)可以得到對應(yīng)的結(jié)果。分頁可以在查詢結(jié)果數(shù)據(jù)量較大時(shí),提供僅查詢出需要的數(shù)據(jù)量的查詢結(jié)果。如查詢時(shí)使用分頁查詢,設(shè)置查詢結(jié)果為from1size10,即從第一條查詢結(jié)果起,僅查詢出10條查詢結(jié)果,以方便提高查詢時(shí)的執(zhí)行效率。排序可以使查詢結(jié)果按照設(shè)置的數(shù)據(jù)字段進(jìn)行升序或降序的排序。分組可以選擇指定的數(shù)據(jù)字段進(jìn)行分組,具體的對該數(shù)據(jù)字段中的數(shù)據(jù)值進(jìn)行分組統(tǒng)計(jì)。條件集合可以包括了各種查詢條件之間的關(guān)系,如與關(guān)系and、或關(guān)系or、屬于關(guān)系in、range、不屬于關(guān)系notin、大于關(guān)系gte、小于關(guān)系lte等。使用條件集合中的各種預(yù)設(shè)標(biāo)簽可以對查詢條件進(jìn)行限定。以上預(yù)設(shè)標(biāo)簽均為舉例說明,實(shí)施時(shí)根據(jù)實(shí)際情況進(jìn)行設(shè)置,此處不做限定。在預(yù)先設(shè)置數(shù)據(jù)庫的預(yù)設(shè)標(biāo)簽后,還需要對預(yù)設(shè)標(biāo)簽的使用、與數(shù)據(jù)庫操作相關(guān)的代碼限制等預(yù)先設(shè)置預(yù)設(shè)操作規(guī)則。預(yù)設(shè)操作規(guī)則包括對某一個(gè)預(yù)設(shè)標(biāo)簽的內(nèi)容的限定、使用的規(guī)范、預(yù)設(shè)標(biāo)簽之間的關(guān)聯(lián)關(guān)系、與數(shù)據(jù)庫操作相關(guān)的代碼中必須包括的內(nèi)容等等。如數(shù)據(jù)庫名稱、數(shù)據(jù)表名稱、操作類型等預(yù)設(shè)標(biāo)簽為與數(shù)據(jù)庫操作相關(guān)的代碼中必須包括的內(nèi)容;當(dāng)操作類型為插入insert時(shí),與數(shù)據(jù)庫操作相關(guān)的代碼中必須包括數(shù)據(jù)值集合等;還可以根據(jù)數(shù)據(jù)庫操作語言的特點(diǎn),對與數(shù)據(jù)庫操作相關(guān)的代碼的編輯進(jìn)行設(shè)置等。以上均為舉例說明,實(shí)施時(shí)根據(jù)實(shí)際情況進(jìn)行設(shè)置,此處不做限定。在預(yù)先設(shè)置數(shù)據(jù)庫操作的預(yù)設(shè)標(biāo)簽和預(yù)設(shè)操作規(guī)則的步驟之后,客戶端對與數(shù)據(jù)庫操作相關(guān)的代碼進(jìn)行編輯。編輯時(shí),需按照預(yù)設(shè)標(biāo)簽和預(yù)設(shè)操作規(guī)則進(jìn)行編輯。其中,代碼可以基于json語言實(shí)現(xiàn)。如編輯數(shù)據(jù)庫的插入操作代碼如下:編輯數(shù)據(jù)庫的查詢操作代碼如下:編輯數(shù)據(jù)庫的更新操作代碼如下:編輯數(shù)據(jù)庫的刪除操作代碼如下:以上代碼均為舉例說明,實(shí)施時(shí)根據(jù)實(shí)際情況進(jìn)行編輯,此處不做限定。在客戶端編輯與數(shù)據(jù)庫操作相關(guān)的代碼后,獲取客戶端按照預(yù)設(shè)標(biāo)簽和預(yù)設(shè)操作規(guī)則所編輯的數(shù)據(jù)庫操作相關(guān)的代碼。步驟S102,根據(jù)預(yù)設(shè)操作規(guī)則和數(shù)據(jù)庫適配器,對代碼進(jìn)行解析,得到數(shù)據(jù)庫的操作語言。根據(jù)預(yù)設(shè)操作規(guī)則對獲取的代碼進(jìn)行檢查、校驗(yàn)是否符合預(yù)設(shè)操作規(guī)則。并進(jìn)一步根據(jù)數(shù)據(jù)庫適配器,對代碼進(jìn)行解析。如數(shù)據(jù)庫為Mysql時(shí),將數(shù)據(jù)庫的插入操作代碼進(jìn)行解析,操作代碼為:解析后得到數(shù)據(jù)庫對應(yīng)的插入操作的數(shù)據(jù)庫語音:insertintotest_db.test_table_t(id,type,user_id,user_name)values(’12366’,’type3’,’98765’,’jobs’)。對應(yīng)的,數(shù)據(jù)庫可以采用關(guān)系型數(shù)據(jù)庫,也可以采用非關(guān)系型數(shù)據(jù)庫。根據(jù)具體采用的數(shù)據(jù)庫,數(shù)據(jù)庫適配器將代碼解析為適用于該數(shù)據(jù)庫的數(shù)據(jù)庫操作語言。其中,數(shù)據(jù)庫適配器可以設(shè)置在如圖2中所示的服務(wù)器端。在分布式數(shù)據(jù)存儲系統(tǒng)中,除設(shè)置數(shù)據(jù)庫適配器,根據(jù)預(yù)設(shè)操作規(guī)則和數(shù)據(jù)庫適配器,對代碼進(jìn)行解析,得到數(shù)據(jù)庫的操作語言外。進(jìn)一步,將分布式組件與數(shù)據(jù)庫分離,使數(shù)據(jù)庫只負(fù)責(zé)數(shù)據(jù)存儲,以及對外提供http接口,以供分布式組件根據(jù)所提供的http接口向?qū)?yīng)的數(shù)據(jù)庫節(jié)點(diǎn)寫入數(shù)據(jù),其中,數(shù)據(jù)庫包括多個(gè)數(shù)據(jù)庫節(jié)點(diǎn),各個(gè)數(shù)據(jù)庫節(jié)點(diǎn)是相互獨(dú)立的,數(shù)據(jù)庫節(jié)點(diǎn)彼此之間不會直接進(jìn)行通信,從而降低了數(shù)據(jù)庫的復(fù)雜度。另外,分布式組件中的每個(gè)節(jié)點(diǎn)都是獨(dú)立的,當(dāng)某一HA節(jié)點(diǎn)宕機(jī)時(shí),LVS會自動將數(shù)據(jù)寫請求發(fā)送至分布式組件中的其他可用的HA節(jié)點(diǎn),從而解決了HA的單點(diǎn)限制。當(dāng)需要提高系統(tǒng)的吞吐率時(shí),也只需要簡單地增加HA節(jié)點(diǎn)即可實(shí)現(xiàn)。分布式組件作為客戶端與數(shù)據(jù)庫之間的反向代理,對客戶端屏蔽數(shù)據(jù)庫各種操作的細(xì)節(jié),保證數(shù)據(jù)庫節(jié)點(diǎn)的http接口的透明性。當(dāng)某一個(gè)數(shù)據(jù)庫節(jié)點(diǎn)宕機(jī)時(shí),HA會自動對數(shù)據(jù)寫請求進(jìn)行負(fù)載均衡,保證整個(gè)系統(tǒng)依然可用,從而解決數(shù)據(jù)存儲的單點(diǎn)限制。分布式數(shù)據(jù)存儲系統(tǒng)中還涉及數(shù)據(jù)同步。其中,數(shù)據(jù)同步可以通過兩種模式實(shí)現(xiàn)。模式一:放在HA的實(shí)現(xiàn)中,和HA的master進(jìn)程耦合在一起(不可能放在worker中,因?yàn)閚ginx的進(jìn)程模型是1master-Nworker,而數(shù)據(jù)同步的服務(wù)只能存在于一個(gè)進(jìn)程中)。模式二:作為單獨(dú)的服務(wù),即,將數(shù)據(jù)同步模塊和HA分離。模式一的好處是開發(fā)簡單,部署簡單,缺點(diǎn)是會當(dāng)數(shù)據(jù)同步崩潰時(shí),會導(dǎo)致HA的master進(jìn)程一起退出,從而使HA的單節(jié)點(diǎn)喪失高可用性,生產(chǎn)環(huán)境中這會帶來巨大的風(fēng)險(xiǎn)。模式二的好處是服務(wù)隔離,進(jìn)程隔離,HA不再和數(shù)據(jù)同步耦合在一起,兩者僅僅通過文件即可協(xié)同完成數(shù)據(jù)同步的功能,當(dāng)SyncServer意外退出時(shí),HA的master進(jìn)程不受影響,服務(wù)整體依然可用,缺點(diǎn)是開發(fā)和部署的工作量增大。HA最終選擇模式二來完成SyncServer,這樣的設(shè)計(jì)使得HA的復(fù)雜度大大降低,無需關(guān)注數(shù)據(jù)同步的細(xì)節(jié),只需要將不一致的數(shù)據(jù)記錄成binlog即可,在極大程度上提高了HA以及整個(gè)存儲系統(tǒng)的高可用性,并保證集群數(shù)據(jù)的最終一致性。目前業(yè)界主流的存儲對于replica的實(shí)現(xiàn)存在兩種模式:模式一:1Primary-1ReplicaShard,模式二:1Primary-NReplicaShards。HA選用了工程上更加可行的模式一。模式二由于一份數(shù)據(jù)具有更多的備份,因此具備更高的的可用性,但同時(shí)帶來了更多的數(shù)據(jù)一致性問題和實(shí)現(xiàn)的復(fù)雜度。模式一在高可用性方面不如模式二,但在實(shí)現(xiàn)難度方面要小很多,因此相對而言,模式一更加適用。分布式數(shù)據(jù)存儲系統(tǒng)的分布式組件為反向代理服務(wù)器,具體可以是Nginx服務(wù)器,Nginx是高吞吐高并發(fā)的http反向代理,由于HA并不需要對數(shù)據(jù)庫節(jié)點(diǎn)上的數(shù)據(jù)進(jìn)行合并(merge),因此為了提高系統(tǒng)的吞吐量和并發(fā)量,HA的進(jìn)程模型為1master-Nworker,其中master進(jìn)程會對worker進(jìn)程進(jìn)行自動保活,這一點(diǎn)保證了HA單個(gè)節(jié)點(diǎn)的高可用性和高吞吐性。由于各個(gè)進(jìn)程是獨(dú)立的,因此對于少部分用到共享數(shù)據(jù)的接口,需要利用共享內(nèi)存來進(jìn)行通信。Nginx服務(wù)器現(xiàn)有的負(fù)載均衡策略將數(shù)據(jù)庫節(jié)點(diǎn)地址等細(xì)節(jié)完全對外屏蔽了,也就是說,對于開發(fā)者來說這些細(xì)節(jié)是透明的,不需要開發(fā)者考慮,可以通過定制化的負(fù)載均衡,實(shí)現(xiàn)將數(shù)據(jù)寫入指定的數(shù)據(jù)庫節(jié)點(diǎn)。步驟S103,利用數(shù)據(jù)庫的操作語言實(shí)現(xiàn)對數(shù)據(jù)庫的操作。解析得到數(shù)據(jù)庫對應(yīng)的數(shù)據(jù)庫操作語言后,利用該數(shù)據(jù)庫操作語言,實(shí)現(xiàn)對數(shù)據(jù)庫的操作。如對數(shù)據(jù)庫進(jìn)行查詢、插入、更新、刪除等操作,并將對應(yīng)的操作結(jié)果可以返回給客戶端,以供客戶端根據(jù)操作結(jié)果進(jìn)行相應(yīng)的處理。根據(jù)本發(fā)明提供的數(shù)據(jù)庫查詢語言適配方法,基于預(yù)先設(shè)置的數(shù)據(jù)庫操作的預(yù)設(shè)標(biāo)簽和預(yù)設(shè)操作規(guī)則實(shí)現(xiàn)。獲取客戶端按照預(yù)設(shè)標(biāo)簽和預(yù)設(shè)操作規(guī)則所編輯的數(shù)據(jù)庫操作相關(guān)的代碼;根據(jù)預(yù)設(shè)操作規(guī)則和數(shù)據(jù)庫適配器,對代碼進(jìn)行解析,得到數(shù)據(jù)庫的操作語言;利用數(shù)據(jù)庫的操作語言實(shí)現(xiàn)對數(shù)據(jù)庫的操作。利用本發(fā)明可以對客戶端屏蔽數(shù)據(jù)庫的差異性,使客戶端不需要考慮數(shù)據(jù)庫的類型和數(shù)據(jù)庫使用的操作語言。同樣,對于客戶端使用的不同操作系統(tǒng),僅需要基于預(yù)設(shè)標(biāo)簽和預(yù)設(shè)操作規(guī)則實(shí)現(xiàn),而不需要統(tǒng)一客戶端使用的語言。保持了客戶端、數(shù)據(jù)庫之間的相對獨(dú)立性。對客戶端而言,無論何種數(shù)據(jù)庫都可以統(tǒng)一使用同一套數(shù)據(jù)操作的代碼。對于數(shù)據(jù)庫,涉及數(shù)據(jù)庫更換時(shí),也無需修改所有客戶端的代碼,極大的節(jié)省了人力、物力和時(shí)間,也使得客戶端的代碼具有極高的復(fù)用性。圖3示出了根據(jù)本發(fā)明另一個(gè)實(shí)施例的數(shù)據(jù)庫查詢語言適配方法的流程圖。如圖3所示,數(shù)據(jù)庫查詢語言適配方法具體包括如下步驟:步驟S301,獲取客戶端按照預(yù)設(shè)標(biāo)簽和預(yù)設(shè)操作規(guī)則所編輯的數(shù)據(jù)庫操作相關(guān)的代碼。本發(fā)明可以適用于安卓端,ios,PC端,MAC端的安全類產(chǎn)品或者其他應(yīng)用數(shù)據(jù)庫的云平臺或者客戶端產(chǎn)品。在本步驟之前,還包括了預(yù)先設(shè)置預(yù)設(shè)標(biāo)簽和預(yù)設(shè)操作規(guī)則。在預(yù)先設(shè)置預(yù)設(shè)標(biāo)簽和預(yù)設(shè)操作規(guī)則時(shí),根據(jù)各種數(shù)據(jù)庫操作語言進(jìn)行分析,從中提取出其中包含的要素等信息進(jìn)行設(shè)置。客戶端按照預(yù)設(shè)標(biāo)簽和預(yù)設(shè)操作規(guī)則編輯與數(shù)據(jù)庫操作相關(guān)的代碼。在涉及數(shù)據(jù)庫操作時(shí),如對數(shù)據(jù)庫進(jìn)行插入操作時(shí),獲取客戶端按照預(yù)設(shè)標(biāo)簽和預(yù)設(shè)操作規(guī)則所編輯的數(shù)據(jù)庫操作相關(guān)的代碼。步驟S302,判斷代碼是否符合預(yù)設(shè)操作規(guī)則。根據(jù)預(yù)設(shè)操作規(guī)則對代碼進(jìn)行判斷,如判斷代碼中所使用的是否為預(yù)設(shè)標(biāo)簽;代碼中是否包括了數(shù)據(jù)庫名稱、數(shù)據(jù)表名稱;代碼中是否包括操作類型,其中操作類型設(shè)置的是否為預(yù)設(shè)標(biāo)簽;在操作類型為插入insert時(shí),代碼中是否包括了數(shù)據(jù)值集合;在操作類型為更新update時(shí),代碼中是否包括了查詢的預(yù)設(shè)標(biāo)簽和數(shù)據(jù)值集合;代碼中包括的數(shù)據(jù)值集合是否符合預(yù)設(shè)操作規(guī)則的設(shè)置;代碼中使用的查詢參數(shù)集合中的函數(shù)是否為預(yù)設(shè)標(biāo)簽;代碼中使用的分頁、排序、分組或條件集合等是否為預(yù)設(shè)標(biāo)簽,編輯格式是否正確等。以上均為舉例說明,實(shí)施時(shí)根據(jù)實(shí)際情況進(jìn)行判斷,此處不做限定。若判斷代碼符合預(yù)設(shè)操作規(guī)則,執(zhí)行步驟S303。進(jìn)一步,若在測試階段,判斷代碼不符合預(yù)設(shè)操作規(guī)則,可以進(jìn)行提示,如提示代碼中不符合預(yù)設(shè)操作規(guī)則的部分,以便客戶端進(jìn)行相應(yīng)的修改(圖中未示出)。步驟S303,根據(jù)數(shù)據(jù)庫適配器對代碼中進(jìn)行解析,得到對應(yīng)的數(shù)據(jù)庫的操作語言。根據(jù)數(shù)據(jù)庫設(shè)置對應(yīng)的數(shù)據(jù)庫適配器,數(shù)據(jù)庫和數(shù)據(jù)庫適配器可以均設(shè)置在服務(wù)器端。通過數(shù)據(jù)庫適配器將代碼進(jìn)行解析,解析為對應(yīng)的該數(shù)據(jù)庫適用的數(shù)據(jù)庫操作語言。步驟S304,將數(shù)據(jù)庫的操作語言發(fā)送給數(shù)據(jù)庫,接收數(shù)據(jù)庫返回的執(zhí)行結(jié)果。將解析得到的數(shù)據(jù)庫操作語言由服務(wù)器端如分布式組件發(fā)送給數(shù)據(jù)庫,其中,若數(shù)據(jù)庫存在多個(gè)數(shù)據(jù)庫節(jié)點(diǎn)時(shí),各個(gè)數(shù)據(jù)庫節(jié)點(diǎn)是相互獨(dú)立的,分布式組件可以通過定制化的負(fù)載均衡等方式,將數(shù)據(jù)庫操作語言發(fā)送給數(shù)據(jù)庫節(jié)點(diǎn),以供數(shù)據(jù)庫節(jié)點(diǎn)執(zhí)行該數(shù)據(jù)庫操作語言。同時(shí),在接收數(shù)據(jù)庫返回的執(zhí)行結(jié)果后,將其返回給客戶端??蛻舳丝梢愿鶕?jù)該執(zhí)行結(jié)果進(jìn)行相應(yīng)的操作,以完成整個(gè)對數(shù)據(jù)庫查詢語言適配的過程。根據(jù)本發(fā)明提供的數(shù)據(jù)庫查詢語言適配方法,基于預(yù)先設(shè)置的數(shù)據(jù)庫操作的預(yù)設(shè)標(biāo)簽和預(yù)設(shè)操作規(guī)則實(shí)現(xiàn)。獲取客戶端按照預(yù)設(shè)標(biāo)簽和預(yù)設(shè)操作規(guī)則所編輯的數(shù)據(jù)庫操作相關(guān)的代碼。根據(jù)預(yù)設(shè)操作規(guī)則判斷代碼是否符合預(yù)設(shè)操作規(guī)則,以保證代碼的準(zhǔn)確性和規(guī)范性,方便后續(xù)根據(jù)數(shù)據(jù)庫適配器對代碼中進(jìn)行解析,得到對應(yīng)的數(shù)據(jù)庫的操作語言。并將數(shù)據(jù)庫的操作語言發(fā)送給數(shù)據(jù)庫,接收數(shù)據(jù)庫返回的執(zhí)行結(jié)果。實(shí)現(xiàn)對客戶端屏蔽數(shù)據(jù)庫的差異性,使客戶端無視數(shù)據(jù)庫,僅根據(jù)需要編輯與數(shù)據(jù)庫相關(guān)操作的代碼。同樣,對于客戶端使用的不同操作系統(tǒng),僅需要基于預(yù)設(shè)標(biāo)簽和預(yù)設(shè)操作規(guī)則實(shí)現(xiàn),而不需要統(tǒng)一客戶端使用的語言。保持了客戶端、數(shù)據(jù)庫之間的相對獨(dú)立性。當(dāng)需要更換數(shù)據(jù)庫時(shí),無需修改客戶端的代碼,僅通過不同的數(shù)據(jù)庫適配器即可實(shí)現(xiàn)數(shù)據(jù)庫的更換。整個(gè)過程極大的節(jié)省了人力、物力和時(shí)間,也使得客戶端的代碼具有極高的復(fù)用性。圖4示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的數(shù)據(jù)庫查詢語言適配裝置的功能框圖。如圖4所示,數(shù)據(jù)庫查詢語言適配裝置包括如下模塊:獲取模塊410,適于獲取客戶端按照預(yù)設(shè)標(biāo)簽和預(yù)設(shè)操作規(guī)則所編輯的數(shù)據(jù)庫操作相關(guān)的代碼。不同的數(shù)據(jù)庫適用不同的數(shù)據(jù)庫操作語言,因此,在客戶端需要根據(jù)具體使用的數(shù)據(jù)庫編輯合適的代碼,以便于對使數(shù)據(jù)庫執(zhí)行相應(yīng)操作。即客戶端在使用不同的數(shù)據(jù)庫時(shí),需要編輯不同的代碼。針對此種情況,本實(shí)施例預(yù)先設(shè)置數(shù)據(jù)庫操作的預(yù)設(shè)標(biāo)簽和預(yù)設(shè)操作規(guī)則,基于預(yù)先設(shè)置數(shù)據(jù)庫操作的預(yù)設(shè)標(biāo)簽和預(yù)設(shè)操作規(guī)則進(jìn)行實(shí)現(xiàn),使客戶端按照預(yù)設(shè)標(biāo)簽和預(yù)設(shè)操作規(guī)則編輯的數(shù)據(jù)庫操作相關(guān)的代碼,即客戶端僅編輯一套代碼,適用于不同的數(shù)據(jù)庫。其中,數(shù)據(jù)庫可以包括關(guān)系型數(shù)據(jù)庫和/或非關(guān)系型數(shù)據(jù)庫。關(guān)系型數(shù)據(jù)庫,如Oracle,Mysql,SqlServer等,非關(guān)系型數(shù)據(jù)庫如MongoDB,CouchDB,DynamoDB,Cassandra等。本實(shí)施例還可以包括設(shè)置模塊(圖中未示出)預(yù)先設(shè)置數(shù)據(jù)庫操作的預(yù)設(shè)標(biāo)簽和預(yù)設(shè)操作規(guī)則。設(shè)置模塊在預(yù)先設(shè)置數(shù)據(jù)庫的預(yù)設(shè)標(biāo)簽時(shí),根據(jù)各種數(shù)據(jù)庫操作語言進(jìn)行分析,從中提取出其中包含的要素,將其設(shè)置為數(shù)據(jù)庫的預(yù)設(shè)標(biāo)簽。如設(shè)置模塊預(yù)先設(shè)置了預(yù)設(shè)標(biāo)簽。預(yù)設(shè)標(biāo)簽中包括數(shù)據(jù)庫名稱、數(shù)據(jù)表名稱、操作類型、查詢參數(shù)集合、數(shù)據(jù)值集合等。設(shè)置模塊通過數(shù)據(jù)庫名稱和數(shù)據(jù)表名稱可以確定要操作的具體對象。操作類型具體包括了如查詢select、更新update、插入insert、刪除delete、自定義操作customize等操作類型,其中。查詢select、更新update、插入insert、刪除delete等是數(shù)據(jù)庫常用的實(shí)現(xiàn)對數(shù)據(jù)庫中數(shù)據(jù)操作的數(shù)據(jù)操縱語言。自定義操作customize為數(shù)據(jù)庫自定義的對數(shù)據(jù)庫的操作。操作類型中可以包括對數(shù)據(jù)庫中數(shù)據(jù)的不同類型的操作,還可以包括對數(shù)據(jù)庫中數(shù)據(jù)表、權(quán)限的不同類型的操作,根據(jù)實(shí)施情況進(jìn)行設(shè)置,此處不做限定。數(shù)據(jù)值集合中可以以key:value的形式,將數(shù)據(jù)庫中數(shù)據(jù)字段與對應(yīng)的數(shù)據(jù)值進(jìn)行記錄。查詢參數(shù)集合包括了各種查詢條件可能出現(xiàn)的情況。其以查詢query預(yù)設(shè)標(biāo)簽進(jìn)行總體設(shè)置。由于查詢時(shí)可以涉及多個(gè)方面,因此,查詢參數(shù)集合具體可以包括如各種函數(shù)集合、分頁、排序、分組、條件集合等。函數(shù)集合包括了數(shù)據(jù)庫使用的函數(shù),如求和函數(shù)sum、最大值函數(shù)max、最小值函數(shù)min、唯一不同值函數(shù)distinct、計(jì)數(shù)函數(shù)count等,使用這些函數(shù)可以得到對應(yīng)的結(jié)果。分頁可以在查詢結(jié)果數(shù)據(jù)量較大時(shí),提供僅查詢出需要的數(shù)據(jù)量的查詢結(jié)果。如查詢時(shí)使用分頁查詢,設(shè)置查詢結(jié)果為from1size10,即從第一條查詢結(jié)果起,僅查詢出10條查詢結(jié)果,以方便提高查詢時(shí)的執(zhí)行效率。排序可以使查詢結(jié)果按照設(shè)置的數(shù)據(jù)字段進(jìn)行升序或降序的排序。分組可以選擇指定的數(shù)據(jù)字段進(jìn)行分組,具體的對該數(shù)據(jù)字段中的數(shù)據(jù)值進(jìn)行分組統(tǒng)計(jì)。條件集合可以包括了各種查詢條件之間的關(guān)系,如與關(guān)系and、或關(guān)系or、屬于關(guān)系in、range、不屬于關(guān)系notin、大于關(guān)系gte、小于關(guān)系lte等。使用條件集合中的各種預(yù)設(shè)標(biāo)簽可以對查詢條件進(jìn)行限定。以上預(yù)設(shè)標(biāo)簽均為舉例說明,實(shí)施時(shí)根據(jù)實(shí)際情況進(jìn)行設(shè)置,此處不做限定。設(shè)置模塊在預(yù)先設(shè)置數(shù)據(jù)庫的預(yù)設(shè)標(biāo)簽后,還需要對預(yù)設(shè)標(biāo)簽的使用、與數(shù)據(jù)庫操作相關(guān)的代碼限制等預(yù)先設(shè)置預(yù)設(shè)操作規(guī)則。預(yù)設(shè)操作規(guī)則包括對某一個(gè)預(yù)設(shè)標(biāo)簽的內(nèi)容的限定、使用的規(guī)范、預(yù)設(shè)標(biāo)簽之間的關(guān)聯(lián)關(guān)系、與數(shù)據(jù)庫操作相關(guān)的代碼中必須包括的內(nèi)容等等。如設(shè)置模塊中預(yù)設(shè)操作規(guī)則包括數(shù)據(jù)庫名稱、數(shù)據(jù)表名稱、操作類型等預(yù)設(shè)標(biāo)簽為與數(shù)據(jù)庫操作相關(guān)的代碼中必須包括的內(nèi)容;當(dāng)操作類型為插入insert時(shí),與數(shù)據(jù)庫操作相關(guān)的代碼中必須包括數(shù)據(jù)值集合等;還可以根據(jù)數(shù)據(jù)庫操作語言的特點(diǎn),對與數(shù)據(jù)庫操作相關(guān)的代碼的編輯進(jìn)行設(shè)置等。以上均為舉例說明,實(shí)施時(shí)根據(jù)實(shí)際情況進(jìn)行設(shè)置,此處不做限定。在設(shè)置模塊預(yù)先設(shè)置數(shù)據(jù)庫操作的預(yù)設(shè)標(biāo)簽和預(yù)設(shè)操作規(guī)則之后,客戶端對與數(shù)據(jù)庫操作相關(guān)的代碼進(jìn)行編輯??蛻舳嗽谶M(jìn)行編輯時(shí),需按照預(yù)設(shè)標(biāo)簽和預(yù)設(shè)操作規(guī)則進(jìn)行編輯。其中,代碼可以基于json語言實(shí)現(xiàn)。如客戶端編輯數(shù)據(jù)庫的插入操作代碼如下:客戶端編輯數(shù)據(jù)庫的查詢操作代碼如下:客戶端編輯數(shù)據(jù)庫的更新操作代碼如下:客戶端編輯數(shù)據(jù)庫的刪除操作代碼如下:以上代碼均為舉例說明,實(shí)施時(shí)根據(jù)實(shí)際情況進(jìn)行編輯,此處不做限定。在客戶端編輯與數(shù)據(jù)庫操作相關(guān)的代碼后,獲取模塊310獲取客戶端按照預(yù)設(shè)標(biāo)簽和預(yù)設(shè)操作規(guī)則所編輯的數(shù)據(jù)庫操作相關(guān)的代碼。解析模塊420,適于根據(jù)預(yù)設(shè)操作規(guī)則和數(shù)據(jù)庫適配器,對代碼進(jìn)行解析,得到數(shù)據(jù)庫的操作語言。解析模塊420根據(jù)預(yù)設(shè)操作規(guī)則對獲取的代碼進(jìn)行檢查、校驗(yàn)是否符合預(yù)設(shè)操作規(guī)則。具體的,解析模塊420還包括了判斷模塊421。判斷模塊421判斷代碼是否符合預(yù)設(shè)操作規(guī)則。判斷模塊421根據(jù)預(yù)設(shè)操作規(guī)則對代碼進(jìn)行判斷,如判斷模塊421判斷代碼中所使用的是否為預(yù)設(shè)標(biāo)簽;代碼中是否包括了數(shù)據(jù)庫名稱、數(shù)據(jù)表名稱;代碼中是否包括操作類型,其中操作類型設(shè)置的是否為預(yù)設(shè)標(biāo)簽;在操作類型為插入insert時(shí),代碼中是否包括了數(shù)據(jù)值集合;在操作類型為更新update時(shí),代碼中是否包括了查詢的預(yù)設(shè)標(biāo)簽和數(shù)據(jù)值集合;代碼中包括的數(shù)據(jù)值集合是否符合預(yù)設(shè)操作規(guī)則的設(shè)置;代碼中使用的查詢參數(shù)集合中的函數(shù)是否為預(yù)設(shè)標(biāo)簽;代碼中使用的分頁、排序、分組或條件集合等是否為預(yù)設(shè)標(biāo)簽,編輯格式是否正確等。以上均為舉例說明,實(shí)施時(shí)根據(jù)實(shí)際情況進(jìn)行判斷,此處不做限定。若判斷模塊421判斷代碼符合預(yù)設(shè)操作規(guī)則,解析模塊420對代碼進(jìn)行解析。進(jìn)一步,若在測試階段,判斷模塊421判斷代碼不符合預(yù)設(shè)操作規(guī)則,判斷模塊421可以進(jìn)行提示,如判斷模塊421提示代碼中不符合預(yù)設(shè)操作規(guī)則的部分,以便客戶端進(jìn)行相應(yīng)的修改。解析模塊420進(jìn)行解析時(shí),根據(jù)數(shù)據(jù)庫適配器,解析模塊420對代碼進(jìn)行解析。如數(shù)據(jù)庫為Mysql時(shí),解析模塊420將數(shù)據(jù)庫的插入操作代碼進(jìn)行解析,操作代碼為:解析模塊420解析后得到數(shù)據(jù)庫對應(yīng)的插入操作的數(shù)據(jù)庫語音:insertintotest_db.test_table_t(id,type,user_id,user_name)values(’12366’,’type3’,’98765’,’jobs’)。執(zhí)行模塊430,適于利用數(shù)據(jù)庫的操作語言實(shí)現(xiàn)對數(shù)據(jù)庫的操作。執(zhí)行模塊430利用數(shù)據(jù)庫操作語言,實(shí)現(xiàn)對數(shù)據(jù)庫的操作。如執(zhí)行模塊430將解析得到的數(shù)據(jù)庫操作語言發(fā)送給數(shù)據(jù)庫,以供數(shù)據(jù)庫執(zhí)行該數(shù)據(jù)庫操作語言。實(shí)現(xiàn)對數(shù)據(jù)庫進(jìn)行查詢、插入、更新、刪除等操作。執(zhí)行模塊430還接收數(shù)據(jù)庫返回的執(zhí)行結(jié)果,將其返回給客戶端。以供客戶端根據(jù)操作結(jié)果進(jìn)行相應(yīng)的處理。根據(jù)本發(fā)明提供的數(shù)據(jù)庫查詢語言適配裝置,基于預(yù)先設(shè)置的數(shù)據(jù)庫操作的預(yù)設(shè)標(biāo)簽和預(yù)設(shè)操作規(guī)則實(shí)現(xiàn)。獲取客戶端按照預(yù)設(shè)標(biāo)簽和預(yù)設(shè)操作規(guī)則所編輯的數(shù)據(jù)庫操作相關(guān)的代碼。根據(jù)預(yù)設(shè)操作規(guī)則判斷代碼是否符合預(yù)設(shè)操作規(guī)則,以保證代碼的準(zhǔn)確性和規(guī)范性,方便后續(xù)根據(jù)數(shù)據(jù)庫適配器對代碼中進(jìn)行解析,得到對應(yīng)的數(shù)據(jù)庫的操作語言。并將數(shù)據(jù)庫的操作語言發(fā)送給數(shù)據(jù)庫,接收數(shù)據(jù)庫返回的執(zhí)行結(jié)果。實(shí)現(xiàn)對客戶端屏蔽數(shù)據(jù)庫的差異性,使客戶端無視數(shù)據(jù)庫,僅根據(jù)需要編輯與數(shù)據(jù)庫相關(guān)操作的代碼。當(dāng)需要更換數(shù)據(jù)庫時(shí),無需修改客戶端的代碼,僅通過不同的數(shù)據(jù)庫適配器即可實(shí)現(xiàn)數(shù)據(jù)庫的更換。整個(gè)過程極大的節(jié)省了人力、物力和時(shí)間,也使得客戶端的代碼具有極高的復(fù)用性。本發(fā)明還提供了一種分布式數(shù)據(jù)存儲系統(tǒng)。其中,分布式數(shù)據(jù)存儲系統(tǒng)包括客戶端、分布式組件和數(shù)據(jù)庫。其系統(tǒng)架構(gòu)可以如圖2所示的結(jié)構(gòu)。客戶端可以采用不同的操作系統(tǒng),如IOS系統(tǒng)、android系統(tǒng)、Windows系統(tǒng)、macOS系統(tǒng)等等,即客戶端可以為IOS移動設(shè)備、安卓移動設(shè)備、PC機(jī)、平板電腦等,各種不同的系統(tǒng)采用的語言也可以不同。數(shù)據(jù)庫可以包括如圖所示的Mysql、MongoDB、Oracle、DynamoDB等,除此之外,還可以包括其他關(guān)系型數(shù)據(jù)庫和/或非關(guān)系型數(shù)據(jù)庫。關(guān)系型數(shù)據(jù)庫,如SqlServer等,非關(guān)系型數(shù)據(jù)庫如CouchDB、Cassandra等。分布式組件設(shè)置與服務(wù)器之上,分布式組件包括了以上各實(shí)施例的數(shù)據(jù)庫查詢語言適配裝置。數(shù)據(jù)庫查詢語言適配裝置的描述可參考上述的實(shí)施例,在此不再贅述。分布式數(shù)據(jù)存儲系統(tǒng)中的分布式組件可以為反向代理服務(wù)器,具體可以是Nginx服務(wù)器。Nginx是高吞吐高并發(fā)的http反向代理。對應(yīng)的數(shù)據(jù)庫可以設(shè)置多個(gè)數(shù)據(jù)庫節(jié)點(diǎn),Nginx服務(wù)器現(xiàn)有的負(fù)載均衡策略可以將數(shù)據(jù)庫節(jié)點(diǎn)地址等細(xì)節(jié)完全對外屏蔽,對于開發(fā)者而言數(shù)據(jù)庫節(jié)點(diǎn)設(shè)置等細(xì)節(jié)是透明的,不需要考慮,通過Nginx服務(wù)器的定制化的負(fù)載均衡,實(shí)現(xiàn)對指定的數(shù)據(jù)庫節(jié)點(diǎn)的相應(yīng)操作。根據(jù)本發(fā)明提供的分布式數(shù)據(jù)存儲系統(tǒng),通過分布式組件中包括的數(shù)據(jù)庫查詢語言適配裝置,實(shí)現(xiàn)對客戶端屏蔽數(shù)據(jù)庫的差異性,使客戶端無視數(shù)據(jù)庫,僅根據(jù)需要編輯與數(shù)據(jù)庫相關(guān)操作的代碼。同樣,對于客戶端使用的不同操作系統(tǒng),僅需要基于預(yù)設(shè)標(biāo)簽和預(yù)設(shè)操作規(guī)則實(shí)現(xiàn),而不需要統(tǒng)一客戶端使用的語言。保持了客戶端、數(shù)據(jù)庫之間的相對獨(dú)立性。當(dāng)需要更換數(shù)據(jù)庫時(shí),無需修改客戶端的代碼,僅通過不同的數(shù)據(jù)庫適配器即可實(shí)現(xiàn)數(shù)據(jù)庫的更換。整個(gè)過程極大的節(jié)省了人力、物力和時(shí)間,也使得客戶端的代碼具有極高的復(fù)用性。進(jìn)一步,分布式組件中的定制化的負(fù)載均衡,可實(shí)現(xiàn)對指定的數(shù)據(jù)庫節(jié)點(diǎn)進(jìn)行相應(yīng)操作,使系統(tǒng)中數(shù)據(jù)庫存在多個(gè)節(jié)點(diǎn)地址等細(xì)節(jié)對開發(fā)者透明,不需開發(fā)者考慮,使代碼處理更加簡單。在此提供的算法和顯示不與任何特定計(jì)算機(jī)、虛擬系統(tǒng)或者其它設(shè)備固有相關(guān)。各種通用系統(tǒng)也可以與基于在此的示教一起使用。根據(jù)上面的描述,構(gòu)造這類系統(tǒng)所要求的結(jié)構(gòu)是顯而易見的。此外,本發(fā)明也不針對任何特定編程語言。應(yīng)當(dāng)明白,可以利用各種編程語言實(shí)現(xiàn)在此描述的本發(fā)明的內(nèi)容,并且上面對特定語言所做的描述是為了披露本發(fā)明的最佳實(shí)施方式。在此處所提供的說明書中,說明了大量具體細(xì)節(jié)。然而,能夠理解,本發(fā)明的實(shí)施例可以在沒有這些具體細(xì)節(jié)的情況下實(shí)踐。在一些實(shí)例中,并未詳細(xì)示出公知的方法、結(jié)構(gòu)和技術(shù),以便不模糊對本說明書的理解。類似地,應(yīng)當(dāng)理解,為了精簡本公開并幫助理解各個(gè)發(fā)明方面中的一個(gè)或多個(gè),在上面對本發(fā)明的示例性實(shí)施例的描述中,本發(fā)明的各個(gè)特征有時(shí)被一起分組到單個(gè)實(shí)施例、圖、或者對其的描述中。然而,并不應(yīng)將該公開的方法解釋成反映如下意圖:即所要求保護(hù)的本發(fā)明要求比在每個(gè)權(quán)利要求中所明確記載的特征更多的特征。更確切地說,如下面的權(quán)利要求書所反映的那樣,發(fā)明方面在于少于前面公開的單個(gè)實(shí)施例的所有特征。因此,遵循具體實(shí)施方式的權(quán)利要求書由此明確地并入該具體實(shí)施方式,其中每個(gè)權(quán)利要求本身都作為本發(fā)明的單獨(dú)實(shí)施例。本領(lǐng)域那些技術(shù)人員可以理解,可以對實(shí)施例中的設(shè)備中的模塊進(jìn)行自適應(yīng)性地改變并且把它們設(shè)置在與該實(shí)施例不同的一個(gè)或多個(gè)設(shè)備中??梢园褜?shí)施例中的模塊或單元或組件組合成一個(gè)模塊或單元或組件,以及此外可以把它們分成多個(gè)子模塊或子單元或子組件。除了這樣的特征和/或過程或者單元中的至少一些是相互排斥之外,可以采用任何組合對本說明書(包括伴隨的權(quán)利要求、摘要和附圖)中公開的所有特征以及如此公開的任何方法或者設(shè)備的所有過程或單元進(jìn)行組合。除非另外明確陳述,本說明書(包括伴隨的權(quán)利要求、摘要和附圖)中公開的每個(gè)特征可以由提供相同、等同或相似目的的替代特征來代替。此外,本領(lǐng)域的技術(shù)人員能夠理解,盡管在此所述的一些實(shí)施例包括其它實(shí)施例中所包括的某些特征而不是其它特征,但是不同實(shí)施例的特征的組合意味著處于本發(fā)明的范圍之內(nèi)并且形成不同的實(shí)施例。例如,在下面的權(quán)利要求書中,所要求保護(hù)的實(shí)施例的任意之一都可以以任意的組合方式來使用。本發(fā)明的各個(gè)部件實(shí)施例可以以硬件實(shí)現(xiàn),或者以在一個(gè)或者多個(gè)處理器上運(yùn)行的軟件模塊實(shí)現(xiàn),或者以它們的組合實(shí)現(xiàn)。本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)理解,可以在實(shí)踐中使用微處理器或者數(shù)字信號處理器(DSP)來實(shí)現(xiàn)根據(jù)本發(fā)明實(shí)施例的數(shù)據(jù)庫查詢語言適配裝置中的一些或者全部部件的一些或者全部功能。本發(fā)明還可以實(shí)現(xiàn)為用于執(zhí)行這里所描述的方法的一部分或者全部的設(shè)備或者裝置程序(例如,計(jì)算機(jī)程序和計(jì)算機(jī)程序產(chǎn)品)。這樣的實(shí)現(xiàn)本發(fā)明的程序可以存儲在計(jì)算機(jī)可讀介質(zhì)上,或者可以具有一個(gè)或者多個(gè)信號的形式。這樣的信號可以從因特網(wǎng)網(wǎng)站上下載得到,或者在載體信號上提供,或者以任何其他形式提供。應(yīng)該注意的是上述實(shí)施例對本發(fā)明進(jìn)行說明而不是對本發(fā)明進(jìn)行限制,并且本領(lǐng)域技術(shù)人員在不脫離所附權(quán)利要求的范圍的情況下可設(shè)計(jì)出替換實(shí)施例。在權(quán)利要求中,不應(yīng)將位于括號之間的任何參考符號構(gòu)造成對權(quán)利要求的限制。單詞“包含”不排除存在未列在權(quán)利要求中的元件或步驟。位于元件之前的單詞“一”或“一個(gè)”不排除存在多個(gè)這樣的元件。本發(fā)明可以借助于包括有若干不同元件的硬件以及借助于適當(dāng)編程的計(jì)算機(jī)來實(shí)現(xiàn)。在列舉了若干裝置的單元權(quán)利要求中,這些裝置中的若干個(gè)可以是通過同一個(gè)硬件項(xiàng)來具體體現(xiàn)。單詞第一、第二、以及第三等的使用不表示任何順序。可將這些單詞解釋為名稱。本發(fā)明公開了:A1、一種數(shù)據(jù)庫查詢語言適配方法,所述方法基于預(yù)先設(shè)置的數(shù)據(jù)庫操作的預(yù)設(shè)標(biāo)簽和預(yù)設(shè)操作規(guī)則實(shí)現(xiàn),所述方法包括:獲取客戶端按照所述預(yù)設(shè)標(biāo)簽和所述預(yù)設(shè)操作規(guī)則所編輯的數(shù)據(jù)庫操作相關(guān)的代碼;根據(jù)所述預(yù)設(shè)操作規(guī)則和數(shù)據(jù)庫適配器,對所述代碼進(jìn)行解析,得到數(shù)據(jù)庫的操作語言;利用所述數(shù)據(jù)庫的操作語言實(shí)現(xiàn)對數(shù)據(jù)庫的操作。A2、根據(jù)A1所述的方法,其中,所述數(shù)據(jù)庫操作的預(yù)設(shè)標(biāo)簽包括數(shù)據(jù)庫名稱、數(shù)據(jù)表名稱、操作類型、查詢參數(shù)集合和/或數(shù)據(jù)值集合。A3、根據(jù)A2所述的方法,其中,所述操作類型包括查詢、更新、插入、刪除和/或自定義操作。A4、根據(jù)A2所述的方法,其中,所述查詢參數(shù)集合包括函數(shù)集合、分頁、排序、分組和/或條件集合。A5、根據(jù)A1所述的方法,其中,所述數(shù)據(jù)庫包括關(guān)系型數(shù)據(jù)庫和/或非關(guān)系型數(shù)據(jù)庫。A6、根據(jù)A1所述的方法,其中,所述代碼基于json語言實(shí)現(xiàn)。A7、根據(jù)A1-A6任一項(xiàng)所述的方法,其中,所述根據(jù)所述預(yù)設(shè)操作規(guī)則和數(shù)據(jù)庫適配器,對所述代碼進(jìn)行解析,得到數(shù)據(jù)庫的操作語言進(jìn)一步包括:判斷所述代碼是否符合所述預(yù)設(shè)操作規(guī)則;若是,根據(jù)數(shù)據(jù)庫適配器對所述代碼中進(jìn)行解析,得到對應(yīng)的數(shù)據(jù)庫的操作語言。A8、根據(jù)A1-A7任一項(xiàng)所述的方法,其中,所述利用所述數(shù)據(jù)庫的操作語言實(shí)現(xiàn)對數(shù)據(jù)庫的操作進(jìn)一步包括:將所述數(shù)據(jù)庫的操作語言發(fā)送給數(shù)據(jù)庫,接收數(shù)據(jù)庫返回的執(zhí)行結(jié)果。本發(fā)明還公開了:B9、一種數(shù)據(jù)庫查詢語言適配裝置,所述裝置基于預(yù)先設(shè)置的數(shù)據(jù)庫操作的預(yù)設(shè)標(biāo)簽和預(yù)設(shè)操作規(guī)則實(shí)現(xiàn),所述裝置包括:獲取模塊,適于獲取客戶端按照所述預(yù)設(shè)標(biāo)簽和所述預(yù)設(shè)操作規(guī)則所編輯的數(shù)據(jù)庫操作相關(guān)的代碼;解析模塊,適于根據(jù)所述預(yù)設(shè)操作規(guī)則和數(shù)據(jù)庫適配器,對所述代碼進(jìn)行解析,得到數(shù)據(jù)庫的操作語言;執(zhí)行模塊,適于利用所述數(shù)據(jù)庫的操作語言實(shí)現(xiàn)對數(shù)據(jù)庫的操作。B10、根據(jù)B9所述的裝置,其中,所述數(shù)據(jù)庫操作的預(yù)設(shè)標(biāo)簽包括數(shù)據(jù)庫名稱、數(shù)據(jù)表名稱、操作類型、查詢參數(shù)集合和/或數(shù)據(jù)值集合。B11、根據(jù)B10所述的裝置,其中,所述操作類型包括查詢、更新、插入、刪除和/或自定義操作。B12、根據(jù)B10所述的裝置,其中,所述查詢參數(shù)集合包括函數(shù)集合、分頁、排序、分組和/或條件集合。B13、根據(jù)B9所述的裝置,其中,所述數(shù)據(jù)庫包括關(guān)系型數(shù)據(jù)庫和/或非關(guān)系型數(shù)據(jù)庫。B14、根據(jù)B9所述的裝置,其中,所述代碼基于json語言實(shí)現(xiàn)。B15、根據(jù)B9-B14任一項(xiàng)所述的裝置,其中,所述解析模塊包括:判斷模塊,適于判斷所述代碼是否符合所述預(yù)設(shè)操作規(guī)則;所述解析模塊進(jìn)一步適于:若是,根據(jù)數(shù)據(jù)庫適配器對所述代碼中進(jìn)行解析,得到對應(yīng)的數(shù)據(jù)庫的操作語言。B16、根據(jù)B9-B15任一項(xiàng)所述的裝置,其中,所述執(zhí)行模塊進(jìn)一步適于:將所述數(shù)據(jù)庫的操作語言發(fā)送給數(shù)據(jù)庫,接收數(shù)據(jù)庫返回的執(zhí)行結(jié)果。本發(fā)明還公開了:C17、一種分布式數(shù)據(jù)存儲系統(tǒng),其中,包括客戶端、分布式組件和數(shù)據(jù)庫;其中,所述分布式組件包括B9-B16任一項(xiàng)所述的數(shù)據(jù)庫查詢語言適配裝置。C18、根據(jù)C17所述的系統(tǒng),其中,所述分布式組件為反向代理服務(wù)器。C19、根據(jù)C17或C18所述的系統(tǒng),其中,所述分布式組件為Nginx服務(wù)器。當(dāng)前第1頁1 2 3 當(dāng)前第1頁1 2 3 
當(dāng)前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1
嫩江县| 建始县| 方城县| 漳州市| 福清市| 浠水县| 姜堰市| 台湾省| 济宁市| 类乌齐县| 晋江市| 万盛区| 定结县| 理塘县| 潞西市| 琼结县| 昆山市| 海原县| 电白县| 甘孜| 运城市| 工布江达县| 盐边县| 都昌县| 南华县| 扶余县| 商水县| 平果县| 拉萨市| 武夷山市| 双峰县| 班戈县| 志丹县| 德清县| 吉安县| 齐河县| 丁青县| 香港 | 定西市| 宁安市| 石河子市|