[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