大量のHashをRubyのselectメソッドから探すのとMongoDBから探すの、どっちが速いか

Pocket

普通に考えるとインメモリに大量のHashを保持した状態でRubyのselectメソッドを使った方が速い気もしつつ、「大量の」という条件付きだともしかしてMongoDBの方が速くなるのかしら?などと思って検証してみました。

検証環境

  • ruby 2.1.3
  • mongodb 2.6.1

気になる結果は・・・

Rubyの圧勝でした。

MongoDBでの検索が遅いというより、検索結果のBSONからRubyのArrayに変換する部分が重いのではないかなと思います。Rubyの場合はその辺のオーバーヘッドがないので速い、という感じでしょうか。そしてそもそもMongoDBの用途を間違えている気がする。