2011-02-11 84 views
1

我们正在讨论关于在MongoDB中存储日期的问题。我仍然很新的蒙戈,所以当我看到文件(http://api.mongodb.org/perl/MongoDB/DataTypes.html#Dates)我不知道在下面:在MongoDB中存储日期时间对性能的影响

警告:创建DateTime对象的速度非常慢,为 。考虑将日期 保存为数字,并在需要时将数字 转换为日期时间。一个单独的 DateTime字段可以使 反序列化速度降低10倍。

如果我们只是将它们存储,并让他们拿出在商店中的对象的查询,这是一两件事,但似乎如果我们过滤或在这些领域的排序是另一种。问题是从一个数字到一个数字来回转换DateTime。欢迎任何有关性能考虑的想法。谢谢。

+0

FWIW,我们通过C#/ .Net访问MongoDB实例,如果这有效果的话。 – BobC 2011-02-11 20:39:10

回答

6

内部日期时间和长时间均存储为64位整数bsonspec http://bsonspec.org/#/specification。所以从服务器角度来看,不会因为从角色转换而导致额外的性能损失。问题在于perl中DateTime的缓慢。 注意:使用datetime或long一致,因为一个不会与另一个匹配。

+1

这是正确的答案。问题在于Perl转换BSON Date对象的速度很慢,并不是说MongoDB一般对它们来说很慢。 – 2011-02-11 21:03:28

4

在这次谈话提到其他地方,但它是值得总结:

在考虑中的性能问题纯粹是一个Perl的问题,与建立在Perl DateTime对象的成本做。一般来说,这与MongoDB的性能无关,或者与Perl以外的其他语言的MongoDB驱动程序无关。 C#驱动程序在DateTimes应该没有性能问题。