我正在使用一个权限模型,其中我有一个 table user_permissions
。该表将包含一个或多个具有特定 bigint 的列。我将使用每个十进制数的位与某些权限规则进行比较(位位置将是权限规则,值将是规则的条件active
或not active
)。
这种方法的问题在于,在使用诸如 bigint 之类的数字时,我可以使用的位数有限。
在这种情况下,我可以在跨数据库环境中使用的最佳列类型是什么?
这些标签代表了我的目标技术,因此与这些技术相关的任何其他解决方案都值得赞赏。
我正在考虑使用 @Lob 注释来存储大数据,这是最佳做法吗?
更新:user_permission 表以 1:1 的关系扩展了用户,并具有 bin_create、bin_read、bin_update、bin_delete 等 bigint 字段,这些字段将二进制数据保存为十进制数。
为了澄清这个问题:我正在考虑使用按位运算符比较权限。因此,假设我有一个权限值为 10(1010) 的用户,以及一个需要 13 (1101) 的操作。所以 10 & 13 == 8 (1000) -> 用户有一个与操作所需权限匹配的权限,所以我可以允许或拒绝(取决于应用程序规则定义哪个)。但是通过这种方法,我可以处理的位数有限(假设我增加了要考虑的权限,所以数字也会增加)。最大的 bigint 值是 ~9223372036854775807,这给了我二进制 1111111111111111111111111111111111111111111111111111111111111111111111111,每个字段有 ~60 个块和权限可能性。