日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

sphinx mysql存储引擎_基于Sphinx+MySQL的千万级数据全文检索(搜索引擎)架构设计...

發(fā)布時間:2023/12/9 数据库 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 sphinx mysql存储引擎_基于Sphinx+MySQL的千万级数据全文检索(搜索引擎)架构设计... 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Sphinx,單一索引最大可包含1億條記錄,在1千萬條記錄情況下的查詢速度為0.x秒(毫秒級)。Sphinx創(chuàng)建索引的速度為:創(chuàng)建100萬條記錄的索引只需3~4分鐘,創(chuàng)建1000萬條記錄的索引可以在50分鐘內(nèi)完成,而只包含最新10萬條記錄的增量索引,重建一次只需幾十秒。

基于以上幾點(diǎn),我設(shè)計出了這套搜索引擎架構(gòu)。在生產(chǎn)環(huán)境運(yùn)行了一周,效果非常不錯。有時間我會專為配合Sphinx搜索引擎,開發(fā)一個邏輯簡單、速度快、占用內(nèi)存低、非表鎖的MySQL存儲引擎插件,用來代替MyISAM引擎,以解決MyISAM存儲引擎在頻繁更新操作時的鎖表延遲問題。另外,分布式搜索技術(shù)上已無任何問題。

一、搜索引擎架構(gòu)設(shè)計:

1、搜索引擎架構(gòu)圖:

  

2、搜索引擎架構(gòu)設(shè)計思路:

(1)、調(diào)用方式最簡化:

盡量方便前端Web工程師,只需要一條簡單的SQL語句“SELECT ... FROM myisam_table JOIN sphinx_table ON (sphinx_table.sphinx_id=myisam_table.id) WHERE query='...';”即可實(shí)現(xiàn)高效搜索。

(2)、創(chuàng)建索引、查詢速度快:

①、Sphinx Search 是由俄羅斯人Andrew Aksyonoff 開發(fā)的高性能全文搜索軟件包,在GPL與商業(yè)協(xié)議雙許可協(xié)議下發(fā)行。

Sphinx的特征:

?Sphinx支持高速建立索引(可達(dá)10MB/秒,而Lucene建立索引的速度是1.8MB/秒)

?高性能搜索(在2-4 GB的文本上搜索,平均0.1秒內(nèi)獲得結(jié)果)

?高擴(kuò)展性(實(shí)測最高可對100GB的文本建立索引,單一索引可包含1億條記錄)

?支持分布式檢索

?支持基于短語和基于統(tǒng)計的復(fù)合結(jié)果排序機(jī)制

?支持任意數(shù)量的文件字段(數(shù)值屬性或全文檢索屬性)

?支持不同的搜索模式(“完全匹配”,“短語匹配”和“任一匹配”)

?支持作為Mysql的存儲引擎

②、通過國外《High Performance MySQL》專家組的測試可以看出,根據(jù)主鍵進(jìn)行查詢的類似“SELECT ... FROM ... WHERE id = ...”的SQL語句(其中id為PRIMARY KEY),每秒鐘能夠處理10000次以上的查詢,而普通的SELECT查詢每秒只能處理幾十次到幾百次:

  

③、Sphinx不負(fù)責(zé)文本字段的存儲。假設(shè)將數(shù)據(jù)庫的id、date、title、body字段,用sphinx建立搜索索引。根據(jù)關(guān)鍵字、時間、類別、范圍等信息查詢一下sphinx,sphinx只會將查詢結(jié)果的ID號等非文本信息告訴我們。要顯示title、body等信息,還需要根據(jù)此ID號去查詢MySQL數(shù)據(jù)庫,或者從Memcachedb等其他的存儲中取得。安裝SphinxSE作為MySQL的存儲引擎,將MySQL與Sphinx結(jié)合起來,是一種便捷的方法。

創(chuàng)建一張Sphinx類型表,將MyISAM表的主鍵ID和Sphinx表的ID作一個JOIN聯(lián)合查詢。這樣,對于MyISAM表來所,只相當(dāng)于一個WHERE id=...的主鍵查詢,WHERE后的條件都交給Sphinx去處理,可以充分發(fā)揮兩者的優(yōu)勢,實(shí)現(xiàn)高速搜索查詢。

(3)、按服務(wù)類型進(jìn)行分離:

為了保證數(shù)據(jù)的一致性,我在配置Sphinx讀取索引源的MySQL數(shù)據(jù)庫時,進(jìn)行了鎖表。Sphinx讀取索引源的過程會耗費(fèi)一定時間,由于MyISAM存儲引擎的讀鎖和寫鎖是互斥的,為了避免寫操作被長時間阻塞,導(dǎo)致數(shù)據(jù)庫同步落后跟不上,我將提供“搜索查詢服務(wù)”的和提供“索引源服務(wù)”的MySQL數(shù)據(jù)庫進(jìn)行了分開。監(jiān)聽3306端口的MySQL提供“搜索查詢服務(wù)”,監(jiān)聽3406端口的MySQL提供“索引源服務(wù)”。

(4)、“主索引+增量索引”更新方式:

一般網(wǎng)站的特征:信息發(fā)布較為頻繁;剛發(fā)布完的信息被編輯、修改的可能性大;兩天以前的老帖變動性較小。

基于這個特征,我設(shè)計了Sphinx主索引和增量索引。對于前天17:00之前的記錄建立主索引,每天凌晨自動重建一次主索引;對于前天17:00之后到當(dāng)前最新的記錄,間隔3分鐘自動重建一次增量索引。

(5)、“Ext3文件系統(tǒng)+tmpfs內(nèi)存文件系統(tǒng)”相結(jié)合:

為了避免每3分鐘重建增量索引導(dǎo)致磁盤IO較重,從而引起系統(tǒng)負(fù)載上升,我將主索引文件創(chuàng)建在磁盤,增量索引文件創(chuàng)建在tmpfs內(nèi)存文件系統(tǒng)“/dev/shm/”內(nèi)。“/dev/shm/”內(nèi)的文件全部駐留在內(nèi)存中,讀寫速度非常快。但是,重啟服務(wù)器會導(dǎo)致“/dev/shm/”內(nèi)的文件丟失,針對這個問題,我會在服務(wù)器開機(jī)時自動創(chuàng)建“/dev/shm/”內(nèi)目錄結(jié)構(gòu)和Sphinx增量索引。

(6)、中文分詞詞庫:

我根據(jù)“自整理的中文分詞庫”+“搜狗拼音輸入法細(xì)胞詞庫”+“LibMMSeg高頻字庫”+... 綜合整理成一份中文分詞詞庫,出于某些考慮暫不提供。你可以使用LibMMSeg自帶的中文分詞詞庫。

二、MySQL+Sphinx+SphinxSE安裝步驟:

1、安裝python支持(以下針對CentOS系統(tǒng),其他Linux系統(tǒng)請使用相應(yīng)的方法安裝)

yum install -y python python-devel

2、編譯安裝LibMMSeg(LibMMSeg是為Sphinx全文搜索引擎設(shè)計的中文分詞軟件包,其在GPL協(xié)議下發(fā)行的中文分詞法,采用Chih-Hao Tsai的MMSEG算法。LibMMSeg在本文中用來生成中文分詞詞庫。)

以下壓縮包“sphinx-0.9.8-rc2-chinese.zip”中包含mmseg-0.7.3.tar.gz、sphinx-0.9.8-rc2.tar.gz以及中文分詞補(bǔ)丁。

下載文件 (已下載 7 次)

unzip sphinx-0.9.8-rc2-chinese.zip

tar zxvf mmseg-0.7.3.tar.gz

cd mmseg-0.7.3/

./configure

make

make install

cd ../

3、編譯安裝MySQL 5.1.26-rc、Sphinx、SphinxSE存儲引擎

wget http://dev.mysql.com/get/Downloads/MySQL-5.1/mysql-5.1.26-rc.tar.gz/from/http://mirror.x10.com/mirror/mysql/

tar zxvf mysql-5.1.26-rc.tar.gz

tar zxvf sphinx-0.9.8-rc2.tar.gz

cd sphinx-0.9.8-rc2/

patch -p1 < ../sphinx-0.98rc2.zhcn-support.patch

patch -p1 < ../fix-crash-in-excerpts.patch

cp -rf mysqlse ../mysql-5.1.26-rc/storage/sphinx

cd ../

cd mysql-5.1.26-rc/

sh BUILD/autorun.sh

./configure --with-plugins=sphinx --prefix=/usr/local/mysql-search/ --enable-assembler --with-extra-charsets=complex --enable-thread-safe-client --with-big-tables --with-readline --with-ssl --with-embedded-server --enable-local-infile

make && make install

cd ../

cd sphinx-0.9.8-rc2/

CPPFLAGS=-I/usr/include/python2.4

LDFLAGS=-lpython2.4

./configure --prefix=/usr/local/sphinx --with-mysql=/usr/local/mysql-search

make

make install

cd ../

mv /usr/local/sphinx/etc/sphinx.conf /usr/local/sphinx/etc/sphinx.conf.old

第二章第3節(jié)之后的正文內(nèi)容不予公布,全文的目錄如下(共24頁):

  

  

  

總結(jié)

以上是生活随笔為你收集整理的sphinx mysql存储引擎_基于Sphinx+MySQL的千万级数据全文检索(搜索引擎)架构设计...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 在线综合网 | 国产男女猛烈无遮挡免费视频动漫 | 欧美韩日精品 | 日本美女一区二区 | 欧美区在线观看 | 成人99 | 中文字幕在线免费视频 | 不卡中文字幕在线 | 日本欧美色 | 日韩成人免费在线 | 日韩午夜免费视频 | 大地资源二中文在线影视免费观看 | 中文字幕在线有码 | 日韩精品色呦呦 | 一级特黄aaa大片 | 国产高清在线精品 | 色久天| 午夜影院在线视频 | 久久久久噜噜噜亚洲熟女综合 | 欧洲亚洲女同hd | 久操热 | 性开放淫合集 | 午夜精品久久久久久毛片 | 91麻豆精品国产91久久久久久 | 九九激情网 | 国产在线自 | 九九九在线观看 | 99热99re6国产在线播放 | 激情91视频 | 亚洲a毛片| 亚洲成人91 | 国产九色av | 国产又爽又黄又嫩又猛又粗 | 日本老年老熟无码 | 黄色一级一片 | 亚洲av成人无码一区二区三区在线观看 | 今天最新中文字幕mv高清 | av在线播放国产 | 欧美xxxxav | 国产xxxx在线 | 在线免费观看成年人视频 | 亚洲精品一区二区三区四区乱码 | 九九九视频在线观看 | 亚洲欧美中文字幕 | 亚洲一区二区三区久久 | 亚州男人的天堂 | 亚洲熟妇av一区二区三区 | 国产精品高清网站 | 国产女主播在线一区二区 | 爱情岛论坛亚洲品质自拍视频 | 女人性做爰100部免费 | 亚洲午夜精品在线 | 欧美日韩久久精品 | 免费成人深夜小野草 | 日本在线中文字幕专区 | 麻豆视频传媒 | 精东传媒在线观看 | 国产女人呻吟高潮抽搐声 | 中文字幕蜜桃 | 96免费视频 | 特级黄毛片 | 新呦u视频一区二区 | 久久人人艹 | 精人妻无码一区二区三区 | 欧美特级黄色片 | 国产精品成人免费视频 | www精品一区二区三区 | 高清一区二区视频 | av最新网址| 9色视频| 2020亚洲男人天堂 | 爱情岛论坛亚洲品质自拍 | 国产无套视频 | 亚洲第一视频在线 | 浴室里强摁做开腿呻吟男男 | 欧美日韩一区二区区 | 麻豆久久久午夜一区二区 | 国产精品久久久久久久专区 | 久久久老司机 | 国产精品区一区二 | 日本韩国欧美一区二区三区 | 国产精品99一区 | 97免费视频观看 | 三级中文字幕 | 偷自拍 | 国产欧美久久久 | 黄色工厂这里只有精品 | 爆操女秘书 | 亚洲欧美成人 | 精品人妻少妇一区二区三区 | 春日野结衣av | 亚洲最大的黄色网 | 国产精品久久久av | 国产美女91 | 天天操天天干天天插 | 成人片黄网站色大片免费毛片 | 日本精品二区 | 欧美大片在线看免费观看 | 男人天堂伊人 |