Rubyでバルクインサート

18
Rubyバルクインサート 1

Transcript of Rubyでバルクインサート

Page 1: Rubyでバルクインサート

Rubyでバルクインサート

1

Page 2: Rubyでバルクインサート

バルクインサート

2

Page 3: Rubyでバルクインサート

要約すると・・・

• 1回のコンテキストスイッチで大量のレコードを処理すること

3

Page 4: Rubyでバルクインサート

Rubyでやるには

4

Page 5: Rubyでバルクインサート

大体どっちか。。。

• Ruby上からSQLコマンドを実行

• Gem(Ruby用のライブラリ)を使う

• そもそもRubyを使う選択肢が(ry

5

Page 6: Rubyでバルクインサート

楽にやりたいのでGemを使おう!!

6

Page 7: Rubyでバルクインサート

ORM用Gem

• ActiveRecord

• Datamapper

• Sequel

• og

7

Page 8: Rubyでバルクインサート

バルクインサート出来そうな他に無いのか!?

8

Page 10: Rubyでバルクインサート

使ってみる!!

10

Page 11: Rubyでバルクインサート

モデル• モデル定義

11

Page 12: Rubyでバルクインサート

実装してみる• これだけで使えた!!

• importメソッドにモデルの配列を指定

12

Page 13: Rubyでバルクインサート

他の引数は?

• :validate

• trueにするとinsert前に値の検証を実施する(デフォルトはtrue)

• :on_duplicate_key_update

• 主キー、一意制約違反があるカラムを指定することで、指定カラムを更新できるようにする

13

Page 14: Rubyでバルクインサート

パフォーマンスは?

14

Page 15: Rubyでバルクインサート

こっちじゃないよw

15

Page 16: Rubyでバルクインサート

10万件処理した!!

1. 42.946298931 (sec)

2. 50.506361978 (sec)

3. 52.728926818 (sec)

4. 51.085752657 (sec)

5. 50.447273085 (sec)

16

Page 17: Rubyでバルクインサート

50sec程度結構、使える!!

17

Page 18: Rubyでバルクインサート

ぜひ使ってみてください!!

18