用嵌入式数据库做权限数据的存储和查询验证,合适么?

2021-01-19 09:31:00 +08:00
 tctc4869

一些开源项目的权限系统,基本把权限数据放入一个数据库里,但大多数都是服务端类型的数据库,还带所谓的界面虽然是为了方便,不过没有看过用嵌入式数据库的。

想用嵌入式数据库,比如 sqlite 之类的,用来做权限数据的存储和查询验证。把权限数据库,比如 RBAC 权限类型的数据写到里面去,校验的时候,用 sql 语句查询校验

用嵌入式数据库做权限数据的存储和权限校验,有哪些优点和缺陷?

1454 次点击
所在节点    程序员
15 条回复
hqs0417
2021-01-19 10:06:17 +08:00
本地测试可以这样用,但是生产环境机器置换,以及扩容怎么搞?
数据都存在本地,怎么共享?
loux
2021-01-19 10:19:06 +08:00
把数据库放在用户手里,自己完全没有控制权,怎么保证数据库没有被篡改
tctc4869
2021-01-19 10:28:22 +08:00
@loux 我做 Web 应用,不是客户端,我只是嵌入式数据库放在 Web 应用的项目的相对路径下
annielong
2021-01-19 10:43:01 +08:00
不管什么类型,只要联网,权限一般都在服务器端的数据库存,单机才会存本地
rainfd
2021-01-19 10:45:44 +08:00
很多嵌入的项目就一个设备,都不联网...你不写数据库写到哪里去
tctc4869
2021-01-19 11:01:28 +08:00
@annielong 什么意思?嵌入式数据库跟联不联网没什么关系把?服务器端的数据库难道就不能是 sqlite 么?
young1lin
2021-01-19 11:04:00 +08:00
很小的项目可以,大一点点的放到 MySQL 这种数据库里面,直接查 MySQL,再大一点项目启动的时候,把这些信息放到 Redis 里面,查 Redis 。再大一点的我就没做过了,但是还是差不多,加个网关,网关去 Redis 里面查,还是把具体的权限信息放到 MySQL 集群或者其他能持久化到磁盘的数据库。
yuankui
2021-01-19 11:09:45 +08:00
如果只有一台 web 服务器还好,但是当你发现,一台服务器扛不住的时候,你就像加机器了。这个时候,就会出现两个 web 服务器,各自维护者自己的嵌入式数据库,数据无法共享,可能出现一个用户明明已经注册(保存在一台嵌入式数据库里面),当时访问的时候,访问了另外一台机器,仍然提示他需要注册。
auxox
2021-01-19 11:24:53 +08:00
如果只把数据写到本地的话数据可用性没法保证,比如磁盘挂了数据就丢了
Flymachine
2021-01-19 11:33:16 +08:00
sqlite 数据库是有几率损坏的...
如果程序在读写过程中突然崩溃或者机器突然断电的话,sqlite 数据库就有几率损坏 (database disk image is malformed)。
这时候只能先修复数据库,删除损坏数据再用了,但数据肯定是有丢失的。
这种玩意儿你打算让他存重要的权限数据?
本地软件用这个无所谓,反正只是缓存,坏了就删除重建。web 服务用这个...不怕日后来了一次数据库损坏然后引发客户投诉么?
你要是想懒省事,干脆去买云数据库好了,不贵。而且如果买虚拟主机的话,还会送你一个。
annielong
2021-01-19 12:03:14 +08:00
@tctc4869 只要联网,不管有没有服务,为了安全与统一管理,数据库都会单独放一个服务器,至于这个服务器上用什么数据库软件随意,
tctc4869
2021-01-19 12:14:14 +08:00
@yuankui 用户数据又不在嵌入式数据库里
oott123
2021-01-19 12:17:15 +08:00
这和你用数据库做什么无关。数据库(主要是里面的数据)是一种状态,基于运维考虑,一般是设计成易于与应用分离的。
Flymachine
2021-01-19 12:32:48 +08:00
“Web 项目”“非服务端类型”? C/S 架构的 C 端?
C/S 架构下 C 端用 sqlite 无所谓,毕竟只是缓存。
B/S 架构下 B 端用 LocalStorage 或者 IndexedDB 会比较好吧,sqlite 有点超纲了。
yuankui
2021-01-19 14:27:43 +08:00
@tctc4869 那就没问题了,用 sqlite 吧,没问题的!

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/746152

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX