• TDSQL & TBASE 开发设计规范


    1.   TDSQL  开发规范

    总体架构

    分布式数据库(Tencent Distributed SQL,TDSQL)是腾讯打造的一款分布式数据库产品,具备强一致高可用、全球部署架构、分布式水平扩展、高性能、企业级安全等特性,同时提供智能 DBA、自动化运营、监控告警等配套设施,为客户提供完整的分布式数据库解决方案。目前 TDSQL 已经为超过500+的政企和金融机构提供数据库的公有云及私有云服务,客户覆盖银行、保险、证券、互联网金融、计费、第三方支付、物联网、互联网+、政务等领域。TDSQL 亦凭借其高质量的产品及服务,获得了多项国际和国家认证,得到了客户及行业的一致认可。

    总体架构如下:

     

    计算节点[sql引擎]

    l  SQ引擎也会被叫做Proxy 或网关

    l  在TDSQL中位于接入层的位置,属于CPU密集型服务

    l  SQL引擎没有主备之分,本身无状态,多节点部署

     

    数据节点

    l  数据节点上部署MYSQL数据库服务

    l  Agent属于旁路模块,主要承担MYSQL实例的状态监控

    l  MYSQL实例通过AGENT和TDSQL集群建立联系

    l  SET:TDSQL最小数据单无, 包含一主N备 ,N+1个数据节点

     

    设计规范

    l  充分考虑业务逻辑和数据分离

    l  尽量避免使用自定义函数,存储过程,触发器和视图

    l  数据库管理和使人员权限分离

    l  充分考虑数据增长模型,决策是否采用SHARD模式

    l  充公考虑业务可用性数据,可靠性需求,设计合适的备份和恢复策略

    l  使用InnoDB存储引擎(默认)

    l  使用UTF8或UTF8MB4字符集

    l  不在数据库中存储图片,二进制文件等大数据

    l  提前规划好单表规模,行数和大小

    l  对象命名要使用富有意义英文词汇,不要使用SQL关键字和特殊字符

    l  字段属性尽量加上NOT NULL 约束以及默认值

    l  数据库用户权限授权按照最小分配原则

    l  除核心维护人员外,其他用户不能拥有SUPER权限帐号

    l  避免使用简单密码

    l  开发,测试和 生产环境中用户权限 设置要保持一至

    l  严格禁止在数据库存储任何形式的密码明文。

    开发规范

    l  合理使用USE INDEX 和 IGNORE INDEX 进行索引的选择

    l  查询条件尽量使用索引

    l  注意字段类型,避免类型转换

    l  尽量不要让数据库做算术运算,交给应用层来做

    l  尽量不要直接select * , 直接列出需要查询的字段

    l  Where 子句使用原则:尽量使用索引,尽量简单,尽量匹配更少的行

    l  LIKE 子句的条件中,%不要是第一个字符,尽量靠后

    l  表尽量避免用去类似count(*) 的全表扫描查询。

    2.   TBASE 开发设计规范

    设计规范

    l  充分考虑业务逻辑和数据分离

    l  尽量不使用外键

    l  尽量避免使用自定义函数,存储过程和触发器

    l  充分考虑数据增长模型,决定表的存储方式

    l  充分考虑业务可用性和可靠性要求,设计合适的备份和恢复策略

    l  避免在数据库中存储图片二进制等大数据

    l  对象命名要使用富有意义词汇,不使用SQL关键字和特殊字符

    l  数据库用户权限授权按照最小分配原则

    l  除核心维护人员外,其他用户不能拥有SUPER权限帐号

    l  避免使用简单密码

    l  开发,测试和 生产环境中用户权限 设置要保持一至

    l  严格禁止在数据库存储任何形式的密码明文。

    命名规范

    l  小写字母,下划线组合。不使用双引号,除非必须包含大写字母或都特殊字符

    l  长度不超过63个字符

    l  不建议用pg_或pgxc_ 开头,禁止使用关键字

    l  见名知意

    表设计规范

    l  指定shard key 和 group

    l  最多支持1600个例

    l  不建议用public schema ,建议为每个应用分配单独的schema

    l  尽量添加comment

    l  多表中相同的列,必须保证列名,数据类型一致

    列设计规范

    l  能用数值类型的,不使用字符类型

    l  尽量用varchar2(n) 代替char(n)

    l  如有国际化业务的话,使用timestamp with time zone (timestamptz)

    l  使用numeric(precision,scale) 来存储货币金额和其它要求精确计算的数值

    l  尽量添加comment

    INDEX设计规范

    l  Tbase 提供的index类型:B-treee ,hash,gist,建议create 或 drop index  时加 concurrently 参数

    l  建议对where 中带多个字段and 条件的高频query,参考数据分布情况,建多个字段的联合index

    l  建议对固定条件的(一般有特定业务含义)且选择比较好(数据占比低的)query,建带where的 partial indexes

    l  建议对经常使用表达式作为查询条件的query,可以使用达式,或函数索引加速query

    l  建议不要建过多index ,一般不超过5个,核心table 可以适当增加index 个数

    l  建议使用count(1)  或 count(*)   来统计行数

    dml/ddl规范

    l  建议非必须时避免select * ,只取所需字段,以减少包括不限于网络带宽消耗。

    l  避免在业务高峰期做DDL操作

    l  大批量的数据入库,使用COPY代替insert

    l  避免大事务

  • 相关阅读:
    93.修改私有属性的值
    92.私有属性和私有方法
    91.多层继承
    python基础入门之四 —— 列表
    python基础入门之三 —— 字符串
    python基础入门之二 —— 条件、循环语句
    如何将本地图片变成图片链接
    python基础入门之一 —— 变量与运算符
    Elasticserach 配置文件详解
    elasticserch:性能优化策略
  • 原文地址:https://www.cnblogs.com/cqdba/p/13754960.html
Copyright © 2020-2023  润新知