• 
    <ul id="o6k0g"></ul>
    <ul id="o6k0g"></ul>

    一種基于MySQL雙存儲(chǔ)引擎的內(nèi)存數(shù)據(jù)庫(kù)實(shí)現(xiàn)方法技術(shù)

    技術(shù)編號(hào):8347904 閱讀:643 留言:0更新日期:2013-02-21 01:19
    本發(fā)明專(zhuān)利技術(shù)公開(kāi)了一種基于MySQL雙存儲(chǔ)引擎的內(nèi)存數(shù)據(jù)庫(kù)實(shí)現(xiàn)方法,目的在于解決現(xiàn)有技術(shù)所存在的MySQL產(chǎn)品不能同時(shí)滿(mǎn)足高可靠性、冗余備份、持久存儲(chǔ)、高吞吐量、即時(shí)響應(yīng)等技術(shù)問(wèn)題。它能同時(shí)滿(mǎn)足高可靠性、冗余備份、存儲(chǔ)持久等要求,而且吞吐量大、響應(yīng)速度快,使用十分方便,它包括以下步驟:選擇兩臺(tái)計(jì)算機(jī),并分別安裝MySQL服務(wù)器;分別在所述兩臺(tái)MySQL服務(wù)器上啟動(dòng)相同的存儲(chǔ)引擎,建立等同的數(shù)據(jù)庫(kù),以實(shí)現(xiàn)內(nèi)存數(shù)據(jù)庫(kù)的持久存儲(chǔ)功能;利用MySQL的復(fù)制功能,使所述兩個(gè)存儲(chǔ)引擎互為備份;配置內(nèi)存表等。

    【技術(shù)實(shí)現(xiàn)步驟摘要】

    本專(zhuān)利技術(shù)涉及數(shù)據(jù)庫(kù)技術(shù),尤其涉及。
    技術(shù)介紹
    目前MySQL被廣泛地應(yīng)用在Internet上的中小型網(wǎng)站中。由于其體積小、速度快、 總體擁有成本低,尤其是開(kāi)放源碼這一特點(diǎn),許多中小型網(wǎng)站為了降低網(wǎng)站總體擁有成本而選擇了 MySQL作為網(wǎng)站數(shù)據(jù)庫(kù)。甚至在電信行業(yè)中,由于MySQL優(yōu)越的性能、穩(wěn)定性、完善的功能,也越來(lái)越多的被用于電信產(chǎn)品中。例如公開(kāi)日為2008年04月09日、公開(kāi)號(hào)為 CN 101158958A的專(zhuān)利文獻(xiàn)采用了這樣的技術(shù)方案,一種在線(xiàn)視頻控制系統(tǒng)及控制方法,其通過(guò)MySQL常規(guī)用法建立MySQL數(shù)據(jù)庫(kù)來(lái)對(duì)用戶(hù)信息、視頻信息和電影評(píng)論信息進(jìn)行控制, 使用戶(hù)可以通過(guò)系統(tǒng)的操作界面輸入操作命令來(lái)實(shí)現(xiàn)操作目的,最終完成對(duì)所述視頻的各種操作,該方案雖然存在響應(yīng)速度、可靠性不高等不足,但仍然能夠順利實(shí)現(xiàn)視頻的各種操作控制。其實(shí),無(wú)論是互聯(lián)網(wǎng)產(chǎn)品還是電信產(chǎn)品,對(duì)產(chǎn)品的高可靠性及快速的響應(yīng)速度,都有著越來(lái)越高的要求。為了滿(mǎn)足高可靠性,在MySQL產(chǎn)品集中最好的選擇是MySQL Cluster,它是一個(gè)高冗余的數(shù)據(jù)庫(kù)存儲(chǔ)引擎,但實(shí) 踐證明,MySQL Cluster的插入、查詢(xún)速度并不快,而且價(jià)格昂貴,管理功能有限。用戶(hù)需要很多二次開(kāi)發(fā),比如,集群中的節(jié)點(diǎn)沒(méi)有自動(dòng)重啟的功能,需要用戶(hù)自行開(kāi)發(fā),MySQL Cluster作為一個(gè)新產(chǎn)品,也不夠穩(wěn)定。MySQL的Memory引擎,顧名思義,內(nèi)存中存儲(chǔ)數(shù)據(jù),非常高速,但MySQL服務(wù)器關(guān)閉后所有數(shù)據(jù)消失,沒(méi)有持久存儲(chǔ)的能力,而其使用SQL語(yǔ)句API,雖然方便,但沒(méi)有使查詢(xún)性能提高最大化。再者,關(guān)于MySQL的復(fù)制功能能解決備份、冗余、負(fù)載分擔(dān)等問(wèn)題,但最終的查詢(xún)?cè)L問(wèn)還是落在一個(gè)MySQL服務(wù)器上訪(fǎng)問(wèn)磁盤(pán)表而非內(nèi)存表,對(duì)于快速度查詢(xún),還是不如直接訪(fǎng)問(wèn)內(nèi)存快。對(duì)于產(chǎn)品MySQL Proxy,是主要借助MySQL的復(fù)制功能實(shí)現(xiàn)的,存在MySQL復(fù)制的問(wèn)題。另外,雖然MySQL提供Query Cache機(jī)制,但它不適合查詢(xún)語(yǔ)句經(jīng)常變化的情形,并且如果數(shù)據(jù)表被更改,那么和這個(gè)數(shù)據(jù)表相關(guān)的全部Cache都會(huì)無(wú)效,并被刪除。當(dāng)然,MySQL的各種存儲(chǔ)引擎內(nèi)一般都有頁(yè)緩存機(jī)制,但這種機(jī)制復(fù)雜,由于緩存頁(yè)可能被釋放,可能在磁盤(pán)與緩存頁(yè)之間切換,造成過(guò)多的消耗,影響性能。還有訪(fǎng)問(wèn)MySQL數(shù)據(jù)庫(kù),還需要解析編譯SQL語(yǔ)句,這都是不小的消耗。由上述可知,MySQL產(chǎn)品族中,并沒(méi)有一個(gè)能同時(shí)滿(mǎn)足高可靠性、冗余備份、持久存儲(chǔ)、高吞吐量、即時(shí)響應(yīng)、直接訪(fǎng)問(wèn)表內(nèi)存的接口等要求的數(shù)據(jù)庫(kù)引擎。而MySQL之外的免費(fèi)內(nèi)存數(shù)據(jù)庫(kù),比如MonetDB、FastDB都是單機(jī)版的數(shù)據(jù)庫(kù),不能解決冗余備份問(wèn)題。目前比較知名的商業(yè)內(nèi)存數(shù)據(jù)庫(kù)有Oracle的TimesTen,其性能非常強(qiáng)勁,但價(jià)格非常高昂,由于是關(guān)系型數(shù)據(jù)庫(kù),滿(mǎn)足嚴(yán)格的ACID (原子性、一致性、隔離性、持久性)要求, 這也對(duì)讀寫(xiě)速度也有著大的消耗,查詢(xún)速度未必最大化。其實(shí),為了提高數(shù)據(jù)庫(kù)的查詢(xún)性3能,很多公司都為自己的產(chǎn)品開(kāi)發(fā)基于Oracle之上的內(nèi)存數(shù)據(jù)庫(kù)。Memcached也是常用的內(nèi)存對(duì)象緩存系統(tǒng),但它不基于數(shù)據(jù)庫(kù)表結(jié)構(gòu),不能直接用做表數(shù)據(jù)的緩存,需要一些在它之上的許多二次開(kāi)發(fā)。在實(shí)際應(yīng)用中,很多產(chǎn)品并沒(méi)有嚴(yán)格的一致性要求,當(dāng)新數(shù)據(jù)寫(xiě)入數(shù)據(jù)庫(kù)中時(shí),其實(shí)即使應(yīng)用程序并不能即時(shí)讀到該新數(shù)據(jù),也不影業(yè)務(wù)的運(yùn)行,比如,IPTV系統(tǒng),用戶(hù)購(gòu)買(mǎi)了某些頻道的觀(guān)看權(quán)利,由于訂購(gòu)記錄還未同步到用戶(hù)設(shè)備訪(fǎng)問(wèn)的服務(wù)器中(也可能是內(nèi)存數(shù)據(jù)庫(kù)表中),幾秒鐘內(nèi)可能看不到節(jié)目,過(guò)了幾秒鐘后再看到,這是可以容忍的。再者, 許多的應(yīng)用是查詢(xún)密集的應(yīng)用,少量的寫(xiě)操作,所以只要能滿(mǎn)足高吞吐的查詢(xún)即可。
    技術(shù)實(shí)現(xiàn)思路
    本專(zhuān)利技術(shù)主要是解決現(xiàn)有技術(shù)所存在的MySQL產(chǎn)品不能同時(shí)滿(mǎn)足高可靠性、冗余備份、持久存儲(chǔ)、高吞吐量、即時(shí)響應(yīng)等技術(shù)問(wèn)題,提供,它能夠在一些對(duì)一致性要求不嚴(yán)格、查詢(xún)密集、寫(xiě)操作少的應(yīng)用中同時(shí)滿(mǎn)足高可靠性、冗余備份、存儲(chǔ)持久等要求,而且吞吐量大、響應(yīng)速度快,使用十分方便。本專(zhuān)利技術(shù)針對(duì)現(xiàn)有技術(shù)問(wèn)題主要是通過(guò)下述技術(shù)方案得以解決的,一種基于MySQL 雙存儲(chǔ)引擎的內(nèi)存數(shù)據(jù)庫(kù)實(shí)現(xiàn)方法,包括以下步驟(A)選擇兩臺(tái)計(jì)算機(jī),并分別安裝MySQL服務(wù)器;(B)分別在所述兩臺(tái)MySQL服務(wù)器上啟動(dòng)存儲(chǔ)引擎,所述存儲(chǔ)引擎是具有永久存儲(chǔ)功能的存儲(chǔ)引擎,建立等同的數(shù)據(jù)庫(kù),以實(shí)現(xiàn)內(nèi)存數(shù)據(jù)庫(kù)的持久存儲(chǔ)功能;(C)利用MySQL的復(fù)制功能,使所述兩個(gè)存儲(chǔ)引擎互為備份;(D)在應(yīng)用程序中部署內(nèi)存表和獨(dú)立運(yùn)行的緩存引擎。本專(zhuān)利技術(shù)選擇了兩個(gè)MySQL存儲(chǔ)引擎,這兩個(gè)存儲(chǔ)引擎分別運(yùn)行在兩個(gè)安裝在兩臺(tái)計(jì)算機(jī)上的M ySQL服務(wù)器之內(nèi)。本專(zhuān)利技術(shù)選擇了具有持久存儲(chǔ)功能的MySQL存儲(chǔ)引擎,比如 MyISAM存儲(chǔ)引擎或Innodb存儲(chǔ)引擎,以實(shí)現(xiàn)內(nèi)存數(shù)據(jù)庫(kù)的持久存儲(chǔ)。又利用MySQL的復(fù)制 (replication)功能,使兩個(gè)存儲(chǔ)引擎互為備份,滿(mǎn)足冗余備份的要求,并且當(dāng)一個(gè)MySQL 存儲(chǔ)引擎不能工作時(shí),另外一個(gè)能繼續(xù)提供服務(wù),再加上能提供高并發(fā)的快速查詢(xún)功能的內(nèi)存表,由此構(gòu)架了一個(gè)高可靠性、高性能的內(nèi)存數(shù)據(jù)庫(kù)平臺(tái)。作為優(yōu)選,內(nèi)存表部署在各個(gè)應(yīng)用程序的進(jìn)程之內(nèi),不同的應(yīng)用程序內(nèi)都運(yùn)行一個(gè)獨(dú)立工作的緩存引擎,應(yīng)用程序按照自己的需要選擇不同的物理數(shù)據(jù)庫(kù)表進(jìn)行緩存,還根據(jù)需要從物理數(shù)據(jù)庫(kù)表中選擇不同的記錄進(jìn)行緩存。各個(gè)應(yīng)用程序依靠自己的緩存引擎從物理數(shù)據(jù)庫(kù)表同步數(shù)據(jù)到內(nèi)存表,一個(gè)緩存引擎的故障并不影響其他緩存引擎的正常工作。兩個(gè)MySQL存儲(chǔ)引擎互相備份,而對(duì)表的寫(xiě)操作,可以從任一引擎或兩引擎同時(shí)進(jìn)行。作為優(yōu)選,物理數(shù)據(jù)庫(kù)表是MySQL服務(wù)器磁盤(pán)上的數(shù)據(jù)庫(kù)表。物理數(shù)據(jù)庫(kù)也就是 MySQL服務(wù)器磁盤(pán)上的數(shù)據(jù)庫(kù)。作為優(yōu)選,內(nèi)存表與應(yīng)用程序進(jìn)程占用同一個(gè)內(nèi)存空間,提供直接讀內(nèi)存表記錄的兩種接口,兩種接口都是緊耦合接口,一種接口是將內(nèi)存表記錄拷貝到應(yīng)用進(jìn)程指定的內(nèi)存塊中,另一種接口是將內(nèi)存表記錄的內(nèi)存地址返回給應(yīng)用進(jìn)程以便直接訪(fǎng)問(wèn)其中數(shù)CN 102937955 A書(shū)明說(shuō)3/10 頁(yè)據(jù),兩種接口都采用記錄的行讀鎖。內(nèi)存表實(shí)現(xiàn)在應(yīng)用進(jìn)程的內(nèi)部,與應(yīng)用程序進(jìn)程占用同一個(gè)內(nèi)存空間,提供直接讀內(nèi)存表記錄的兩種接口,兩種都是緊耦合的接口,一種接口是將內(nèi)存表記錄拷貝到應(yīng)用進(jìn)程指定的內(nèi)存塊中,另一種接口是將內(nèi)存表記錄的內(nèi)存地址返回給應(yīng)用進(jìn)程以直接訪(fǎng)問(wèn)其中數(shù)據(jù),兩種接口都采用記錄的行讀鎖。這種實(shí)現(xiàn)方式保證了對(duì)查詢(xún)密集的快速即時(shí)響應(yīng)。應(yīng)用本專(zhuān)利技術(shù)內(nèi)存數(shù)據(jù)庫(kù)實(shí)現(xiàn)方法,可以根據(jù)需要部署多個(gè)緩存引擎,以實(shí)現(xiàn)一種集群的模式。作為優(yōu)選,利用MySQL的觸發(fā)器機(jī)制,比較實(shí)時(shí)地跟蹤物理數(shù)據(jù)庫(kù)表的修改動(dòng)作, 及時(shí)將物理數(shù)據(jù)庫(kù)表記錄的修改、增加、刪除操作同步到內(nèi)存表中,保持內(nèi)存與磁盤(pán)的最終一致性,即保持內(nèi)存數(shù)據(jù)庫(kù)與物理數(shù)據(jù)庫(kù)的一致性。作為優(yōu)選,緩存引擎運(yùn)行在應(yīng)用程序內(nèi),當(dāng)一個(gè)MySQL存儲(chǔ)引擎不能工作時(shí),緩存引擎自動(dòng)切換到另一 MySQL存儲(chǔ)引擎,繼續(xù)同步物理數(shù)據(jù)庫(kù)表數(shù)據(jù)。這些操作對(duì)應(yīng)用都是透明的。切換過(guò)程及切換后,內(nèi)存表中的數(shù)據(jù)并不丟失,并且即使兩個(gè)存儲(chǔ)引擎同時(shí)發(fā)生故障時(shí),由于內(nèi)存表依然存在并可用,所以應(yīng)用程序還可依賴(lài)內(nèi)存表繼續(xù)提供一定的服務(wù)。本專(zhuān)利技術(shù)帶來(lái)的本文檔來(lái)自技高網(wǎng)
    ...

    【技術(shù)保護(hù)點(diǎn)】
    一種基于MySQL雙存儲(chǔ)引擎的內(nèi)存數(shù)據(jù)庫(kù)實(shí)現(xiàn)方法,其特征在于,包括以下步驟:(A)選擇兩臺(tái)計(jì)算機(jī),并分別安裝MySQL服務(wù)器;(B)分別在所述兩臺(tái)MySQL服務(wù)器上啟動(dòng)存儲(chǔ)引擎,所述存儲(chǔ)引擎是具有永久存儲(chǔ)功能的存儲(chǔ)引擎;(C)利用MySQL的復(fù)制功能,使所述兩個(gè)存儲(chǔ)引擎互為備份;(D)在應(yīng)用程序中部署內(nèi)存表和獨(dú)立運(yùn)行的緩存引擎。

    【技術(shù)特征摘要】

    【專(zhuān)利技術(shù)屬性】
    技術(shù)研發(fā)人員:徐繼軍
    申請(qǐng)(專(zhuān)利權(quán))人:UT斯達(dá)康通訊有限公司
    類(lèi)型:發(fā)明
    國(guó)別省市:

    網(wǎng)友詢(xún)問(wèn)留言 已有0條評(píng)論
    • 還沒(méi)有人留言評(píng)論。發(fā)表了對(duì)其他瀏覽者有用的留言會(huì)獲得科技券。

    1
    主站蜘蛛池模板: 亚洲AV无码一区二区乱孑伦AS | 国产aⅴ激情无码久久久无码| 中文字幕精品无码一区二区| 国内精品无码一区二区三区| 久久久久久国产精品免费无码| 无码aⅴ精品一区二区三区| 中文无码日韩欧免费视频| 精品国产a∨无码一区二区三区| 国产精品无码永久免费888| 水蜜桃av无码一区二区| 国产精品毛片无码| 老司机无码精品A| 亚洲国产日产无码精品| 深夜a级毛片免费无码| 白嫩少妇激情无码| 色综合久久无码中文字幕| 大桥久未无码吹潮在线观看| 亚洲GV天堂无码男同在线观看| 久久精品aⅴ无码中文字字幕| 国产AV无码专区亚洲AV琪琪 | 精品久久久无码人妻中文字幕豆芽| 国产色综合久久无码有码 | 国产拍拍拍无码视频免费| 亚洲Av无码乱码在线观看性色 | 亚洲Av无码国产一区二区| 亚洲AV无码成人精品区天堂| 国产成人综合日韩精品无码不卡| 少妇久久久久久人妻无码| 亚洲中文字幕无码mv| 91精品久久久久久无码 | 久久伊人中文无码| 亚洲中文字幕久久无码| 午夜福利无码不卡在线观看 | 亚洲国产精品无码专区| 免费无码作爱视频| 久久亚洲AV永久无码精品| 亚洲不卡无码av中文字幕| 东京热加勒比无码少妇| 亚洲成av人片在线观看无码不卡 | 永久无码精品三区在线4| 在线观看无码的免费网站|