我正忙着设计一个简单的待办事项列表webapp,用户可以通过该应用程序验证应用程序并保存待办事项列表项。用户还只能查看/编辑他们添加的待办事项列表项。
这似乎是大多数Web应用程序(或一般应用程序)中的一般功能(经过身份验证的用户只能查看自己的数据)。
对我而言,重要的是了解完成此任务的不同方案。我想要实现的是一个可以处理大量用户的解决方案。数据有效。目前我正在使用关系数据库这样做,但是没有SQL的答案也对我有用。
我想到了以下想法:
在我的选择中,我选择了todolist_item表上的user_id列。虽然它可以完成这项工作,但我觉得如果表中的数据足够大,读取数据时user_id列可能会有问题。我可以添加一个索引,但我不确定索引的有效性。
我不喜欢的是,我需要为每个我需要此类功能的表格设置user_id,这对我来说似乎不正确?似乎当我实现数据库层时,我必须将其添加到我对每个功能的查询中(除非我使用一些AOP)?
我浏览了一下(How does Trello store data in MongoDB? (Collection per board?)),但它没有谈到有关user_id列或类似事情的技术。我也尝试在一些安全框架(特别是Spring Security)中阅读这个内容,但它似乎只涉及表级别的特权/权限而不是行级别?
所以问题是我的选择是否合适以及是否有更好的技术来做到这一点?
答案 0 :(得分:0)
你的选择很自然。
每个用户的表是一个非启动者(任何修改数据库结构以响应用户操作的东西通常都是可疑的。)
行级安全性实际上不是webapps的一个选项 - 它要求每个用户会话都与数据库建立单独的持久连接,这很少实用。是的,它是特定于供应商的。
如何索引表格完全取决于您的使用模式和要运行的查询类型。是'为用户显示所有TODO'你要支持的查询(看起来会是这样)?然后显然需要用户ID的索引。
为什么让user_id列出现错误?如果要限制用户访问,则需要能够识别记录所属的用户。实际上并不意味着每个表都需要它 - 例如,如果一个记录组成另一个(例如,你的TODO有'步骤',每个步骤属于一个TODO),只有对象图需要用户ID。