484
iPhone_iPad_Mac_手机_平板_苹果apple
基础操作(建库、建分布式分区表)__快速入门_云数据库 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-阿里云