久久精品国产亚洲高清|精品日韩中文乱码在线|亚洲va中文字幕无码久|伊人久久综合狼伊人久久|亚洲不卡av不卡一区二区|精品久久久久久久蜜臀AV|国产精品19久久久久久不卡|国产男女猛烈视频在线观看麻豆

    1. <style id="76ofp"></style>

      <style id="76ofp"></style>
      <rt id="76ofp"></rt>
      <form id="76ofp"><optgroup id="76ofp"></optgroup></form>
      1. 千鋒教育-做有情懷、有良心、有品質(zhì)的職業(yè)教育機構(gòu)

        手機站
        千鋒教育

        千鋒學(xué)習(xí)站 | 隨時隨地免費學(xué)

        千鋒教育

        掃一掃進入千鋒手機站

        領(lǐng)取全套視頻
        千鋒教育

        關(guān)注千鋒學(xué)習(xí)站小程序
        隨時隨地免費學(xué)習(xí)課程

        當(dāng)前位置:首頁  >  技術(shù)干貨  > 為什么不用key-value型數(shù)據(jù)庫實現(xiàn)關(guān)系型數(shù)據(jù)庫?

        為什么不用key-value型數(shù)據(jù)庫實現(xiàn)關(guān)系型數(shù)據(jù)庫?

        來源:千鋒教育
        發(fā)布人:xqq
        時間: 2023-10-13 04:21:53 1697142113

        一、為什么不用key-value型數(shù)據(jù)庫實現(xiàn)關(guān)系型數(shù)據(jù)庫

        TiDB / CockroachDB 都是基于 KV 模型做的分布式關(guān)系型數(shù)據(jù)庫。TiDB 實際上是構(gòu)建在 TiKV + pd 這一分布式 KV 存儲上的數(shù)據(jù)庫。所有表都以行的形式存在 KV 數(shù)據(jù)庫里。

        e.g. TiDB 表 a 的某一行,主鍵為 b,就會變成 TiKV 里的一個 KV pair。key 為 table id + primary key, value 為這一行所有列的值。

        在繼續(xù)回答之前先定義一下 KV 型數(shù)據(jù)庫,區(qū)分開存儲引擎和基于 KV 的關(guān)系型數(shù)據(jù)庫。RocksDB 是 KV 型數(shù)據(jù)庫(或者說單機 KV 存儲引擎);TiDB 是基于 KV 存儲引擎做的分布式關(guān)系型數(shù)據(jù)庫。

        至于“日常業(yè)務(wù)中的很多簡單查詢”是否用基于 KV 的數(shù)據(jù)庫更好,可以先從存儲引擎的角度看。

        從存儲引擎的角度來講,不管是 MySQL InnoDB 的 B+ 樹,還是基于 LSM-Tree KV 存儲引擎的 MyRocks / CockroachDB / TiDB,跑一個 SELECT * WHERE pk = 1; 讀的路徑應(yīng)該不會有太大的區(qū)別,無非是根據(jù) sort key 定位對應(yīng)的 page / block 然后把一行撈出來,所以沒有好壞之分。

        與此同時,如果這些“簡單查詢”就是直接跑在 KV 存儲引擎上的(比如問題中提到的 RediSQL),只是簡單地把 SQL 翻譯成了 KV 操作,還需要考慮對表的操作是否有事務(wù)隔離性的要求。即使是“簡單的”操作,e.g.

        UPDATE x = x + 1;

        也需要考慮事務(wù)的隔離性。對于 KV 存儲引擎來講,大多數(shù)引擎只提供點查、刪除、scan 的接口,開發(fā)者要在上面自己實現(xiàn)一層事務(wù)層。特別是在分布式場景下,這個事情就有點復(fù)雜了,和分布式關(guān)系型數(shù)據(jù)庫所面臨的問題是一樣的。

        所以講到底,如果要在 KV 引擎上實現(xiàn)關(guān)系型數(shù)據(jù)庫,即使只支持簡單的 query,也需要處理很多 KV 引擎本身沒有考慮到的事情,比如事務(wù)、持久化(對于 in-memory engine 來說)等等。

        延伸閱讀:

        二、MongoDB是什么

        非關(guān)系型數(shù)據(jù)庫(nosql ),屬于文檔型數(shù)據(jù)庫。MongoDB采用類JSON的documents來存儲數(shù)據(jù)。數(shù)據(jù)結(jié)構(gòu)由鍵值(key=>value)對組成。

        MongoDB采用動態(tài)數(shù)據(jù)模型schema,這意味著不需要預(yù)先定義表的數(shù)據(jù)類型和字段名。當(dāng)MongoDB需要更新文檔documents的時候,可以輕松增加新的字段名或者刪除舊的字段。MongoDB讓數(shù)據(jù)結(jié)構(gòu)更加層級化,因而存儲數(shù)組等復(fù)雜數(shù)據(jù)結(jié)構(gòu)。 在同一個集合collection中,文檔document對字段也沒有強約束,因此更容易設(shè)計差異化的數(shù)據(jù)結(jié)構(gòu)。

        聲明:本站稿件版權(quán)均屬千鋒教育所有,未經(jīng)許可不得擅自轉(zhuǎn)載。
        10年以上業(yè)內(nèi)強師集結(jié),手把手帶你蛻變精英
        請您保持通訊暢通,專屬學(xué)習(xí)老師24小時內(nèi)將與您1V1溝通
        免費領(lǐng)取
        今日已有369人領(lǐng)取成功
        劉同學(xué) 138****2860 剛剛成功領(lǐng)取
        王同學(xué) 131****2015 剛剛成功領(lǐng)取
        張同學(xué) 133****4652 剛剛成功領(lǐng)取
        李同學(xué) 135****8607 剛剛成功領(lǐng)取
        楊同學(xué) 132****5667 剛剛成功領(lǐng)取
        岳同學(xué) 134****6652 剛剛成功領(lǐng)取
        梁同學(xué) 157****2950 剛剛成功領(lǐng)取
        劉同學(xué) 189****1015 剛剛成功領(lǐng)取
        張同學(xué) 155****4678 剛剛成功領(lǐng)取
        鄒同學(xué) 139****2907 剛剛成功領(lǐng)取
        董同學(xué) 138****2867 剛剛成功領(lǐng)取
        周同學(xué) 136****3602 剛剛成功領(lǐng)取
        相關(guān)推薦HOT
        訪問網(wǎng)頁的背后發(fā)生了什么?

        一、域名解析當(dāng)我們在瀏覽器中輸入網(wǎng)頁的域名時,首先需要進行域名解析。瀏覽器會將域名發(fā)送給本地域名服務(wù)器(DNS),以獲取對應(yīng)的IP地址。如...詳情>>

        2023-10-13 06:04:09
        外企銀行一般用什么linux版本系統(tǒng)和數(shù)據(jù)庫呢?

        一、外企銀行一般用什么linux版本系統(tǒng)和數(shù)據(jù)庫Linux有非常多的發(fā)行版本,從性質(zhì)上劃分,大體分為由商業(yè)公司維護的商業(yè)版本與由開源社區(qū)維護的免...詳情>>

        2023-10-13 05:50:44
        為什么Python開發(fā)世界持續(xù)被Django統(tǒng)治那么久?

        一、全功能的Web框架Django是一個全功能的Web框架,它提供了許多開箱即用的功能和組件,包括路由系統(tǒng)、模板引擎、ORM(對象關(guān)系映射)工具、表...詳情>>

        2023-10-13 05:41:39
        Binder到底是什么?

        一、Binder的定義Binder是Android系統(tǒng)中的一種進程間通信(IPC)機制,用于不同進程間的數(shù)據(jù)傳遞和通信。它通過跨進程的方法調(diào)用,允許一個進程...詳情>>

        2023-10-13 05:40:00
        Oracle新出的數(shù)據(jù)庫Oracle21c怎么樣?

        一、Oracle21c怎么樣Oracle 考慮到 2020 年我們的客戶將面臨前所未有的經(jīng)濟和業(yè)務(wù)中斷。我們決定不將 Database 20c Preview 版本升級為 General...詳情>>

        2023-10-13 05:34:16
        快速通道
        逊克县| 绥阳县| 新兴县| 高阳县| 濉溪县| 闸北区| 财经| 乌什县| 兴和县| 沂水县| 东山县| 渝北区| 卓尼县| 龙口市| 积石山| 宁阳县| 永定县| 田林县| 白银市| 专栏| 大埔县| 清水县| 涟源市| 永州市| 友谊县| 元氏县| 天水市| 乌兰县| 宁武县| 庆云县| 长丰县| 塔河县| 交口县| 株洲县| 葫芦岛市| 毕节市| 北川| 永定县| 巴楚县| 深泽县| 任丘市|