• 请不要在回答技术问题时复制粘贴 AI 生成的内容
tctc4869
V2EX  ›  程序员

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

  •  
  •   tctc4869 · Jan 19, 2021 · 2103 views
    This topic created in 1965 days ago, the information mentioned may be changed or developed.

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

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

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

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