2011-02-11 79 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應該沒有性能問題。