Монгоидные индексы и валидации - PullRequest
0 голосов
/ 11 марта 2019

У меня есть приложение Rails 5 / Mongoid 7, которое анализирует файлы и добавляет содержимое в БД.синтаксический анализ занимает все больше и больше времени после обработки каждого файла, и я думаю, это потому, что у меня есть validates_uniqueness_of в одном из полей, поскольку коллекция увеличивается, что проверка должна проверять большую коллекцию, имеет смысл.

Итак, я подумал, что создание индекса для этого поля могло бы помочь, но мне было интересно, стоит ли мне все равно оставить там validates_uniqueness_of или я должен удалить его?

Не могу найти информацию об этом где-либо.

Модель:

class SomeModel
  include Mongoid::Document
  include Mongoid::Timestamps

  field :some_field, type: String

  index({ some_field: 1 }, { unique: true, name: "some_field_index" })

  validates_uniqueness_of :some_field, { case_sensitive: false }
end

Примечание: я запустил rake db:mongoid:create_indexes, но я не пробовалновый анализ еще, хотел знать, как справиться с этим первым.

1 Ответ

1 голос
/ 11 марта 2019

Итак, я провел несколько тестов, и добавление индекса сильно изменило время обработки, поэтому я оставлю здесь свой ответ для потомков.

validates_uniqueness_of можно удалить, хотя теперь уникальность поля обрабатывается индексом, поэтому вместо получения ошибки проверки при попытке сохранить документ выдается исключение, поэтому мне пришлось изменить способ, которым некоторые кода, который обрабатывал создание документа, имейте это в виду, если вам приходится сталкиваться с подобной ситуацией.

...