国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

es_MySQL、HBase、ElasticSearch三者對(duì)比詳解

這篇具有很好參考價(jià)值的文章主要介紹了es_MySQL、HBase、ElasticSearch三者對(duì)比詳解。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

1、概念介紹

MySQL:關(guān)系型數(shù)據(jù)庫(kù),主要面向OLTP(OLTP,也叫聯(lián)機(jī)事務(wù)處理(Online Transaction Processing)),支持事務(wù),支持二級(jí)索引,支持sql,支持主從、Group Replication(MGR 是一個(gè)新的高可用與高擴(kuò)展的方案,集群中的任何節(jié)點(diǎn)數(shù)據(jù)都是一樣的,可以實(shí)現(xiàn)任何節(jié)點(diǎn)都可以寫(xiě)入,實(shí)現(xiàn)了真正意義上的多主。)架構(gòu)模型(本文全部以Innodb為例,不涉及別的存儲(chǔ)引擎)。

HBase:基于HDFS,支持海量數(shù)據(jù)讀寫(xiě)(尤其是寫(xiě)),支持上億行、上百萬(wàn)列的,面向列的分布式NoSql數(shù)據(jù)庫(kù)。天然分布式,主從架構(gòu),不支持事務(wù),不支持二級(jí)索引,不支持sql。

ElasticSearch:簡(jiǎn)稱ES是一款分布式的全文檢索框架,底層基于Lucene技術(shù)實(shí)現(xiàn),雖然ES也提供存儲(chǔ),檢索功能,但我一直不認(rèn)為ES是一款數(shù)據(jù)庫(kù),但是隨著ES功能越來(lái)越強(qiáng)大,與數(shù)據(jù)庫(kù)的界限也越來(lái)越模糊。分布式,P2P架構(gòu),但不支持事務(wù),采用倒排索引提供全文檢索。

2、數(shù)據(jù)存儲(chǔ)方式

假設(shè)有這樣一張人員信息表:
es寫(xiě)入和mysql對(duì)比,es數(shù)據(jù)庫(kù),elasticsearch
MySQL數(shù)據(jù)庫(kù)要提前定義表結(jié)構(gòu),數(shù)據(jù)表共有多少列(屬性)需要提前定義好,并且同時(shí)需要定義好每個(gè)列所占用的存儲(chǔ)空間。數(shù)據(jù)以行為單位組織在一起的,假如某一行的某一列沒(méi)有數(shù)據(jù),也需要占用存儲(chǔ)空間。

HBase則是以列為單位存儲(chǔ)數(shù)據(jù),每一列就是一個(gè)key-value,HBase的表列(屬性)不需要提前定義,而且列可以動(dòng)態(tài)擴(kuò)展,比如人員信息表中需要添加一個(gè)新的“address”字段,MySQL需要提前alter表增加字段,HBase可以直接插入即可。

ES比較靈活,索引中的field類(lèi)型可以提前定義(定義mapping),也可以不定義,如果不定義,會(huì)有一個(gè)默認(rèn)類(lèi)型,不過(guò)出于可控性考慮,關(guān)鍵字段建議提前定義好。(Solr中必須提前定義好schema.xml文件)
es寫(xiě)入和mysql對(duì)比,es數(shù)據(jù)庫(kù),elasticsearch
上圖展示了數(shù)據(jù)在MySQL和HBase中存儲(chǔ)差異(和真實(shí)的情況還有差距),可以看到即使第二條記錄的sex字段為空,MySQL依然會(huì)為該字段保留空間,因?yàn)楹罄m(xù)有可能會(huì)有update語(yǔ)句來(lái)更新該記錄,補(bǔ)上sex內(nèi)容。而HBase則是把每一列都看做是一條記錄,row+列名作為key,data作為value,依次存放。假如某一行的某一個(gè)列沒(méi)有數(shù)據(jù),則直接跳過(guò)該列。針對(duì)稀疏矩陣的大表,HBase能大大節(jié)省存儲(chǔ)空間。

看到這里,大家是否會(huì)有一個(gè)疑問(wèn):使用HBase存儲(chǔ)時(shí),假如此時(shí)需要添加第二行的sex內(nèi)容,如何實(shí)現(xiàn)呢,數(shù)據(jù)是否連續(xù)?后面介紹讀寫(xiě)流程會(huì)解釋。

3、不一樣的ES

ES的存儲(chǔ)方式和上面兩個(gè)都不一樣,MySQL和HBase是將數(shù)據(jù)按不同的方式進(jìn)行存儲(chǔ),好歹它們存的還是數(shù)據(jù),而ES則存的是倒排索引。我們先來(lái)了解一下什么是倒排索引,以及為什么需要倒排索引(Inverted Index):

我們肯定都會(huì)這樣的經(jīng)歷:偶然看到一段很好的文字,但是卻不知道出處,這時(shí)候去圖書(shū)館,一個(gè)一個(gè)翻找,無(wú)疑是大海撈針,這個(gè)時(shí)候便有了全文檢索這項(xiàng)技術(shù),而它最核心的就是倒排索引。假如有如下文檔:

es寫(xiě)入和mysql對(duì)比,es數(shù)據(jù)庫(kù),elasticsearch

我們想要知道有哪些文檔含有you這個(gè)關(guān)鍵字,首先可以創(chuàng)建一個(gè)倒排索引,格式如下:

es寫(xiě)入和mysql對(duì)比,es數(shù)據(jù)庫(kù),elasticsearch
前面的部分叫做dictionary(字典),里面的每個(gè)單詞叫做term,后面的文檔列表叫做psoting-list,list中記錄了所有含有該term的文檔id,兩個(gè)組合起來(lái)就是一個(gè)完成的倒排索引(Inverted Index)。能夠看出,假如需要查找含有“you”的文檔時(shí),根據(jù)dictionary然后找到對(duì)應(yīng)的posting-list即可。

而全文檢索中,創(chuàng)建Inverted Index是最關(guān)鍵也是最耗時(shí)的過(guò)程,而且真正的Inverted Index結(jié)構(gòu)也遠(yuǎn)比圖中展示的復(fù)雜,不僅需要對(duì)文檔進(jìn)行分詞(ES里中文可以自定義分詞器),還要計(jì)算TF-IDF,方便評(píng)分排序(當(dāng)查找you時(shí),評(píng)分決定哪個(gè)doc顯示在前面,也就是所謂的搜索排名),壓縮等操作。每接收一個(gè)document,ES就會(huì)將其信息更新在倒排索引中。

可以看出ES和MySQL、HBase的存儲(chǔ)還是有很大的區(qū)別。而且ES不僅包含倒排索引,默認(rèn)同時(shí)還會(huì)把文檔doc存儲(chǔ)起來(lái),所以當(dāng)我們使用ES時(shí),也能拿到完整的文檔信息,所以某種程度上,感覺(jué)就像在使用數(shù)據(jù)庫(kù)一樣,但是也可以配置不存儲(chǔ)文檔信息,這時(shí)只能根據(jù)查詢條件得到文檔id,并不能拿到完整的文檔內(nèi)容。

總結(jié):

MySQL:行存儲(chǔ)的方式比較適合OLTP業(yè)務(wù)。

HBase:列存儲(chǔ)的方式比較適合OLAP業(yè)務(wù),而HBase采用了列族的方式平衡了OLTP和OLAP,支持水平擴(kuò)展,如果數(shù)據(jù)量比較大、對(duì)性能要求沒(méi)有那么高、并且對(duì)事務(wù)沒(méi)有要求的話,HBase可以考慮。

ES:ES默認(rèn)對(duì)所有字段都建了索引,所以比較適合復(fù)雜的檢索或全文檢索。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-786326.html

到了這里,關(guān)于es_MySQL、HBase、ElasticSearch三者對(duì)比詳解的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Elasticsearch(五)--ES文檔的操作(上)---寫(xiě)入文檔

    Elasticsearch(五)--ES文檔的操作(上)---寫(xiě)入文檔

    使用ES構(gòu)建搜索引擎時(shí)需要經(jīng)常對(duì)文檔進(jìn)行操作,除了簡(jiǎn)單的單條文檔操作,有時(shí)還需要進(jìn)行批量操作。我們這章主要學(xué)習(xí)ES文檔的增刪改的操作,由于涉及到的代碼量會(huì)比較多,所以分為3篇文章分別說(shuō)明文檔的這個(gè)三個(gè)操作。那么我們對(duì)文檔操作的學(xué)習(xí)除了在kibana客戶端之

    2024年01月16日
    瀏覽(22)
  • Hbase與MySQL對(duì)比,區(qū)別是什么?

    在數(shù)據(jù)庫(kù)管理系統(tǒng)領(lǐng)域,MySQL和HBase是兩個(gè)最受歡迎的選擇。MySQL是傳統(tǒng)的關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng),而HBase是專(zhuān)門(mén)為大數(shù)據(jù)應(yīng)用程序設(shè)計(jì)的NoSQL,面向列的數(shù)據(jù)庫(kù)系統(tǒng)。在本文中,我們將探討這兩個(gè)數(shù)據(jù)庫(kù)管理系統(tǒng)在架構(gòu)、數(shù)據(jù)模型、可伸縮性、查詢語(yǔ)言和用例方面的差異。 1.?

    2024年02月09日
    瀏覽(21)
  • ElasticSearch第十五講 ES數(shù)據(jù)寫(xiě)入過(guò)程和寫(xiě)入原理以及數(shù)據(jù)如何保證一致性

    ES 數(shù)據(jù)并發(fā)沖突控制是基于的樂(lè)觀鎖和版本號(hào)的機(jī)制 一個(gè)document第一次創(chuàng)建的時(shí)候,它的_version內(nèi)部版本號(hào)就是1;以后,每次對(duì)這個(gè)document執(zhí)行修改或者刪除操作,都會(huì)對(duì)這個(gè)_version版本號(hào)自動(dòng)加1;哪怕是刪除,也會(huì)對(duì)這條數(shù)據(jù)的版本號(hào)加1(假刪除)。 對(duì)于更新操作 客戶端對(duì)

    2024年02月12日
    瀏覽(24)
  • Elasticsearch進(jìn)階篇(一):Elasticsearch寫(xiě)入原理深入詳解

    Elasticsearch進(jìn)階篇(一):Elasticsearch寫(xiě)入原理深入詳解

    引用官方文檔地址:分片內(nèi)部原理 | Elasticsearch: 權(quán)威指南 | Elastic 索引是 Elasticsearch 存儲(chǔ)、組織和搜索數(shù)據(jù)的邏輯容器。它類(lèi)似于 MySQL 中的 數(shù)據(jù)表 ,一個(gè) Elasticsearch 集群可以包含多個(gè)索引。從 Elasticsearch 7.x 開(kāi)始,Elasticsearch 不再支持多個(gè) type且默認(rèn)為_(kāi)doc,并在之后的版本中

    2024年04月10日
    瀏覽(26)
  • es mysql 適用場(chǎng)景對(duì)比

    對(duì)枚舉字段的搜索 mysql創(chuàng)建索引的原則是對(duì)于那些區(qū)別度高字段建立索引,區(qū)別度越高的索引,在數(shù)據(jù)量大的情況下,索引效果越好。 因?yàn)閙ysql建立b+樹(shù)時(shí)是這樣,每創(chuàng)建一行就新建立索引字段,如果需要對(duì)枚舉類(lèi)型的字段進(jìn)行搜索的時(shí)候比如該字段是布爾型只有兩種值,對(duì)

    2024年02月06日
    瀏覽(21)
  • 后端接口如何提高性能?從MySQL、ES、HBASE等技術(shù)一起探討下!(摘抄)

    后端接口如何提高性能?從MySQL、ES、HBASE等技術(shù)一起探討下!(摘抄)

    謝邀,利益相關(guān)。 大多數(shù)互聯(lián)網(wǎng)應(yīng)用場(chǎng)景都是讀多寫(xiě)少,業(yè)務(wù)邏輯更多分布在寫(xiě)上。對(duì)讀的要求大概就是要快。那么都有什么原因會(huì)導(dǎo)致我們完成一次出色的慢查詢呢? 1.1 索引 在數(shù)據(jù)量不是很大時(shí),大多慢查詢可以用索引解決,大多慢查詢也因?yàn)樗饕缓侠矶a(chǎn)生。 MySQ

    2024年04月26日
    瀏覽(20)
  • Python與Pytorch系列(二) 本文(1.8萬(wàn)字) | 解析Opencv, Matplotlib, PIL | 三者之間的轉(zhuǎn)換 | 三者對(duì)JPG和PNG讀取和寫(xiě)入 |

    點(diǎn)擊進(jìn)入專(zhuān)欄: 《人工智能專(zhuān)欄》 Python與Python | 機(jī)器學(xué)習(xí) | 深度學(xué)習(xí) | 目標(biāo)檢測(cè) | YOLOv5及其改進(jìn) | YOLOv8及其改進(jìn) | 關(guān)鍵知識(shí)點(diǎn) | 各種工具教程 推薦網(wǎng)站 : OpenCV Matplotlib Pillow opencv的基本圖像類(lèi)型可以和numpy數(shù)組相互轉(zhuǎn)化,因此可以直接調(diào)用 torch.from_numpy(img) 將圖像轉(zhuǎn)換成 t

    2024年02月03日
    瀏覽(108)
  • (三)elasticSearch和MySQL的對(duì)比

    (三)elasticSearch和MySQL的對(duì)比

    1、MySQL更擅長(zhǎng)的是事務(wù)類(lèi)型的操作,可以確保數(shù)據(jù)的安全和一致性;如果是有事務(wù)要求,如商品的下單支付等業(yè)務(wù)操作,無(wú)疑使用MySQL。 2、ES更擅長(zhǎng)的是海量數(shù)據(jù)的搜索,分析和計(jì)算;如果是復(fù)雜搜索,無(wú)疑可以使用Elasticsearch。 3、兩者是一個(gè)互補(bǔ)而不是替代的關(guān)系。

    2024年02月16日
    瀏覽(10)
  • MongoDB是什么、有哪些優(yōu)勢(shì)、對(duì)比mysql,es、docker安裝

    MongoDB是什么、有哪些優(yōu)勢(shì)、對(duì)比mysql,es、docker安裝

    MongoDB是面向文檔的NoSQL數(shù)據(jù)庫(kù)(是一個(gè)介于關(guān)系數(shù)據(jù)庫(kù)和非關(guān)系數(shù)據(jù)庫(kù)之間的產(chǎn)品),用于大量數(shù)據(jù)存儲(chǔ)的分布式文件存儲(chǔ)型數(shù)據(jù)庫(kù)?;陟`活的 json文檔模型(BSON) ,非常適合敏捷式快速開(kāi)發(fā)。 具有高可用,高水平擴(kuò)展能力,處理海量、高并發(fā)的數(shù)據(jù)應(yīng)用時(shí)非常有優(yōu)勢(shì) 。

    2024年02月11日
    瀏覽(19)
  • HBase Shell操作&Flink寫(xiě)入HBase

    1)進(jìn)入HBase客戶端命令行 2)查看幫助命令 3)查看當(dāng)前數(shù)據(jù)庫(kù)中有哪些表 1)創(chuàng)建表 2)插入數(shù)據(jù)到表 3)掃描查看表數(shù)據(jù) 4)查看表結(jié)構(gòu) 5)更新指定字段的數(shù)據(jù) 6)查看“指定行”或“指定列族:列”的數(shù)據(jù) 7)統(tǒng)計(jì)表數(shù)據(jù)行數(shù) 8)刪除數(shù)據(jù) 9)清空表數(shù)據(jù) 10)刪除表 11)變更

    2024年02月04日
    瀏覽(27)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包