普通に考えるとインメモリに大量のHashを保持した状態でRubyのselectメソッドを使った方が速い気もしつつ、「大量の」という条件付きだともしかしてMongoDBの方が速くなるのかしら?などと思って検証してみました。
検証環境
- ruby 2.1.3
- mongodb 2.6.1
気になる結果は・・・
Rubyの圧勝でした。
MongoDBでの検索が遅いというより、検索結果のBSONからRubyのArrayに変換する部分が重いのではないかなと思います。Rubyの場合はその辺のオーバーヘッドがないので速い、という感じでしょうか。そしてそもそもMongoDBの用途を間違えている気がする。