HBase
HBase行鎖機制,保證對單行資料操作的原子性,
ClickHouse
- 基本概念
資料的基本映射單元:一列資料用Column表示,一列資料中的單個值用Field表示,
資料型別:DataType,進行序列化和反序列化操作
Block:ClickHouse內部是面向Block操作的,Block是由Column,DataType和列名稱組成的, - 具體細節:
1)建表時,會指定欄位進行sort by,保證資料在磁盤上連續存盤,
2)ClickHouse通過對資料排序,然后對資料建立稀疏索引,MergeTree的索引粒度默認為8192,
3)在存盤目錄當中,每個磁區目錄中會有一個’primay.idx’的一級索引檔案,磁區下每一列都對應有一個列名.bin的檔案(存盤資料)和一個列名.mrk的檔案(這個是標記檔案,二進制進行存盤,會和索引檔案進行對齊,)
4)默認索引粒度為8192,相當于每一列中每8192條資料生成一個block,根據主鍵索引我們會知道資料到block的映射,根據標記檔案,它可以知道我的哪個block存在哪里,(一個標記由blockid,在資料檔案(.bin檔案)的偏移量,壓縮后塊中偏移量(會出現多個block在一個壓縮塊中,因為如果是int型別的資料,一個資料一個位元組,8192個資料才8KB,這樣完全沒必要壓縮,ck會根據最小64KB,最大1MB的資料量進行壓縮,如果一個block塊資料量不夠,會繼續和下一個bolck的資料一起進行壓縮)), - LSM演算法:
1)寫入資料時,先記錄日志
2)把資料放到記憶體中進行使用(CK這里是insert一次資料,在記憶體中排完序,然后就直接寫入磁盤,)
3)記憶體滿了,進行資料的溢寫
4)定期進行資料的合并(CK在合并前進行查詢時,會查出多塊內容,但是每塊內容內是有序的,)
StarRocks
- 基本概念
一款極速全場景MPP分析型資料庫
1)極速:全面向量化
2)全場景:兼容MySQL協議,訪問簡單,一堆疊式解決全部場景(通過星型模型,雪花模型等進行靈活的多表join)
3)MPP:大規模并行處理(任務分散計算,結果統一匯聚)
4)分析型資料庫:大規模的資料進行多維度的查詢分析 - 架構
1)FE節點:主備,存盤元資料,leader負責寫入資料到BE
2)BE節點:存盤資料 - 存盤
1)一張表中的列分為維度key列和指標value列;
2)列式存盤,每1024個資料為一個邏輯block,每64KB進行資料壓縮存盤;
3)索引:每一個block塊一個索引(邏輯塊的起始行號),根據這個索引去找到對應物理塊的索引(物理塊的起始行號), - 使用
1)建表
①明細模型:允許排序鍵重復,允許部分的維度列為排序鍵(eg:DUPLICATE KEY(event_time, event_type));
②聚合模型:不允許排序鍵重復,所有維度列都是排序鍵,需要對指標列指定聚合函式(eg:pv BIGINT SUM DEFAULT “0” COMMENT "total page views"和AGGREGATE KEY(site_id, city_code));
③更新模型:不允許排序鍵重復,所有維度列都是排序鍵,需要指定主鍵(eg:UNIQUE KEY(create_time, order_id)),更新模型對于插入的資料有一個版本的概念,每次查詢時,取最大版本的資料(版本較多時,查詢時實時性降低),
④主鍵模型:對比更新模型,可以支持頻繁的更新功能,主鍵模型會把主鍵索引加載記憶體當中,在更新資料時候,底層是先對已有資料進行標記洗掉,然后再插入新的資料(犧牲了一點寫入性能和記憶體占用,提高了查詢效率),
注意:建表時欄位的順序和最后指定排序鍵的順序需要一樣,
2)資料分布
①Range:資料按照區間進行分布節點
②Round-Robin:資料按照輪轉進行分布節點
③Hash:資料根據哈希函式進行分布到不同節點
④List:根據固定的離散值進行分布到不同節點
⑤組合方式:按照上述四種進行組合,eg:Range-Hash
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/431490.html
標籤:其他
