GaussDB 数据库设计规范
1 背景
为了使用数据库的健全与运维的便捷,GaussDB数据库推出数据库设计规范。
2 数据库设计规范内容
规范1:使用JDBC客户端连接数据库时必须指明数据库名。
JDBC连接时必须指明数据库名,具体格式为:
jdbc:gaussdb://ip:port/database_name
注:JDBC实例一旦创建,无法进行数据库切换。
规范2:数据库目前不支持不区分大小写的排序方式。
规范3:业务使用前必须由系统管理员为业务创建DATABASE、SCHEMA和USER,然后再赋予相关用户对应对象的权限。
规范4:业务使用前必须先创建业务数据库。
注:禁止使用数据库安装后默认创建的postgres数据库存储业务数据,建议根据业务情况创建业务自己的数据库。
规范5:创建数据库时必须指定字符集为UTF8,创建数据库时必须选择与客户端统一的编码字符集。
数据库的编码在CREATE DATABASE时进行设置。
CREATE DATABASE tester WITH ENCODING = 'UTF8';
- 设置客户端连接参数,例如JDBC连接参数可通过在URL中追加characterEncoding和allowEncodingChanges参数。
jdbc:gaussdb://ip:port/database_name?characterEncoding=utf8&allowEncodingChanges=true
- 修改数据库GUC参数.
SET client_encoding = 'UTF8';
注:数据库一旦创建无法更改字符集。
建议1:从便捷性和资源共享效率上考虑,建议使用SCHEMA进行业务隔离。可以使用DATABASE和SCHEMA两种方式实现业务的隔离。区别在于:
DATABASE方式隔离的共享资源极少,可实现连接隔离、权限隔离等,隔离更加彻底。但DATABASE之间无法互相访问,JDBC建立连接时必须指明DATABASE,连接后无法切换DATABASE。
SCHEMA方式隔离的共用资源较多,可以通过GRANT与REVOKE语法便捷地控制不同用户对各SCHEMA及其下属对象的权限。
建议2:创建数据库时建议指定LC_CTYPE和LC_COLLATE,该参数将影响数据的排序顺序。
示例:
CREATE DATABASE SAMPLE_DB WITH LC_CTYPE = 'zh_CN.gbk' LC_COLLATE = 'zh_CN.gbk';
3 批注
合理遵守GaussDB数据库设计规范,会让使用数据库少走弯路,也会使用数据库的更健全与运维的更便捷。