MySQL資料同步Elasticsearch的方案有哪些
商品檢索
大家應該都在各種電商網站檢索過商品,檢索商品一般都是透過什麼實現呢?搜尋引擎Elasticsearch。
那麼問題來了,商品上架,資料一般寫入到MySQL的資料庫中,那麼用來檢索的資料又是怎麼同步到Elasticsearch的呢?
MySQL同步ES
1.同步雙寫
這是能想到的最直接的方式,在寫入MySQL,直接也同步往ES裡寫一份資料。
同步雙寫
就這樣:
#優點:實作簡單
缺點:
業務耦合,商品的管理耦合大量資料同步程式碼
#影響效能,寫入兩個存儲,回應時間變長
#不便擴充:搜尋可能有一些個人化需求,需要對資料進行聚合,這種方式不便實現
2.非同步雙寫
我們也很容易想到非同步雙寫的辦法,上架商品的時候,先把商品資料丟進MQ,為了解耦合,我們一般會拆分一個搜尋服務,由搜尋服務去訂閱商品變動的訊息,來完成同步。
非同步雙重寫入
前面說的,有些資料需要聚合處理成類似寬表的結構怎麼辦呢?例如商品庫的商品品類、spu、sku表是分開的,但是查詢是跨維度的,在ES裡再聚合一次效率就低一些,最好就是把商品的資料給聚合起來,在ES里以類似大寬表的形式存儲,這樣一來查詢效率就高一些。
多維度多條件查詢
這種其實沒什麼好辦法,基本上還是得搜尋服務直接查庫,或者遠端調用,再查詢一遍商品的資料庫,就是所謂的回查。
回查完成聚合
這種方式:
#優點:
解耦合,商品服務無須關注資料同步
即時性較好,使用MQ,正常情況下,同步完成在秒級
- 引入了新的元件和服務,增加了複雜度
- 即時性難以保證
- #對儲存壓力較大
canal-adapter,支援多種適配器,其中就有ES適配器,經過一些配置,啟動之後,就可以直接把MySQL資料同步到ES,這個過程是零碼的。
##資料訂閱回查
- 優點:
- #業務入侵較少######即時性較好###
至於資料訂閱框架的選型,主流的大致上是這些:
Cancal | Maxwell | Python-Mysql-Rplication | |
---|---|---|---|
#開源方 | 阿巴巴 | ||
#Zendesk | 社群 | #開發語言 | |
##Java | ##Python活躍度 | 活躍 | |
活躍 | 高可用 | #支持 | |
不支援 | 客戶端 | Java/Go/PHP/Python/Rust | |
Python | #訊息落地 | Kafka/RocketMQ 等 | |
自訂 | 訊息格式 | 自訂 | |
自訂 | 文件詳略 | 詳細 |
#詳細說明
#########Boostrap#####不支援######################## ##支援######不支援###############MySQL同步到其他資料存儲,如HBase,基本上都是採用相似的幾種方法。 ###以上是MySQL資料同步Elasticsearch的方案有哪些的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

MySQL適合初學者使用,因為它安裝簡單、功能強大且易於管理數據。 1.安裝和配置簡單,適用於多種操作系統。 2.支持基本操作如創建數據庫和表、插入、查詢、更新和刪除數據。 3.提供高級功能如JOIN操作和子查詢。 4.可以通過索引、查詢優化和分錶分區來提升性能。 5.支持備份、恢復和安全措施,確保數據的安全和一致性。

Navicat本身不存儲數據庫密碼,只能找回加密後的密碼。解決辦法:1. 檢查密碼管理器;2. 檢查Navicat的“記住密碼”功能;3. 重置數據庫密碼;4. 聯繫數據庫管理員。

使用 Navicat Premium 創建數據庫:連接到數據庫服務器並輸入連接參數。右鍵單擊服務器並選擇“創建數據庫”。輸入新數據庫的名稱和指定字符集和排序規則。連接到新數據庫並在“對象瀏覽器”中創建表。右鍵單擊表並選擇“插入數據”來插入數據。

MySQL是一個開源的關係型數據庫管理系統。 1)創建數據庫和表:使用CREATEDATABASE和CREATETABLE命令。 2)基本操作:INSERT、UPDATE、DELETE和SELECT。 3)高級操作:JOIN、子查詢和事務處理。 4)調試技巧:檢查語法、數據類型和權限。 5)優化建議:使用索引、避免SELECT*和使用事務。

MySQL和SQL是開發者必備技能。 1.MySQL是開源的關係型數據庫管理系統,SQL是用於管理和操作數據庫的標準語言。 2.MySQL通過高效的數據存儲和檢索功能支持多種存儲引擎,SQL通過簡單語句完成複雜數據操作。 3.使用示例包括基本查詢和高級查詢,如按條件過濾和排序。 4.常見錯誤包括語法錯誤和性能問題,可通過檢查SQL語句和使用EXPLAIN命令優化。 5.性能優化技巧包括使用索引、避免全表掃描、優化JOIN操作和提升代碼可讀性。

Navicat for MariaDB 無法直接查看數據庫密碼,因為密碼以加密形式存儲。為確保數據庫安全,有三個方法可重置密碼:通過 Navicat 重置密碼,設置複雜密碼。查看配置文件(不推薦,風險高)。使用系統命令行工具(不推薦,需要對命令行工具精通)。

可在 Navicat 中通過以下步驟新建 MySQL 連接:打開應用程序並選擇“新建連接”(Ctrl N)。選擇“MySQL”作為連接類型。輸入主機名/IP 地址、端口、用戶名和密碼。 (可選)配置高級選項。保存連接並輸入連接名稱。

可以通過以下步驟打開 phpMyAdmin:1. 登錄網站控制面板;2. 找到並點擊 phpMyAdmin 圖標;3. 輸入 MySQL 憑據;4. 點擊 "登錄"。
