日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

遷移HBase至Hologres

本文為您介紹如何遷移HBase的語法和數(shù)據(jù)至Hologres上進(jìn)行數(shù)據(jù)開發(fā)。

背景信息

Hologres支持行存表模式,在該模式下,提供高性能基于主鍵的點(diǎn)查能力,廣泛應(yīng)用在Flink維度表、ID-Mapping、標(biāo)簽獲取、訂單明細(xì)查詢等場景中。相比傳統(tǒng)的HBase等技術(shù),Hologres保留了橫向擴(kuò)展能力和高性能的主鍵點(diǎn)查能力,同時解決了Schema Free帶來的數(shù)據(jù)質(zhì)量管理難題,也通過更少的外部依賴提升了系統(tǒng)的穩(wěn)定性。支持寬表設(shè)計、多流合并、前綴掃描(Prefix Scan)等多種HBase常用場景。支持針對HBase接口平滑遷移的SDK。您可以從HBase遷移表和數(shù)據(jù)至Hologres獲取更好的數(shù)據(jù)開發(fā)體驗(yàn)。

Hologres與HBase對比

Hologres與HBase產(chǎn)品特性對比如下。

能力

HBase

Hologres

產(chǎn)品定位

分布式面向列簇的開源數(shù)據(jù)庫。

云原生分布式實(shí)時數(shù)倉。

系統(tǒng)架構(gòu)

存儲計算耦合,存儲依賴底層Hadoop分布式文件系統(tǒng)(HDFS),HDFS集群需要手動擴(kuò)容。HBase表根據(jù)Region大小進(jìn)行分區(qū),分別存儲在集群不同的節(jié)點(diǎn)上。

計算節(jié)點(diǎn)采用海量并行處理(MPP,Massively Parallel Processing)架構(gòu),基于存儲計算分離(Storage Disaggregation),計算和存儲資源獨(dú)立擴(kuò)展,支持根據(jù)不同業(yè)務(wù)場景對計算能力和存儲空間進(jìn)行配比,更加靈活、經(jīng)濟(jì)。

多態(tài)存儲

僅支持行存,以<rowkey, column, value, timestamp> 4元組形式存儲。

支持行存儲,列存儲,行列共存多種模式。多態(tài)存儲可以根據(jù)數(shù)據(jù)訪問模式的不同而使用靈活的存儲方式。

Schema表達(dá)能力

弱Schema,弱數(shù)據(jù)類型。

強(qiáng)Schema,豐富的數(shù)據(jù)類型。強(qiáng)Schema可以保證開發(fā)的效率,在數(shù)據(jù)質(zhì)量不可靠,數(shù)據(jù)接口不明確的情況下,更易于通過Schema排查開發(fā)問題。

全局排序

全局排序

局部排序,聚簇索引。

分片策略

支持預(yù)先分片和自動分片的模式。

支持哈希(Hash)和隨機(jī)分片的模式。

批量導(dǎo)入

支持,BulkLoad接口。

支持,BulkLoad接口(COPY)。

實(shí)時寫入

支持,寫入即可查。寫入系統(tǒng)吞吐量(TPS)受限于Compaction性能。

支持,寫入即可查。高TPS寫入。

實(shí)時更新

支持。

支持。

SQL支持

通過Phoenix擴(kuò)展支持,功能弱,不支持Join。受限于鍵值對(KV)存儲模式,SQL性能弱。

高度兼容PostgreSQL:協(xié)議兼容、語法兼容、生態(tài)兼容。

存儲能力

基于HDFS,用戶自行維護(hù)集群,集群會自動同步數(shù)據(jù)至多副本,存儲能力與集群規(guī)模有關(guān),支持線性擴(kuò)展,LSM-Tree數(shù)據(jù)結(jié)構(gòu),多種壓縮算法。

基于分布式文件系統(tǒng)Pangu/HDFS,存儲能力與集群規(guī)模有關(guān),支持線性擴(kuò)展,單表最大容量3PB+;多種存儲模式和多種壓縮算法賦能存儲。

查詢及分析能力

原生僅支持點(diǎn)查(GET)和掃描(SCAN)。點(diǎn)查每秒查詢率(QPS,Queries per second)高,SCAN性能弱。Phoenix SQL通過Coprocessor支持,性能弱,不支持復(fù)雜計算,不支持聯(lián)機(jī)分析處理(OLAP,Online Analytical Processing)場景。

億級以上數(shù)據(jù),實(shí)時查詢及分析亞秒級響應(yīng);Join能力強(qiáng)大。點(diǎn)查QPS高。支持OLAP場景。

聯(lián)邦計算

不支持。

支持離線實(shí)時聯(lián)邦計算,支持MaxCompute、OSS等外部表查詢加速。

備份及容災(zāi)

支持,在數(shù)據(jù)方面,具備大數(shù)據(jù)標(biāo)準(zhǔn)三副本保障。

支持,在數(shù)據(jù)方面,具備大數(shù)據(jù)標(biāo)準(zhǔn)三副本保障。

查詢語言

查詢語言

Java API(需要與其他框架共同使用,例如Apache Phoenix)。

PostgreSQL,無需額外結(jié)合其他組件和框架即可使用支持完備的SQL語法,DDL對象也更豐富,支持全Join關(guān)聯(lián)查詢。

DDL

支持(關(guān)鍵字:create,alter,drop,describe,list;對象:namespace,table,column family)。

支持(關(guān)鍵字:create,alter,drop;對象:database,table,view,schema,cast,extension,role,user,user mapping,group)。

DML

支持(關(guān)鍵字:put,get,scan,delete,truncate)。

支持(關(guān)鍵字:select,insert,update,delete)。

DCL

支持(關(guān)鍵字:grant,revoke,rollback)。

支持(關(guān)鍵字:grant,revoke,rollback)。

運(yùn)維

需自行運(yùn)維。

全托管,系統(tǒng)自動化感知集群的拓?fù)湫畔⒆兓脩魝?cè)無感知。

生態(tài)

HBase兼容Hadoop生態(tài)。

Hologres高度兼容PostgreSQL生態(tài)。

適用場景

海量存儲,非結(jié)構(gòu)化存儲,單點(diǎn)查詢性能優(yōu)異,寫密集型數(shù)據(jù)庫。

實(shí)時數(shù)倉,在線數(shù)據(jù)服務(wù)。聯(lián)通數(shù)據(jù)孤島,海量數(shù)據(jù)實(shí)時查詢及分析,彈性擴(kuò)展集群,完整SQL支持。

開發(fā)方式

應(yīng)用開發(fā)復(fù)雜,需要將業(yè)務(wù)分析的指標(biāo)、維度、表、聚合等概念,轉(zhuǎn)化為存儲的KeyValue概念,將應(yīng)用層查詢過濾場景翻譯為對Key的字節(jié)過濾操作,系統(tǒng)效率嚴(yán)重依賴Key設(shè)計的質(zhì)量。整個系統(tǒng)從數(shù)據(jù)錄入到數(shù)據(jù)分析查詢等復(fù)雜多樣的場景,依賴應(yīng)用層對KeyValue基礎(chǔ)接口的使用。

應(yīng)用開發(fā)簡單,面向Table開發(fā),使用SQL標(biāo)準(zhǔn)語句,適用于復(fù)雜多維分析,嵌套查詢,關(guān)聯(lián)查詢等場景。提供JDBC、ODBC接口,面向數(shù)據(jù)主題建模開發(fā)。從面向指標(biāo),面向?qū)挶黹_發(fā),轉(zhuǎn)化為Hologres面向主題域建模,減少了數(shù)據(jù)模型在采集端、處理端、分析端的異構(gòu)信息衰減,減少了數(shù)據(jù)加工的層次,提高了數(shù)據(jù)使用的靈活性。

語法遷移

  • SQL語法和常見命令映射

    Hologres支持HBase常見的基本語法,并提供SQL接口,以及Hologres Client客戶端SDK。

    HBase語法

    Hologres語法

    客戶端命令

    PUT

    insert into values on conflict

    HoloClient.put(Put(表名,主鍵值,數(shù)據(jù)列的值))

    DELETE

    delete from

    HoloClient.put(Delete(表名,主鍵值))

    SCAN

    select from where filter=XX

    HoloClient.scan(Scan(表名,主鍵值+主鍵范圍,返回列))

    GET

    select from where PK=XX

    HoloClient.get(Get(表名,主鍵值,返回列))

  • 寬表設(shè)計

    寬表是HBase最基本的數(shù)據(jù)模型,在Hologres中使用行存表,有關(guān)行存表的設(shè)計方案,請參見Key/Value查詢場景最佳實(shí)踐

    行存表可以支持3000列,列存表的列不建議超過1000列。

    由于TEXT類型會默認(rèn)創(chuàng)建Bitmap索引和字典編碼,因此對于超多列場景,不建議使用默認(rèn)設(shè)置,建議手工配置需要的Bitmap索引和字典編碼。

  • 多流合并

    多流合并是利用Hologres的局部更新能力,多個數(shù)據(jù)流同時寫入單一表,通過表的主鍵實(shí)現(xiàn)Merge即Join的效果。有關(guān)多流合并的實(shí)踐請參見Flink全托管概述

  • 前綴掃描

    前綴掃描是利用HBase的前綴順序特性,高效率過濾數(shù)據(jù),在Hologres通過Distribution Key和Clustering Key的設(shè)計實(shí)現(xiàn)相同的過濾效果。

    假如HBase的rowkey為[hash(pk0, pk1), pk0, pk1,..., pkN],Hologres應(yīng)設(shè)置Primary Key為(pk0, pk1,..., pkN)、Distribution Key為(pk0, pk1)、Clustering Key與Primary Key保持一致。

    • 那么支持前綴equals掃描的SQL如下:

      WHERE pk0=? AND pk1=? AND ... AND pkX=? ;
    • 支持前綴range掃描的SQL如下:

      WHERE pk0=? AND ... AND pkX=? AND pkX+1 BETWEEN ? AND ?;
    • 如果表的主鍵為(rowkey, ts),查詢命令如下:

      SELECT col1, col2, ts FROM tbl WHERE rowkey = '1234567890' AND ts BETWEEN 1637637479606 AND 1640229479607 LIMIT 100;

      這種條件下,適合Distribution key設(shè)計為rowkey,Clustering key設(shè)計為(rowkey, ts)的組合鍵。

    • 如果表的主鍵為 (rowkey, ts),查詢命令如下:

      SELECT col1, col2, ts FROM tbl WHERE rowkey = '1234567890' AND ts = 1637637479606;

      這種條件下,適合Distribution key設(shè)計為(rowkey, ts), Clustering key設(shè)計為(rowkey, ts)的組合鍵。

  • 批量更新

    Hologres支持Insert、Update、Insert on Conflict等多種更新方式,支持行更新、列更新和Upsert等場景,在實(shí)現(xiàn)批量更新場景下,寫入更新的吞吐量比較大,有可能影響線上對延遲敏感的在線服務(wù),這種情況建議通過寫入臨時表再原子替換的方式實(shí)現(xiàn)批量更新,類似BulkLoad模式,示例如下。

    --假設(shè)線上服務(wù)的表為 t_online;
    
    --創(chuàng)建臨時表
    BEGIN;
    CREATE TABLE t_tmp
    (
      ...
    )
    COMMIT;
    
    --向臨時表寫入數(shù)據(jù)
    INSERT INTO t_tmp SELECT * FROM t_offline;
    --更新統(tǒng)計信息
    vacuum t_tmp;
    analyze t_tmp;
    
    --在事務(wù)中,實(shí)現(xiàn)原子替換
    BEGIN;
    ALTER TABLE t_online rename TO t_online_outdate;
    ALTER TABLE t_tmp rename TO t_online;
    COMMIT;
    
    --延遲5s,讓針對老表上的查詢結(jié)束再刪除無用數(shù)據(jù)
    SELECT pg_sleep(5);
    DROP TABLE t_online_outdate;
  • OLAP

    Hologres不僅支持行存主鍵點(diǎn)查,也支持OLAP場景,在存儲上,可以設(shè)計為行列共存模式,在查詢時,查詢引擎根據(jù)查詢特征,選擇最佳的存儲結(jié)構(gòu),詳情請參見CREATE TABLE