MongoDb和NoSQL数据库比较(使用XML文档)
我正在使用Java和Spring 3开展一个项目。对我来说有一项新任务。 将会有Xml文件,我会得到这些文件并将它们转换为Objects。 之后,我会将它们放入数据库中。
我主要研究nosql数据库的主题。 CouchDb
和MongoDb
是我应该搜索的数据库。 我将在数据库上search
该对象(其中一种索引类型将是日期,我将在选择之间生成日期)。 Performance
对我而言非常重要
我将处理一个huge data
这就是为什么我应该搜索nosql数据库。
根据我的情况,你有什么建议?他们的利弊有哪些?我应该选择哪一种?为什么?
我搜索了一下,看到Couch DB使用REST API,Mongo DB使用驱动程序,根据这里的说法,它是Mongo的性能优势:http://www.mongodb.org/display/DOCS/Comparing+Mongo+DB+and+Couch + DB
然而,Couch DB使用复制的方式来扩展(这是一个性能加吗?)
我也意识到有BaseX和eXist。 根据我的需要,你有什么建议有人与他们合作过?
PS:我也会像日志一样获取XML文件。 他们不会改变,我不会操纵数据。
这是一个很大的问题,但我会尽我所能来解决它。 我工作的一家公司正在从使用Mysql开发我们的应用程序转变为NoSQL,并且我是第一个NoSQL数据库的领导者,我们正在决定使用哪个NoSQL数据库。 我在MongoDB,CouchDB和Cassandra之间。 我必须考虑的一个重要因素是,编写基线函数来处理数据库是多么容易,所以你不必了解正在发生什么,但仍然能够执行查询等等。 cassandra的问题在于API的超低级别,需要一些时间来编写一个可靠的高级界面,而且我们没有那种时间。 与couchdb的问题是REST服务。 由于我们已经连接到我们的内部API使用休息,它会是一个双休息服务。 REST通常会覆盖http,并且http有一个相当的头脑,它可以很容易地处理它。 而且,这种负载增加了时间来加载信息。 所以我们因为这个原因和其他许多原因而采用了mongodb。 另外,因为它是一个驱动程序,所以它的开发与编程语言一起工作,如果您的语言支持,那么它就非常棒。 由于Java支持mongodb,所以很好。
我建议将XML文件转换为对象,然后将对象存储在mongo中。 所以每个XML文件都会嵌入mongodocuments关于mongo的好处是您可以搜索嵌入式文档并且可以为它们编制索引。 所以享受帽子
我只在高数据量,低负载的内部应用程序中使用MongoDB,所以我不能真正为您的选择提供第一手建议。
然而,MongoDB人员在这里与CouchDB进行了比较。 还有更多的独立意见(1,2)。
您还应该考虑适用于您的环境的可用数据库驱动程序的质量。 根据我的经验,Java MongoDB驱动程序非常稳定,但在我看来,它仍然会导致比应该更多的处理开销。 我不知道任何CouchDB驱动程序。
除了存储大量数据的能力之外,您还有其他任何要求吗? 你需要复制或分片吗?
PS:你如何存储XML文件呢? 除非将整个XML文本存储在单个字段中,否则XML文件不会完全映射到JSON(例如MongoDB所使用的)。
PS2:你确定你需要一个基于文档的数据库吗? 如果您只打算在事先已知的几个字段上执行搜索,那么关系数据库可能更容易处理。 基于文档的数据库只有在数据没有预定义模式或者需要存储更复杂的对象层次结构时才有意义。
PS3:请问为什么海量数据对您意味着NoSQL? 您可以在任何现代关系数据库中存储疯狂的数据量(当然,只要您有硬件)。
编辑:
几个相关的SO问题:
(...和大约一千多)
也许还有这些:
我想补充一点,Couchbase是一个比CouchDB更快,更具扩展性的选项,2.0版引入了Views,在高层次上,它是一个与CouchDB合并的分布式memcached(Membase Server),但当然要比将它们混合在一起更复杂。 CouchDB和Membase Server的创始人创建了Couchbase。
也可能是处理XML-JSON存储的最佳方式,以及检索时的JSON-XML。 如果您在数据库中执行XPATH查询,那么在View创建中需要更复杂一点。
www.couchbase.com
链接地址: http://www.djcxy.com/p/86455.html上一篇: MongoDb and NoSQL Databases Comparision (working with XML Documents)