GaussDB 数据库设计规范

1 背景

为了使用数据库的健全与运维的便捷,GaussDB数据库推出数据库设计规范。

2 数据库设计规范内容

**规范1:**使用JDBC客户端连接数据库时必须指明数据库名。

JDBC连接时必须指明数据库名,具体格式为:

复制代码
jdbc:gaussdb://ip:port/database_name

注:JDBC实例一旦创建,无法进行数据库切换。

**规范2:**数据库目前不支持不区分大小写的排序方式。

**规范3:**业务使用前必须由系统管理员为业务创建DATABASE、SCHEMA和USER,然后再赋予相关用户对应对象的权限。

**规范4:**业务使用前必须先创建业务数据库。

注:禁止使用数据库安装后默认创建的postgres数据库存储业务数据,建议根据业务情况创建业务自己的数据库。

**规范5:**创建数据库时必须指定字符集为UTF8,创建数据库时必须选择与客户端统一的编码字符集。

为了满足全球化需求,数据库编码应能够存储与标识绝大多数的字符,因此推荐使用UTF8。UTF8字符集与MySQL的UTF8MB4等价,能够支持emoji表情字符。如果客户端的编码方式与数据库的编码方式不统一,需要转码,会带来性能问题,同时,针对同编码的内核优化无法触发,影响查询效率。客户端的编码字符集需通过以下方式修改:

数据库的编码在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数据库设计规范,会让使用数据库少走弯路,也会使用数据库的更健全与运维的更便捷。

相关推荐
云飞云共享云桌面39 分钟前
医疗器械设备研发:多人同时操作 SolidWorks,怎样依靠单台服务器替代多工作站
运维·服务器·网络·数据库·制造
知行合一。。。6 小时前
RAG--03--Milvus基本用法
数据库·oracle·milvus
TDengine (老段)6 小时前
TDengine 线程模型 — 网络、调度、执行
大数据·数据库·物联网·制造·时序数据库·tdengine·涛思数据
上学的小垃圾7 小时前
01-数据库系统概述
数据库
二进制漫游记8 小时前
FastAPI项目集成 Qdrant向量数据库+阿里云Embedding完整实战(工具封装+业务调用)
数据库·python·阿里云·embedding
2501_928996228 小时前
GPT-4o换DeepSeek迁移成本多少?中科热备解析API聚合平台技术账本
前端·数据库·人工智能
泡干脆面就番茄10 小时前
MySQL_子查询_分页查询与联合查询详解
数据库·mysql
devpotato11 小时前
缓存与数据库更新顺序不一致问题
java·数据库·redis
天若有情67311 小时前
Node+MySQL小型全栈笔记项目实战课程分享
数据库·笔记·mysql
wxwx_bscxy32212 小时前
基于springboot宠物领养系统的设计与实现
数据库·spring boot·后端·spring·宠物