用mysql随机查询表a10条数据_ES简介
一、簡(jiǎn)介
ElasticSearch是一個(gè)基于Lucene的搜索服務(wù)器。它提供了一個(gè)分布式多用戶(hù)能力的全文搜索引擎,基于RESTful web接口操作ES,也可以利用Java API。Elasticsearch是用Java開(kāi)發(fā)的,并作為Apache許可條款下的開(kāi)放源碼發(fā)布,是當(dāng)前流行的企業(yè)級(jí)搜索引擎。設(shè)計(jì)用于云計(jì)算中,能夠達(dá)到實(shí)時(shí)搜索,穩(wěn)定,可靠,快速,安裝使用方便。
我們建立一個(gè)網(wǎng)站或應(yīng)用程序,并要添加搜索功能,但是想要完成搜索工作的創(chuàng)建是非常困難的。我們希望搜索解決方案要運(yùn)行速度快,我們希望能有一個(gè)零配置和一個(gè)完全免費(fèi)的搜索模式,我們希望能夠簡(jiǎn)單地使用JSON通過(guò)HTTP來(lái)索引數(shù)據(jù),我們希望我們的搜索服務(wù)器始終可用,我們希望能夠從一臺(tái)開(kāi)始并擴(kuò)展到數(shù)百臺(tái),我們要實(shí)時(shí)搜索,我們要簡(jiǎn)單的多租戶(hù),我們希望建立一個(gè)云的解決方案。因此我們利用Elasticsearch來(lái)解決所有這些問(wèn)題及可能出現(xiàn)的更多其它問(wèn)題。
設(shè)計(jì)用途:用于分布式全文檢索
技術(shù)支持:通過(guò)HTTP使用JSON進(jìn)行數(shù)據(jù)索引
二、產(chǎn)生
1、大規(guī)模數(shù)據(jù)如何檢索?
如:當(dāng)系統(tǒng)數(shù)據(jù)量上了10億、100億條的時(shí)候,我們?cè)谧鱿到y(tǒng)架構(gòu)的時(shí)候通常會(huì)從以下角度去考慮問(wèn)題:
1)用什么數(shù)據(jù)庫(kù) ;(mysql、sybase、oracle、mongodb、hbase)
2)如何解決單點(diǎn)故障;(lvs、F5、A10、Zookeep、MQ)
3)如何保證數(shù)據(jù)安全性;(熱備、冷備、異地多活)
4)如何解決檢索難題;(數(shù)據(jù)庫(kù)代理中間件:mysql-proxy、Cobar、MaxScale)
5)如何解決統(tǒng)計(jì)分析問(wèn)題;(離線(xiàn)、近實(shí)時(shí))
2、傳統(tǒng)數(shù)據(jù)庫(kù)的應(yīng)對(duì)解決方案
對(duì)于關(guān)系型數(shù)據(jù),我們通常采用以下或類(lèi)似架構(gòu)去解決查詢(xún)瓶頸和寫(xiě)入瓶頸:
1)通過(guò)主從備份解決數(shù)據(jù)安全性問(wèn)題;
2)通過(guò)數(shù)據(jù)庫(kù)代理中間件心跳監(jiān)測(cè),解決單點(diǎn)故障問(wèn)題;
3)通過(guò)代理中間件將查詢(xún)語(yǔ)句分發(fā)到各個(gè)slave節(jié)點(diǎn)進(jìn)行查詢(xún),并匯總結(jié)果
image.png
3、非關(guān)系型數(shù)據(jù)庫(kù)的解決方案
對(duì)于Nosql數(shù)據(jù)庫(kù),以mongodb為例,其它原理類(lèi)似:
1)通過(guò)副本備份保證數(shù)據(jù)安全性;
2)通過(guò)節(jié)點(diǎn)競(jìng)選機(jī)制解決單點(diǎn)問(wèn)題;
3)先從配置庫(kù)檢索分片信息,然后將請(qǐng)求分發(fā)到各個(gè)節(jié)點(diǎn),最后由路由節(jié)點(diǎn)合并匯總結(jié)果
三、ES解決方案
為解決以上問(wèn)題,從源頭著手分析,通常會(huì)從以下方式來(lái)尋找方法:
1、存儲(chǔ)數(shù)據(jù)時(shí)按有序存儲(chǔ);
2、將數(shù)據(jù)和索引分離;
3、壓縮數(shù)據(jù);
這就引出了Elasticsearch。
ES定義
ES=elaticsearch簡(jiǎn)寫(xiě), Elasticsearch是一個(gè)開(kāi)源的高擴(kuò)展的分布式全文檢索引擎,它可以近乎實(shí)時(shí)的存儲(chǔ)、檢索數(shù)據(jù);本身擴(kuò)展性很好,可以擴(kuò)展到上百臺(tái)服務(wù)器,處理PB級(jí)別的數(shù)據(jù)。
Elasticsearch也使用Java開(kāi)發(fā)并使用Lucene作為其核心來(lái)實(shí)現(xiàn)所有索引和搜索的功能,但是它的目的是通過(guò)簡(jiǎn)單的RESTful API來(lái)隱藏Lucene的復(fù)雜性,從而讓全文搜索變得簡(jiǎn)單。
Lucene與ES關(guān)系
1)Lucene只是一個(gè)庫(kù)。想要使用它,你必須使用Java來(lái)作為開(kāi)發(fā)語(yǔ)言并將其直接集成到你的應(yīng)用中,更糟糕的是,Lucene非常復(fù)雜,你需要深入了解檢索的相關(guān)知識(shí)來(lái)理解它是如何工作的。
2)Elasticsearch也使用Java開(kāi)發(fā)并使用Lucene作為其核心來(lái)實(shí)現(xiàn)所有索引和搜索的功能,但是它的目的是通過(guò)簡(jiǎn)單的RESTful API來(lái)隱藏Lucene的復(fù)雜性,從而讓全文搜索變得簡(jiǎn)單。
ES主要解決問(wèn)題:
1)檢索相關(guān)數(shù)據(jù);
2)返回統(tǒng)計(jì)結(jié)果;
3)速度要快。
ES數(shù)據(jù)架構(gòu)的主要概念
image.png
(1)關(guān)系型數(shù)據(jù)庫(kù)中的數(shù)據(jù)庫(kù)(DataBase),等價(jià)于ES中的索引(Index)
(2)一個(gè)數(shù)據(jù)庫(kù)下面有N張表(Table),等價(jià)于1個(gè)索引Index下面有N多類(lèi)型(Type),
(3)一個(gè)數(shù)據(jù)庫(kù)表(Table)下的數(shù)據(jù)由多行(ROW)多列(column,屬性)組成,等價(jià)于1個(gè)Type由多個(gè)文檔(Document)和多Field組成。
(4)在一個(gè)關(guān)系型數(shù)據(jù)庫(kù)里面,schema定義了表、每個(gè)表的字段,還有表和字段之間的關(guān)系。 與之對(duì)應(yīng)的,在ES中:Mapping定義索引下的Type的字段處理規(guī)則,即索引如何建立、索引類(lèi)型、是否保存原始索引JSON文檔、是否壓縮原始JSON文檔、是否需要分詞處理、如何進(jìn)行分詞處理等。
(5)在數(shù)據(jù)庫(kù)中的增insert、刪delete、改update、查search操作等價(jià)于ES中的增PUT/POST、刪Delete、改_update、查GET.
ES特點(diǎn)和優(yōu)勢(shì)
1)分布式實(shí)時(shí)文件存儲(chǔ),可將每一個(gè)字段存入索引,使其可以被檢索到。
2)實(shí)時(shí)分析的分布式搜索引擎。
分布式:索引分拆成多個(gè)分片,每個(gè)分片可有零個(gè)或多個(gè)副本。集群中的每個(gè)數(shù)據(jù)節(jié)點(diǎn)都可承載一個(gè)或多個(gè)分片,并且協(xié)調(diào)和處理各種操作;
負(fù)載再平衡和路由在大多數(shù)情況下自動(dòng)完成。
3)可以擴(kuò)展到上百臺(tái)服務(wù)器,處理PB級(jí)別的結(jié)構(gòu)化或非結(jié)構(gòu)化數(shù)據(jù)。也可以運(yùn)行在單臺(tái)PC上
4)支持插件機(jī)制,分詞插件、同步插件、Hadoop插件、可視化插件等。
對(duì)比MYSQL
1、如果業(yè)務(wù)數(shù)據(jù)為結(jié)構(gòu)化數(shù)據(jù),同時(shí)不需要特別關(guān)注排名和智能分詞模糊匹配查詢(xún)等特性,則建議采用關(guān)系型數(shù)據(jù)庫(kù)如MySQL來(lái)作為數(shù)據(jù)存儲(chǔ)介質(zhì)并使用配套搜索引擎
2、如果業(yè)務(wù)數(shù)據(jù)為非結(jié)構(gòu)化數(shù)據(jù),同時(shí)更關(guān)注排名和需要智能分詞模糊匹配的特性,則建議采用非關(guān)系型數(shù)據(jù)庫(kù)如ES作為數(shù)據(jù)存儲(chǔ)介質(zhì)并使用配套搜索引擎。
3、MYSQL支持事務(wù)和訪(fǎng)問(wèn)權(quán)限控制,ES不支持事務(wù)和訪(fǎng)問(wèn)權(quán)限控制
4、ES在全文搜索、分詞、常規(guī)搜索、聚合統(tǒng)計(jì)方面性能高,ES團(tuán)隊(duì)不建議完全采用ES作為數(shù)據(jù)庫(kù),而是作為一個(gè)分布式搜索服務(wù)
總結(jié)
以上是生活随笔為你收集整理的用mysql随机查询表a10条数据_ES简介的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: python函数能否增强代码可读性_总结
- 下一篇: mysql char null_关于my