Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.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
Java 文档管理系统-数据库设计_Java_Database Design_Document Management - Fatal编程技术网

Java 文档管理系统-数据库设计

Java 文档管理系统-数据库设计,java,database-design,document-management,Java,Database Design,Document Management,我正在用Java编写自己的程序(可用的程序不能满足我的需要) 文件应采用合格的DublinCore元数据标准进行描述。在我看来,最简单的方法是将键值对打包到带有XML表示的RDF模型中 要存储所有文档的元数据,我有两个想法(文档文件将存储在文件系统中): 将所有文档的所有元数据存储在单个XML文件中 为每个文档创建一个XML文件,并将其存储在文件系统或RDBMS(如Java的H2数据库引擎)中,键值数据库无法解决此问题,因为一个文档的键不是唯一的 由于(许多)文件相互关联,第一种方法可能更好地分

我正在用Java编写自己的程序(可用的程序不能满足我的需要)

文件应采用合格的DublinCore元数据标准进行描述。在我看来,最简单的方法是将键值对打包到带有XML表示的RDF模型中

要存储所有文档的元数据,我有两个想法(文档文件将存储在文件系统中):

  • 将所有文档的所有元数据存储在单个XML文件中
  • 为每个文档创建一个XML文件,并将其存储在文件系统或RDBMS(如Java的H2数据库引擎)中,键值数据库无法解决此问题,因为一个文档的键不是唯一的
  • 由于(许多)文件相互关联,第一种方法可能更好地分析数据,但第二种方法可能更快

    您会推荐哪种解决方案?还是有更好的解决方案


    Stefan

    我会研究一个像Coach DB这样的无SQL文档解决方案,看看它是否能帮助您


    我不喜欢文件系统解决方案;没有任何抽象方法可以帮助您实现这一点。

    如果您总是访问所有文档,那么您的任何方法都不会比其他方法慢。但我建议采用第二种方法。在分析数据时,您需要读取所有文档,因此如果它们位于不同的文件或一个文件中,则没有区别…

    我不知道您的分析是如何工作的,但如果您需要内存中的完整图形来进行分析,则使用Variant 1(将所有文档的所有元数据存储在单个XML文件中),因为在这种情况下,方差2不会带来任何收益(只会带来额外的工作量)

    已添加

    如果变体2的额外工作不多,那么我建议使用变体2,因为它可以更灵活

    • 您可以通过只编写一个小的xml文件而不是一个大的xml文件来更新或添加文档元数据
    • 这取决于您使用的xml解析器,但在某些情况下,解析一些较小的xml文件比解析一个较大的xml文件更快(但这在很大程度上取决于数据量)

    您考虑过使用MongoDB和GridFS吗


    您可以在MongoDB中直接将文档存储为二进制文件,甚至可以以任何格式存储特定文件的相关元数据。它将能够存储文档,即使它们具有相同的名称,并且它将生成自己的唯一ID

    顺便说一句:即使它不属于您的问题:请看一下(Java内容存储库)实现,如。您可以使用它来存储您的文档,也可以存储您的元数据。

    感谢您的链接,我以前不知道这个规范,但它似乎非常有趣。因为我喜欢DOM解析器,所以我将使用第二个avariant,谢谢,我不想将文档文件存储在数据库中,因为我希望能够在没有任何中间件的情况下访问它们。