微效劳架构案例(03):数据库选型简介,营业数据计划设想
2019-11-18杂谈搜奇网49°c
A+ A-本文源码: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