我有一个问题...
我每天需要存储大约 3,000 个中型 XML 文档(100 到 200 个数据元素)。
数据有些不稳定,因为架构会不时更改,并且更改不会提前通知,但需要在紧急"修补程序"的基础上追溯处理。
数据的消费模式涉及网站和一些简单的分析(一些平均值和饼图)。
MongoDB似乎是一个很好的解决方案,除了一个问题;它需要在XML和JSON之间进行转换。我更愿意在 XML 文档到达时存储它们,原封不动,并将任何智能处理转移到数据的使用者身上。这样,数据加载代码中的任何错误都不会造成永久性损坏。使用者中的错误始终是无害的,因为您可以修复并重新运行而不会永久丢失数据。
我真的不需要"大规模并行"处理能力。它大约是4GB的数据,非常适合64位服务器。
我已经从考虑中消除了Cassandra(由于复杂的设置)和Couch DB(由于缺乏熟悉的功能,例如索引,由于我的RDBMS思维方式,我最初需要这些功能)。
所以最后这是我的实际问题...
是否值得寻找一个原生的XML数据库,它不像MongoDB那么成熟,或者我应该咬紧牙关,将所有XML转换为JSON,因为它到达并只使用MongoDB?
你可以看看BaseX,(Basex.org),内置XQuery处理器和Lucene文本索引。
量很小
如果不需要并行数据处理,就不需要Mongo DB。特别是在处理像 4GB 这样的小数据量时,分配工作的开销很容易大于实际的评估工作。
4GB/60k节点也不是XML数据库的大数据。经过一段时间的学习,您将意识到XQuery是XML文档分析的出色工具。
真的吗?
或者您是否每天获得4GB,并且必须评估它以及您已经存储的所有数据?然后,您将获得无法再在一台机器上存储和处理的金额;分配工作将变得必要。不是在几天或几周内,而是一年已经为您带来 1TB。
转换为 JSON
您的输入是什么样子的?它是否遵循任何架构,甚至类似于表格数据?MongoDB分析半结构化的能力比XML数据库提供的功能要差得多。另一方面,如果您只想在明确定义的路径上拉取几个字段,并且可以分析一个又一个输入文件,那么Mongo DB可能不会受到太大影响。
将 XML 引入云
如果你想同时使用XML数据库的功能来分析数据,并使用NoSQL的一些系统功能来分发工作,你可以从该系统运行数据库。
BaseX正在以您需要的功能进入云 - 但该功能可能仍需要一些时间才能为生产做好准备。