云服务器内容精选

  • 规则2.3 创建DATABASE时必须选择正确的数据库兼容模式 违反规则的影响: 选错数据库兼容模式,会导致从其他厂商的数据库迁移到 GaussDB (DWS)后出现行为不一致问题,且不支持直接修改数据库兼容模式,需重新建库重新导数 方案建议: 根据源库端数据库类型,在GaussDB(DWS)中建库时通过DBCOMPATIBILITY指定兼容模式,当前支持Teradata、Oracle和MySQL等多种兼容模式。
  • Schema设计建议 【关注】如果该用户不具有sysadmin权限或者不是该Schema的owner,要访问Schema下的对象,需要同时给用户赋予Schema的usage权限和对象的相应权限。 【关注】如果要在Schema下创建对象,需要授予操作用户该Schema的CREATE权限。 【关注】Schema的owner默认拥有该Schema下对象的所有权限,包括删除权限。删除权限影响较大,请谨慎使用。
  • Database设计建议 【建议】在实际业务中,根据需要创建新的Database,不建议直接使用集群默认的gaussdb数据库。 【建议】一个集群内,用户自定义的Database数量建议不超过3个。 【建议】为了适应全球化的需求,使数据库编码能够存储与表示绝大多数的字符,建议创建Database的时候使用UTF-8编码。 【关注】创建Database时,需要重点关注字符集编码(ENCODING)和兼容性(DBCOMPATIBILITY)两个配置项。GaussDB(DWS)支持Oracle、Teradata和MySQL三种兼容模式,分别兼容Oracle、Teradata和MySQL语法,不同兼容模式下的语法行为可能有一些差异。详细内容可参考Oracle、Teradata和MySQL语法兼容性差异。 【关注】Database的owner默认拥有该Database下所有对象的所有权限,包括删除权限。删除权限影响较大,请谨慎使用。
  • GaussDB(DWS)数据库对象命名规则 数据库对象命名需要满足约束:长度不超过63个字符,以字母或下划线开头,中间字符可以是字母、数字、下划线、$。 【建议】避免使用保留或者非保留关键字命名数据库对象。 可以使用SELECT * FROM pg_get_keywords()查询GaussDB(DWS)的关键字,或者在《SQL语法参考》中“关键字”章节中查看。 【建议】避免使用双引号括起来的字符串来定义数据库对象名称,GaussDB(DWS)中使用双引号将数据库对象名称括起来时表示对大小写敏感。数据库对象名称大小写敏感会使定位问题难度增加。 【建议】数据库对象命名风格务必保持统一。 增量开发的业务系统或进行业务迁移的系统,建议遵守历史的命名风格。 数据库对象名称由字母、数字和下划线组成,并且不能由数字开头。建议使用多个单词组成,以下划线分割。 数据库对象名称最好能够望文知意,尽量避免使用自定义缩写(可以使用通用的术语缩写进行命名)。例如,在命名中可以使用具有实际业务含义的英文词汇或汉语拼音,但规则应该在集群范围内保持一致。 变量名的关键是要具有描述性,即变量名称要有一定的意义,变量名要有前缀标明该变量的类型。 【建议】表对象的命名应该可以表征该表的重要特征。例如,在表对象命名时区分该表是普通表、临时表还是非日志表: 普通表名按照数据集的业务含义命名。 临时表以“tmp_+后缀”命名。 非日志表以“ul_+后缀”命名。 外表以“f_+后缀”命名。 父主题: GaussDB(DWS)各对象设计详细规则
  • 创建数据库 使用CREATE DATABASE语句创建一个新的数据库。 1 CREATE DATABASE mydatabase; 创建数据库时,若数据库名称长度超过63字节,server端会对数据库名称进行截断,保留前63个字节,因此建议数据库名称长度不要超过63个字节,不要使用多字节字符作为对象名。(如果出现因为误操作导致在多字节字符的中间截断进而无法删除数据库对象的现象,请使用截断前的数据库对象名进行删除操作,或将该对象从各个数据库节点的相应系统表中依次删掉。) 数据库名称遵循SQL标识符的一般规则。当前用户自动成为此新数据库的所有者。 如果一个数据库系统用于承载相互独立的用户和项目,建议把它们放在不同的数据库里。 如果项目或者用户是相互关联的,并且可以相互使用对方的资源,则应该把它们放在同一个数据库里,但可以规划在不同的Schema中。 GaussDB(DWS)允许创建的数据库总数目上限为128个。 用户必须拥有数据库创建的权限或者是数据库的系统管理员权限才能创建数据库。
  • 模板和默认数据 GaussDB(DWS)提供了两个模板数据库template0、template1,以及一个默认的数据库gaussdb。 默认情况下,每个新创建的数据库都是基于一个模板数据库。GaussDB(DWS)数据库默认使用template1作为模板,编码格式为SQL_ASCII,且不允许自定义字符编码。若创建数据库时需指定字符编码,请使用template0创建数据库。 请避免使用客户端或其他手段连接及操作两个模板数据库。 通过“show server_encoding”命令可以查看当前数据库存储编码。
  • 选择数据类型 在字段设计时,基于查询效率的考虑,一般需要遵循以下原则: 尽量使用高效数据类型。 选择数值类型时,在满足业务精度的情况下,选择数据类型的优先级从高到低依次为整数、浮点数、NUMERIC。 当多个表存在逻辑关系时,表示同一含义的字段应该使用相同的数据类型。 对于字符串数据,建议使用变长字符串数据类型,并指定最大长度。请务必确保指定的最大长度大于需要存储的最大字符数,避免出现超出字段定义最大长度的异常报错而导致业务中断现象。除非明确知道数据类型为固定长度字符串,否则,不建议使用CHAR(n)、BPCHAR(n)、NCHAR(n)、CHARACTER(n)。 关于字符串类型的详细说明,请参见常用字符串类型介绍。
  • Database设计建议 在实际业务中,根据需要创建新的Database,不建议直接使用数据库实例默认的postgres数据库。 一个数据库实例内,用户自定义的Database数量推荐值为3个,不建议超过10个。用户自定义的Database数量过多会导致升级、备份等运维操作的效率降低。 为了适应全球化的需求,使数据库编码能够存储与表示绝大多数的字符,建议创建Database的时候使用UTF-8编码。 创建Database时,需要重点关注字符集编码(ENCODING)和兼容性(DBCOMPATIBILITY)两个配置项。GaussDB支持A、B、C和PG四种兼容模式,分别表示兼容O语法、MY语法、TD语法和POSTGRES语法,不同兼容模式下的语法行为存在一定差异,默认为A兼容模式。 Database的owner默认拥有该Database下所有对象的所有权限,包括删除权限。删除权限影响较大,请谨慎使用。
  • Schema设计建议 实际用户环境中Schema数量不建议超过100个。当数据库中存在大量Schema时,会导致gs_dump等依赖Schema数量的操作性能变慢。 如果该用户不具有sysadmin权限或者不是该Schema的owner,要访问Schema下的对象,需要同时给用户授予Schema的usage权限和对象的相应权限。 如果要在Schema下创建对象,需要授予操作用户该Schema的CREATE权限。 Schema的owner默认拥有该Schema下对象的所有权限,包括删除权限。删除权限影响较大,请谨慎使用。
  • 无法搜索到桶中对象或对象不存在返回403 OBS管理控制台和OBS Browser+支持通过前缀搜索对象,例如,您搜索“test”,搜索结果为以前缀为“test”的对象。如果您输入的不是待搜索对象名称的前缀,则搜索不到对象。例如,您待搜索对象名称为“testabc”,您输入“abc”搜索,则搜索不到“testabc”对象,只能搜索到名称以“abc”开头的对象。 访问对象,显示对象不存在,返回403:如果对象不存在,那么会返回404;返回403,是由于访问用户缺少列举桶内对象的权限(obs:bucket:ListBucket),需要给访问用户授予该权限,用于列举桶内对象和获取桶的元数据。 父主题: 桶和对象相关
  • 删除对象操作会同步复制到跨区域复制的桶中吗? 如果您通过OBS控制台设置跨区域复制规则,那么源桶的删除对象操作默认不会同步复制到目标桶中。 如果您通过API设置跨区域复制规则,那么源桶的删除对象操作是否会同步复制到目标桶中取决于DeleteData参数的设置: DeleteData参数值为Enabled,表示源桶的删除对象操作会同步复制到目标桶中。 DeleteData参数值为Disabled,表示源桶的删除对象操作不会同步复制到目标桶中。 启用跨区域复制规则后,符合以下条件的对象会复制到目标桶中: 新上传的对象(归档存储或深度归档存储对象除外)。 有更新的对象,比如对象内容有更新,或者某一对象跨区域复制成功后源桶对象ACL设置有更新。 桶中的历史对象(需要开启“同步历史对象”功能,且归档存储或深度归档存储对象除外)。 源桶中生命周期规则过期删除的对象不会被复制到目标桶中。 父主题: 跨区域复制
  • 选择分区方案 当表中的数据量很大时,应当对表进行分区,一般需要遵循以下原则: 使用具有明显区间性的字段进行分区,比如日期、区域等字段上建立分区。 分区名称应当体现分区的数据特征。例如,关键字+区间特征。 将分区上边界的分区值定义为MAXVALUE,以防止可能出现的数据溢出。 表1 表的分区方式及使用场景 分区方式 描述 Range 表数据通过范围进行分区。 Interval 表数据通过范围进行分区,超出范围的会自动根据间隔创建新的分区。 List 表数据通过指定列按照具体值进行分区。 Hash 表数据通过Hash散列方式进行分区。 典型的分区表定义如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 --创建Range分区表 CREATE TABLE staffS_p1 ( staff_ID NUMBER(6) not null, FIRST_NAME VARCHAR2(20), LAST_NAME VARCHAR2(25), EMAIL VARCHAR2(25), PHONE_NUMBER VARCHAR2(20), HIRE_DATE DATE, employment_ID VARCHAR2(10), SALARY NUMBER(8,2), COMMISSION_PCT NUMBER(4,2), MANAGER_ID NUMBER(6), section_ID NUMBER(4) ) PARTITION BY RANGE (HIRE_DATE) ( PARTITION HIRE_19950501 VALUES LESS THAN ('1995-05-01 00:00:00'), PARTITION HIRE_19950502 VALUES LESS THAN ('1995-05-02 00:00:00'), PARTITION HIRE_maxvalue VALUES LESS THAN (MAXVALUE) ); --创建Interval分区表,初始两个分区,插入分区范围外的数据会自动新增分区 CREATE TABLE sales (prod_id NUMBER(6), cust_id NUMBER, time_id DATE, channel_id CHAR(1), promo_id NUMBER(6), quantity_sold NUMBER(3), amount_sold NUMBER(10,2) ) PARTITION BY RANGE (time_id) INTERVAL('1 day') ( PARTITION p1 VALUES LESS THAN ('2019-02-01 00:00:00'), PARTITION p2 VALUES LESS THAN ('2019-02-02 00:00:00') ); --创建List分区表 CREATE TABLE test_list (col1 int, col2 int) partition by list(col1) ( partition p1 values (2000), partition p2 values (3000), partition p3 values (4000), partition p4 values (5000) ); --创建Hash分区表 CREATE TABLE test_hash (col1 int, col2 int) partition by hash(col1) ( partition p1, partition p2 ); 更多的表分区语法信息请参见CREATE TABLE PARTITION。
  • 规则详情 表1 规则详情 参数 说明 规则名称 obs-bucket-blacklisted-actions-prohibited 规则展示名 OBS桶策略中不授权禁止的Action 规则描述 OBS桶策略中授权任意禁止的Action给外部身份,视为“不合规”。 标签 obs、access-analyzer-verified 规则触发方式 配置变更 规则评估的资源类型 obs.buckets 规则参数 blockedActionsPatterns:禁止的action列表。
  • 运行示例 以Windows操作系统为例,运行obsutil help mb,查看创建桶命令的帮助文档。 obsutil help mb Summary: create a bucket with the specified parameters Syntax: obsutil mb obs://bucket [-acl=xxx] [-location=xxx] [-fs] [-az=xxx] [-sc=xxx] [-config=xxx] [-i=xxx] [-k=xxx] [-t=xxx] [-e=xxx] Options: -fs create a bucket that supports POSIX -az=xxx the AZ of the bucket, possible values are [multi-az] -sc=xxx the default storage class of the bucket, possible values are [standard|warm|cold|deep-archive] -acl=xxx the ACL of the bucket, possible values are [private|public-read|public-read-write] -location=xxx the region where the bucket is located -epid=xxx the enterprise project id of the bucket -kms=xxx the encryption id of the bucket -config=xxx the path to the custom config file when running this command -e=xxx endpoint -i=xxx access key ID -k=xxx security key ID -t=xxx security token 摘要: 按照用户指定的桶名和参数创建一个新桶 语法: obsutil mb obs://bucket [-fs] [-az=xxx] [-acl=xxx] [-sc=xxx] [-location=xxx] [-config=xxx] 选项: -fs 创建支持文件接口(POSIX)的桶 -az=xxx 创桶时可指定的可用区。支持的值:[multi-az] -acl=xxx 创桶时可指定的预定义访问策略。支持的值:[private|public-read|public-read-write] -sc=xxx 创桶时可指定的桶的默认存储类型。支持的值:[standard|warm|cold] -location=xxx 桶所在的区域 -config=xxx 运行当前命令时的自定义配置文件
  • 参数说明 参数 约束 描述 command 可选 查看某个具体命令的帮助文档,当前支持的命令如下: abort,删除分段上传任务 chattri,设置对象属性 cp,上传对象、复制对象、下载对象 ls,列举桶、列举对象、列举分段上传任务 mb,创建桶 mkdir,创建文件夹 mv,移动对象 restore,恢复归档存储对象 rm,删除桶、删除对象 sign,生成对象的下载链接 stat,查询桶属性、查询对象属性 sync,增量同步上传对象、增量同步复制对象、增量同步下载对象 archive,归档日志文件 clear,删除断点记录文件 config,更新配置文件 help,查看命令帮助 version,查看版本号