484
魔獸
基礎操作(建庫、建分布式分區表)__快速入門_雲數據庫 HybridDB-阿裏雲
雲數據庫HybridDB(ApsaraDB HybridDB)是一種在線MPP大規模並行處理數據倉庫服務。雲數據庫HybridDB基於Greenplum Database開源數據庫項目,並由阿裏雲深度擴展支持OSS存儲、JSON數據類型、HyperLogLog預估分析等功能特性。
對基於Greenplum Database的操作,整體與Greenplum Database開源數據庫一致,包括schema、類型支持、用戶權限等。除了Greenplum Database開源數據庫自身的一些特有的操作,如分布表、AO表等,其他操作皆可參考PostgreSQL。
當前雲數據庫HybridDB對並沒有開放DB實例的superuser權限,對應的則是rds_superuser,這一點與ApsaraDB For RDS(PostgreSQL)中的權限體係一致。
創建DB
雲數據庫HybridDB中創建DB的操作與PG相同,可以通過SQL來執行,如psql連接到GP後執行:
=> create database mygpdb;
CREATE DATABASE
=> c mygpdb
psql (9.4.4, server 8.3devel)
You are now connected to database "mygpdb" as user "mygpdb".
mygpdb=>
創建分布表
雲數據庫HybridDB中,表是分布在所有的Segment上的,其分布規則是HASH或者隨機。在建表的時候,指定分布鍵;當導入數據的時候,會根據分布鍵計算得到的HASH值分配到特定的Segment上。
=> create table vtbl(id serial, key integer, value text, shape cuboid, location geometry, comment text) distributed by (key);
CREATE TABLE
當不指定分布鍵的時候(即不帶後麵的”distributed by (key)”),GP會默認對id字段以round-robin的方式進行隨機分配。
分布鍵
分布鍵對於查詢性能至關重要。均勻為分布鍵選擇的第一大原則,選取更有業務意義的字段,並非必須選擇原庫的主鍵。參考中,《Greenplum 數據庫最佳實踐》做了很好的說明。
查詢
構造數據:
- 創建隨機字符串生成函數和類型
CREATE OR REPLACE FUNCTION random_string(integer) RETURNS text AS $body$
SELECT array_to_string(array
(SELECT substring('0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'
FROM (ceil(random()*62))::int
FOR 1)
FROM generate_series(1, $1)), ''); $body$ LANGUAGE SQL VOLATILE;
CREATE TYPE cuboid AS (LENGTH integer, width integer, height integer);
- 創建分布表和構造數據
CREATE TABLE tbl(id serial, KEY integer, value text, shape cuboid, locate geometry, COMMENT text) distributed by (key);
INSERT INTO tbl(KEY, COMMENT, shape, locate, value) SELECT KEY, COMMENT, shape, ST_GeomFromText(locate) AS locate, value FROM (SELECT (a.t + 1) AS KEY, random_string(ceil(random() * 24)::integer) AS COMMENT, row(ceil(random() * 36 + 49), ceil(random() * 6 + 99), ceil(random() * 12 + 199))::cuboid AS shape, 'POINT(' || ceil(random() * 36 + 99) || ' ' || ceil(random() * 24 + 50) || ')' AS locate, (CASE WHEN a.b = 1 THEN 'red' WHEN a.b = 2 THEN 'green' WHEN a.b = 3 THEN 'yellow' WHEN a.b = 4 THEN 'blue' END) AS value FROM (SELECT ceil(random() * 4) b, t FROM generate_series(0, 99999) AS t) AS a) AS t;
- 查詢
=> select * from vtbl where key = 13944;
id | key | value | shape | locate | comment
--------+-------+-------+--------------+--------------------------------------------+----------------
113944 | 13944 | red | (84,102,206) | 01010000000000000000405D400000000000C05140 | 22EaPlVqvfSgpq
(1 row)
Time: 513.101 ms
- PG上的查詢
=> select * from tbl where key = 13944;
id | key | value | shape | locate | comment
-------+-------+-------+--------------+--------------------------------------------+--------------
13944 | 13944 | green | (55,105,207) | 01010000000000000000C05C400000000000004C40 | 3wQrCJqnHPds
(1 row)
Time: 1162.243 ms
在同樣的表結構、記錄數和沒有添加任何索引的情況下,GP的查詢要比PG的快一些。這個GP的實例是兩個Segments,當記錄數更多、Segments更多的時候,理論上差距會更明顯。
參考
最後更新:2016-12-01 11:04:17
上一篇:
功能與限製__快速入門_雲數據庫 HybridDB-阿裏雲
下一篇:
用戶權限管理__快速入門_雲數據庫 HybridDB-阿裏雲
全方位安全服務__使用金融雲產品_金融雲-阿裏雲
媒體播放器使用指南___視頻專區_媒體轉碼-阿裏雲
DRDS常見問題__常見問題_產品使用問題_分布式關係型數據庫 DRDS-阿裏雲
蘋果ATS - 證書選擇及配置__常見問題_產品常見問題_證書服務-阿裏雲
曆史更新__產品簡介_阿裏綠網-阿裏雲
solr語法轉化__功能篇_最佳實踐_開放搜索-阿裏雲
熱映電影_阿裏雲幫助中心-阿裏雲,領先的雲計算服務提供商
高可靠性__產品優勢_產品簡介_雲數據庫 RDS 版-阿裏雲
創建磁盤__磁盤相關接口_API 參考_雲服務器 ECS-阿裏雲
阿裏雲與政府打造城市大腦,120一唿即到的日子來了
相關內容
常見錯誤說明__附錄_大數據計算服務-阿裏雲
發送短信接口__API使用手冊_短信服務-阿裏雲
接口文檔__Android_安全組件教程_移動安全-阿裏雲
運營商錯誤碼(聯通)__常見問題_短信服務-阿裏雲
設置短信模板__使用手冊_短信服務-阿裏雲
OSS 權限問題及排查__常見錯誤及排除_最佳實踐_對象存儲 OSS-阿裏雲
消息通知__操作指南_批量計算-阿裏雲
設備端快速接入(MQTT)__快速開始_阿裏雲物聯網套件-阿裏雲
查詢API調用流量數據__API管理相關接口_API_API 網關-阿裏雲
使用STS訪問__JavaScript-SDK_SDK 參考_對象存儲 OSS-阿裏雲