我将为每个用户实施一个访问控制列表,这样他们就可以分配对自己资源的访问权限,这样他们就可以隐藏自己的东西,例如,从母亲那里隐藏东西,但是可以向朋友展示。
现在将ACL存储在数据库中似乎在每个用户也是一个组时会变得非常疯狂,这个组可以有许多子组。所以我在考虑将ACL内容存储在文本文件中。
好主意?坏主意?
编辑:我应该注意,我正在谈论每个用户的单独文本文件。我正在考虑创建一个ACL类,我可以序列化并写入文本文件。我担心将ACL存储在数据库中会产生极其庞大的连接表,并对数据库服务器造成很大的压力。
答案 0 :(得分:3)
给定选项我会将ACL存储在数据库中:
我希望它有所帮助。
答案 1 :(得分:0)
我不确定如何将它存储在文本文件中更容易。数据的关系是相同的。当然,SQL并不总是友好的分层数据,但它们都不是平面文本文件。
答案 2 :(得分:0)
您的文本文件是否受到并发访问保护?否则,数据库将是一个更好的主意。
答案 3 :(得分:0)
XML是分层数据的理想选择。虽然可以在数据库中使用分层数据,但这解释了它的精确程度(这些概念不仅适用于MySQL):
http://mikehillyer.com/articles/managing-hierarchical-data-in-mysql/
我个人不会在文本文件中存储这样的数据。操纵变得更加困难。
答案 4 :(得分:0)
并发会咬你。随着文件变大,复杂性和性能也会降低。在写入文件期间发生某些事情的腐败风险也会增加,如系统崩溃的电源丢失。
数据库通常会使您免受这些问题的影响,让您专注于逻辑
您可以使用自联接实现数据库中的分层存储,例如
ItemID Data ParentID
--------------------------
其中ParentID是指向不同行的ItemID的指针
答案 5 :(得分:0)
我担心的是将ACL存储在 数据库会创造巨大的数据 连接表并放一个重要的 压力在数据库服务器上。
每个用户只有一个文本文件,而您的组/子组可能位于其他一些文件中,您将不得不滚动自己的联接,不是吗?
您所描述的问题/要求正是SQL的优点所在。毫无疑问,SQL是适合这项工作的工具。