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

一種數(shù)據(jù)讀取的方法和系統(tǒng)與流程

文檔序號(hào):11829819閱讀:177來源:國知局
本發(fā)明涉及計(jì)算機(jī)
技術(shù)領(lǐng)域
:,特別涉及一種數(shù)據(jù)讀取的方法和系統(tǒng)。
背景技術(shù)
::隨著信息化進(jìn)程的不斷加快,利用數(shù)據(jù)庫所要管理的數(shù)據(jù)不僅會(huì)顯著增多,而且也會(huì)變得非常復(fù)雜,其中對(duì)于海量的數(shù)據(jù)如何進(jìn)行讀取成為了關(guān)鍵問題。隨著互聯(lián)網(wǎng)應(yīng)用的廣泛普及,海量數(shù)據(jù)的存儲(chǔ)和訪問成為了系統(tǒng)設(shè)計(jì)的瓶頸問題。對(duì)于一個(gè)大型的互聯(lián)網(wǎng)應(yīng)用,每天幾十億的PV無疑對(duì)數(shù)據(jù)庫造成了相當(dāng)高的負(fù)載。對(duì)于系統(tǒng)的穩(wěn)定性和擴(kuò)展性造成了極大的問題。通過數(shù)據(jù)切分來提高網(wǎng)站性能,橫向擴(kuò)展數(shù)據(jù)層已經(jīng)成為架構(gòu)研發(fā)人員首選的方式。水平切分?jǐn)?shù)據(jù)庫,可以降低單臺(tái)機(jī)器的負(fù)載,同時(shí)最大限度的降低了了宕機(jī)造成的損失。通過負(fù)載均衡策略,有效的降低了單臺(tái)機(jī)器的訪問負(fù)載,降低了宕機(jī)的可能性;通過集群方案,解決了數(shù)據(jù)庫宕機(jī)帶來的單點(diǎn)數(shù)據(jù)庫不能訪問的問題;通過讀寫分離策略更是最大限度了提高了應(yīng)用中讀取(Read)數(shù)據(jù)的速度和并發(fā)量。目前國內(nèi)的大型互聯(lián)網(wǎng)應(yīng)用中,大量的采用了這樣的數(shù)據(jù)切分方案,它們大都實(shí)現(xiàn)了自己的分布式數(shù)據(jù)訪問層(DDAL)。以實(shí)現(xiàn)方式和實(shí)現(xiàn)的層次來劃分,大概分為兩個(gè)層次(Java應(yīng)用為例):JDBC層的封裝,ORM框架層的實(shí)現(xiàn)。數(shù)據(jù)庫負(fù)載高點(diǎn)可能考慮使用相關(guān)的Replication機(jī)制來提高讀寫的吞吐和性能,這可能已經(jīng)可以滿足很多需求,但這套機(jī)制自身的缺陷還是比較顯而易見的。首先它的有效很依賴于讀操作的比例,Master往往會(huì)成為瓶頸所在,寫操作需要順序排隊(duì)來執(zhí)行,過載的話Master首先扛不住,Slaves的數(shù)據(jù)同步 的延遲也可能比較大,而且會(huì)大大耗費(fèi)CPU的計(jì)算能力,因?yàn)閣rite操作在Master上執(zhí)行以后還是需要在每臺(tái)slave機(jī)器上都跑一次。這時(shí)候Sharding可能會(huì)成為雞肋了。Replication搞不定,那么為什么Sharding可以工作呢?道理很簡單,因?yàn)樗梢院芎玫臄U(kuò)展。我們知道每臺(tái)機(jī)器無論配置多么好它都有自身的物理上限,所以當(dāng)我們應(yīng)用已經(jīng)能觸及或遠(yuǎn)遠(yuǎn)超出單臺(tái)機(jī)器的某個(gè)上限的時(shí)候,我們惟有尋找別的機(jī)器的幫助或者繼續(xù)升級(jí)的我們的硬件,但常見的方案還是橫向擴(kuò)展,通過添加更多的機(jī)器來共同承擔(dān)壓力。我們還得考慮當(dāng)我們的業(yè)務(wù)邏輯不斷增長,我們的機(jī)器能不能通過線性增長就能滿足需求?Sharding可以輕松的將計(jì)算,存儲(chǔ),I/O并行分發(fā)到多臺(tái)機(jī)器上,這樣可以充分利用多臺(tái)機(jī)器各種處理能力,同時(shí)可以避免單點(diǎn)失敗,提供系統(tǒng)的可用性,進(jìn)行很好的錯(cuò)誤隔離。很多MySQL的潛在用戶都對(duì)MySQL的擴(kuò)展性有所顧慮,而是否具備分區(qū)功能就成了衡量一個(gè)數(shù)據(jù)庫可擴(kuò)展性與否的一個(gè)關(guān)鍵指標(biāo)(當(dāng)然不是唯一指標(biāo))。數(shù)據(jù)庫擴(kuò)展性是一個(gè)永恒的話題,MySQL的推廣者經(jīng)常會(huì)被問到:如在單一數(shù)據(jù)庫上處理應(yīng)用數(shù)據(jù)捉襟見肘而需要進(jìn)行分區(qū)化之類的處理,是如何辦到的呢?答案是Sharding。Sharding不是一個(gè)某個(gè)特定數(shù)據(jù)庫軟件附屬的功能,而是在具體技術(shù)細(xì)節(jié)之上的抽象處理,是水平擴(kuò)展(ScaleOut,亦或橫向擴(kuò)展、向外擴(kuò)展)的解決方案,其主要目的是為突破單節(jié)點(diǎn)數(shù)據(jù)庫服務(wù)器的I/O能力限制,解決數(shù)據(jù)庫擴(kuò)展性問題。通過一系列的切分規(guī)則將數(shù)據(jù)水平分布到不同的DB或table中,在通過相應(yīng)的DB路由或者table路由規(guī)則找到需要查詢的具體的DB或者table,以進(jìn)行Query操作。但是上述方案在實(shí)現(xiàn)數(shù)據(jù)讀取的過程中,仍然存在著速度不快、效率低下的問題。技術(shù)實(shí)現(xiàn)要素:本發(fā)明提供一種數(shù)據(jù)讀取的方法和系統(tǒng),可以極大地加快對(duì)海量數(shù)據(jù)的讀 取速度,提高工作效率。本發(fā)明提供了一種數(shù)據(jù)讀取的方法,包括以下步驟:將準(zhǔn)備讀取的數(shù)據(jù)存儲(chǔ)到緩存數(shù)據(jù)庫中;將所述數(shù)據(jù)分割成不少于兩個(gè)部分;采用多線程分別對(duì)不同部分進(jìn)行讀取。優(yōu)選地,所述緩存數(shù)據(jù)庫是Redis緩存數(shù)據(jù)庫。優(yōu)選地,所述數(shù)據(jù)為原子化數(shù)據(jù)結(jié)構(gòu)。優(yōu)選地,對(duì)于每個(gè)部分的數(shù)據(jù),一個(gè)線程從數(shù)據(jù)頭部讀取,另一個(gè)線程從數(shù)據(jù)尾部讀取。優(yōu)選地,還包括以下步驟:刪除被讀取的數(shù)據(jù)。優(yōu)選地,將所述數(shù)據(jù)平均分割成不少于兩個(gè)部分。優(yōu)選地,將所述數(shù)據(jù)根據(jù)線程的讀取能力進(jìn)行分割。本發(fā)明還提供了一種數(shù)據(jù)讀取的系統(tǒng),包括存儲(chǔ)單元和讀取單元,所述存儲(chǔ)單元用于緩存準(zhǔn)備讀取的數(shù)據(jù);所述讀取單元將所述數(shù)據(jù)分割成不少于兩個(gè)部分,并采用多線程分別對(duì)不同部分進(jìn)行讀取。優(yōu)選地,所述存儲(chǔ)單元是Redis緩存數(shù)據(jù)庫。優(yōu)選地,所述讀取單元進(jìn)一步用于對(duì)于每個(gè)部分的數(shù)據(jù),采用一個(gè)線程從數(shù)據(jù)頭部讀取,采用另一個(gè)線程從數(shù)據(jù)尾部讀取。本發(fā)明技術(shù)方案由于將待讀取的數(shù)據(jù)分成若干部分,采用多線程分別讀取,而且可以從頭部、尾部同時(shí)讀取,所以能夠極大地加快數(shù)據(jù)讀取的速度,提高工作效率。本發(fā)明的其它特征和優(yōu)點(diǎn)將在隨后的說明書中闡述,并且,部分地從說明書中變得顯而易見,或者通過實(shí)施本發(fā)明而了解。本發(fā)明的目的和其他優(yōu)點(diǎn)可通過在所寫的說明書、權(quán)利要求書、以及附圖中所特別指出的結(jié)構(gòu)來實(shí)現(xiàn)和獲得。下面通過附圖和實(shí)施例,對(duì)本發(fā)明的技術(shù)方案做進(jìn)一步的詳細(xì)描述。附圖說明附圖用來提供對(duì)本發(fā)明的進(jìn)一步理解,并且構(gòu)成說明書的一部分,與本發(fā)明的實(shí)施例一起用于解釋本發(fā)明,并不構(gòu)成對(duì)本發(fā)明的限制。在附圖中:圖1為本發(fā)明實(shí)施例一中數(shù)據(jù)讀取的流程圖;圖2為本發(fā)明實(shí)施例二中數(shù)據(jù)讀取的流程圖;圖3為本發(fā)明實(shí)施例三中數(shù)據(jù)讀取系統(tǒng)的結(jié)構(gòu)圖。具體實(shí)施方式以下結(jié)合附圖對(duì)本發(fā)明的優(yōu)選實(shí)施例進(jìn)行說明,應(yīng)當(dāng)理解,此處所描述的優(yōu)選實(shí)施例僅用于說明和解釋本發(fā)明,并不用于限定本發(fā)明。圖1為本發(fā)明實(shí)施例一中數(shù)據(jù)讀取的流程圖。如圖1所示,該數(shù)據(jù)讀取的流程包括以下步驟:步驟101、將準(zhǔn)備讀取的數(shù)據(jù)先存儲(chǔ)到緩存數(shù)據(jù)庫中。該緩存數(shù)據(jù)庫采用Redis緩存數(shù)據(jù)庫,數(shù)據(jù)為原子化數(shù)據(jù)結(jié)構(gòu)。該數(shù)據(jù)庫建立數(shù)據(jù)池,以存放這些數(shù)據(jù)。步驟102、將這些數(shù)據(jù)分割成若干個(gè)部分,這些部分可以是平均分割的,也可以是根據(jù)各個(gè)線程的讀取能力進(jìn)行分割。步驟103、采用多線程分別對(duì)這些數(shù)據(jù)的不同部分進(jìn)行讀取。步驟104、當(dāng)一條數(shù)據(jù)被讀取后,刪除被讀取的數(shù)據(jù),以避免重復(fù)讀取。本發(fā)明技術(shù)方案還有另外一種實(shí)施方式,圖2為本發(fā)明實(shí)施例二中數(shù)據(jù)讀取的流程圖。如圖1所示,該數(shù)據(jù)讀取的流程包括以下步驟:步驟201、將準(zhǔn)備讀取的數(shù)據(jù)先存儲(chǔ)到緩存數(shù)據(jù)庫中。該緩存數(shù)據(jù)庫采用Redis緩存數(shù)據(jù)庫,數(shù)據(jù)為原子化數(shù)據(jù)結(jié)構(gòu)。該數(shù)據(jù)庫建立數(shù)據(jù)池,以存放這些數(shù)據(jù)。步驟202、將這些數(shù)據(jù)分割成若干個(gè)部分,這些部分可以是平均分割的,也可以是根據(jù)各個(gè)線程的讀取能力進(jìn)行分割。步驟203、采用多線程,對(duì)于每個(gè)部分的數(shù)據(jù),一個(gè)線程從數(shù)據(jù)頭部讀取,另一個(gè)線程從數(shù)據(jù)尾部讀取。步驟204、當(dāng)一條數(shù)據(jù)被讀取后,刪除被讀取的數(shù)據(jù),以避免重復(fù)讀取。為了實(shí)現(xiàn)上述流程,本實(shí)施例還提供了一種數(shù)據(jù)讀取系統(tǒng),圖3為本發(fā)明實(shí)施例三中數(shù)據(jù)讀取系統(tǒng)的結(jié)構(gòu)圖。如圖3所示,該數(shù)據(jù)讀取的系統(tǒng)包括存儲(chǔ)單元301和讀取單元302。該存儲(chǔ)單元采用Redis緩存數(shù)據(jù)庫,能夠緩存準(zhǔn)備讀取的數(shù)據(jù)。該讀取單元將數(shù)據(jù)分割成若干個(gè)部分,這些部分可以是平均分割的,也可以是根據(jù)各個(gè)線程的讀取能力進(jìn)行分割,并采用多線程分別對(duì)不同部分進(jìn)行讀取,進(jìn)一步地,對(duì)于每個(gè)部分的數(shù)據(jù),采用一個(gè)線程從數(shù)據(jù)頭部讀取,采用另一個(gè)線程從數(shù)據(jù)尾部讀取。上述實(shí)施例由于將待讀取的數(shù)據(jù)分成若干部分,采用多線程分別讀取,而且可以從頭部、尾部同時(shí)讀取,所以能夠極大地加快數(shù)據(jù)讀取的速度,提高工作效率。本領(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ì)(包括但不限于磁盤存儲(chǔ)器和光學(xué)存儲(chǔ)器等)上實(shí)施的計(jì)算機(jī)程序產(chǎn)品的形式。本發(fā)明是參照根據(jù)本發(fā)明實(shí)施例的方法、設(shè)備(系統(tǒng))、和計(jì)算機(jī)程序產(chǎn)品的流程圖和/或方框圖來描述的。應(yīng)理解可由計(jì)算機(jī)程序指令實(shí)現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合。可提供這些計(jì)算機(jī)程序指令到通用計(jì)算機(jī)、專用計(jì)算機(jī)、嵌入 式處理機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器以產(chǎn)生一個(gè)機(jī)器,使得通過計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的裝置。這些計(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è)方框中指定的功能。這些計(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è)方框中指定的功能的步驟。顯然,本領(lǐng)域的技術(shù)人員可以對(duì)本發(fā)明進(jìn)行各種改動(dòng)和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動(dòng)和變型在內(nèi)。當(dāng)前第1頁1 2 3 當(dāng)前第1頁1 2 3 
當(dāng)前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
六盘水市| 资源县| 潢川县| 丰原市| 盱眙县| 祁连县| 纳雍县| 塔河县| 固原市| 乡城县| 水城县| 辛集市| 内江市| 汾西县| 磐石市| 吴忠市| 任丘市| 墨脱县| 阳新县| 广东省| 隆尧县| 云阳县| 哈尔滨市| 大足县| 长丰县| 阳曲县| 安义县| 遂溪县| 鹤庆县| 府谷县| 巴林右旗| 浦江县| 锡林浩特市| 高安市| 来凤县| 江源县| 修文县| 通辽市| 林甸县| 平果县| 东山县|