自动化平台中的ORM和权限设计

最近在梳理平台里的一些基础架构和设计,力争把平台里的通用的部分能够抽象出来,迭代复用。

在数据库设计上我秉承了从简的原则,如果能用一个表搞定,我绝对不会把它拆分成多个表。对于概览信息,其实设计上是需要考虑冗余信息的,哪怕看起来不是那么的精美。但是用起来就是直接。而我绝不会只设计一个表,如果需要扩展的,毫无疑问,我会拆分出另外的表来。对于原来的结构设计几乎没有什么影响。

第二个是对于Django的ORM,我最近也实现了一些功能和页面,在实践中我发现,使用原生的ORM来显式声明大量的关联关系其实会引入大量的外键设计,这对于数据库设计来说,反而是略显丑陋的。这部分的内容其实完全可以通过程序端的逻辑来控制。

当然在这个基础上,一个很明显的问题就是如何理解ORM的使用边界,我的使用实践更倾向于是使用原生的model设计,但是外键关联和多表关联,我都是通过逻辑层来统一控制,具体怎么控制,我是抽象出一个DAO层,把这部分逻辑放到这里面来,这样一来,我要定制多对多的关系,指定n多个辅助字段都是手到擒来,这样一来就会从已有的桎梏中解放出来。

而在这个基础上,我们使用ORM的一个优点就是数据源的透明,但是需要理解的是,我们说的透明,其实不代表数据迁移,所以你引入了一些定制的其他数据库的SQL语句,如果语句符合SQL规范,其实是没有什么问题的,除非是数据库特有的语句。这些如果都抽象到一个DAO层中,这个事情其实就好做多了。

对于权限设计,我是这样考虑的。一个最粗粒度的权限就是基于菜单级别,就是不同的用户看到的菜单应该不同。这是最基本的要求。

在这个基础上进行扩展,我们可以定制不同的角色组,比如MySQL组,Redis组,不同的组看到的同一个菜单中的数据也可以不同。

同时,对于数据的增删改查,我们可以通过菜单级别来控制,如果没有修改权限,用户就不应该看到这个菜单。

原文发布于微信公众号 - 杨建荣的学习笔记(jianrong-notes)

原文发表时间:2018-01-22

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏铭毅天下

Elasticsearch学习,请先看这一篇!

题记 Elasticsearch研究有一段时间了,现特将Elasticsearch相关核心知识、原理从初学者认知、学习的角度,从以下9个方面进行详细梳理。欢迎讨...

2.2K140
来自专栏喵了个咪的博客空间

phalapi-进阶篇6(解决大量数据存储数据库分表分库拓展)

#phalapi-进阶篇6(解决大量数据存储数据库分表分库拓展)# ? ##前言## 时隔半个月随着PHP7的推出为PHP打了一瓶兴奋剂,在性能提升了一倍的情况...

37590
来自专栏大数据和云计算技术

新数仓系列:Hbase周边生态梳理(1)

本文简单梳理下其中一个应用比较广的HBASE的生态,可能不全,有更多的请大家留言。具体HBASE的基本原理扫描大家可以自行百度下,另外,要系统掌握HBASE,推...

49070
来自专栏智能大石头

性能&分布式&NewLife.XCode对无限数据的支持

上周发布了《改进版CodeTimer及XCode性能测试》,展示了NewLife.XCode在性能上的表现。实际上NewLife.XCode是一个很平凡的ORM...

25480
来自专栏Pytorch实践

【Python】30行代码教你将微信变成智能回复机器人

摘要:使用微信itchat接口和图灵机器人接口,三十行代码将你的微信变成聊天机器人,自动回复来自好友的消息。 01 — itchat安装与使用说明 itcha...

788150
来自专栏python3

python语音识别

语音识别技术,也被称为自动语音识别,目标是以电脑自动将人类的语音内容转换为相应的文字。应用包括语音拨号、语音导航、室内设备控制、语音文档检索、简单的听写数据录入...

2.5K40
来自专栏杨建荣的学习笔记

通过外部表改进一个繁琐的大查询 (r8笔记第32天)

今天处理了一个比较有意思的案例,说是有意思,因为涉及多个部门,但是哪个部门似乎都不愿意接。最后还是用了一些巧力,化干戈为玉帛。 问题的背景是这样的,业务部门需要...

34290
来自专栏数据和云

在线重定义生产环境大表分区的惨烈踩雷记录

本文来源于读者投稿,作者在此分享在线重定义生产环境大表分区的惨烈踩雷记录,感谢投稿,欢迎大家投稿分享自己日常中“难忘”的解决过程。

20230
来自专栏about云

kafka sql入门

问题导读 1.kafka sql与数据库sql有哪些区别? 2.KSQL有什么作用? 3.KSQL流和表分别什么情况下使用?

28320
来自专栏杨建荣的学习笔记

闪回数据库不是“万金油”(r11笔记第73天)

闪回数据库这个特性在很多Oracle DBA眼里就是鸡肋特性,因为谁会因为恢复数据而需要在主库闪回,最后可能丢掉更多的数据,这个观点没错。 但是...

34160

扫码关注云+社区

领取腾讯云代金券