像MongoDB和db4o这样的对象数据库最近得到了很多宣传。与他们一起玩耍的每个人似乎都喜欢它。我猜他们正在处理样本应用程序中大约640K的数据。
是否有人尝试使用包含大量数据(例如50GB或更多)的对象数据库?你是否仍然可以对它执行复杂的查询(比如从搜索屏幕)?它与您通常选择的关系数据库相比如何?
我只是好奇。我想把对象数据库暴露一下,但我需要知道它是否适用于一些不仅仅是一个示例应用程序。
答案 0 :(得分:10)
有人刚刚在MongoDB中使用12TB的数据投入生产。我之前知道的最大值是1 TB。很多人在Mongo中保存了大量数据。
重要的是要记住Mongo的工作方式与关系数据库非常相似:您需要正确的索引才能获得良好的性能。您可以对查询使用explain(),并与the user list联系以获取相关帮助。
答案 1 :(得分:6)
当我在2000年开始db4o时,我没有想到庞大的数据库。关键目标是使用一行代码非常简单地存储任何复杂对象,并以低资源消耗实现良好和快速,因此它可以在嵌入式和移动设备上运行。
随着时间的推移,我们有许多用户使用db4o进行webapps并拥有大量数据,接近今天最大数据库文件大小为256GB(配置的块大小为127字节)。所以回答你的问题:是的,db4o可以使用50GB,但是你不应该计划将它用于数TB的数据(除非你可以很好地将数据分成多个db4o数据库,单个数据库的设置成本可以忽略不计,你可以调用#openFile())
db4o于2008年被Versant收购,因为它的功能(嵌入式,低资源消耗,轻量级)使其成为Versant高端对象数据库VOD的一个很好的免费产品。 VOD可以扩展大量数据,并且比关系数据库更好。我认为它只会轻笑超过50GB。
答案 2 :(得分:3)
MongoDB为SourceForge,纽约时报和其他几个大型数据库提供支持......
答案 3 :(得分:3)
您应该阅读MongoDB use cases。只是在玩技术的人通常只是在研究它是如何工作的,而不是他们能够理解这些局限性。对于正确类型的数据集和访问模式,50GB对于在正确的硬件上运行的MongoDB来说并不是什么。
这些非关系系统着眼于RDBM所做出的权衡,并对其进行了一些改变。在某些情况下,一致性并不像其他事情那么重要,因此这些解决方案允许您将其交换为其他内容。在某些情况下,权衡仍然是相对较小的ms或者可能是秒。
值得一读CAP theorem。
答案 4 :(得分:3)
我正在考虑移动我确实使用堆栈溢出iphone应用程序的API,我写了一段时间回到它目前位于MySQL数据库中的MongoDB。在原始形式中,SO CC转储处于数千兆字节范围内,我为MongoDB构建文档的方式产生了10G +数据库。可以说我没有很好地构建文档,但我不想花很多时间来做这件事。
如果你开始这条道路,你将遇到的第一件事就是缺乏32位支持。当然,现在一切都在转向64位,但要记住一些事情。我不认为任何主要的文档数据库都支持32位模式的分页,从代码复杂性的角度来看这是可以理解的。
为了测试我想做什么,我使用了64位实例EC2节点。我遇到的第二件事是,即使这台机器在物理内存耗尽时有7G的内存,但事情从快速变为不那么快。我不确定此时我没有设置错误的东西,因为不支持32位系统会杀死我想用它但我还是想看看它的样子。将相同的数据转储加载到MySQL中需要大约2分钟的功能强大得多的盒子,但我用来加载这两个数据库的脚本的工作方式不同,所以我无法进行良好的比较。只要将数据的一部分运行到MongoDB中就会快得多,只要它导致数据库小于7G。
我认为我的看法是,大型数据库可以正常工作,但如果您想保持高性能,则可能需要考虑数据的结构比传统数据库更多。我看到很多人使用MongoDB进行日志记录,我可以想象很多这些数据库都是庞大的,但同时他们可能没有进行大量的随机访问,因此可能掩盖了传统应用程序的性能。
最近可能有用的资源是visual guide to nosql systems。 MongoDB之外有很多选择。我也使用过Redis,虽然没有大量的数据库。
答案 5 :(得分:1)
以下是db4o的一些基准测试:
http://www.db4o.com/about/productinformation/benchmarks/
我认为它最终取决于很多因素,包括数据的复杂性,但db4o似乎肯定与其中最好的一样。
答案 6 :(得分:1)
或许值得一提。
欧洲航天局的普朗克任务是在Versant对象数据库上运行。 http://sci.esa.int/science-e/www/object/index.cfm?fobjectid=46951
这是一个卫星,去年推出了74个板载传感器,它映射了宇宙的下落光谱,并将信息存储在地图段模型中。这些天它已经得到了大量的宣传,因为它产生了一些有史以来最酷的宇宙图像。
无论如何,它已经生成了存储在Versant中并在三大洲复制的25T信息。当任务在明年完成时,总共将达到50T
可能还值得注意的是,对象数据库往往要小得多,以保存相同的信息。这是因为它们是真正规范化的,没有连接的数据重复,没有空的浪费列空间和几个索引而不是100个。您可以使用适当的对象模型并在Versant对象数据库中找到有关测试ESA的公共信息,以便考虑以多列关系数据库格式存储--vs-。他们发现使用Versant可以节省75%的磁盘空间。
这是实施: http://www.planck.fr/Piodoc/PIOlib_Overview_V1.0.pdf
他们在这里谈论测试中发现的3T-vs-12T http://newscenter.lbl.gov/feature-stories/2008/12/10/cosmic-data/
此外......有一些基准测试表明,在任务的分析方面,Versant的数量级更快。
欢呼声, -Robert