日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

微服务架构案例(03):数据库选型简介,业务数据规划设计

發布時間:2025/3/17 数据库 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 微服务架构案例(03):数据库选型简介,业务数据规划设计 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文源碼:GitHub·點這里 || GitEE·點這里

更新進度(共6節):

01:項目技術選型簡介,架構圖解說明
02:業務架構設計,系統分層管理
03:數據庫選型,業務數據設計規劃

一、數據庫選擇

1、數據庫分類

數據庫類型常見數據庫
關系型MySQL、Oracle、DB2、SQLServer等。
非關系型Hbase、Redis、MongodDB等。
行式存儲MySQL、Oracle、DB2、SQLServer等。
列式存儲Hbase、ClickHouse等。
分布式存儲Cassandra、Hbase、MongodDB等。
鍵值存儲Memcached、Redis、MemcacheDB等。
圖形存儲Neo4J、TigerGraph等。
文檔存儲MongoDB、CouchDB等。

2、數據庫選擇

基于特定的應用環境,選擇最適合的數據庫,建立數據存儲模式,使之能夠有效地存儲數據,滿足各種用戶的應用需求。例如:普通的業務庫,數據量不大情況下選擇MySQL;有頻繁的搜索操作,可以使用ElasticSearch;系統存在大量熱點數據,可以使用常見的緩存數據庫等。

3、微服務數據庫

微服務架構的一個關鍵點是數據庫設計規劃,基本原則是每個服務都有自己單獨的數據庫,而且只有微服務本身可以訪問這個數據庫。其他的服務要是想訪問,只能通過調用該服務對外提供的接口進行操作,這樣可以壓縮數據庫操作的接口,在問題排查和性能優化上都可以提供支持,這樣也使系統的框架更具有條理。該模式圖解如下:

微服務C通過微服務A操作數據庫A,或者通過微服務B操作數據庫B。

二、規劃業務數據庫

1、總體劃分

主要使用三種數據存儲:MySQL(劃分三個業務庫),ElasticSearch(單臺),Redis(單臺)。

2、用戶庫

(user-data)存儲用戶相關的數據結構,比如User信息,Token,操作日志等。

CREATE TABLE `hc_user_base` (`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主鍵id',`user_name` varchar(50) DEFAULT NULL COMMENT '用戶名',`pass_word` varchar(300) DEFAULT NULL COMMENT '加密密碼',`phone` varchar(30) DEFAULT NULL COMMENT '手機號',`email` varchar(50) DEFAULT NULL COMMENT '郵箱',`create_time` datetime DEFAULT NULL COMMENT '創建時間',`update_time` datetime DEFAULT NULL COMMENT '更新時間',`state` int(1) DEFAULT '0' COMMENT '狀態:0可用,1禁用',PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用戶表';

3、管理系統庫

(admin-data)存儲后臺微服務管理系統的支撐數據庫,例如定時器,管理員權限,配置字典等。

-- 管理員列表 CREATE TABLE `hc_admin_user` (`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主鍵id',`user_name` varchar(50) DEFAULT NULL COMMENT '用戶名',`pass_word` varchar(300) DEFAULT NULL COMMENT '加密密碼',`phone` varchar(30) DEFAULT NULL COMMENT '手機號',`email` varchar(50) DEFAULT NULL COMMENT '郵箱',`create_time` datetime DEFAULT NULL COMMENT '創建時間',`update_time` datetime DEFAULT NULL COMMENT '更新時間',`state` int(1) DEFAULT '0' COMMENT '狀態:0可用,1禁用',PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='管理用戶表';-- 角色和權限列表 CREATE TABLE `hc_role_info` (`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主鍵ID',`role_name` varchar(64) DEFAULT NULL COMMENT '角色名稱',`role_auth` varchar(64) DEFAULT NULL COMMENT '角色權限',`create_time` datetime DEFAULT NULL COMMENT '添加時間',PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='系統角色表';-- 定時器列表 CREATE TABLE `schedule_job` (`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '任務id',`bean_name` varchar(200) DEFAULT NULL COMMENT 'spring bean名稱',`params` varchar(2000) DEFAULT NULL COMMENT '參數',`cron_expression` varchar(100) DEFAULT NULL COMMENT 'cron表達式',`status` tinyint(4) DEFAULT NULL COMMENT '任務狀態 0:正常 1:暫停',`remark` varchar(255) DEFAULT NULL COMMENT '備注',`create_time` datetime DEFAULT NULL COMMENT '創建時間',PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='定時任務';

4、數據分析庫

(report-data)存儲數據歸檔的報表,分析結果等,案例主要演示把用戶的搜索行為進行分析,存儲到報表庫。

-- 書籍搜索記錄 CREATE TABLE `hc_search_book` (`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主鍵ID',`user_id` int(11) DEFAULT NULL COMMENT '用戶ID',`book_id` int(11) DEFAULT NULL COMMENT '書籍ID',`book_name` varchar(100) DEFAULT NULL COMMENT '書籍名稱',`search_time` datetime DEFAULT NULL COMMENT '搜索時間',PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='書籍被搜索記錄';-- 關鍵詞搜索記錄 CREATE TABLE `hc_search_key_word` (`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主鍵ID',`user_id` int(11) DEFAULT NULL COMMENT '用戶ID',`key_word` varchar(50) DEFAULT NULL COMMENT '關鍵詞',`search_num` int(11) DEFAULT NULL COMMENT '搜索次數',PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='關鍵詞搜索記錄';

5、搜索引擎庫

(es-data)存儲用戶的搜索數據,可以基于MySQL庫動態實時的導入到ES服務。

-- 書籍搜索信息表 CREATE TABLE `hc_book_info` (`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主鍵ID',`book_name` varchar(100) DEFAULT NULL COMMENT '書籍名稱',`book_author` varchar(100) NOT NULL DEFAULT '0' COMMENT '作者',`book_desc` varchar(200) DEFAULT NULL COMMENT '簡介',`book_press` varchar(100) NOT NULL DEFAULT '0' COMMENT '出版社',`create_time` datetime DEFAULT NULL COMMENT '創建時間',`update_time` datetime DEFAULT NULL COMMENT '更新時間',`state` int(1) DEFAULT '0' COMMENT '狀態:0可用,1刪除',PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='書籍信息表';

三、數據庫設計總結

數據庫設計是微服務設計的一個核心點,基本原則是每個微服務都有自己單獨的數據庫,而且只有微服務本身可以訪問這個數據庫。在微服務架構中,數據庫設計首先要滿足用戶的需求,便于維護和擴展,具有很好的讀寫性能,還可以幫助開發人員理解和管理系統。

四、源代碼地址

GitHub·地址 https://github.com/cicadasmile/husky-spring-cloud GitEE·地址 https://gitee.com/cicadasmile/husky-spring-cloud

總結

以上是生活随笔為你收集整理的微服务架构案例(03):数据库选型简介,业务数据规划设计的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。