通用权限管理系统组件V3.8功能改进说明 - 对用户表BaseUser的拆分优化

简介:

  最近维护公司的数据库,用户表里的数据有1000多万条,对用户表的并发处理非常多,用户表甚至成了整个系统的瓶颈,经过这次优化维护经验,深深体会大用户表的职责不能过多,应该拆分的需要拆分;虽然写程序需要处理起来很痛苦,但是下定决心还是突破一下常规的设计。

     1:用户名,密码尽量不要保存在一起,就算用户表被客户攻破了,也不知道密码在哪里。
     2:导入导出数据时,尽量不要把用户名、密码全导出出来。
     3:没有权限的人就是可以看用户表,也不能操作密码表。
     4:可以按每个账户设置是否进行IP地址访问限制。
     5:可以按用户设置,是否允许账户多用户同时登录,还是只能是单用户登录系统。
     6:用户表,不要太庞大,方便别人扩展,例如你已经有N多列了,别人都不敢扩展了,字段太超级多了也不好。
     7:用户安全管理组件,方便集成,不要修改原来的用户表过多信息,可以增加一个表,对原来用户表的变动不要太多,方便集成。
     8:用户表需要事务处理的部分与其他非事务处理的部分可以分开了,数据库的瓶颈、压力分散了,特别是跟一些金额相关的处理部分。

     信息系统建设,随着经验的增长,不断的有表被拆分,合并,只有经得起修改的表,才是设计合理的,有生命力的表;随着信息化系统建设的规模,并发的压力第表的设计也有很多苛刻的要求,当然要要充分考虑数据安全因素。

     设计良好的系统底层变了,业务逻辑不用变,底层变了调用的部分不变,经得各种折磨的基础框架才是良好的框架。这是最近几年对通用权限管理系统组件做的最大的一次改动,使得系统有了能支持千万级别用户的数据压力的牢固基础。

      若不喜欢增强的信息管理部分,直接删除掉,也影响不大,稍微修改一下,系统也可以平滑运行了,想怎么改就可以怎么改。一个系统是否好用 看他是否有足够的重复利用的价值,也看他是否经得起各种业务系统的需求考验。代码是否值得长期维护改进、是否将来也有利用的价值,参考的价值。

  现在拆成2个个表了,可以模仿加表,也可以省事加字段,不会有很邪恶的感觉了,应为在已经有很多字段的表上再加字段,太邪恶了。

     增加表的SQL参考如下:

?
USE [UserCenterV38]
GO
 
SET  ANSI_NULLS  ON
GO
 
SET  QUOTED_IDENTIFIER  ON
GO
 
CREATE  TABLE  [dbo].[BaseUserLogOn](
     [Id] [ int NOT  NULL ,
     [UserFrom] [nvarchar](50)  NULL ,
     [UserPassword] [nvarchar](100)  NULL ,
     [AllowStartTime] [smalldatetime]  NULL ,
     [AllowEndTime] [smalldatetime]  NULL ,
     [LockStartDate] [smalldatetime]  NULL ,
     [LockEndDate] [smalldatetime]  NULL ,
     [FirstVisit] [smalldatetime]  NULL ,
     [PreviousVisit] [smalldatetime]  NULL ,
     [LastVisit] [smalldatetime]  NULL ,
     [ChangePasswordDate] [smalldatetime]  NULL ,
     [CommunicationPassword] [nvarchar](100)  NULL ,
     [SignedPassword] [nvarchar](100)  NULL ,
     [PublicKey] [nvarchar](200)  NULL ,
     [MultiUserLogin] [ int NULL ,
     [LogOnCount] [ int NOT  NULL ,
     [PasswordErrorCount] [ int NOT  NULL ,
     [UserOnLine] [ int NOT  NULL ,
     [CheckIPAddress] [ int NOT  NULL ,
     [IPAddress] [nvarchar](50)  NULL ,
     [MACAddress] [nvarchar](50)  NULL ,
     [OpenId] [nvarchar](50)  NOT  NULL ,
     [Question] [nvarchar](50)  NULL ,
     [AnswerQuestion] [nvarchar](200)  NULL ,
     [CreateOn] [smalldatetime]  NULL ,
     [CreateUserId] [nvarchar](20)  NULL ,
     [CreateBy] [nvarchar](20)  NULL ,
     [ModifiedOn] [smalldatetime]  NULL ,
     [ModifiedUserId] [nvarchar](20)  NULL ,
     [ModifiedBy] [nvarchar](20)  NULL ,
  CONSTRAINT  [PK_BaseUserLogOnInfo]  PRIMARY  KEY  CLUSTERED
(
     [Id]  ASC
) WITH  (PAD_INDEX =  OFF , STATISTICS_NORECOMPUTE =  OFF , IGNORE_DUP_KEY =  OFF , ALLOW_ROW_LOCKS =  ON , ALLOW_PAGE_LOCKS =  ON ON  [ PRIMARY ]
ON  [ PRIMARY ]
 
GO
 
ALTER  TABLE  [dbo].[BaseUserLogOn]  ADD   CONSTRAINT  [DF_BaseUserLogOn_MultiUserLogin]   DEFAULT  ((0))  FOR  [MultiUserLogin]
GO
 
ALTER  TABLE  [dbo].[BaseUserLogOn]  ADD   CONSTRAINT  [DF_BaseUserLogOn_CheckIPAddress]   DEFAULT  ((0))  FOR  [CheckIPAddress]
GO
 
ALTER  TABLE  [dbo].[BaseUserLogOn]  ADD   CONSTRAINT  [DF_BaseUserLogOn_OpenId]   DEFAULT  (newid())  FOR  [OpenId]
GO

 

    把原先表里的数据导入大这个表里,然后把重复的字段删除就可以了。这样原先的用户表变得轻巧了很多,心里也舒坦了,安全性也提高了N多,好爽。、用户名与 密码没保存在同一个表里,应该是不符合很多人习惯,但是大家多思考一下,就可以慢慢都接纳了,非常不错的打破传统思维的一个小创新。





本文转自 jirigala 51CTO博客,原文链接:http://blog.51cto.com/2347979/1188350,如需转载请自行联系原作者

相关文章
|
SQL 数据安全/隐私保护
通用数据级别权限的框架设计与实现(3)-数据列表的权限过滤
查看上篇文章通用数据级别权限的框架设计与实现(2)-数据权限的准备工作,我们开始数据列表的权限过滤. 原理:我们在做过滤列表时,根据用户权限自动注入到相关SQL中,实现相关过滤,如果拥有全部权限,则不生成相关SQL片段 首先我们来分析一下数据列表的SQL 能看到所有数据的SQL SELECT role.
1119 0
|
SQL 数据库 索引
开发指南—透明分布式—变更表类型及拆分规则
PolarDB-X新增支持变更表的类型(即在单表、拆分表和广播表三者间进行相互转换),和变更拆分表的拆分规则(包括拆分函数或拆分列)。本文介绍相关语法和示例。
开发指南—透明分布式—变更表类型及拆分规则
|
存储 缓存 监控
如何为从 1 到 10 万用户的应用程序,设计不同的扩展方案?
对于创业公司来说,有用户注册是好事情,但是当用户从零扩展到成千上万之后,Web 应用程序又该如何支持呢?
|
数据库
【自然框架】之通用权限(二):人员表组
      继续,这是第二章了。本来想在这一章里面介绍三个表组来着,但是我有点写不好的感觉,还是多分几章吧,这一章就只介绍人员表组。第二章到第五章主要是介绍表结构。我是习惯使用Excel来设计表,一开始的时候只能记录表名、字段名、字段类型、字段说明等信息,但是一直没能找到如何使用Excel来体现出来表之间的关系。
1087 0
|
搜索推荐 数据库
【自然框架】之通用权限(五):项目描述表组
      继续,这是第五章了。我发现了,写文章比写程序还要有难度。   通用权限想要写的文章目录:(这是第五章)    1、 简介、数据库的总体结构2、 介绍人员表组3、 介绍组织结构表组4、 介绍角色表组5、 介绍“项目自我描述表组”6、 权限到节点7、 权限到按钮8、 权限到列...
1093 0
|
数据库
【自然框架】之通用权限:数据库设计的几种使用方式
      上次《【自然框架】之通用权限:用PowerDesigner重新设计了一下数据库,有ER图和表关系图 》里说了一大堆的表,好多人说太复杂了,做到权限到模块就可以了。       这个嘛,我也没有说所有的表都要一起使用呀。
1186 0
【自然框架】之通用权限(三):组织结构表组
      继续,这是第三章了。拖得有点长,但是我也是一边写,一边在想办法,想怎么做才能让资源权限也能通用起来。看大家的回复也给了我一些提示,我也在修改我的方案。原来打算用来解决一个人虽然在业务一部,但是却可以看业务一部、业务二部的客户信息的情况,但是仔细想了一下,这么做也不行。
837 0
|
安全 数据安全/隐私保护
通用数据级别权限的框架设计与实现(1)-相关业务场景的分析
我们做权限系统的时候,经常要考虑几个问题。 这个功能他没有权限看,不能允许他访问。 这笔记录他不能看到呀,不能允许他能看到相关记录. 相信对于第一个问题,很多人都能做到。
999 0
|
SQL 数据安全/隐私保护
通用数据级别权限的框架设计与实现(4)-单条记录的权限控制
查看上篇文章通用数据级别权限的框架设计与实现(3)-数据列表的权限过滤,我们开始在原来的基础上实现单条权记录的权限控制。 相信前面的列表权限控制,很多系统都可以做到,但如何在上面列表的权限过滤中实现通用性 原理:我们在权限过滤中,通过AOP接截相关记录,拦截的时候,我们先判断当前人员是否有角色权限,没有的话,我们生成查询权限的SQL,进行权限查找.
1253 0
|
数据安全/隐私保护
通用数据级别权限的框架设计与实现
个人花了不到2天时间,写了一个通用数据级别权限的框架设计与实现。 欢迎提意见及评论。有空请打赏! 通用数据级别权限的框架设计与实现(1)-相关业务场景的分析 通用数据级别权限的框架设计与实现(2)-数据权限的准备工作 通用数据级别权限的框架设计与实现(3)-数据列表的权限过滤 通用数据级别权限的框架设计与实现(4)-单条记录的权限控制 通用数据级别权限的框架设计与实现(5)-总结与延伸思考 个人代码已经完成,如需要请打赏后通知我。
2285 0