[Moscow.pm] Задачка на подумать, кому интересно...
Andrei Lukovenko
aluck на cordeo.ru
Пн Дек 2 06:09:27 PST 2013
наверное, я сегодня недоходчив. попробую ещё раз, с другого конца.
если в данный момент максимальное значение ПК = n, то для каждого X
существует одно, и только одно максимальное значение ПК, меньшее n.
допустим, в данный момент n = 60000. это значит, что 2 байта покроют все
значения PK.
откусываем 2 байта от хеша. получаем, к примеру, 60001. неудача! сдвигаемся
на бит (или байт) вправо; получаем 54467. ура. выбираем максимальное
значение ПК из таблицы, меньшее 54467.
допустим теперь, что в таблицу добавили ещё одну строку, и при повторном
запросе 60001 будет считаться валидным значением, в результате выборка
поменяется.
ОК, workaround: сохраняем значение PK 60000, ассоциируя его с этой строкой.
при последующем запросе берём ИЛИ сохранённое значение, ИЛИ (при его
отсутствии) максимальное значение PK.
2 декабря 2013 г., 20:01 пользователь Михаил Монашёв <
postmaster на softsearch.ru> написал:
> Здравствуйте, Andrei.
>
> > поэтому я и спросил про "случайность". :)
> >
> > если бы это было казино - пришлось бы немного поизголяться, конечно.
>
>
> Со случайностью выбора id-шек в твоём решении всё ок. Проблема в том,
> что при росте таблицы пропадает привязка строки к id-шкам. А ради этой
> привязки задачка и сформулирована.
>
> --
> С уважением,
> Михаил mailto:postmaster на softsearch.ru
>
> --
> Moscow.pm mailing list
> moscow-pm на pm.org | http://moscow.pm.org
>
--
Best regards, Andrei
+7-937-847-60-74
----------- следущая часть -----------
Вложение в формате HTML было извлечено…
URL: <http://mail.pm.org/pipermail/moscow-pm/attachments/20131202/340ccdc7/attachment.html>
Подробная информация о списке рассылки Moscow-pm