0

考虑与一个元数据文件相关联的多个二进制文件,每个文件跨多个目录:

directory1: file1.bin file1.txt
directory2: file2.bin file2.txt

元数据文件包含 XML 或 JSON 格式的结构化数据。是否有可以使用这些元数据文件对它们进行操作和运行查询的数据库?根据我对面向文档的数据库的了解,它们的数据文件存储在一个目录中。

我的问题与这个 stackexchange 问题有关。不幸的是,没有关于基于 XML 的解决方案的好的描述。

4

2 回答 2

1

为了在基于元数据的查询上获得良好的查询性能,几乎任何系统都必须从单个元数据文件中提取元数据并以更优化的形式存储:某种形式的一个或多个索引。如果关联数据仅存储在文件中,而不存储在索引中(如 .bin 文件),则索引条目需要存储文件的路径,以便在需要时可以检索关联数据。路径通常可以存储目录名称、机器名称等。在现代系统中,路径可以是 URL。

面向文档的数据库可能是存储元数据索引的绝佳场所,但不一定是最佳选择。如果您需要查询的元数据是高度规则的(总是具有相同的字段,那么其他某种形式的索引存储可能具有更好的性能,但如果您不提前知道元数据的结构,面向文档数据库可能更灵活。如果您尝试匹配元数据中的单词和短语,另一种方法可能是使用全文搜索引擎。

所以是的,这样的数据库存在。不幸的是,有太多未指定的因素无法做出具体建议。这个问题不太适合一个通用的答案,文档集合的大小、预期的事务率、所需的存储和检索延迟目标以及一致性要求都可能成为推荐的因素,任何平台偏好(window vs * nix,本地与云等)

于 2014-07-19T03:22:41.640 回答
0

如果您想直接在 XML 或 JSON 文件中查询结构化数据,可以使用一些工具来执行此操作,例如:

如果您的元数据文本文件与解释二进制文件有关,我不知道有任何通用解析器。可能存在一个,但除非您使用定义明确的格式,否则这似乎有点牵强。

如果您需要进行重复查询,直接使用这些文件的一般方法将效率低下,因为任何非数据库解决方案都将涉及解析文件以解决您的查询。面向文档的数据库是指存储结构化内容的能力,但磁盘格式将比文本文件和必须解析的 XML/JSON 元数据更有效(也更复杂)。

如果您确实想使用数据库并在结构化内容上构建适当的索引,则应将原始数据导入其中。

于 2014-07-18T15:21:54.857 回答