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  避免大事務


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM