[大資料搜尋資料庫YDB]YDB新功能介紹-視圖表

來源:互聯網
上載者:User

標籤:content   問題   ike   field   like   搜尋   src   double   lib   

YDB視圖表全庫資源匯聚搜尋高效解決方案

業務有成百上千張表,每張表有上百個列。
想要根據關鍵字搜尋含有該關鍵字的記錄怎麼辦? 每張表都寫一個sql嗎?每個列都要拼到where條件裡去搜尋嗎?no 其實對於資源匯聚類型的搜尋可以一條sql就搞定,又相容原先的表結構,業務其他部分依然可以單表查詢。
是不是有這樣一種情境,每張表的資料量都不多 ,但是你的表特別多,幾十張甚至幾百張表。 如果每個表都建立一個物理表,那麼是比較浪費資源的

  1. 每張表都要維護自己的BUFFER,弄不好就OOM,匯入效能實在太差.

  2. 都要單獨開個線程去維護這張表.
  3. 產生的索引都很小,但是檔案數量太多,頻繁合并索引導致namenode非常繁忙等等
    如今YDB的視圖表可以幫你解決這個問題。 視圖表示建立在物理表的基礎上的。一張物理表上面可以放很多視圖表,這些表統一管理,統一心跳,統一一個索引,對外部使用者來說對視圖表的查詢和對物理表的查詢,在使用上沒有什麼區別。 有了視圖表以後,原先需要為那些小業務分別建立表,單獨搭建叢集的問題也可以得到解決。 規模不大的業務,可以共用同一個叢集,共用同一個物理表,業務和業務之間是圖表隔離。
    視圖表並不真實儲存資料,如所示,視圖表通過映射將資料存放區在其對應的物理表中.

建立視圖表

create ydbview  ydbview_007(phonenum dblikebig [email protected],usernick string [email protected],ydb_sex string [email protected],ydb_province string [email protected],ydb_grade string [email protected],ydb_age string [email protected],ydb_blood string [email protected],ydb_zhiye string  [email protected],ydb_earn string [email protected],ydb_prefer string [email protected],ydb_consume string [email protected],ydb_day string [email protected],amtdouble tdouble [email protected],czylong tlong [email protected]_y_tlong_id [email protected],content dblikebig [email protected]);

1.如果不做配置,預設視圖表對應的物理表名稱為ydb_physical_table,所有的列均進行匯聚
2.在視圖表中欄位有三種展現方式 combineonly,fieldonly,all
1)指定combineonly的欄位將資料儲存在彙總列ydbview_like欄位中,在視圖表中不可見,物理表中可見
2)指定fieldonly的欄位在視圖表中可查,在物理表中不可查,不儲存在ydbview_like中
3)指定all的欄位資料在視圖表和物理表中均可查,並儲存在 ydbview_like 中一份
4)建立表時可以通過

amtlong tlong  [email protected]_y_tlong_id,

這種方式來指定視圖表與物理表中欄位的對應關係
5)如所示①部分指定視圖表對應的物理表名稱,通過修改physical_example 部分修改對應的物理表名。②部分是指定在不指定儲存策略的情況下,預設的儲存策略是 ‘all’策略,可修改。①②部分都是可選配置,可不添加,不添加則為預設參數 物理表名為ydb_physical_table 儲存策略為all

使用ydb提供的工具偽造一些資料

cd /opt/ydbsoftware/ya100hadoop fs -rm -r /data/example/quickstart/hadoop fs -mkdir -p /data/example/quickstart/hadoop jar ./lib/ydb-1.1.9-pg.jar cn.net.ycloud.ydb.server.reader.kafka.MrMakeShuData 30000000  /data/example/quickstart/1.txt

將資料匯入到視圖表中

cd /opt/ydbsoftware/ya100sh  ./bin/ydbimport.sh -ov -t ydbview_007 -p 3000w -tp txt  -f /data/example/quickstart -sp , -fl phonenum,usernick,ydb_sex,ydb_province,ydb_grade,ydb_age,ydb_blood,ydb_zhiye,ydb_earn,ydb_prefer,ydb_consume,ydb_day,amtdouble,amtlong,content

接下來我們驗證一下設定的參數是否生效
視圖表資料預覽

select * from ydbview_007 where ydbpartition=‘3000w‘ limit 10

結果

在這裡我們可以看到在視圖表中phonenum usernick ydb_sex ydb_province ydb_grade ydb_age,czylong中在視圖表中是不可見的
接下來我們看物理表

在物理表中我們可以看到 欄位 phonenum usernick ydb_sex ydb_province ydb_grade ydb_age ydb_consume ydb_day amtdouble amtlong content
這幾個列是可見的,

通過以上測試我們可以驗證之前的結論:
使用 all儲存方式的欄位,在視圖表和物理表中均可見,可以使用ydbview_like欄位進行模糊檢索.
使用combineonly欄位只能在物理表中可見,在視圖表中不可見,可以通過ydbview_like欄位模糊檢索.
使用fieldonly在物理表中不可見,只在視圖表中可見,不可使用ydbview_like欄位模糊檢索.

對於YDB視圖表的查詢方式與普通YDB物理表查詢方式是一樣的,視圖表對應的物理表查詢與普通的物理表有所不同

我們可以看到如果使用select * 的方式查詢到的物理表資料是兩個列,ydbview_name列儲存的是視圖表的名稱,ydbview_like 欄位儲存的是使用all,combineonly儲存方式的彙總列
,如果想要返回指定列的結果,需要在 select 後面指定想要查的欄位,例如

select phonenum,usernick from ydb_physical_table where ydbpartition=‘3000w‘ and ydbview_name=‘ydbview_007‘ limit 10


雖然可以返回資料,但是這些資料並不能用於檢索,要使用特定的方式

接下來我們通過desc ydbview_007的方式來查看ydbview_007對應的ydb物理表欄位名

在中我們可以看到左邊的紅色框中是視圖表欄位,右邊的紅色框中是指定的對應物理表欄位,如果在建表時未指定物理表對應欄位將會自動建立一個欄位進行關聯,在這裡我麼看到ydb_day的對應物理表欄位為‘v_1_y_string_id ’
接下來我們查詢這個欄位,並通過特定的方式過濾

 select ydbview_name,v_1_y_string_id,ydbview_like from ydb_physical_table  where ydbpartion = ‘3000w‘ and ydbview_like like ‘@@[email protected]‘ order by v_1_y_string_id desc  limit 10;

在中我們看到,我們查詢了phonenum 值為 13882555844的ydb_day資料,且按照該欄位進行排序,其中

ydbview_like like ‘@@[email protected]‘

是固定寫法 ‘@@欄位名@對應的值’

有關YDB視圖表使用方法就介紹到這裡了,如果您對於YDB的功能及產品還存有疑問可以通過以下方式擷取試用及支援人員
(如果您無法擷取清晰的二維碼資訊,可單擊放大↓)

[大資料搜尋資料庫YDB]YDB新功能介紹-視圖表

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.