主頁 > 資料庫 > 〈一〉ElasticSearch的介紹

〈一〉ElasticSearch的介紹

2020-09-11 20:37:03 資料庫

目錄

  • 什么是ElasticSearch
    • 核心能力
    • ES的搜索核心
    • 搜索引擎選擇
    • 搜索的處理
    • 補充:
    • 小節總結:
  • 基本學習環境搭建
    • 如何操作ElasticSearch
    • 下載、安裝和運行(Based Windows)
    • 如何操作ES
    • 基于postman操作
    • 補充:
    • 小節總結
  • 需要了解的概念
    • 分布式模型相關
    • 資料存盤相關
    • 小節總結
  • Hello ElasticSearch
    • 寫->讀
    • 寫->搜索
    • 小節總結

發表日期:2019年9月18日


什么是ElasticSearch


ElasticSearch是一個集資料存盤資料搜索資料分析為一體的系統,它是分布式的,所以能利用分布式來提高其處理能力,具有高可用性和高伸縮性,如果你需要一個能夠提供高性能的搜索服務的系統,那么它或許是一個好的選擇,

  • 資料存盤:是指它能夠以JSON格式來存盤資料,如果你不在意資料的搜索,你甚至可以像類似使用mongodb那樣來單純把它作為一個資料存盤系統使用,
  • 資料搜索:是指它能夠對JSON格式的資料進行全文檢索等搜索,
  • 資料分析:是指它能夠利用一些演算法來對JSON檔案資料進行分析,比如得出某個月的商品銷售增長量,


核心能力

ElasticSearch是一個搜索系統,搜索就是從資料集合中搜索出我們想要的資料,例如從大量的商品資料中搜索出我們想要的某類商品,
  現在提一個需求,例如我有一個“文章”的表,我想搜索文章表中欄位content中包含有'java'的資料,
如果你不使用ES,那么從開發角度來說,平常我們都是使用關系型資料庫系統來存盤資料,然后使用類似select name,age,address from student where name like '%李%'的陳述句通過模糊匹配來搜索符合指定條件的資料的,(對應到上面的需求應該是select name,author,content from article where content like '%java%'

 但其實上面這種基于模糊匹配的搜索方式的效率是比較低的,因為資料庫系統的搜索通常是逐一掃描的,也就是從頭到尾的來嘗試匹配,某個欄位的資料越多,可能需要嘗試匹配的次數就會越多(試想一下從4000字的文章中從上到下只為找到一個字),這種查找就好像最低級的遍歷查找(當然并不是真的就是傻傻的遍歷了,各個資料庫系統都會采用各種演算法來優化),
 
 而ElasticSearch由于其內部建立了每個詞的索引表,當搜索某個詞時,可以根據這個詞從索引表中找到匹配的記錄,所以效率比較高(就好像記錄了某個詞的坐標,有了坐標,就能根據坐標非常快地找到那個詞),
(這里舉個類似的栗子:相信大家都用過字典,那么普通的資料庫搜索就好像從第一頁到最后一頁找一個詞,而ElasticSearch根據這個詞的部首結構從“部首-字的對應表”中直接查找到那個字的頁數,這個效率直接就是天差地別了!)

 另外,資料庫的搜索是根據指定詞直接查找的,它是很笨的!它不能查找到某些意義上“類似”的結果,比如我搜索“mother”,但如果某個記錄中包含“mom”這個詞,那這條記錄也應該被展示出來,而資料庫的普通搜索做不到,
 而這個操作ElasticSearch就可以做到,由于它內部有分詞器,在建立索引的程序中,分詞器可以把資料中的某些詞都認為是指定的某一個詞(比如把mother,mom通通都使用mom作為索引詞),再用這個詞來建立索引,然后在進行搜索的時候,將輸入的詞也進行同樣的轉化,再根據這個詞從索引表中查找到符合的記錄結果,這樣就可以把那些意義相近的結果也搜索出來,

所以說,ElasticSearch解決了普通全文搜索的搜索效率低下和搜索不智能的問題,



ES的搜索核心

介紹兩個搜索方法:順序掃描查找、全文搜索

上面有說到資料庫的搜索和ElasticSearch的搜索,
常見的關系型資料庫的針對某個欄位中的資料的搜索是順序掃描查找,從頭到尾去嘗試匹配,也就是所謂的遍歷查找,當然演算法可能沒有那么低級,(現在一些資料庫系統也在嘗試優化全文搜索功能,)

而ElasticSearch的搜索是全文搜索,而什么是全文搜索?
全文搜索可以根據一定方式把非結構化的資料對應到一種結構化的標識,從而可以通過標識來檢索到指定的非結構化的資料記錄,
這句話可能有點難以理解,舉個例子理解,比如有一大堆食物你需要去認識,食物本身可以被認作是非結構化的資料,因為他們都是獨特的,但如果我們利用他們的顏色來劃分的話就可以初步地將他們進行結構化劃分,這個就是一種簡單的將資料結構化的手段,在ElasticSearch中,這個把非結構化的資料對應到一種結構化的標識的方式就是倒排索引,下面介紹倒排索引來理解這個概念,

在ElasticSearch中,處理這些非結構化的資料的方式就是建立倒排索引(Inverted Index),
什么是倒排索引呢?
倒排索引把資料進行了拆分(比如某個欄位的資料為hello world,那么就會被拆分成hello和world),我們使用這些拆分的詞來作為索引詞來建立索引表,在以hello為索引詞的記錄中,有對hello world的指向,world也是如此,
當然,這里的拆分并不是真實的拆分,原始的資料依然存盤在elasticsearch中,我們另外創建了一個索引檔案來存盤,

下面是一個使用倒排索引搜索的示例
1.首先,假設我們有一個欄位的資料是"I thank my mother",當我們把這個資料存盤到ElasticSearch中,ElasticSearch內部使用分詞器進行處理資料,分詞器用于將非結構化資料中的詞進行拆分和轉換,于是把"I thank my mother"拆解成了"I"、"thank"、"my"、"mother",

2.當把資料拆分出來后(拆分成的資料單位我們稱為“詞”),就會把這些詞建立索引,ElasticSearch內部有一個索引表,用于建立詞與資料的對應,結構類似如下(真實格式還會有詞的頻率、資料長度等資訊),索引表存盤了詞和詞所在記錄的ID集合,所以可以通過某個詞來快速搜索出相關的記錄,比如搜索"I",那么會回傳1和2,然后可以快速根據ID來獲取對應的資料,【請注意,下圖只是方便理解,并不是真實的格式】

3.然后我們搜索的時候,分詞器也先把我們輸入的內容處理(為了與索引表的詞統一),然后再從索引表中查找,回傳對應的資料記錄集合,
例如我輸入mother,mother會先轉成mom,然后從索引表中找到mom,回傳包含mom的記錄的ID,然后根據ID獲取對應資料,也就是“I like my mom”



搜索引擎選擇

Lucene也是一種搜索引擎,為什么不直接使用Lucene?
ElasticSearch實際上底層使用的就是Lucene,雖然Lucene也有很多功能,但Lucene的使用難度較大(也正是使用難度高所以ElasticSearch才對Lucene進行封裝),而且ElasticSearc的高級功能也很強大,ES支持了多樣的資料分析,除了基本的功能,集群能力也是一個問題,Lucene一開始沒有考慮集群,所以對于存盤在不同服務器上的大量資料的互動比較麻煩,而ElasticeSearch一開始就是集群思想的,資料存盤以一個ElasticSearch節點為單位,多個節點的資料可以交流,
由于底層是Lucene,所以,對于一些elasticsearch底層的東西,有時候你完全可以參照Lucene,比如索引詞檔案的存盤等,

為什么不是Solr?
Solr也是一個知名的搜索引擎,它與ElasticSearch各有好處,Solr適用于一些非實時搜索系統(新增的資料不要求馬上查出來的),而ElasticSearch適用于一些實時搜索要求較高的系統(電商平臺等要求新商品馬上可查的系統),因為Solr在建立索引時,搜索效率下降,實時索引搜索效率不高,而ElasticSearch建立索引的速度較快,

ElasticSearch有一個非常顯著的特性"NRT":NRT全稱Near Real Time,近實時,意思是你插入的資料幾乎可以“馬上”就可以被搜索出來,這也是為什么它能使用在實時更新要求高的場景的原因,



搜索的處理

上面提了詞的拆分,這里提一些關于底層的搜索處理的內容,介紹一下ElasticSearch另一個協助搜索的關鍵組件--分詞器,ElasticSearch的全文搜索離不開分詞器的幫助,

分詞器通常由分解器tokenizer和詞元過濾器token filter組成,

分詞器對資料的分詞處理:為了提高索引的效率,ElasticSearch會資料進行處理,處理方式主要有字符過濾、詞轉換、詞拆分
字符過濾:過濾一些特殊字符,例如&||、html標簽,因為這些詞通常搜索意義不大,

詞轉換:把一些意義相同的詞統一轉成一個詞,(同詞義轉換)比如mom,mother統一轉成mom;(大小寫轉換)he,He統一歸為He;還處理一些詞意義不大的詞(停用詞清除),比如英文的“the”,“to”,這些詞使用頻率很高,但沒有具體意義,

詞拆分:進行資料的拆分,拆分成詞,比如把good morning,mom拆分成good,morining,mom,另外,詞拆分并不完全是按照資料的最小單位分解的,某一些分詞器會把一些詞進行組合,因為一些詞的組合起來才有索引的意義,比如中文的一些詞通常要組合起來才有意義,比如“大”和“家”要組成“大家”才有比較具體的意義,這是為了確保索引詞的最小單位是有意義的(比如英文mom的最小單位是m,o,m,內部的分詞器要能夠區分出mom整個是有意義的才可以確保是采用mom作為索引,而不是采用m和o,也正是因為這個問題,所以英文分詞器不能用于中文分詞器),【分詞器有很多個,默認的分詞器是不能適當對中文資料分詞的,它只能把一個個資料按最小的單位拆分,因為英文分詞器不能分清楚怎么把詞拆分才有意義,由于配置分詞器是一個較為靠后的知識點,所以前期將以英文資料為測驗資料,

分詞檔案的存盤:
分詞檔案一般包括三種檔案:詞典檔案,頻率檔案,位置檔案,
詞典檔案保存了關鍵詞(索引詞),還保留了指向頻率檔案和位置檔案的指標,
頻率檔案記錄了詞出現的頻率,
位置檔案記錄了這些詞出現在哪些資料中,



補充:

  • 資料庫不是被替代,而是被補充,有時候會將資料同時存盤到資料庫和ElasticSearch中,在單個查看的時候可以從資料庫中查詢,在搜索的時候從ElasticSearch中查詢;也有的專案由于資料比較簡單完全使用elasticsearch來存盤資料,
  • ElasticSearch是分布式的,但我們是不需要對其集群進行部署的,它自動進行了集群部署和節點發現等功能,我們只需進行很少的配置就能管理集群,在比較靠后的內容才會講到如何深入管理集群,

小節總結:

  • 1.本小節簡單講述了ElasticSearch是什么
  • 2.傳統搜索的不足
  • 3.使用ElasticSearch搜索的好處
  • 4.全文搜索和倒排索引
  • 5.與其他搜索引擎的比較
  • 6.ElasticSearch對于索引詞的處理(這個內容是提前講的內容,是為了幫助了解倒排索引如何建立索引)

基本學習環境搭建


如何操作ElasticSearch

首先要說的是,ElasticSearch是一款軟體,有點類似MySQL,我們要操作它的時候,也要給它發送它能識別的命令,而ElasticSearch是面向restful(不知道restful的自查吧)的,所以我們發送的命令是有點類似發送http請求的,

mysql是3306埠,而elasticsearch支持9200和9300埠操作,其中9200面向http,9300面向tcp,9200能夠使用普通的http請求來操作elasticsearch,9300需要連接elasticsearch之后再執行命令,

  • 對于9200,因為面向http,所以我們可以使用postman發http請求來操作elasticsearch,
  • 對于9300,因為面向tcp,我們通常使用一些elasticsearch管理工具(如kibana)進行連接elasticsearch之后再執行命令,(類似navicat之于mysql)

下載、安裝和運行(Based Windows)


我們首先來搭建好學習環境,主要是ElasticSearch和Kibana,【請注意,Elasticsearch依賴Java環境】 【Kibana是可選的,下面會介紹一下基于postman的對ElasticSearch操作,】,Kibana是一款對ElasticSearch進行管理的軟體,我們可以在Kibana上執行ElasticSearch的命令,

下載:


  • ElasticSearch下載:ElasticSearch下載【這里以6.2的為例】
  • Kibana下載:Kibana下載 【兩個下載都是同一個位置,這里下載以6.2的為例】【Kibana的版本盡量與ElasticSearch的一致,有些版本會連接錯誤】

安裝:

  • 兩個軟體都是不需要安裝的,下載后,直接解壓即可,

運行:

  • 對于ElasticSearch,可以直接在elasticsearch-6.2.0\bin中運行elasticsearch.bat,當提示“started”時,表示運行成功,
  • 對于Kibana,可以直接在kibana-6.2.0-windows-x86_64\bin中運行kibana.bat,當提示“Server running at http://localhost:5601”時,表示運行成功,【要先運行ElasticSearch再運行Kibana,因為它要與ElasticSearch進行連接】



如何操作ES

ElasticSearch默認的TCP服務埠是9300,Kibana的服務埠是5601,當我們啟動了Kibana之后,它會默認幫我們連接上9300,所以我們可以從http://localhost:5601中進入Kibana的管理界面來管理ElasticSearch,
如果你是第一次使用,那么ElasticSearch會自動創建一個名為elasticsearch的集群,Kibana會在這個節點中初始化一個index


我們在Kibana的DevTools中執行一些命令來看一下ElasticSearch,【從http://localhost:5601中進入】



在輸入命令GET /_cat/health?v后,點擊該行右側的執行按鈕,【GET /_cat/health?v是查看集群的健康狀態的命令】

然后就可以在右側的結果視窗中查看命令執行結果,

【你現在大概都是看不懂命令的意義和結果的意義的了,不過你應該知道哪里輸入命令哪里看執行結果了】



基于postman操作

postman是一個用來發請求的軟體,可以使用restful風格的請求來操作elasticsearch,
比如上面的查看集群的命令:GET /_cat/health?v
轉成基于restful的是:http://localhost:9200/_cat/health?vIP:9200+命令,其中9200是用于接收restful請求的es監聽埠,


補充:

上面的第一次使用并沒有涉及到具體的知識,只是讓你熟悉一下如何使用Kibana來操作ElasticSearch,下面講到具體知識點才會具體使用,

小節總結

  • 1.講了ES如何提供服務:9200,9300
  • 2.講了如何下載、安裝、運行ElasticSearch和Kibana
  • 3.講述了如何在Kibana中操作ElasticSearch
  • 4.講述了如何在postman中操作ElasticSearch

需要了解的概念


分布式模型相關

  • 集群Cluster:所謂集群,就是多個服務節點的集合,集群意味著這些節點是能夠相互交流的,不然無法進行資料互動,集群的默認名稱是"elasticsearch",多個提供服務的節點會根據集群名來自動加入集群
  • 節點Node:節點是集群的一部分,是集群的最小單元,是可以提供服務的節點,
  • 分片shard:分片位于節點上,分片是elasticsearch資料存盤的單元,elasticsearch中的資料會存盤在分片中,分片可以存盤在任意一個節點上,分片分為主分片Primary Shard和副本分片Replica Shard,
  • 主分片Primary Shard:當存盤一個檔案document的時候,會先存盤到主分片中,然后再復制到其他的副本分片Replica Shard中,
  • 副本分片Replica Shard:副本分片是主分片的復制(備份),默認情況下,主分片有一個副本分片,主分片不能修改,但副本分片可以后續再增加,
    • 為了保證資料的不丟失,通常來說Replica Shard不能與其對應的Primary Shard處于同一個節點中,【因為萬一這個節點損壞了,那么存盤在這個節點上的原資料(primary shard)和備份資料(replica shard)就全部丟失了】
    • 當主分片掛掉的時候,會選擇一個副本分片作為主分片,
    • 查詢可以在主分片或副本分片上進行查詢,這樣可以提供查詢效率,【但資料的修改只發生在主分片上,】
    • 一個Primary Shard可以有多個Replica Shard,默認創建是1個,

資料存盤相關

資料存盤在shard中,shard中的資料是以檔案document為單位的,document存盤在index和type劃分的邏輯空間中,document以json為格式,每一個key-value中key可以稱為域Field,

  • 索引Index:索引是存盤具有相同結構的document的集合,意義上有點類似關系型資料庫中的資料庫,用于存盤一系列資料,比如可以說“商品”索引,一般都是個大類,小邏輯劃分由Type處理,
  • 型別Type:型別是索引的邏輯磁區,意義有點類似關系型資料庫中的資料表,用來劃分索引下不同子型別的資料,比如商品(索引)可以有電子產品(型別),藥品(型別),在同一個分類下的資料一般都具有同種特征,用來定義資料的欄位的數量一般也是相同的,每一個document都有一個type和一個id,在存盤檔案的時候需要指定索引、型別和ID,
  • 檔案Document:類似于關系型資料庫中的記錄,是ElasticSearch的資料存盤的基本單位,格式與JSON相同,例如:
{
  "book_id": 1,
  "book_name": "Java Core ",
  "book_desc": "A good book, you know!",
  "category_id": "1",
  "category_name": "Computer"
}
  • 域Field:類似于關系型資料庫中的欄位,
  • elasticsearch是面向restful的,下面是restful請求與elasticsearch操作的對應:
請求方法 對應操作 說明
GET 讀取 獲取資料
POST 新增 新增資料
PUT 修改 修改資料或增加資料
DELETE 洗掉 洗掉資料
  • 索參考來存盤資料,分片也是用來存盤資料,它們是怎么對應的?一個索引存盤在多個分片上,默認情況下,一個索引有五個主分片,五個副本分片,主分片的數量一旦定下來就不能再修改,但副本分片的數量還可以修改,


小節總結

  • 講了一下ElasticSearch的集群概念,節點是集群的基礎服務單位,節點可以提供資料讀寫服務,資料按分片來存盤,主分片是主要資料,可以讀取和修改資料,副本分片不支持修改資料,
  • 主分片和副本分片的互斥性(為了保證資料不同時丟失)
  • elasticsearch的資料的邏輯存盤結構(索引->型別->檔案),索引是資料的大分類,型別是資料的小分類,
  • 檔案的格式
  • 索引與分片的關系,一個索引存盤在多個分片上

Hello ElasticSearch


前面提了一下index,type,document,說了ElasticSearch的邏輯存盤空間,
下面以兩個實體:“寫document->讀document”和“寫document->搜索document“來初步演示一下如何存盤資料和獲取資料,


寫->讀

如果我們要向ElasticSearch中寫入一份資料(document),命令的語法應該如下:

PUT /index名稱/type名稱/document的ID
{
    document的資料
}

上面的語法的意思就是向一個index的一個type中插入一個document,document用id作為標識,后面我們取document的資料也將以這個id為依據,其中index,type是可以不需要我們預創建的,在我們還不會如何創建index和type的時候,你可以先隨便打個名字(如果ElasticSearch檢測到我們輸入的index和type是不存在的,那么它就會以默認的規則幫我們創建出來),

請在kibana的devtool中執行以下命令來存盤一份document:

PUT /douban/book/1
{
  "book_id":1,
  "book_name":"A Clockwork Orange",
  "author":"Anthony Burgess",
  "summary":"Fully restored edition of Anthony Burgess' original text of A Clockwork Orange, with a glossary of the teen slang 'Nadsat', explanatory notes, pages from the original typescript, interviews, articles and reviews Edited by Andrew Biswell With a Foreword by Martin Amis 'It is a horrorshow story ...' Fifteen-year-old Alex likes lashings of ultraviolence. He and his gang of friends rob, kill and rape their way through a nightmarish future, until the State puts a stop to his riotous excesses. But what will his re-education mean? A dystopian horror, a black comedy, an exploration of choice, A Clockwork Orange is also a work of exuberant invention which created a new language for its characters. This critical edition restores the text of the novel as Anthony Burgess originally wrote it, and includes a glossary of the teen slang 'Nadsat', explanatory notes, pages from the original typescript, interviews, articles and reviews, shedding light on the enduring fascination of the novel's 'sweet and juicy criminality'. Anthony Burgess was born in Manchester in 1917 and educated at Xaverian College and Manchester University. He spent six years in the British Army before becoming a schoolmaster and colonial education officer in Malaya and Brunei. After the success of his Malayan Trilogy, he became a full-time writer in 1959. His books have been published all over the world, and they include The Complete Enderby, Nothing Like the Sun, Napoleon Symphony, Tremor of Intent, Earthly Powers and A Dead Man in Deptford. Anthony Burgess died in London in 1993. Andrew Biswell is the Professor of Modern Literature at Manchester Metropolitan University and the Director of the International Anthony Burgess Foundation. His publications include a biography, The Real Life of Anthony Burgess, which won the Portico Prize in 2006. He is currently editing the letters and short stories of Anthony Burgess.",
  "press":"Penguin Classic",
  "publication_date":"2000-02-22"
}

如果要獲取ES中存盤的document,命令的語法應該如下:

GET /index名/type名/id

一樣的,請在kibana中執行下述命令來獲取我們上面存盤的document:

GET /douban/book/1

回傳結果:【回傳index名稱,type名稱,id,原始檔案等資料】

很明顯地,我們獲取到了我們剛剛存盤進去的資料,


寫->搜索

一樣的,我們寫多一份資料進ES中:

PUT /douban/book/2
{
  "book_id":2,
  "book_name":"Kubernetes in Action",
  "author":"Marko Luksa",
  "summary":"Kubernetes in Action teaches you to use Kubernetes to deploy container-based distributed applications. You'll start with an overview of Docker and Kubernetes before building your first Kubernetes cluster. You'll gradually expand your initial application, adding features and deepening your knowledge of Kubernetes architecture and operation. As you navigate this comprehensive guide, you'll explore high-value topics like monitoring, tuning, and scaling.Kubernetes is Greek for \"helmsman,\" your guide through unknown waters. The Kubernetes container orchestration system safely manages the structure and flow of a distributed application, organizing containers and services for maximum efficiency. Kubernetes serves as an operating system for your clusters, eliminating the need to factor the underlying network and server infrastructure into your designs.",
  "press":"Manning Publications",
  "publish_date":"2017-08-31"
}

下面將演示搜索的功能,搜索的其中一種語法是:

GET /index名/type名/_search
{
    "query":{
        "match":{
            "欄位Field名稱":"用于搜索的關鍵字"
        }
    }
}

那么,根據我們之前存盤的資料,如果我們要查詢summary欄位有Orange的資料的話,命令如下:

GET /douban/book/_search
{
  "query": {
    "match": {
      "summary":"Orange"
    }
  }
}

回傳的結果:


小節總結

  • 這小節涉及到了資料的插入,讀取,搜索,但僅僅是一個Hello ElasticSearch的例子,所以沒有講到插入資料應該有的前置知識,理論上,你只需要記得這個流程即可,后面會補充這個流程中沒有提到的內容,

--To Be Continue


轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/7350.html

標籤:其它

上一篇:Elasticsearch(GEO)資料寫入和空間檢索

下一篇:〈二〉ElasticSearch的認識:索引、型別、檔案

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • GPU虛擬機創建時間深度優化

    **?桔妹導讀:**GPU虛擬機實體創建速度慢是公有云面臨的普遍問題,由于通常情況下創建虛擬機屬于低頻操作而未引起業界的重視,實際生產中還是存在對GPU實體創建時間有苛刻要求的業務場景。本文將介紹滴滴云在解決該問題時的思路、方法、并展示最終的優化成果。 從公有云服務商那里購買過虛擬主機的資深用戶,一 ......

    uj5u.com 2020-09-10 06:09:13 more
  • 可編程網卡芯片在滴滴云網路的應用實踐

    **?桔妹導讀:**隨著云規模不斷擴大以及業務層面對延遲、帶寬的要求越來越高,采用DPDK 加速網路報文處理的方式在橫向縱向擴展都出現了局限性。可編程芯片成為業界熱點。本文主要講述了可編程網卡芯片在滴滴云網路中的應用實踐,遇到的問題、帶來的收益以及開源社區貢獻。 #1. 資料中心面臨的問題 隨著滴滴 ......

    uj5u.com 2020-09-10 06:10:21 more
  • 滴滴資料通道服務演進之路

    **?桔妹導讀:**滴滴資料通道引擎承載著全公司的資料同步,為下游實時和離線場景提供了必不可少的源資料。隨著任務量的不斷增加,資料通道的整體架構也隨之發生改變。本文介紹了滴滴資料通道的發展歷程,遇到的問題以及今后的規劃。 #1. 背景 資料,對于任何一家互聯網公司來說都是非常重要的資產,公司的大資料 ......

    uj5u.com 2020-09-10 06:11:05 more
  • 滴滴AI Labs斬獲國際機器翻譯大賽中譯英方向世界第三

    **桔妹導讀:**深耕人工智能領域,致力于探索AI讓出行更美好的滴滴AI Labs再次斬獲國際大獎,這次獲獎的專案是什么呢?一起來看看詳細報道吧! 近日,由國際計算語言學協會ACL(The Association for Computational Linguistics)舉辦的世界最具影響力的機器 ......

    uj5u.com 2020-09-10 06:11:29 more
  • MPP (Massively Parallel Processing)大規模并行處理

    1、什么是mpp? MPP (Massively Parallel Processing),即大規模并行處理,在資料庫非共享集群中,每個節點都有獨立的磁盤存盤系統和記憶體系統,業務資料根據資料庫模型和應用特點劃分到各個節點上,每臺資料節點通過專用網路或者商業通用網路互相連接,彼此協同計算,作為整體提供 ......

    uj5u.com 2020-09-10 06:11:41 more
  • 滴滴資料倉庫指標體系建設實踐

    **桔妹導讀:**指標體系是什么?如何使用OSM模型和AARRR模型搭建指標體系?如何統一流程、規范化、工具化管理指標體系?本文會對建設的方法論結合滴滴資料指標體系建設實踐進行解答分析。 #1. 什么是指標體系 ##1.1 指標體系定義 指標體系是將零散單點的具有相互聯系的指標,系統化的組織起來,通 ......

    uj5u.com 2020-09-10 06:12:52 more
  • 單表千萬行資料庫 LIKE 搜索優化手記

    我們經常在資料庫中使用 LIKE 運算子來完成對資料的模糊搜索,LIKE 運算子用于在 WHERE 子句中搜索列中的指定模式。 如果需要查找客戶表中所有姓氏是“張”的資料,可以使用下面的 SQL 陳述句: SELECT * FROM Customer WHERE Name LIKE '張%' 如果需要 ......

    uj5u.com 2020-09-10 06:13:25 more
  • 滴滴Ceph分布式存盤系統優化之鎖優化

    **桔妹導讀:**Ceph是國際知名的開源分布式存盤系統,在工業界和學術界都有著重要的影響。Ceph的架構和演算法設計發表在國際系統領域頂級會議OSDI、SOSP、SC等上。Ceph社區得到Red Hat、SUSE、Intel等大公司的大力支持。Ceph是國際云計算領域應用最廣泛的開源分布式存盤系統, ......

    uj5u.com 2020-09-10 06:14:51 more
  • es~通過ElasticsearchTemplate進行聚合~嵌套聚合

    之前寫過《es~通過ElasticsearchTemplate進行聚合操作》的文章,這一次主要寫一個嵌套的聚合,例如先對sex集合,再對desc聚合,最后再對age求和,共三層嵌套。 Aggregations的部分特性類似于SQL語言中的group by,avg,sum等函式,Aggregation ......

    uj5u.com 2020-09-10 06:14:59 more
  • 爬蟲日志監控 -- Elastc Stack(ELK)部署

    傻瓜式部署,只需替換IP與用戶 導讀: 現ELK四大組件分別為:Elasticsearch(核心)、logstash(處理)、filebeat(采集)、kibana(可視化) 下載均在https://www.elastic.co/cn/downloads/下tar包,各組件版本最好一致,配合fdm會 ......

    uj5u.com 2020-09-10 06:15:05 more
最新发布
  • day02-2-商鋪查詢快取

    功能02-商鋪查詢快取 3.商鋪詳情快取查詢 3.1什么是快取? 快取就是資料交換的緩沖區(稱作Cache),是存盤資料的臨時地方,一般讀寫性能較高。 快取的作用: 降低后端負載 提高讀寫效率,降低回應時間 快取的成本: 資料一致性成本 代碼維護成本 運維成本 3.2需求說明 如下,當我們點擊商店詳 ......

    uj5u.com 2023-04-20 08:33:24 more
  • MySQL中binlog備份腳本分享

    關于MySQL的二進制日志(binlog),我們都知道二進制日志(binlog)非常重要,尤其當你需要point to point災難恢復的時侯,所以我們要對其進行備份。關于二進制日志(binlog)的備份,可以基于flush logs方式先切換binlog,然后拷貝&壓縮到到遠程服務器或本地服務器 ......

    uj5u.com 2023-04-20 08:28:06 more
  • day02-短信登錄

    功能實作02 2.功能01-短信登錄 2.1基于Session實作登錄 2.1.1思路分析 2.1.2代碼實作 2.1.2.1發送短信驗證碼 發送短信驗證碼: 發送驗證碼的介面為:http://127.0.0.1:8080/api/user/code?phone=xxxxx<手機號> 請求方式:PO ......

    uj5u.com 2023-04-20 08:27:27 more
  • 快取與資料庫雙寫一致性幾種策略分析

    本文將對幾種快取與資料庫保證資料一致性的使用方式進行分析。為保證高并發性能,以下分析場景不考慮執行的原子性及加鎖等強一致性要求的場景,僅追求最終一致性。 ......

    uj5u.com 2023-04-20 08:26:48 more
  • sql陳述句優化

    問題查找及措施 問題查找 需要找到具體的代碼,對其進行一對一優化,而非一直把關注點放在服務器和sql平臺 降低簡化每個事務中處理的問題,盡量不要讓一個事務拖太長的時間 例如檔案上傳時,應將檔案上傳這一步放在事務外面 微軟建議 4.啟動sql定時執行計劃 怎么啟動sqlserver代理服務-百度經驗 ......

    uj5u.com 2023-04-20 08:26:35 more
  • 云時代,MySQL到ClickHouse資料同步產品對比推薦

    ClickHouse 在執行分析查詢時的速度優勢很好的彌補了MySQL的不足,但是對于很多開發者和DBA來說,如何將MySQL穩定、高效、簡單的同步到 ClickHouse 卻很困難。本文對比了 NineData、MaterializeMySQL(ClickHouse自帶)、Bifrost 三款產品... ......

    uj5u.com 2023-04-20 08:26:29 more
  • sql陳述句優化

    問題查找及措施 問題查找 需要找到具體的代碼,對其進行一對一優化,而非一直把關注點放在服務器和sql平臺 降低簡化每個事務中處理的問題,盡量不要讓一個事務拖太長的時間 例如檔案上傳時,應將檔案上傳這一步放在事務外面 微軟建議 4.啟動sql定時執行計劃 怎么啟動sqlserver代理服務-百度經驗 ......

    uj5u.com 2023-04-20 08:25:13 more
  • Redis 報”OutOfDirectMemoryError“(堆外記憶體溢位)

    Redis 報錯“OutOfDirectMemoryError(堆外記憶體溢位) ”問題如下: 一、報錯資訊: 使用 Redis 的業務介面 ,產生 OutOfDirectMemoryError(堆外記憶體溢位),如圖: 格式化后的報錯資訊: { "timestamp": "2023-04-17 22: ......

    uj5u.com 2023-04-20 08:24:54 more
  • day02-2-商鋪查詢快取

    功能02-商鋪查詢快取 3.商鋪詳情快取查詢 3.1什么是快取? 快取就是資料交換的緩沖區(稱作Cache),是存盤資料的臨時地方,一般讀寫性能較高。 快取的作用: 降低后端負載 提高讀寫效率,降低回應時間 快取的成本: 資料一致性成本 代碼維護成本 運維成本 3.2需求說明 如下,當我們點擊商店詳 ......

    uj5u.com 2023-04-20 08:24:03 more
  • day02-短信登錄

    功能實作02 2.功能01-短信登錄 2.1基于Session實作登錄 2.1.1思路分析 2.1.2代碼實作 2.1.2.1發送短信驗證碼 發送短信驗證碼: 發送驗證碼的介面為:http://127.0.0.1:8080/api/user/code?phone=xxxxx<手機號> 請求方式:PO ......

    uj5u.com 2023-04-20 08:23:11 more