
一、数据场景 1、表结构简介 任何工具类的东西都是为了解决某个场景下的问题,比如Redis缓存系统热点数据,ClickHouse解决海量数据的实时分析,MySQL关系型数据库存储结构化数据。数据的存储则需要设计对应的表结构,清楚的表结构,有助于快速开发业务,和理解系统。表结构的设计通常从下面几个方面考虑:业务场景、设计规范、表结构、字段属性、数据管理。
2、用户场景
例如存储用户基础信息数据,通常都会下面几个相关表结构:用户信息表、单点登录表、状态管理表、支付账户表等。
用户信息表
存储用户三要素相关信息:姓名,手机号,身份z,登录密码,邮箱等。
CREATE TABLE `ms_user_center` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '用户ID', `user_name` varchar(20) NOT NULL COMMENT '用户名', `real_name` varchar(20) DEFAULT NULL COMMENT '真实姓名', `pass_word` varchar(32) NOT NULL COMMENT '密码', `phone` varchar(20) NOT NULL COMMENT '手机号', `email` varchar(32) DEFAULT NULL COMMENT '邮箱', `head_url` varchar(100) DEFAULT NULL COMMENT '用户头像URL', `card_id` varchar(32) DEFAULT NULL COMMENT '身份z号', `user_sex` int(1) DEFAULT '1' COMMENT '用户性别:0-女,1-男', `create_time` datetime DEFAULT NULL COMMENT '创建时间', `update_time` datetime DEFAULT NULL COMMENT '更新时间', `state` int(1) DEFAULT '1' COMMENT '是否可用,0-不可用,1-可用', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用户表'; 单点登录表
用意是在多个业务系统中,用户登录一次就可以访问所有相互信任的业务子系统,是聚合业务平台常用的解决方案。
CREATE TABLE `ms_user_sso` ( `user_id` int(11) NOT NULL COMMENT '用户ID', `sso_id` varchar(32) NOT NULL COMMENT '单点信息编号ID', `sso_code` varchar(32) NOT NULL COMMENT '单点登录码,唯一核心标识', `log_ip` varchar(32) DEFAULT NULL COMMENT '登录IP地址', `create_time` datetime DEFAULT NULL COMMENT '创建时间', `update_time` datetime DEFAULT NULL COMMENT '更新时间', `state` int(1) DEFAULT '1' COMMENT '是否可用,0-不可用,1-可用', PRIMARY KEY (`user_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用户单点登录表'; 状态管理表
系统用户在使用时候可能出现多个状态,例如账户冻结、密码锁定等,把状态聚合到一起,可以更加方便的管理和验证。
CREATE TABLE `ms_user_status` ( `user_id` int(11) NOT NULL COMMENT '用户ID', `account_status` int(1) DEFAULT '1' COMMENT '账户状态:0-冻结,1-未冻结', `real_name_status` int(1) DEFAULT '0' COMMENT '实名认证状态:0-未实名,1-已实名', `pay_pass_status` int(1) DEFAULT '0' COMMENT '支付密码是否设置:0-未设置,1-设置', `wallet_pass_status` int(1) DEFAULT '0' COMMENT '钱包密码是否设置:0-未设置,1-设置', `wallet_status` int(1) DEFAULT '1' COMMENT '钱包是否冻结:0-冻结,1-未冻结', `email_status` int(1) DEFAULT '0' COMMENT '邮箱状态:0-未激活,1-激活', `message_status` int(1) DEFAULT '1' COMMENT '短信提醒开启:0-未开启,1-开启', `letter_status` int(1) DEFAULT '1' COMMENT '站内信提醒开启:0-未开启,1-开启', `emailmsg_status` int(1) DEFAULT '0' COMMENT '邮件提醒开启:0-未开启,1-开启', `create_time` datetime DEFAULT NULL COMMENT '创建时间', `update_time` datetime DEFAULT NULL COMMENT '更新时间', `state` int(1) DEFAULT '1' COMMENT '是否可用,0-不可用,1-可用', PRIMARY KEY (`user_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用户状态表'; 支付账户表
用户交易的核心表,存储用户相关的账户资金信息。
CREATE TABLE `ms_user_wallet` ( `wallet_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '钱包ID', `user_id` int(11) NOT NULL COMMENT '用户ID', `wallet_pwd` varchar(32) DEFAULT NULL COMMENT '钱包密码', `total_account` decimal(20,2) DEFAULT '000' COMMENT '账户总额', `usable_money` decimal(20,2) DEFAULT '000' COMMENT '可用余额', `freeze_money` decimal(20,2) DEFAULT '000' COMMENT '冻结金额', `freeze_time` datetime DEFAULT NULL COMMENT '冻结时间', `thaw_time` datetime DEFAULT NULL COMMENT '解冻时间', `create_time` datetime DEFAULT NULL COMMENT '创建时间', `update_time` datetime DEFAULT NULL COMMENT '更新时间', `state` int(1) DEFAULT '1' COMMENT '是否可用,0-不可用,1-可用', PRIMARY KEY (`wallet_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用户钱包'; 二、设计规范 1、涉及模块
通过上面几个表设计的案例,可以看到表设计关联到数据库的各个方面知识:数据类型,索引,编码,存储引擎等。表设计是一个很大的命题,不过也遵循一个基本规范:三范式。
2、三范式 基础概念
一范式
表的列的具有原子性,不可再分解,即列的信息,不能分解,关系型数据库MySQL、Oracle等自动的满足。
二范式
每个事实的数据记录只会出现一次, 不会冗余, 通常设计一个主键来实现。
三范式
要求一个表中不包含已经存在于其它表的非主键信息,例如部门和员工的信息,员工表包含部门表的主键ID,则可以关联获取相关信息,没必要在员工表保存相关信息。
优缺点对比
范式化设计
范式化结构设计通常更新快,因为冗余数据较少,表结构轻巧,也更好的写入内存中。但是查询起来涉及到关联,代价非常高,非常损耗查询性能。
反范式化设计
所有的数据都在一张表中,避免关联查询,索引的有效性更高,但是数据的冗余性极高。
建议结论
上述的两种设计方式在实际开发中都是不存在的,在实际开发中都是混合使用。比如汇总统计,缓存数据,都会基于反范式化的设计。
三、字段属性
合适的字段类型对于高性能来说非常重要,基本原则如下:简单的类型占用资源更少;在可以正确存储数据的情况下,选最小的数据类型。
1、数据类型选择 整数类型
TINYINT、SMALLINT、MEDIUMINT、INT、BIGINT,根据数据类型范围合理选择即可。
实数类型
FLOAT、DOUBLE、DECIMAL,建议资金货币相关类型使用高精度DECIMAL存储,或者把数据成倍扩大为整数,采用BIGINT存储,不过处理相对麻烦。
字符类型
CHAR、VARCHAR,长度不确定建议采用VARCHAR存储,不过VARCHAR类型需要额外开销记录字符串长度。CHAR适合存储短字符,或者定长字符串,例如MD5的加密结构。
时间类型
DATETIME、TIMESTAMP,DATETIME保存大范围的值,精度秒。TIMESTAMP以时间戳的格式,范围相对较小,效率也相对较高,所以通常情况建议使用。
MySQL的字段类型有很多种,可以根据数据特性选择合适的,这里只描述常见的几种类型。
2、基础用法 *** 作 数据类型
修改字段类型
ALTER TABLE ms_user_sso MODIFY state CHAR(1) DEFAULT '0' ; ALTER TABLE ms_user_sso MODIFY state INT(1) DEFAULT '1' COMMENT '状态:0不可用,1可用';
修改名称位置
ALTER TABLE ms_user_sso CHANGE log_ip login_ip VARCHAR(32) AFTER update_time ; 索引使用
索引类型:主键索引,普通索引,唯一索引,组合索引,全文索引。这里演示普通索引的 *** 作。MySQL的核心模块,后续详说。
添加索引
ALTER TABLE ms_user_wallet ADD INDEX user_id_index(user_id) ; CREATE INDEX state_index ON ms_user_wallet(state) ;
查看索引
SHOW INDEX FROM ms_user_wallet;
删除索引
DROP INDEX state_index ON ms_user_wallet ;
修改索引
不具有真正意义上的修改,可以把原有的索引删除之后,再次添加索引。
外键关联
用处:外键关联的作用保证多个数据表的数据一致性和完整性,建表时先有主表,后有从表;删除数据表,需要先删从表,再删主表。复杂场景不建议使用,实际开发中用的也不多。
添加外键
ALTER TABLE ms_user_wallet ADD CONSTRAINT user_id_out_key FOREIGN KEY(user_id) REFERENCES ms_user_center(id) ;
删除外键
ALTER TABLE ms_user_wallet DROP FOREIGN KEY user_id_out_key ; 四、表结构管理 1、查看结构 DESC ms_user_status ; SHOW CREATE TABLE ms_user_status ; 2、字段结构 添加字段 ALTER TABLE ms_user_status ADD `delete_time` datetime DEFAULT NULL COMMENT '删除时间' ; 删除字段 ALTER TABLE ms_user_status DROP COLUMN delete_time ; 3、修改表名 ALTER TABLE ms_user_center RENAME ms_user_info ; 4、存储引擎 存储引擎 SELECT VERSION() ; SHOW ENGINES ;
MySQL 56 支持的存储引擎有InnoDB、MyISAM、Memory、Archive、CSV、BLACKHOLE等。一般默认使用InnoDB,支持事务管理。该模块MySQL核心,后续详解。
修改引擎
数据量大的场景下,存储引擎修改是一个难度极大的 *** 作,容易会导致表的特性变动,引起各种后续反应,后续会详说。
ALTER TABLE ms_user_sso ENGINE = MyISAM ; 5、修改编码
表字符集默认使用utf8,通用,无乱码风险,汉字3字节,英文1字节,utf8mb4是utf8的超集,有存储4字节例如表情符号时使用。
查看编码 SHOW VARIABLES LIKE 'character%'; 修改编码 ALTER TABLE ms_user_sso DEFAULT CHARACTER SET utf8mb4; 五、数据管理 1、增删改查
添加数据
INSERT INTO ms_user_sso ( user_id,sso_id,sso_code,create_time,update_time,login_ip,state ) VALUES ( '1','SSO7637267','SSO78631273612', '2019-12-24 11:56:57','2019-12-24 11:57:01','127001','1' );
更新数据
UPDATE ms_user_sso SET user_id = '1',sso_id = 'SSO20191224',sso_code = 'SSO20191224', create_time = '2019-11-24 11:56:57',update_time = '2019-11-24 11:57:01', login_ip = '127001',state = '1' WHERE user_id = '1';
查询数据
一般情况下都是禁止使用 select *** 作。
SELECT user_id,sso_id,sso_code,create_time,update_time,login_ip,state FROM ms_user_sso WHERE user_id = '1';
删除数据
DELETE FROM ms_user_sso WHERE user_id = '2' ;
不带where条件,就是删除全部数据。原则上不允许该 *** 作,优化篇会详解。TRUNCATE TABLE也是清空表数据,但是占用的资源相对较少。
2、数据安全 不可逆加密
这类加密算法,多用来做数据验证 *** 作,比如常见的密码验证。
SELECT MD5('cicada')='94454b1241ad2cfbd0c44efda1b6b6ba' ; SELECT SHA('cicada')='0501746a2e4fd34e1d14015fc4d58309585edc7d'; SELECT PASSWORD('smile')='B4FB95D86DCFC3F33A3852714DC742C77504479D' ; 可逆加密
安全性要求高的系统,需要做三级等保,对数据的安全性极高,数据在存储时必须加密入库,取出时候需要解密,这些就需要可逆加密。
SELECT DECODE(ENCODE('123456','key_salt'),'key_salt') ; SELECT AES_DECRYPT(AES_ENCRYPT('cicada','salt123'),'salt123');
上述数据安全的管理,也可以基于应用系统的服务(代码)层进行处理,相对专业的流程是从数据生成源头处理,规避数据传递过程泄露,造成不必要的风险。
1 系统概述
国内领先的支持C-S和B-S架构的单点登录实现机制UTrust SSO(Single sign-on)系统是针对国内企事业信息化发展现状而开发的应用系统管理软件。面对用户的重复登陆,系统管理员繁琐的账号管理工作和系统设置工作,以及如何控制用户的访问权限等问题,UTrust SSO提供了一个完善的解决方案,在异构的IT系统中实现应用系统单点登录,简化用户的登录过程,同时提供集中和便捷的身份管理、安全的认证机制、权限管理和审计,以满足企业对信息系统使用的方便性和安全管理的需求。
2 系统功能和特点
UTrust SSO单点登录系统提供灵活模块化的解决方案,用户可以将后台应用系统(B/S结构的WEB应用系统和C/S结构的应用系统)和UTrust SSO单点登录系统无缝整合在一起,无须修改原有应用系统,系统主要功能和特点如下:
即插即用方式实现单点登录
对于 B/S结构应用系统,用户只需通过浏览器界面登录一次,即可通过UTrust SSO单点登录系统访问后台的多个用户权限内的Web应用系统,无需逐一输入用户名、密码登录。对于 C/S结构应用系统,通过IE控件来实现对C/S系统客户端的单点登录,用户输入一次用户名、密码,即可访问所有被授权的C/S系统资源。无论对于B/S和C/S结构的应用系统,实现单点登录的功能时,后台应用系统无需任何修改。•后置代理方式实现单点登录 对于有改造条件的B/S结构应用系统,UTrustSSO也提供了后置代理的方式实现单点登录。SSO 系统提供各种API,Agent代理,对原有应用系统进行改造,改变原有应用系统的认证方式,同时采用认证服务器提供的技术进行一次性身份认证,实现单点登录。
后置代理方式实现单点登录
对于有改造条件的B/S结构应用系统,UTrustSSO也提供了后置代理的方式实现单点登录。SSO 系统提供各种API,Agent代理,对原有应用系统进行改造,改变原有应用系统的认证方式,同时采用认证服务器提供的技术进行一次性身份认证,实现单点登录。
与AD域结合单点登录
UTrust SSO可以与Windows域进行整合,直接引用AD域中的用户身份信息,不需另行单独维护自己的用户信息。当用户登录AD域后,用户无需再登录,就可访问其所有有权限访问的系统,无需再次输入用户名和密码。
统一用户身份管理
UTrust SSO 利用账号同步管理模块,将用户的身份信息和密码同步到各个系统的数据库中,系统管理员在一个平台上统一管理用户在各个系统中的账号和密码。在人员离职、岗位变动时,只需在UTrust SSO管理中心一处更改,即可限制其访问权限,消除对后台系统非法访问的威胁。方便了用户管理,也防止过期的用户身份信息未及时删除给企业资产带来的安全风险。
统一身份认证
UTrust SSO采用轻量目录存取服务LDAP来建构统一用户信息数据库。LDAP作为一个公开和开放的目录服务标准,已成为未来身份认证和身份管理的标准,具有很好的互 *** 作性和兼容性,可以为企业搭建一个统一身份认证和管理框架,UTrust SSO系统提供开发接口给新建系统,可为后续新的应用系统开发提供了统一的身份认证平台和标准。
多种身份认证方式
UTrust SSO支持多种身份认证方式,如数字证书,USB Key,动态口令身份认证,同时也保留了传统的静态口令认证,并且为其他认证方式如短信,生物特征等认证方式预留接口,以适应企业对认证方式扩展的需求。
日志和审计报告
UTrust SSO单点登录系统依靠记录最终用户和管理人员的访问过程,建立一套全面的、有效的回溯和追查机制。同时系统管理员可以实时监测用户对企业各应用系统的访问状态,及时发现非法访问事件,对出现的问题进行事后追溯和责任追究提供实证。通过对系统运行状态实时监控审计,还增强了系统的可维护性。主要完成访问行为审计、审计信息查询、审计信息防窜改和黑名单功能等几大功能。
系统集中管理
UTrust安全管理中心为UTrust单点登录系统提供管理功能,实现对用户身份信息,权限,应用系统,审计信息的集中管理。UTrust安全管理中心基于Web界面,系统管理员通过这个管理中心可对用户,资源,权限及审计信息进行统一的管理,并对UTrust系统本身进行维护管理。同时系统支持分级授权管理功能,支持总部授权下属单位管理自身的用户,并对其授权,减少总部管理员的负担。
即插即用和灵活部署
UTrust SSO单点登录系统进行安装或方案实施时,只需经过简单的系统配置,即可使用。对于分布式网络结构和异构系统,可以在不同网络区域的应用服务器上分布式的部署UTrust SSO单点登录系统,并进行系统集群管理,通过集群功能,提高数据通讯时的负载均衡和并发处理能力,得到安全可靠和高效的单点登录服务。此外,还可以通过双机备份功能,提高整个系统的安全性。
3 系统环境
客户端支持的 *** 作系统:
Windows98/NT/2000/XP
服务器端支持的 *** 作系统:
Windows NT/2000、Unix(HP-UX、Solaris、AIX)、Linux、FreeBSD
数据库:
Oracle、SQL Server或My SQL等关系型数据库
目录服务器:
标准的LDAP目录服务器
注意,phpcmsv9的配置文件有两个:
主站数据库配置文件目录地址:/caches/configs/databasesphp;
phpsso会员互通模块数据库连接配置目录:/phpsso_server/caches/configs/databasephp。
其中第二个配置文件往往是一些初学者容易忽略的地方(第二个配置文件如果没有正常配置往往出现会员不能正常登陆注册以及与ucenter等第三方系统互通时不正常),当然,如果你的网站用不着会员系统可以不用配置。
PS:详细的phpcmsv9使用方法可以参考phpcms的官方使用手册以及iphpcms的详细使用教程。
databasephp是数据库连接配置文件,但我们进行修改配置是有两个地方需要修改:
路径:/caches/configs/databasephp
路径:/phpsso_server/caches/configs/databasephp
其中第一个为主要内容系统数据连接数据库的配置文件,第二个为phpcms系统用户系统phpsso连接数据库所需配置文件。
很多对phpcms不了解的童鞋往往因为忘记了修改第二个配置文件而导致"网站能正常显示但用户不能注册登录"的问题,所以如果你的网站用到了用户系统第二个也不要忘记修改哦~
vCenter Server 相关介绍 原创
2021-05-07 10:21:23
Jeffry Jiang
码龄3年
关注
一、什么是vCenter Server
vCenter Server是VMware vSphere虚拟化架构的核心管理组件,为ESXI主机和虚拟机提供管理服务,利用vCenter Server可以集中管理多台ESXI主机和虚拟机。
二、什么是SSO
SSO(单点登录)是身份验证和安全交互组件,主要作用是它所有基于vCenter或和vCenter有关联的组件在访问Domain之前,先访问SSO,保障了AD的安全性同时降低了用户的访问零散性,通过和类似AD或OpenLDAP的Identify Sources通信来实现身份验证。
三、什么是PSC
PSC(平台服务控制器)从VMware vSphere 60开始使用被称为基础架构控制器,正式发布后,被命名为PSC。架构体积小,但可以使用一个或多个嵌入式控制器。PSC可提供SSO能够实现的全部功能,此外,它还能够提供授权服务、证书存储服务等其他服务。PSC是一种分布式服务控制器,只关心自己的数据同步,默认情况下,平台并不存在冗余。在少于8台环境中,建议在vCenter Server上安装PSC;规模较大的环境中,VMware建议单独在服务器上安装PSC,再将vCenter Server连接到PSC服务器池。
四、SSO和PSC之间的联系
VMware vSphere 67包含PSC功能,代替了VMware vSphere 5X的SSO功能,并增加了很多新的重要服务功能。SSO随着VMware vSphere升级进行升级,而一些其他产品使用SSO作为认证源。
五、vCenter Server版本选择
针对不同环境,官方推出了两个版本,一个是Windows版本(VC),一个是Linux版本(VCSA),两个版本几乎没什么区别。Linux版本这么看是今后的趋势,推荐在生产环境中使用Linux版本。
六、vCenter Server安装要求
Windows版本内存大于登陆8G,小于8G会终止安装;
Windows版本需要为Server 2012 /2016版本,2003/2008不支持vCenter Server 67安装;
Windows版本CPU推荐使用4个或4个以上CPU;
Windows版本内存推荐配置8G或8G以上内存,低于这个要求,安装会被终止。
七、数据库介绍
71 嵌入式数据库
优点:不需要任何费用,部署vCenter Server时可以同步完成;
缺点:只能支持部超过5台ESXI主机以及50台虚拟机,数据库备份恢复麻烦;
Linux版本vCenter Server 67使用开源vPostgres嵌入式数据库可以支持500台主机或5000台虚拟机。
72 独立数据库
优点:具有完成的数据库功能,性能更好,备份恢复方便;
缺点:需要购买授权,配置较为复杂;
对于规模较大的环境中,建议使用独立的数据库。
以上就是关于数据库表结构设计,常见的数据库管理系统全部的内容,包括:数据库表结构设计,常见的数据库管理系统、如何让已有系统支持单点登录 无须修改原有应用系统、phpcms数据库连接的文件在哪(phpstudy怎么连接数据库)等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)