Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 文件与数据库_Database_File_Text_Acl - Fatal编程技术网

Database 文件与数据库

Database 文件与数据库,database,file,text,acl,Database,File,Text,Acl,我将为每个用户实现一个访问控制列表,这样他们就可以分配对自己资源的访问权限,这样他们就可以对自己的母亲隐藏信息,但向朋友显示信息 现在,将ACL存储在数据库中似乎非常疯狂,因为每个用户都是一个组,可以有许多子组。所以我想把ACL存储在一个文本文件中 好主意?坏主意 编辑:我应该注意,我指的是每个用户的一个单独的文本文件。我正在考虑创建一个ACL类,可以序列化并写入文本文件。我担心将ACL存储在数据库中会创建异常庞大的联接表,并给数据库服务器带来巨大的压力。我不确定将其存储在文本文件中会有多容易。

我将为每个用户实现一个访问控制列表,这样他们就可以分配对自己资源的访问权限,这样他们就可以对自己的母亲隐藏信息,但向朋友显示信息

现在,将ACL存储在数据库中似乎非常疯狂,因为每个用户都是一个组,可以有许多子组。所以我想把ACL存储在一个文本文件中

好主意?坏主意


编辑:我应该注意,我指的是每个用户的一个单独的文本文件。我正在考虑创建一个ACL类,可以序列化并写入文本文件。我担心将ACL存储在数据库中会创建异常庞大的联接表,并给数据库服务器带来巨大的压力。

我不确定将其存储在文本文件中会有多容易。数据之间的关系是相同的。诚然,SQL并不总是友好的分层数据,但也不是平面文本文件。

您的文本文件是否受到并发访问的保护?否则,数据库将是一个更好的主意。

XML是分层数据的理想选择。不过,可以在数据库中处理分层数据,这就解释了这是多么美妙(这些概念不仅适用于MySQL):


就我个人而言,我不会将那样的数据存储在文本文件中。操作变得困难得多。

并发性会让你头疼。随着文件变大,复杂性和性能也会降低。同样,在文件写入过程中发生的损坏风险也会增加,比如系统崩溃导致的断电

数据库通常会保护您不受这些问题的影响,让您专注于逻辑

您可以使用自连接在数据库中实现分层存储,例如

ItemID    Data   ParentID
--------------------------

其中ParentID是指向另一行的ItemID的指针

给定我将在数据库中存储ACL的选项:

  • 访问和查询数据的语言更简单、更标准(SQL)
  • 数据库将为您提供事务、快速查询索引、完整性约束和安全性
  • 根据您在本地文件中存储数据的方式,您可能需要随应用程序一起移动数据文件。示例:将应用程序从服务器1移动到服务器2
  • 对于不可变(或不经常更改)的数据,应使用某种形式的缓存。所以,如果您使用的是File或DB,那么您应该将这些数据缓存一段时间
  • 我敢肯定,您可以找到关系数据库的良好ACL模式模板,作为参考,如以下文档:
我希望有帮助

我担心的是将ACL存储在 数据库将产生巨大的数据 连接表并放置一个重要的 数据库服务器上的压力

由于每个用户有一个文本文件,而您的组/子组可能位于其他一些文件中,您将不得不滚动您自己的联接,不是吗


您所描述的问题/需求正是SQL的优势所在。毫无疑问,SQL是这项工作的合适工具。

在存储分层数据方面,嵌套树通常比邻接列表更好。这可能会引起兴趣: