Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/42.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
XML与MongoDB_Mongodb_Document Database_Basex_Exist Db_Sedna - Fatal编程技术网

XML与MongoDB

XML与MongoDB,mongodb,document-database,basex,exist-db,sedna,Mongodb,Document Database,Basex,Exist Db,Sedna,我有个问题 我需要每天存储大约3000个中型XML文档(100到200个数据元素) 数据有点不稳定,因为模式会不时更改,并且没有提前足够的通知来宣布更改,但需要在紧急“修补程序”的基础上追溯处理 数据的消费模式包括网站和一些简单的分析(一些平均值和饼图) MongoDB似乎是一个很好的解决方案,除了一个问题;它需要在XML和JSON之间进行转换。我更愿意在XML文档到达时不受影响地存储它们,并将任何智能处理转移到数据的使用者。这样,数据加载代码中的任何错误都不会造成永久性损坏。使用者中的bug总

我有个问题

我需要每天存储大约3000个中型XML文档(100到200个数据元素)

数据有点不稳定,因为模式会不时更改,并且没有提前足够的通知来宣布更改,但需要在紧急“修补程序”的基础上追溯处理

数据的消费模式包括网站和一些简单的分析(一些平均值和饼图)

MongoDB似乎是一个很好的解决方案,除了一个问题;它需要在XML和JSON之间进行转换。我更愿意在XML文档到达时不受影响地存储它们,并将任何智能处理转移到数据的使用者。这样,数据加载代码中的任何错误都不会造成永久性损坏。使用者中的bug总是无害的,因为您可以修复并重新运行,而不会永久丢失数据

我真的不需要“大规模并行”处理能力。它大约有4GB的数据,适合64位服务器

我已经不再考虑Cassandra(由于复杂的设置)和Coach DB(由于缺少索引等熟悉的功能,由于我的RDBMS思维方式,我最初需要这些功能)

最后是我的实际问题…

是否值得寻找一个没有MongoDB成熟的原生XML数据库,还是我应该咬紧牙关,在XML到达时将其转换为JSON,然后使用MongoDB?

数据量很小 如果不需要并行数据处理,则不需要Mongo DB。特别是在处理4GB这样的小数据量时,分配工作的开销很容易超过实际的评估工作量

4GB/60k节点也不是大型XML数据库。经过一段时间的学习,您将认识到XQuery是XML文档分析的伟大工具

真的吗? 或者,您是否每天都有4GB的数据,并且必须评估这些数据以及您已经存储的所有数据?然后你会得到一些你无法在一台机器上存储和处理的数量;分配工作将变得必要。不是在几天或几周内,但一年已经为您带来1TB

转换为JSON 你的输入看起来怎么样?它是否遵循任何模式,甚至类似于表格数据?MongoDB分析半结构化数据的能力远不如XML数据库。另一方面,如果您只想在定义良好的路径上提取几个字段,并且可以逐个分析输入文件,那么Mongo DB可能不会受到太大影响

将XML带入云中 如果您想在分析数据时使用XML数据库的功能,在分发工作时使用一些NoSQL系统的功能,那么可以从该系统运行数据库


具备您所需的功能,但该功能可能还需要一些时间才能投入生产。

您可以看看BaseX(BaseX.org),它内置XQuery处理器和Lucene文本索引。

如果您只想存储文件,我不确定为什么需要MongoDB?你需要什么索引,CouchDB做不到,特别是如果你只是将文档作为文件/附件处理?我将它们作为文件获取,但我不想将它们存储为文件,因为我需要以灵活的方式查询它们,而无需编写代码。你试过转换一些数据和查询吗?您会发现有很多方法可以做到这一点,但不一定是正确的方法,而且在性能等方面,您需要担心很多事情。出于分析目的,MongoDb在哪些方面比XML数据库“差得多”?XML数据库是为查询大型复杂的树结构数据而构建的;Mongo DB是为聚合大量小型JSON文档而构建的。在数据存储、索引结构和所选算法方面存在巨大差异。这在很大程度上取决于您拥有的数据类型和查询方式,在Mongo DB中,通过分发评估获得的大量小文件可能会更快,很少有大的(不容易)分块文件由原生XML数据库处理时可能会更快。您的答案中是否有证据支持您的陈述和声明?BSON文档的大小可以是16MB。。。如果XML数据库从GB范围开始进入TBS,那么我会认为它是大的。16MB很小。这都是你最终想做什么的问题;如果您只是聚合某些类型的日志,那么使用MongoDB可能会更好,如果您进行更复杂和重复的分析(例如,涉及多个描述的文件),XML数据库可能会更好。或者使用介于两者之间的Marklogic,但它是商业性的。