數(shù)據(jù)庫為什么不適合搜索引擎的底層存儲(chǔ)?

原創(chuàng)不易,轉(zhuǎn)載請標(biāo)明地址,或者直接附上我的博客首頁https://georgedage.blog.csdn.net/
文中有些并沒有解釋過于清楚,本篇更適合有基礎(chǔ)的同學(xué)閱讀,思考,思考,思考。

千億級(jí)實(shí)時(shí)搜索,要滿足的條件

》高并發(fā),要能支持百萬級(jí)以上的并發(fā)
》實(shí)時(shí)性,響應(yīng)時(shí)間不超過3秒

那么我們考慮,這樣的情況下,使用數(shù)據(jù)庫是否可以?

Mysql / pgsql / db2 / Oracle

首先先說出我們的結(jié)論,那就是不可以,那么為什么呢?請聽我細(xì)細(xì)給你叨嘮,本篇博客通過由淺入深,并且根據(jù)一個(gè)個(gè)問題去探討,或許你看完之后會(huì)有一點(diǎn)想法,不過如果有不妥之處,歡迎指出。

我們經(jīng)常瀏覽博客,新聞,商品等,存儲(chǔ)這些數(shù)據(jù)的表應(yīng)當(dāng)具有什么樣的字段呢?

表字段

提出問題:

在數(shù)據(jù)庫中如何做到下面的查詢?以新聞表為例

查詢

或許對于稍微掌握點(diǎn)數(shù)據(jù)庫知識(shí)的同僚們,這些都不是問題!
那么,請看問題二!

當(dāng)數(shù)據(jù)量變大時(shí),這四個(gè)查詢都變慢了,該如何優(yōu)化?

我們都知道,數(shù)據(jù)庫的常用數(shù)據(jù)庫優(yōu)化方法為:
》建索引
》分區(qū)表

由此提出問題三。

建索引對“查詢標(biāo)題與釣魚島有關(guān)的新聞”和“查詢與蒼老師有 關(guān)的新聞”有效果嗎?

或許對索引有點(diǎn)基本概念的同僚們,會(huì)想,沒關(guān)系呀。
嗯,好,那我問你,為什么呢?
(⊙o⊙)…(⊙o⊙)…(⊙o⊙)…
所以我們需要理解索引的原理是什么?

索引的原理是什么

即: 對列值創(chuàng)建排序存儲(chǔ),數(shù)據(jù)結(jié)構(gòu)={列值、行地址}。在有序數(shù)據(jù)列表中就可以利用二分查找快速找到要查找的行的地址,再根據(jù)地址直接取行數(shù)據(jù)。

或許這樣看會(huì)有點(diǎn)抽象,這里我們可以補(bǔ)充一下自己的基礎(chǔ)知識(shí),當(dāng)然也是面試中經(jīng)常問到的。

數(shù)組,鏈表,樹,二叉樹,紅黑樹,mysql的b+tree


在這里插入圖片描述

對于b+tree:


在這里插入圖片描述

b+tree,葉子存儲(chǔ)數(shù)據(jù),節(jié)點(diǎn)關(guān)鍵值

這里補(bǔ)充一道面試題:大劍無鋒之簡單說一下聚簇索引和非聚簇索引?【面試推薦】

然后根據(jù)索引的原理進(jìn)一步思考索引!

索引的排序,是怎么排的?

》數(shù)值列
》時(shí)間列
》文本列

這里相信學(xué)過語言基礎(chǔ)的都知道,編碼字符集的應(yīng)用。
就像漢字,在計(jì)算機(jī)中的存儲(chǔ)也是二進(jìn)制,所以也就是我們常說的字典序。詳細(xì)這里不做過多的闡述。

在新聞標(biāo)題列上建索引,當(dāng)我們查詢標(biāo)題=‘釣魚島’ ,數(shù)據(jù)庫會(huì)怎么去查?

在這里插入圖片描述

但是我們查詢的是這樣一個(gè)字段呢?
或者說數(shù)據(jù)庫中有這樣一個(gè)字段,“中國擁有釣魚島”
如果走索引,這個(gè)是會(huì)被忽視的查詢不到,所以需要全局進(jìn)行查詢。

【補(bǔ)充】這里我在網(wǎng)上看到有說到覆蓋索引可以解決類似問題,不過這個(gè)我并沒有進(jìn)行研究呢,后續(xù)補(bǔ)上!

如果要對查詢出來的結(jié)果進(jìn)行相關(guān)度排名,數(shù)據(jù)庫能否做到?

在這里插入圖片描述

如果要對搜索的新聞字段設(shè)置不同的權(quán)重,比如新聞標(biāo)題中包含這三個(gè)關(guān)鍵字的新聞的
相關(guān)性就遠(yuǎn)高于新聞內(nèi)容中包含這三個(gè)字。數(shù)據(jù)庫能否做到?

最后我們得出結(jié)論

結(jié)論:
數(shù)據(jù)庫適合結(jié)構(gòu)化數(shù)據(jù)的精確查詢,而不適合半結(jié)構(gòu)化、非結(jié)構(gòu)化數(shù)據(jù)的模糊查詢及靈活搜索(特別是數(shù)據(jù)量大時(shí)),無法提供想要的實(shí)時(shí)性。

【補(bǔ)充】


在這里插入圖片描述
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 面試題5:union all 和 union的區(qū)別 Union:對兩個(gè)結(jié)果集進(jìn)行并集操作,不包括重復(fù)行,同時(shí)進(jìn)行默...
    行者和他的鋼筆閱讀 1,048評(píng)論 0 1
  • 數(shù)據(jù)庫的基本是概念名詞解釋: 數(shù)據(jù)庫名詞解釋 元組:可以理解為表的每一行就是一個(gè)元組 候選碼:若關(guān)系中的某一屬性組...
    杰倫哎呦哎呦閱讀 1,236評(píng)論 0 6
  • 春節(jié)假期和媽媽、妹妹、小婉巡山。發(fā)現(xiàn)家附近別墅區(qū)廢棄的游樂園。在山坡上可以看見三岔湖的一灣湖水,有陽光?,微風(fēng),我...
    哈哈小石頭閱讀 498評(píng)論 0 1
  • 做了蹩腳的狗就要放下尾巴,低頭哈腰,無心做狗,求得別人可憐和依然高傲自大都是不對的,所以存在很難!
    哈囉朱文軒閱讀 265評(píng)論 0 2

友情鏈接更多精彩內(nèi)容