專利名稱:一種混合使用固態(tài)硬盤和傳統(tǒng)硬盤的postgresql數(shù)據(jù)庫(kù)集群系統(tǒng)及其優(yōu)化方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一般的由普通服務(wù)器組成的數(shù)據(jù)庫(kù)集群系統(tǒng),特別是涉及一種在數(shù)據(jù)庫(kù)集群系統(tǒng)中使用固態(tài)硬盤并對(duì)整個(gè)系統(tǒng)進(jìn)行優(yōu)化的方法。
背景技術(shù):
數(shù)據(jù)庫(kù)集群系統(tǒng)把集群技術(shù)與數(shù)據(jù)庫(kù)系統(tǒng)相結(jié)合,由一組完整的、自治的計(jì)算處理單元(節(jié)點(diǎn)),每個(gè)節(jié)點(diǎn)均有獨(dú)自的CPU、內(nèi)存以及磁盤等硬件資源,運(yùn)行獨(dú)立的操作系統(tǒng)和自治的數(shù)據(jù)庫(kù)系統(tǒng),通過(guò)高速專用網(wǎng)絡(luò)或者商業(yè)通用網(wǎng)絡(luò)互連,彼此協(xié)同計(jì)算,作為統(tǒng)一的數(shù)據(jù)庫(kù)系統(tǒng)提供并行事務(wù)處理服務(wù)。數(shù)據(jù)庫(kù)集群系統(tǒng)強(qiáng)調(diào)集群系統(tǒng)的協(xié)作與并行處理,其核心思想是通過(guò)多機(jī)并行處理來(lái)隱藏對(duì)數(shù)據(jù)庫(kù)性能影響較大的延遲以獲得高并行處理性能,突破傳統(tǒng)的單機(jī)上的數(shù)據(jù)庫(kù)系統(tǒng)所固有的性能瓶頸限制。數(shù)據(jù)庫(kù)集群系統(tǒng)以高性能、高可用性和高可擴(kuò)展性為目標(biāo),充分利用多處理器平臺(tái)的工作能力,主要在OLTP的典型應(yīng)用環(huán)境中提供更快的響應(yīng)時(shí)間與更大的事務(wù)吞吐量。在大型的應(yīng)用中,以甲骨文公司的oracle rac數(shù)據(jù)庫(kù)集群系統(tǒng)和IBM公司的 purescale數(shù)據(jù)庫(kù)集群系統(tǒng)比較普遍,但是要使用這兩個(gè)集群系統(tǒng)無(wú)論從硬件上或者軟件上都需要極大的投入,成本極高。所以,有很多企業(yè)和組織也傾向于使用低成本的開(kāi)源數(shù)據(jù)庫(kù)集群系統(tǒng),只需要一些普通的服務(wù)器和免費(fèi)的開(kāi)源軟件就可以搭建出性能不錯(cuò)的數(shù)據(jù)集群系統(tǒng)。比較常見(jiàn)的開(kāi)源集群系統(tǒng)是使用開(kāi)源查詢分發(fā)集群軟件和數(shù)據(jù)復(fù)制集群軟件以及開(kāi)源數(shù)據(jù)庫(kù)postgresql構(gòu)建的數(shù)據(jù)庫(kù)集群系統(tǒng)。數(shù)據(jù)分發(fā)集群軟件主要負(fù)責(zé)客戶端查詢的預(yù)處理和分發(fā),數(shù)據(jù)復(fù)制集群軟件負(fù)責(zé)集群節(jié)點(diǎn)間的數(shù)據(jù)復(fù)制和同步。由于是非共享磁盤架構(gòu),需要在節(jié)點(diǎn)間通過(guò)復(fù)制的方式傳遞數(shù)據(jù),所以這種數(shù)據(jù)庫(kù)集群對(duì)磁盤的性能要求較高,而目前固態(tài)硬盤在科研和商業(yè)領(lǐng)域都比較受青睞,大有替代傳統(tǒng)硬盤的趨勢(shì),因此在這種數(shù)據(jù)庫(kù)集群中引入固態(tài)硬盤可以大幅度地提高數(shù)據(jù)庫(kù)集群的性能。固態(tài)硬盤是一種新型的電介質(zhì)硬盤,與傳統(tǒng)硬盤相比,它由磁介質(zhì)存儲(chǔ)改為電介質(zhì)存儲(chǔ)而且不需要機(jī)械裝置,所以固態(tài)硬盤沒(méi)有傳統(tǒng)硬盤的尋道時(shí)間和延遲時(shí)間,可以提供非常高的隨機(jī)讀取能力,是公認(rèn)的下一代主流存儲(chǔ)設(shè)備。但是固態(tài)硬盤也存在一些缺陷, 相比于較強(qiáng)的隨機(jī)讀,連續(xù)讀,連續(xù)寫能力,固態(tài)硬盤的隨機(jī)寫能力就顯得很弱,跟傳統(tǒng)硬盤差不多,因?yàn)楣虘B(tài)硬盤的隨機(jī)寫會(huì)帶來(lái)大量的擦除操作,而連續(xù)寫可以將擦除操作帶來(lái)的影響降到最低,所以使用固態(tài)硬盤的應(yīng)用系統(tǒng)應(yīng)該針對(duì)固態(tài)硬盤的特點(diǎn)做一些特殊的配置,來(lái)發(fā)揮固態(tài)硬盤的優(yōu)勢(shì)以提高應(yīng)用系統(tǒng)的性能,不能沿用之前的使用傳統(tǒng)硬盤的方式來(lái)使用固態(tài)硬盤。其次,固態(tài)硬盤的存儲(chǔ)成本較高,同等存儲(chǔ)容量的固態(tài)硬盤要比傳統(tǒng)硬盤貴很多,因此在大型應(yīng)用系統(tǒng)中完全使用固態(tài)硬盤來(lái)代替?zhèn)鹘y(tǒng)硬盤也不太現(xiàn)實(shí),只能在一些關(guān)鍵存儲(chǔ)節(jié)點(diǎn)上使用固態(tài)硬盤,從而以最小的代價(jià)來(lái)提高系統(tǒng)的性能。在這種技術(shù)背景下,在廉價(jià)的開(kāi)源數(shù)據(jù)庫(kù)集群中引入固態(tài)硬盤,應(yīng)該可以大幅度地提高系統(tǒng)的性能,所以如何改進(jìn)數(shù)據(jù)庫(kù)集群系統(tǒng),如何使用好固態(tài)硬盤,利用其讀取速度上的優(yōu)勢(shì),避免其缺陷,更好地提高數(shù)據(jù)庫(kù)集群系統(tǒng)的性能是一個(gè)具有重要意義值得深入研究的技術(shù)問(wèn)題,是構(gòu)建出低成本,高性能的數(shù)據(jù)庫(kù)集群系統(tǒng)的關(guān)鍵。
發(fā)明內(nèi)容
本發(fā)明目的在于提供一種混合使用固態(tài)硬盤和傳統(tǒng)硬盤的postgresql數(shù)據(jù)庫(kù)集群系統(tǒng),以及在這個(gè)框架之上對(duì)一些開(kāi)源集群軟件的改進(jìn)方法,通過(guò)這些改進(jìn)方法可以充分發(fā)揮固態(tài)硬盤的優(yōu)勢(shì),充分利用固態(tài)硬盤的高速隨機(jī)讀能力,同時(shí)避免固態(tài)硬盤低速隨機(jī)寫的劣勢(shì),大幅度地提高數(shù)據(jù)庫(kù)集群系統(tǒng)的性能,提高數(shù)據(jù)庫(kù)集群系統(tǒng)的性價(jià)比,從而構(gòu)建出低成本,高性能的數(shù)據(jù)庫(kù)集群系統(tǒng)。為達(dá)到上述目標(biāo),本發(fā)明采用的具體技術(shù)方案如下一、一種混合使用固態(tài)硬盤和傳統(tǒng)硬盤的postgresql數(shù)據(jù)庫(kù)集群系統(tǒng)的構(gòu)建框
^K O在本框架下的數(shù)據(jù)庫(kù)集群系統(tǒng)中,包含一臺(tái)查詢分發(fā)服務(wù)器和若干臺(tái)postgresql 數(shù)據(jù)庫(kù)服務(wù)器,這些服務(wù)器處同處于一個(gè)局域網(wǎng)中,通過(guò)較高帶寬的網(wǎng)絡(luò)相互連接,在這些 postgresql數(shù)據(jù)庫(kù)服務(wù)器中,有一臺(tái)作為主服務(wù)器節(jié)點(diǎn),其他的作為從服務(wù)器節(jié)點(diǎn),主服務(wù)器節(jié)點(diǎn)使用傳統(tǒng)硬盤,從服務(wù)器節(jié)點(diǎn)使用固態(tài)硬盤。在整個(gè)系統(tǒng)中,查詢分發(fā)服務(wù)器負(fù)責(zé)接受和預(yù)處理用戶的查詢,并把這些查詢分發(fā)到數(shù)據(jù)庫(kù)集群中的具體的單個(gè)節(jié)點(diǎn)上。數(shù)據(jù)庫(kù)主服務(wù)器節(jié)點(diǎn)上保存著最新的數(shù)據(jù),從服務(wù)器節(jié)點(diǎn)使用數(shù)據(jù)復(fù)制集群軟件實(shí)時(shí)地從主服務(wù)器節(jié)點(diǎn)上復(fù)制數(shù)據(jù)。在從服務(wù)器節(jié)點(diǎn)上引入固態(tài)硬盤以后,查詢分發(fā)服務(wù)器就可以把寫操作分發(fā)到主服務(wù)器節(jié)點(diǎn)上,把讀操作分發(fā)到從服務(wù)器節(jié)點(diǎn)上,從而利用固態(tài)硬盤的高速隨機(jī)讀取能力, 達(dá)到較大的查詢性能提升,同時(shí)把讀寫操作分布到不同的數(shù)據(jù)庫(kù)服務(wù)器上也實(shí)現(xiàn)了數(shù)據(jù)庫(kù)集群的負(fù)載均衡,更好地提升了數(shù)據(jù)庫(kù)集群的性能。從服務(wù)器節(jié)點(diǎn)需要實(shí)時(shí)地從主服務(wù)器節(jié)點(diǎn)復(fù)制數(shù)據(jù),在從服務(wù)器節(jié)點(diǎn)引入固態(tài)硬盤以后,需要對(duì)數(shù)據(jù)復(fù)制集群軟件的復(fù)制策略進(jìn)行調(diào)整,通過(guò)把復(fù)制時(shí)的隨機(jī)寫操作轉(zhuǎn)化成連續(xù)寫操作從而避免固態(tài)硬盤隨機(jī)寫速度較差的劣勢(shì),更好地利用了固態(tài)硬盤,使數(shù)據(jù)庫(kù)集群的性能得到更大地提升。二、基于上述數(shù)據(jù)庫(kù)集群框架的系統(tǒng)的開(kāi)源集群軟件改進(jìn)方法在這個(gè)數(shù)據(jù)庫(kù)集群系統(tǒng)中,查詢預(yù)處理和分發(fā)服務(wù)器使用查詢分發(fā)集群軟件來(lái)完成任務(wù),原有的開(kāi)源的查詢分發(fā)集群軟件并沒(méi)有針對(duì)有固體硬盤架構(gòu)的系統(tǒng)做優(yōu)化,本發(fā)明對(duì)這個(gè)集群軟件進(jìn)行一些改進(jìn),提出新的查詢預(yù)處理和分配的方法,從而更好地利用現(xiàn)有的集群架構(gòu),提高數(shù)據(jù)庫(kù)集群的性能。同時(shí)本發(fā)明也對(duì)數(shù)據(jù)復(fù)制集群軟件的復(fù)制策略進(jìn)行改進(jìn),提出一種新的有利于利用固態(tài)硬盤優(yōu)勢(shì)的復(fù)制策略。本方法對(duì)用戶的查詢進(jìn)行分類,根據(jù)查詢是否有磁盤寫入操作,把用戶查詢分為寫操作查詢和讀操作查詢。在查詢分發(fā)時(shí),把寫操作查詢發(fā)送給主服務(wù)器節(jié)點(diǎn),把讀操作查詢發(fā)給從服務(wù)器節(jié)點(diǎn),由于從服務(wù)器節(jié)點(diǎn)上裝有固體硬盤,能夠提供高速的隨機(jī)讀性能,通過(guò)這種分配方式能夠有效地利用固體硬盤的這個(gè)特性,提高數(shù)據(jù)庫(kù)集群系統(tǒng)的響應(yīng)速度。 同時(shí),通過(guò)把寫操作和讀操作分離之后,能夠更好地實(shí)現(xiàn)數(shù)據(jù)庫(kù)集群系統(tǒng)的負(fù)載均衡,從而提高整個(gè)數(shù)據(jù)庫(kù)集群系統(tǒng)的吞吐能力。除了對(duì)查詢進(jìn)行分類分發(fā)以外,本方法還對(duì)查詢進(jìn)行聚集操作,把查詢盡可能地按用戶進(jìn)行聚集,使得同一用戶的查詢盡量集中在一起,并盡量地發(fā)送給同一個(gè)數(shù)據(jù)庫(kù)服務(wù)器節(jié)點(diǎn),這樣就能利用數(shù)據(jù)的局部性,更好地提高單個(gè)用戶的響應(yīng)速度。除了提出了新的查詢分配方法之外,本方法也對(duì)數(shù)據(jù)復(fù)制集群軟件提出改進(jìn)措施,提出一種新的數(shù)據(jù)復(fù)制策略。數(shù)據(jù)復(fù)制集群軟件復(fù)制從主服務(wù)器節(jié)點(diǎn)向從服務(wù)器節(jié)點(diǎn)復(fù)制數(shù)據(jù),以保持集群中各節(jié)點(diǎn)間的數(shù)據(jù)同步。在加入固態(tài)硬盤以后,復(fù)制數(shù)據(jù)時(shí)要避免固態(tài)硬盤的隨機(jī)寫的劣勢(shì),本方法通過(guò)對(duì)隨機(jī)寫進(jìn)行排序,把它轉(zhuǎn)化成連續(xù)寫,從而避免固態(tài)硬盤的劣勢(shì),提高數(shù)據(jù)庫(kù)集群系統(tǒng)的性能。
圖1是數(shù)據(jù)庫(kù)集群系統(tǒng)整體框架圖。圖2是查詢預(yù)處理和分發(fā)優(yōu)化的工作流程圖。圖3是數(shù)據(jù)復(fù)制優(yōu)化的工作流程圖。
具體實(shí)施例方式下面結(jié)合附圖及具體實(shí)施方式
對(duì)本發(fā)明作進(jìn)一步的描述如圖1所示,給出了整個(gè)數(shù)據(jù)庫(kù)集群系統(tǒng)的整體框架圖。在這個(gè)數(shù)據(jù)庫(kù)集群中包含一臺(tái)查詢分發(fā)服務(wù)器和若干臺(tái)裝有postgresql數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)服務(wù)器,這些服務(wù)器處于同一個(gè)局域網(wǎng)中,彼此通過(guò)較高帶寬的網(wǎng)絡(luò)相互連接,在這些postgresql數(shù)據(jù)庫(kù)服務(wù)器中,有一臺(tái)作為主服務(wù)器節(jié)點(diǎn),其他的若干臺(tái)作為從服務(wù)器節(jié)點(diǎn),主服務(wù)器節(jié)點(diǎn)使用傳統(tǒng)硬盤,從服務(wù)器節(jié)點(diǎn)使用固態(tài)硬盤。在整個(gè)數(shù)據(jù)庫(kù)集群系統(tǒng)中,查詢分發(fā)服務(wù)器負(fù)責(zé)接受和預(yù)處理用戶的查詢,并把這些查詢分發(fā)到數(shù)據(jù)庫(kù)集群中的具體的單個(gè)節(jié)點(diǎn)上。數(shù)據(jù)庫(kù)主服務(wù)器節(jié)點(diǎn)上保存著最新的數(shù)據(jù),從服務(wù)器節(jié)點(diǎn)使用數(shù)據(jù)復(fù)制集群軟件實(shí)時(shí)地從主服務(wù)器節(jié)點(diǎn)上復(fù)制數(shù)據(jù)。本發(fā)明對(duì)這個(gè)數(shù)據(jù)庫(kù)集群系統(tǒng)中的查詢分發(fā)集群軟件和數(shù)據(jù)復(fù)制集群軟件進(jìn)行優(yōu)化,充分利用固態(tài)硬盤的優(yōu)勢(shì),來(lái)提高數(shù)據(jù)庫(kù)集群的性能。具體的來(lái)說(shuō),本發(fā)明對(duì)查詢分發(fā)集群軟件進(jìn)行一些優(yōu)化,提出新的查詢預(yù)處理和分配的方法,從而更好地利用現(xiàn)有的集群架構(gòu),提高數(shù)據(jù)庫(kù)集群的性能。同時(shí)本發(fā)明也對(duì)數(shù)據(jù)復(fù)制集群軟件的復(fù)制策略進(jìn)行優(yōu)化, 提出一種新的有利于利用固態(tài)硬盤優(yōu)勢(shì)的復(fù)制策略。如圖2所示,給出了經(jīng)過(guò)優(yōu)化以后的查詢預(yù)處理和分發(fā)的工作流程,其詳細(xì)描述如下201當(dāng)有用戶查詢進(jìn)來(lái)時(shí),對(duì)這個(gè)查詢進(jìn)行一些預(yù)處理,然后根據(jù)預(yù)先定義好的規(guī)則對(duì)這個(gè)查詢進(jìn)行分類,分為包含寫操作的查詢或者只有只讀操作的查詢。202判斷用戶的查詢是寫操作還是讀操作。根據(jù)查詢類型的不同,查詢將被發(fā)往不同的服務(wù)器節(jié)點(diǎn)上進(jìn)行處理。203如果用戶的查詢是寫操作,則將這個(gè)查詢發(fā)往主服務(wù)器節(jié)點(diǎn),因?yàn)橹鞣?wù)節(jié)點(diǎn)負(fù)責(zé)保存最新的數(shù)據(jù),所有的更新操作都要保證發(fā)生在主服務(wù)器節(jié)點(diǎn)上。204如果用戶的查詢是讀操作,則將這個(gè)查詢發(fā)往從服務(wù)器節(jié)點(diǎn),因?yàn)閺姆?wù)器節(jié)點(diǎn)上裝有固態(tài)硬盤,隨機(jī)讀性能很高,同時(shí)這樣也可以實(shí)現(xiàn)負(fù)載均衡,在發(fā)往具體的從服務(wù)器節(jié)點(diǎn)之前要進(jìn)行用戶聚集判斷,盡量把同一用戶的查詢發(fā)往同一個(gè)從服務(wù)器節(jié)點(diǎn)。205如果這個(gè)查詢屬于一個(gè)新的用戶,則將這個(gè)查詢發(fā)往當(dāng)前最空閑的從服務(wù)器節(jié)點(diǎn),這樣可以均衡服務(wù)器節(jié)點(diǎn)的負(fù)載。206如果這個(gè)查詢屬于之前的某個(gè)用戶,則將這個(gè)查詢發(fā)往那個(gè)用戶曾經(jīng)連接過(guò)的那個(gè)從服務(wù)器節(jié)點(diǎn),這樣就把同一個(gè)用戶的查詢聚集到了同一個(gè)服務(wù)器節(jié)點(diǎn)上,很好地利用了數(shù)據(jù)的局部性,提高了查詢的響應(yīng)速度,從而提高了整個(gè)數(shù)據(jù)庫(kù)集群的性能。如圖3所示,給出了服務(wù)器節(jié)點(diǎn)間的數(shù)據(jù)復(fù)制操作優(yōu)化后的流程圖,其詳細(xì)描述如下301在主服務(wù)節(jié)點(diǎn)上有一個(gè)后臺(tái)線程循環(huán)地判斷一定周期內(nèi)主服務(wù)器上的數(shù)據(jù)是否有更新,這個(gè)周期是一個(gè)配置參數(shù),可以根據(jù)系統(tǒng)要求的不同進(jìn)行不同的設(shè)定,如果在這個(gè)周期內(nèi)數(shù)據(jù)有更新,則需要把這些更新的數(shù)據(jù)復(fù)制到所有的從服務(wù)器節(jié)點(diǎn)上,如果周期內(nèi)沒(méi)有數(shù)據(jù)更新,則不作任何處理,循環(huán)進(jìn)入下一個(gè)判斷周期。302如果在一個(gè)周期內(nèi)存在數(shù)據(jù)更新,在將這些數(shù)據(jù)復(fù)制到從服務(wù)器節(jié)點(diǎn)之前, 要對(duì)這個(gè)數(shù)據(jù)復(fù)制操作進(jìn)行優(yōu)化。首先對(duì)復(fù)制所要產(chǎn)生的隨機(jī)寫IO操作進(jìn)行排序,把它們轉(zhuǎn)化成一串連續(xù)寫操作,然后再把這個(gè)連續(xù)寫操作實(shí)際地寫入從節(jié)點(diǎn)服務(wù)器,通過(guò)把隨機(jī)寫操作轉(zhuǎn)化為連續(xù)寫操作,有效地避免了固態(tài)硬盤的慢速隨機(jī)寫缺陷,從而提高了整個(gè)數(shù)據(jù)庫(kù)集群系統(tǒng)的性能。303隨機(jī)寫排序轉(zhuǎn)化成連續(xù)寫之后,把這些連續(xù)寫操作發(fā)往每個(gè)從服務(wù)器節(jié)點(diǎn), 進(jìn)行具體的數(shù)據(jù)同步。本發(fā)明解決了如何充分利用隨固態(tài)硬盤的優(yōu)劣勢(shì)來(lái)優(yōu)化數(shù)據(jù)庫(kù)集群系統(tǒng)性能的問(wèn)題,具有的有益效果是1)通過(guò)對(duì)數(shù)據(jù)庫(kù)集群中查詢分發(fā)策略的調(diào)整,更好地實(shí)現(xiàn)了數(shù)據(jù)庫(kù)集群系統(tǒng)的負(fù)載均衡,提高了數(shù)據(jù)庫(kù)集群系統(tǒng)的性能。2)通過(guò)把讀操作分配給裝有固態(tài)硬盤的從服務(wù)器節(jié)點(diǎn),充分利用了固態(tài)硬盤的快速隨機(jī)讀優(yōu)勢(shì),提高了數(shù)據(jù)庫(kù)集群系統(tǒng)的響應(yīng)速度。3)對(duì)用戶的查詢進(jìn)行聚集分類,使同一用戶的查詢盡可能分發(fā)給同一個(gè)服務(wù)器節(jié)點(diǎn),充分利用數(shù)據(jù)的局部性,從而提高數(shù)據(jù)庫(kù)集群系統(tǒng)對(duì)單個(gè)用戶的響應(yīng)速度。4)對(duì)服務(wù)器節(jié)點(diǎn)間的數(shù)據(jù)復(fù)制操作進(jìn)行優(yōu)化,把數(shù)據(jù)復(fù)制操作所產(chǎn)生的隨機(jī)寫轉(zhuǎn)化成連續(xù)寫,避免固態(tài)硬盤的慢速隨機(jī)寫劣勢(shì),從而提高數(shù)據(jù)庫(kù)集群系統(tǒng)的性能。5)本發(fā)明雖然針對(duì)的是postgresql數(shù)據(jù)庫(kù)集群系統(tǒng),但是其中的系統(tǒng)框架和優(yōu)化方法適用于由一般數(shù)據(jù)庫(kù)組成的集群系統(tǒng),具有充分的可移植性。雖然附圖和前述說(shuō)明給出了本發(fā)明的實(shí)施例。但可以理解的是,本領(lǐng)域技術(shù)人員將理解可以將這種組件中的一個(gè)或多個(gè)組件很好地組合成單個(gè)功能組件。在替換方案中, 特定的組件可以分成多個(gè)功能組件,或反之。同時(shí),本發(fā)明的范圍并不受這些特定實(shí)例的限制。多種變化都是可能的,例如結(jié)構(gòu)等上的差異,而無(wú)論其是否在說(shuō)明書(shū)中被清晰地給出。 本發(fā)明的范圍至少與所附權(quán)利要求給出的范圍一樣寬。
權(quán)利要求
1.一種混合使用固態(tài)硬盤和傳統(tǒng)硬盤的postgresql數(shù)據(jù)庫(kù)集群系統(tǒng),所述數(shù)據(jù)庫(kù)集群系統(tǒng),包含一臺(tái)查詢分發(fā)服務(wù)器;和多臺(tái)postgresql數(shù)據(jù)庫(kù)服務(wù)器,其中,上述這些服務(wù)器處同處于一個(gè)局域網(wǎng)中并通過(guò)較高帶寬的網(wǎng)絡(luò)相互連接,其特征在于,在所述postgresql數(shù)據(jù)庫(kù)服務(wù)器中,有一臺(tái)作為主服務(wù)器節(jié)點(diǎn),其他的作為從服務(wù)器節(jié)點(diǎn),且所述主服務(wù)器節(jié)點(diǎn)使用傳統(tǒng)硬盤,而從服務(wù)器節(jié)點(diǎn)使用固態(tài)硬盤,此外,所述查詢分發(fā)服務(wù)器負(fù)責(zé)接受和預(yù)處理用戶的查詢,并把這些查詢分發(fā)到所述數(shù)據(jù)庫(kù)集群系統(tǒng)中的具體的單個(gè)節(jié)點(diǎn)上。
2.根據(jù)權(quán)利要求1所述的數(shù)據(jù)庫(kù)集群系統(tǒng),其特征在于所述查詢服務(wù)器上的查詢分發(fā)集群軟件把寫操作分發(fā)到所述主服務(wù)器節(jié)點(diǎn)上,把讀操作發(fā)布到所述從服務(wù)器節(jié)點(diǎn)上,從而利用固態(tài)硬盤的高速隨機(jī)讀取能力,達(dá)到較大的查詢性能提升,同時(shí)把讀寫操作分布到不同的數(shù)據(jù)庫(kù)服務(wù)器上以實(shí)現(xiàn)了數(shù)據(jù)庫(kù)集群的負(fù)載均
3.根據(jù)權(quán)利要求1所述的數(shù)據(jù)庫(kù)集群系統(tǒng),其特征在于在所述數(shù)據(jù)庫(kù)集群系統(tǒng)中對(duì)數(shù)據(jù)復(fù)制集群軟件的復(fù)制策略進(jìn)行調(diào)整,通過(guò)把復(fù)制時(shí)的隨機(jī)寫操作轉(zhuǎn)化成連續(xù)寫操作從而避免固態(tài)硬盤隨機(jī)寫速度較差的劣勢(shì)。
4.一種應(yīng)用于根據(jù)權(quán)利1-3中任意一個(gè)中所述的數(shù)據(jù)庫(kù)集群系統(tǒng)上的查詢分發(fā)優(yōu)化方法,所述方法包括對(duì)用戶的查詢進(jìn)行分類,根據(jù)查詢是否有磁盤寫入操作,把用戶查詢分為寫操作查詢和讀操作查詢;在查詢分發(fā)時(shí),把寫操作查詢發(fā)送給主服務(wù)器節(jié)點(diǎn),把讀操作查詢發(fā)給從服務(wù)器節(jié)點(diǎn), 由于從服務(wù)器節(jié)點(diǎn)上裝有固體硬盤,能夠提供高速的隨機(jī)讀性能;通過(guò)把寫操作和讀操作分離之后,能夠更好地實(shí)現(xiàn)數(shù)據(jù)庫(kù)集群系統(tǒng)的負(fù)載均衡,從而提高整個(gè)數(shù)據(jù)庫(kù)集群系統(tǒng)的吞吐能力。
5.根據(jù)權(quán)利要求4的查詢分發(fā)優(yōu)化方法,其還包括步驟對(duì)查詢進(jìn)行聚集操作,把查詢盡可能地按用戶進(jìn)行聚集,使得同一用戶的查詢盡量集中在一起,并盡量地發(fā)送給同一個(gè)數(shù)據(jù)庫(kù)服務(wù)器節(jié)點(diǎn),這樣就能利用數(shù)據(jù)的局部性,更好地提高單個(gè)用戶的響應(yīng)速度。
6.一種應(yīng)用于根據(jù)權(quán)利1-3中任意一個(gè)中所述的數(shù)據(jù)庫(kù)集群系統(tǒng)上的數(shù)據(jù)復(fù)制優(yōu)化方法,所述方法包括數(shù)據(jù)復(fù)制集群軟件從主服務(wù)器節(jié)點(diǎn)向從服務(wù)器節(jié)點(diǎn)復(fù)制數(shù)據(jù),以保持集群中各節(jié)點(diǎn)間的數(shù)據(jù)同步;在加入固態(tài)硬盤以后,通過(guò)對(duì)隨機(jī)寫進(jìn)行排序,把它轉(zhuǎn)化成連續(xù)寫,從而避免固態(tài)硬盤的劣勢(shì),提高數(shù)據(jù)庫(kù)集群系統(tǒng)的性能。
全文摘要
本發(fā)明公開(kāi)一種混合使用固態(tài)硬盤和傳統(tǒng)硬盤的postgresql數(shù)據(jù)庫(kù)集群系統(tǒng)的構(gòu)建框架和基于該系統(tǒng)的優(yōu)化方法。所述集群系統(tǒng)中包含一臺(tái)裝有用于查詢分發(fā)的集群軟件的查詢分發(fā)服務(wù)器和若干臺(tái)裝有postgresql數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)服務(wù)器,這些服務(wù)器處同處于一個(gè)局域網(wǎng)中,通過(guò)較高帶寬的網(wǎng)絡(luò)相互連接,在這些postgresql數(shù)據(jù)庫(kù)服務(wù)器中,有一臺(tái)作為主服務(wù)器節(jié)點(diǎn),其他的作為從服務(wù)器節(jié)點(diǎn),主服務(wù)器節(jié)點(diǎn)使用傳統(tǒng)硬盤,從服務(wù)器節(jié)點(diǎn)使用固態(tài)硬盤,其中查詢分發(fā)服務(wù)器負(fù)責(zé)接受和預(yù)處理用戶的查詢,并把這些查詢分發(fā)到數(shù)據(jù)庫(kù)集群中的具體的單個(gè)節(jié)點(diǎn)上。本優(yōu)化方法對(duì)查詢分發(fā)集群軟件進(jìn)行一些改進(jìn),提出新的查詢預(yù)處理和分配的方法,從而更好地利用現(xiàn)有的集群架構(gòu),提高數(shù)據(jù)庫(kù)集群的性能。同時(shí)本優(yōu)化方法也對(duì)數(shù)據(jù)復(fù)制集群軟件的復(fù)制策略進(jìn)行改進(jìn),提出一種新的有利于利用固態(tài)硬盤優(yōu)勢(shì)的復(fù)制策略。
文檔編號(hào)G06F17/30GK102521389SQ20111043667
公開(kāi)日2012年6月27日 申請(qǐng)日期2011年12月23日 優(yōu)先權(quán)日2011年12月23日
發(fā)明者何清法, 馮柯, 徐昶, 毛云青, 王嘉春, 蔣志勇, 顧云蘇, 饒路 申請(qǐng)人:天津神舟通用數(shù)據(jù)技術(shù)有限公司