|
|
|
Посоветуйте, как лучше учитывать обработку данных
|
|||
|---|---|---|---|
|
#18+
Есть таблица с покупками. Для покупок определенного типа начисляются бонусные баллы. Исходную таблицу изменять нежелательно (добавить в нее флаг "Обработана"). Нужно не допустить дублирования бонусов (т.е. не обрабатывать одну покупку дважды). Покупок задним числом не бывает. Подскажите, как будет правильнее? 1. Ежедневно запускается скрипт, обрабатывает покупки за предыдущие сутки. 2. Идентификаторы обработанных покупок сохраняются в отдельной таблице и из таблицы покупок извлекаются только те покупки, которые еще не были обработаны. Второй вариант как бы надежнее, но мне кажется избыточным. ________________________ Мы смотрим с оптимизмом... ...в оптический прицел. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2016, 12:54 |
|
||
|
Посоветуйте, как лучше учитывать обработку данных
|
|||
|---|---|---|---|
|
#18+
Все варианты хороши, когда грамотно реализованы и учтены все особенности ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2016, 13:00 |
|
||
|
Посоветуйте, как лучше учитывать обработку данных
|
|||
|---|---|---|---|
|
#18+
Если идентификаторы в исходной таблице назначаются sequence, то можно хранить протокол запусков с указанием диапазона обработанных id ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2016, 14:37 |
|
||
|
Посоветуйте, как лучше учитывать обработку данных
|
|||
|---|---|---|---|
|
#18+
Да, это sequence. Возможно это будет оптимальным. В первом варианте мне не нравится вероятность проблем если вдруг ежедневный запуск не сработает, а во втором варианте не нравится слишком большая избыточность данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2016, 14:49 |
|
||
|
Посоветуйте, как лучше учитывать обработку данных
|
|||
|---|---|---|---|
|
#18+
Alibek B.вероятность проблемСудя по вопросу, история когда за что начисляли не хранится. Ну-ну. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2016, 15:06 |
|
||
|
Посоветуйте, как лучше учитывать обработку данных
|
|||
|---|---|---|---|
|
#18+
Alibek B.Да, это sequence. Возможно это будет оптимальным. В первом варианте мне не нравится вероятность проблем если вдруг ежедневный запуск не сработает, а во втором варианте не нравится слишком большая избыточность данных. Храни дату последней обработанной покупки и при следующем запуске начинай с неё. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2016, 15:46 |
|
||
|
Посоветуйте, как лучше учитывать обработку данных
|
|||
|---|---|---|---|
|
#18+
XMLerХрани дату последней обработанной покупки и при следующем запуске начинай с неё.требуется ряд допущений. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2016, 16:22 |
|
||
|
Посоветуйте, как лучше учитывать обработку данных
|
|||
|---|---|---|---|
|
#18+
-2-Судя по вопросу, история когда за что начисляли не хранится. Я думал, но не вижу особого смысла хранить историю начисления бонусов. Список покупок в прошлом не изменяется и для сверки бонусы всегда можно пересчитать ретроспективно. Под проблемами я подразумевал, что по какой-то причине ежедневный скрипт может не отработать и тогда начисления за этот день будут пропущены и восстанавливать их нужно будет вручную. При втором варианте такой проблемы не будет, пропущенные покупки будут обработаны при следующем запуске скрипта. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2016, 16:31 |
|
||
|
Посоветуйте, как лучше учитывать обработку данных
|
|||
|---|---|---|---|
|
#18+
Alibek B.-2-Судя по вопросу, история когда за что начисляли не хранится. Я думал, но не вижу особого смысла хранить историю начисления бонусов. Смысл осознается в момент, когда возникают разногласия по начислениям. Пока разногласий нет - по сути не нужна целая куча информации. Счета, к примеру, не нужны. Склад тоже не нужен. Как и история покупок... А если есть согласие с налоговой - то вообще весь учет становится простой формальностью. Зато когда появляются разногласия - всю прелесть детального учета понимаешь мгновенно... но поздно :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2016, 17:26 |
|
||
|
Посоветуйте, как лучше учитывать обработку данных
|
|||
|---|---|---|---|
|
#18+
-2-XMLerХрани дату последней обработанной покупки и при следующем запуске начинай с неё.требуется ряд допущений. Без этого даже в туалет не сходишь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2016, 18:10 |
|
||
|
Посоветуйте, как лучше учитывать обработку данных
|
|||
|---|---|---|---|
|
#18+
andrey_anonymousСмысл осознается в момент, когда возникают разногласия по начислениям. Например? Я пытался себе представить такую ситуацию, но так и не придумал. Есть покупки за прошлые периоды, есть соответствующие этим покупкам начисления бонусов. Допустим есть разногласия по начислениям бонусов за вчерашний день, в этом случае нужно поднять историю покупок (которые регистрируются детально), просуммировать их вручную, посчитать бонус и сверить посчитанное с начисленным. Но исходные данные, по которым начисляются бонусы, одни и те же, как на момент расчета, так и на любой другой момент в будущем. И результат будет одним и тем же, если только не предполагать, что CPU разучился выполнять арифметические операции. Смысл хранить историю начислений был бы в том случае, если бы на расчет влияли параметры помимо исходных данных. Но в данном случае формула начисления бонусов полностью детерминированная. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2016, 22:46 |
|
||
|
Посоветуйте, как лучше учитывать обработку данных
|
|||
|---|---|---|---|
|
#18+
Alibek B.сверить посчитанное с начисленным[quot Alibek B.]не вижу особого смысла хранить историю начисления бонусов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2016, 23:41 |
|
||
|
Посоветуйте, как лучше учитывать обработку данных
|
|||
|---|---|---|---|
|
#18+
andrey_anonymousЕсли идентификаторы в исходной таблице назначаются sequence, то можно хранить протокол запусков с указанием диапазона обработанных id А как лучше проверять диапазоны? left join с последующей проверкой на is null? Или not exists? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.10.2016, 12:57 |
|
||
|
Посоветуйте, как лучше учитывать обработку данных
|
|||
|---|---|---|---|
|
#18+
Alibek B.andrey_anonymousЕсли идентификаторы в исходной таблице назначаются sequence, то можно хранить протокол запусков с указанием диапазона обработанных id А как лучше проверять диапазоны? left join с последующей проверкой на is null? Или not exists? лучше думать не тем местом на котором сидишь. "обычно" sequence имеет тенденцию только расти и достаточно запоминать последнее обработанное значение ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.10.2016, 13:37 |
|
||
|
|

start [/forum/topic.php?fid=52&fpage=193&tid=1887134]: |
0ms |
get settings: |
8ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
30ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
63ms |
get tp. blocked users: |
1ms |
| others: | 218ms |
| total: | 345ms |

| 0 / 0 |
