日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

SSTable数据结构

發布時間:2024/2/28 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SSTable数据结构 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

之前整理的 Bigtable 論文中文翻譯中提及了 SSTable,但在該論文中并沒有給出相應的數據結構。在查詢相關分布式的書籍后,找到了 SSTable 的數據結構,現將其作為筆記記錄下來。以下內容源自《大規模分布式存儲系統》。

?

哪里用到了 SSTable?

Bigtable 采用?LSM 樹存儲引擎。數據寫入時需要先寫操作日志,成功后應用到內存中的 MemTable 中,寫操作日志是往磁盤中的日志文件追加數據,很好地利用了磁盤設備的特性。當內存中的 MemTable 達到一定大小,需要將 MemTable 轉儲(Dump)到磁盤中生成 SSTable 文件。由于數據同時存在 MemTable 和可能多個 SSTable 中,讀取操作需要按從舊到新的時間順序合并 SSTable 和內存中的 MemTable 數據。數據在 SSTable 中連續存放,因此可以同時滿足隨機讀取和順序讀取兩種需求。為了防止磁盤中的 SSTable 文件過多,需要定時將多個 SSTable 通過 Compaction 過程合并(Merge)成一個 SSTable ,從而減少后續讀操作需要讀取的文件個數。一般情況下,如果寫操作比較少,我們總是能夠使得對每一份數據同時只存在一個 SSTable 和一個 MemTable,也就是說,隨機讀取和順序讀取都只需要訪問一次磁盤。插入、刪除、更新、增加等操作在 Merge-Dump 中都看成一回事,除了最早生成的 SSTable 外,SSTable 中記錄的只是操作,而不是最終的結果,需要等到讀取時才合并到最終結果。

?

Compaction 策略

Bigtable中包含三種 Compaction 策略:Minor Compaction、Merging Compaction 和 Major Compaction。其中,Minor Compaction 把內存中的?MemTable 轉儲到 GFS 中,Merging Compaction 和 Major ?Compaction 合并 GFS 中的多個 SSTable 文件生成一個更大的 SSTable。Minor ?Compaction 主要是為了防止內存占用過多,Merging 和 Major Compaction 則是為了防止讀取文件個數過多。Merging Compaction 和 Major?Compaction?的區別在于?Major?Compaction?會合并所有的 SSTable 文件和內存中的 MemTable,生成最終結果;而?Merging Compaction?生成的 SSTable 文件可能包含一些操作,比如刪除、增加等。

?

SSTable 數據結構

數據在 SSTable 中按照主鍵有序存儲,每個 SSTable 由若干個大小相近的數據塊組成,每個數據塊包含若干行。數據塊的大小一般在8~64KB之間,允許用戶配置。Tablet Server 的緩存包括兩種:塊緩存和行緩存。其中,塊緩存的單位為 SSTable 中的數據塊,行緩存的單位為一行記錄。隨機讀取時,首先查找行緩存;如果行緩存不命中,接著再查找塊緩存。另外,Bigtable 還支持布隆過濾器(Bloom Filter),如果讀取的數據行在 SSTable 中不存在,可以通過布隆過濾器發現,從而避免一次讀取 GFS 文件操作。注:布隆過濾器可以用于檢索一個元素是否在一個集合中。它的優點是空間效率和查詢時間都比一般的算法要好的多,缺點是有一定的誤識別率和刪除困難。

SSTable 中的數據按主鍵排序后存放在連續的數據塊(Block)中,塊之間也有序。接著,存放數據塊索引,由每個 Block 最后一行的主鍵組成,由于數據查詢中的 Block 定位。接著,存放布隆過濾器和表格的 Schema 信息。最后,存放固定大小的 Trailer 以及 Trailer 的偏移位置。

查找 SSTable 時,首先從子表的索引信息中讀取 SSTable Trailer 的偏移位置,接著獲取 Trailer 信息。根據 Trailer 中記錄的信息,可以獲取塊索引的大小和偏移,從而將整個塊索引加載到內存中。根據塊索引記錄的每個 Block 的最后一行的主鍵,可以通過二分查找定位到查找的 Block。最后將 Block 加載到內存中,通過二分查找 Block 中記錄的行索引查找到具體某一行。本質上看,SSTable 是一個兩級索引結構:塊索引以及行索引;而整個 ChunkServer 是一個三級索引結構:子表索引、塊索引以及行索引。

SSTable 分為兩種格式:稀疏格式和稠密格式。對于稀疏格式,某些列可能存在,也可能不存在,因此,每一行只存儲包含實際值的列,每一列存儲的內容為:<列ID,列值>(<Column ID, Column Value>); 而稠密格式中每一行都需要存儲所有列,每一列只需要存儲列值,不需要存儲列 ID,這是因為列 ID 可以從表格 Schema 中獲取。

假設有一張表格包含 10 列,列 ID 為 1~10,表格中有一行的數據內容為:

那么,采用稀疏格式存儲,內容為:<2, 20>,<3, 30>,<5, 50>,<7, 70>,<8, 80>;如果采用稠密格式存儲,內容為:null,20,30,null,50,null,70,80,null,null。

ChunkServer 中的 SSTable 為稠密格式,而 UpdateServer 中的 SSTable 為稀疏格式,且存儲了多張表格的數據。另外,SSTable 支持列組,將同一個列組下的多個列的內容存儲在一起。列組是一種行列混合存儲模式,將每一行的所有列分成多個組(稱為列組),每個列組內部按行存儲。

當一個 SSTable 中包含多個表格/列組時,數據按照[表格ID,列組ID,行主鍵]?([table_id, column group id, row_key]) 的形式有序存儲。

總結

以上是生活随笔為你收集整理的SSTable数据结构的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 色老头一区二区三区在线观看 | 免费av福利 | 久久丫精品国产亚洲av不卡 | 伊人www| 日干夜干天天干 | 国产av天堂无码一区二区三区 | 日本免费在线一区 | 国产91亚洲精品 | 国产一区二区精彩视频 | 激情小视频 | 国产精品久久久久久中文字 | 亚洲国产精华液网站w | 免费成人在线观看 | 极品美女被c | 中文一级片 | 欧美大片免费观看 | 国产一级在线 | 久久久观看 | 性生活视频网站 | 亚洲一区二区自拍偷拍 | 精品一区二区久久久久蜜桃 | 都市激情校园春色 | 影音先锋成人资源 | 一区二区三区啪啪啪 | 欧美阿v | 中文字幕乱码在线 | 北岛玲在线 | 国产精品人人人人 | 国产麻豆一级片 | 东京热无码av一区二区 | 日韩欧美卡一卡二 | 操夜夜| 美女国产毛片a区内射 | 成人高潮片免费 | 无码人妻熟妇av又粗又大 | 97福利视频 | 日本污网站 | 最近免费中文字幕大全免费版视频 | 国产精品日日摸夜夜爽 | 欧美老熟妇一区二区三区 | 成人黄色在线看 | www.浪潮av.com | 亚洲精品视频一区 | 综合伊人av| 日本一区免费视频 | 一区二区欧美视频 | 可以在线观看的av | 中国无码人妻丰满熟妇啪啪软件 | 91香草视频| 国产精品一区二区三区久久久 | 久久99精品国产麻豆婷婷 | 超碰777 | 中文人妻av久久人妻18 | 日本妈妈9 | 九九九免费 | 日本三级在线 | 中文字幕――色哟哟 | 91久久精品夜夜躁日日躁欧美 | 三及毛片 | 精品九九 | 天天做天天爱天天爽综合网 | 婷婷天堂网 | 伊人三级| 在厨房拨开内裤进入毛片 | 国产精品大片 | 中文字幕精品一区 | 可以看的av网址 | 色94色欧美sute亚洲线路二 | 欧美日韩一区二区在线 | 国产麻豆精品一区 | 露出调教羞耻91九色 | 91亚洲精品国偷拍自产在线观看 | 欧美午夜精品一区二区三区 | 久久亚洲综合色 | 亚洲一二三四视频 | 波多野结衣三区 | av三级网站 | 在线播放成人 | 亚洲在线观看免费视频 | 91在线视频播放 | √8天堂资源地址中文在线 欧美精品在线一区二区 | 一本色道久久综合亚洲精品酒店 | 51吃瓜网今日吃瓜 | 国产精品人人爽人人爽 | 午夜精品久久久久久久久久久久久蜜桃 | 丝袜人妻一区二区三区 | 国模无码视频一区二区三区 | 中文字幕乱码在线观看 | 久久丫精品久久丫 | 天天看黄色 | 茄子av在线 | 亚洲AV无码成人国产精品色 | 国产精品乱码久久久久 | 国产免费激情视频 | 亚洲AV无码国产精品播放在线 | 国产网友自拍 | 国内精品视频在线播放 | 天堂中文字幕 | 亚洲天堂av电影 |