ActiveRecord#find_each
に相当する方法はにありますかDataMapper?DataMapperのfind_eachに相当する
(find_each
1000のバッチでメモリに物事をフェッチするのではなく、メモリのすべてをロードすることによって、クエリの結果を反復処理します)
ActiveRecord#find_each
に相当する方法はにありますかDataMapper?DataMapperのfind_eachに相当する
(find_each
1000のバッチでメモリに物事をフェッチするのではなく、メモリのすべてをロードすることによって、クエリの結果を反復処理します)
私はあまりDMはありませんが、それは難しいが、書くことということではないでしょう独自のDMでは、独自の「制限」と「オフセット」を手動でクエリに適用することができます。
ARのfind_each/find_in_batchesの実装をチェックしてください。数十行しかありません。
https://github.com/rails/rails/blob/master/activerecord/lib/active_record/relation/batches.rb#L19
https://github.com/rails/rails/blob/master/activerecord/lib/active_record/relation/batches.rb#L48
私はそれを書くことができると確信していますが、すでにそれを行う方法がある場合、私は車輪を再発明したくありません。 – mb14
(私はそれを使用することを期待OFFSET、それは全体のコレクションを取得し、@MichaelKohlが示唆したように、私はdm-chunked_query
をチェックしますが、私が期待するように私はそれを動作させることができませんでした+ LIMIT)。だから私は自分自身の拡張子を書いた、それが役に立てば幸いない、非常に単純です:
class DataMapper::Collection
def batch(n)
Enumerator.new do |y|
offset = 0
loop do
records = slice(offset, n)
break if records.empty?
records.each { |record| y.yield(record) }
offset += records.size
end
end
end
end
# Example
Model.all(:order => :id.asc).batch(1000).each { |obj| p obj }
ませDMの専門家が、どのようにこの外観を行います。https://github.com/postmodern/dm-chunked_queryは? –
dm-chunkedは完全に機能します。ヒントをありがとう! ところで、元のポスターがあなたに信用を与えることができるように、回答としてコメントを投稿しているはずです。あなたはまだそうすることができます。 – phatmann