Как выполнить массовую вставку в базу данных, когда модель является вложенным множеством? - PullRequest
0 голосов
/ 05 июля 2019

У меня есть модель, включающая структуру данных вложенного набора, поэтому я использовал gem act_as_nested_set. Теперь у меня есть требование массовой вставки более 100 тысяч записей. Если бы не была вложенная структура данных, массовая вставка могла бы быть проще и быстрее. Но с помощью Nested set каждая вставка обновляет все записи в цепочке предков. Итак, это занимает слишком много времени.

Я думал о создании дерева в памяти и поддержании lft, rgt, глубины, children_count, глубины и последующей массовой вставке их, но я не уверен, будет ли хорошей идеей создать 100 тысяч сложных объектов в памяти.

1 Ответ

0 голосов
/ 05 июля 2019

вы можете использовать activerecord-import gem, Activerecord-Import - это библиотека для массовой вставки данных с использованием ActiveRecord.

ссылка GitHub : https://github.com/zdennis/activerecord-import

например

books = []
10.times do |i|
  books << Book.new(name: "book #{i}")
end
Book.import books  
...