自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Elasticsearch 使用誤區(qū)之將 Elasticsearch 視為關(guān)系數(shù)據(jù)庫(kù)!

開發(fā) 開發(fā)工具
Elasticsearch 常被誤解為 MySQL 或者 PostgreSQL 等關(guān)系數(shù)據(jù)庫(kù)的直接替代品,用戶除了直接替代使用外更看其全文搜索和快速聚合的能力。

Elasticsearch 是一個(gè)強(qiáng)大的工具,尤其在全文檢索、實(shí)時(shí)分析、機(jī)器學(xué)習(xí)、地理數(shù)據(jù)應(yīng)用、日志和事件數(shù)據(jù)分析、安全信息和事件管理等場(chǎng)景有大量的應(yīng)用。

然而,Elastic Stack 技術(shù)棧的選型及應(yīng)用效能取決于正確的使用方式。選型錯(cuò)誤或者誤用 Elasticsearch 可能會(huì)導(dǎo)致擴(kuò)展性問(wèn)題、性能問(wèn)題(如為解決一個(gè)問(wèn)題使用非常復(fù)雜的腳本導(dǎo)致性能極差)等,從而使整體體驗(yàn)感變差。所以,本文區(qū)別于之前的正向講解的方式,更多的講解反例或者負(fù)面應(yīng)用案例?!耙允窞殍b”,以便于大家更好地使用 Elasticsearch。

本系列文章會(huì)有 10 幾篇左右,一篇一個(gè)知識(shí)點(diǎn)講解 Elasticsearch 使用誤區(qū)解讀,敬請(qǐng)期待!

誤區(qū)1:將 Elasticsearch 視為關(guān)系數(shù)據(jù)庫(kù)

Elasticsearch 常被誤解為 MySQL 或者 PostgreSQL 等關(guān)系數(shù)據(jù)庫(kù)的直接替代品,用戶除了直接替代使用外更看其全文搜索和快速聚合的能力。

然而,咱們必須清晰的認(rèn)知:Elasticsearch 設(shè)計(jì)初衷不是處理復(fù)雜事務(wù)和關(guān)系數(shù)據(jù)模型的。

我們從下面幾個(gè)維度逐一展開討論:

1、該不該選型 Elasticsearch ?

個(gè)人建議先了解 Elasticsearch 的適用場(chǎng)景以及不適用場(chǎng)景,這樣能清楚 Elastic Stack 技術(shù)棧更適合哪些業(yè)務(wù)需求。

例如,咱們文章之前圖解的六大應(yīng)用場(chǎng)景是非常適合的。然而,對(duì)于需要處理復(fù)雜事務(wù)、多表聯(lián)查操作和高一致性要求的應(yīng)用,如銀行系統(tǒng)的交易處理和ERP系統(tǒng)等,Elasticsearch 則不太適合。

圖片圖片

Elasticsearch 更適用場(chǎng)景:

圖片圖片

圖片圖片


通過(guò)對(duì)比這些場(chǎng)景,反觀自己的業(yè)務(wù)需求,就能判斷是否應(yīng)該選型 Elasticsearch 甚至 Elastic Stack 作為技術(shù)棧。

2、理解 Elasticsearch 的設(shè)計(jì)

圖片來(lái)自官方博客圖片來(lái)自官方博客

Elasticsearch 是一種面向文檔的搜索引擎,專為快速搜索大量數(shù)據(jù)而設(shè)計(jì)。

Elasticsearch 基于 Apache Lucene 構(gòu)建,提供了強(qiáng)大的全文搜索、分析和數(shù)據(jù)聚合功能。

以下是 Elasticsearch 的主要特點(diǎn):

  • 全文搜索:Elasticsearch 提供了高效的全文搜索功能,能夠快速檢索和匹配大規(guī)模文本數(shù)據(jù)。
  • 分布式架構(gòu):Elasticsearch 采用分布式架構(gòu),能夠水平橫向擴(kuò)展,處理海量數(shù)據(jù)(PB級(jí)甚至以上都不是問(wèn)題)和高并發(fā)請(qǐng)求。
  • 數(shù)據(jù)分析:Elasticsearch 支持復(fù)雜的聚合查詢,可以做多維度的快速統(tǒng)計(jì)和分析數(shù)據(jù),但聚合、去重等結(jié)果不是精準(zhǔn)的。有精準(zhǔn)需求的企業(yè)場(chǎng)景也要評(píng)估和掂量一下。
  • ......

圖片來(lái)自官方博客圖片來(lái)自官方博客

如前所述,Elasticsearch 并不是設(shè)計(jì)用來(lái)處理關(guān)系數(shù)據(jù)和事務(wù)的。它的主要優(yōu)勢(shì)在于分析和搜索能力,而不是數(shù)據(jù)關(guān)系的嚴(yán)格維護(hù)。

3、理解 Elasticsearch 與關(guān)系數(shù)據(jù)庫(kù)的比較

關(guān)系數(shù)據(jù)庫(kù)(如 MySQL、Oracle 及 PostgreSQL 等)和 Elasticsearch 之間有幾個(gè)關(guān)鍵區(qū)別:

3.1 數(shù)據(jù)模型比較

  • 關(guān)系數(shù)據(jù)庫(kù)使用結(jié)構(gòu)化的表和行來(lái)存儲(chǔ)數(shù)據(jù),并通過(guò)外鍵和約束來(lái)維護(hù)數(shù)據(jù)的一致性。
  • Elasticsearch 則使用文檔(document,本質(zhì)是 JSON 格式)來(lái)存儲(chǔ)數(shù)據(jù),每個(gè)文檔可以包含不同的字段和數(shù)據(jù)類型。

特性

關(guān)系數(shù)據(jù)庫(kù)

Elasticsearch

數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)

結(jié)構(gòu)化的表和行

文檔

數(shù)據(jù)類型

每個(gè)表的字段類型固定

每個(gè)文檔可以包含不同的字段和數(shù)據(jù)類型

數(shù)據(jù)一致性

通過(guò)外鍵和約束來(lái)維護(hù)數(shù)據(jù)的一致性

不提供數(shù)據(jù)一致性保障

查詢能力

支持復(fù)雜的 SQL 查詢、事務(wù)和聯(lián)接操作

主要用于全文搜索和數(shù)據(jù)聚合

事務(wù)支持

完整的事務(wù)支持

不支持事務(wù)

性能優(yōu)化

索引、緩存和查詢優(yōu)化

分片、索引和緩存

主要優(yōu)勢(shì)

關(guān)系數(shù)據(jù)處理和數(shù)據(jù)一致性維護(hù)

快速搜索和高效的數(shù)據(jù)聚合

3.2 查詢能力比較

  • 關(guān)系數(shù)據(jù)庫(kù)支持復(fù)雜的 SQL 查詢、事務(wù)和多表關(guān)聯(lián)操作,以保證數(shù)據(jù)的一致性和完整性。
  • Elasticsearch 主要側(cè)重于全文搜索和數(shù)據(jù)聚合,不支持復(fù)雜的事務(wù)和多表關(guān)聯(lián)操作。

在關(guān)系數(shù)據(jù)庫(kù)中,我們可以使用復(fù)雜的 SQL 查詢、事務(wù)和多表關(guān)聯(lián)操作來(lái)保證數(shù)據(jù)的一致性和完整性。例如:

BEGIN TRANSACTION;

-- 更新訂單狀態(tài)
UPDATE orders
SET status = 'shipped'
WHERE order_id = 123;

-- 減少庫(kù)存
UPDATE products
SET stock = stock - 1
WHERE product_id = 456;

-- 記錄客戶活動(dòng)
INSERT INTO customer_activity (customer_id, activity)
VALUES (789, 'Order 123 shipped');

COMMIT;

圖片圖片

上述事務(wù)示例能確保所有相關(guān)操作(更新訂單狀態(tài)、減少庫(kù)存和記錄客戶活動(dòng))要么全部成功,要么全部失敗,從而保證數(shù)據(jù)的一致性(事務(wù)的本質(zhì))。

在 Elasticsearch 中,我們主要側(cè)重于全文搜索和數(shù)據(jù)聚合分析,而不支持復(fù)雜的事務(wù)和多表關(guān)聯(lián)操作。

比如:用戶需求如下:

“想請(qǐng)教下大佬們,假設(shè) es 中 有兩個(gè)表,一個(gè)會(huì)員表,一個(gè)訂單表,如果想關(guān)聯(lián)查詢,例如查詢24年注冊(cè)的所有的會(huì)員的訂單總數(shù),通過(guò)什么方式能快速查詢?”

咱們文章做過(guò)剖析,Elasticsearch 不是一丁點(diǎn)也不支持多表關(guān)聯(lián),只是支持的力度有限,支持的形式核心有如下幾種:

  • 自己業(yè)務(wù)層面實(shí)現(xiàn)
  • Nested 嵌套數(shù)據(jù)類型
  • Join 父子文檔類型
  • 寬表冗余存儲(chǔ)
  • Enrich processor 預(yù)處理方式
責(zé)任編輯:武曉燕 來(lái)源: 銘毅天下Elasticsearch
相關(guān)推薦

2024-09-09 07:51:33

2023-10-10 11:18:42

Spring數(shù)據(jù)庫(kù)

2024-07-26 10:42:30

2018-10-15 13:57:38

Hadoop數(shù)據(jù)庫(kù)MySQL

2014-02-27 10:08:33

NoSQL

2009-08-25 09:09:33

關(guān)系數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)革命RDBMS

2011-08-15 10:02:02

LEIDomino附件關(guān)系數(shù)據(jù)庫(kù)

2011-10-11 17:07:12

數(shù)據(jù)庫(kù)Internet文件數(shù)據(jù)庫(kù)

2009-05-05 09:27:06

云計(jì)算關(guān)系數(shù)據(jù)庫(kù)微軟

2023-01-06 08:00:00

關(guān)系數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)機(jī)器學(xué)習(xí)

2024-09-26 14:33:15

2023-10-16 13:26:00

RDBMS關(guān)系數(shù)據(jù)庫(kù)

2009-07-10 09:28:41

NoSQL關(guān)系數(shù)據(jù)庫(kù)

2020-03-14 16:37:09

數(shù)據(jù)庫(kù)IT技術(shù)

2018-04-12 12:45:02

數(shù)據(jù)庫(kù)MySQL構(gòu)建架構(gòu)

2010-09-15 14:09:01

GraphDataba

2011-07-18 09:54:47

云計(jì)算分片關(guān)系數(shù)據(jù)庫(kù)關(guān)系數(shù)據(jù)庫(kù)

2021-06-04 07:31:58

數(shù)據(jù)庫(kù)MySQLHBase

2024-11-21 08:00:00

矢量數(shù)據(jù)庫(kù)人工智能

2023-05-22 11:20:27

數(shù)據(jù)庫(kù)MySQL關(guān)系數(shù)據(jù)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)