Является ли порядок идентификаторов моделей надежным указанием порядка, в котором были созданы модели? - PullRequest
2 голосов
/ 28 января 2012

Сценарий

Обновление : мое внимание привлекло то, что упорядочение по created_at фактически сравнит число с плавающей запятой в миллисекундах с достаточным разрешением (безусловно).Однако, хотя я чувствую себя немного тупым, мой вопрос остается в силе.Мой сценарий просто не имеет значения, поэтому я удалил его.

Вопрос

Я знаю, что база данных точно знает порядок создания, отслеживая идентификатор строки.

Есть ли какие-либо недостатки в использовании последнего идентификатора для определения порядка?

Ответы [ 2 ]

2 голосов
/ 28 января 2012

Лучшее решение - заменить latest_post_at чем-то более точным, чем секунда.Time.now.to_f вместо .to_i даст вам точность менее секунды (думаю, миллисекунды не ясны).Если два сообщения имеют одинаковую метку времени в миллисекундах, вы можете использовать идентификатор в качестве тай-брейка.

1 голос
/ 28 января 2012

Если вы используете «естественный» способ генерации автоинкрементных суррогатных первичных ключей для вашей базы данных, единственная ловушка, которая приходит на ум, заключается в том, что порядок, в котором секвенсор базы данных генерировал идентификаторы, может быть какие транзакции, которые создают записи Post, начинаются или заканчиваются. (Или же вы определяете время, когда сообщение «создается».)

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...