mysql добавление цен
        Есть таблица история цен. Цены обновляются на сайте каждый час. Примерно 40тыс, цен. Чтобы вести историю цен, все эти цены добавляются без проверки в базу. База соответственно разрослась до 7млн, записей.
Не хочется плодить эти записи, но и добавлять цены(только те, что изменились), тоже ресурсозатратно. Возможно, кто-то подскажет более удобный способ хранения истории изменения цен.
    
    
                                                        Не хочется плодить эти записи, но и добавлять цены(только те, что изменились), тоже ресурсозатратно. Возможно, кто-то подскажет более удобный способ хранения истории изменения цен.
            
                Поблагодарить автора            
            
                 Отправить деньги            
        
        
            Комментарии: 7
                Наверное, только вариант с хранением изменившихся цен.
В принципе, можно записывать в таблицу все цены, а затем подчищать ненужные записи отдельным скриптом, который по cron будет запускаться.
Подчищает пусть каким-нибудь хитрым sql запросом.., чтобы не объекты xpdo (мы же про modx говорим?))) дергать, а попроще как-нибудь. Типа выбрать 2 последние записи с одним id товара, если цена одинаковая — то последнюю из этих записей удалить, как не нужную, а если цены разные — предпоследнюю пометить как «проверенную» и больше ее не проверять.
Или например разнести все это по 2м таблицам: одна временная, где все 40 тыс записей, а во вторую уже попадают только действительно изменившиеся цены.
                    В принципе, можно записывать в таблицу все цены, а затем подчищать ненужные записи отдельным скриптом, который по cron будет запускаться.
Подчищает пусть каким-нибудь хитрым sql запросом.., чтобы не объекты xpdo (мы же про modx говорим?))) дергать, а попроще как-нибудь. Типа выбрать 2 последние записи с одним id товара, если цена одинаковая — то последнюю из этих записей удалить, как не нужную, а если цены разные — предпоследнюю пометить как «проверенную» и больше ее не проверять.
Или например разнести все это по 2м таблицам: одна временная, где все 40 тыс записей, а во вторую уже попадают только действительно изменившиеся цены.
                Спасибо, наверно буду подчищать. С двумя таблица не очень понял идею.            
                    
                Ну сначала быстро копируем все старые цены во временную таблицу, без разбора.
А потом уже неспешно «перебираем» эту таблицу, сравниваем со второй таблицей, где хранятся только те цены, что действительно изменились. Ну и после сравнения принимаем решение о переносе цены из временной таблицы в постоянную
                    А потом уже неспешно «перебираем» эту таблицу, сравниваем со второй таблицей, где хранятся только те цены, что действительно изменились. Ну и после сравнения принимаем решение о переносе цены из временной таблицы в постоянную
                Я понял, спасибо за совет.            
                    
                Можно ети цены сохранять в талице с 2 полями 'product_id' i 'prices'
где prices — сохраняєтся в виде JSON
                    где prices — сохраняєтся в виде JSON
[209.99, 199.99, 179.99]или[
{'price': 209.99, 'date': "dd.mm.YY HH:ii:ss"}, 
{'price': 199.99, 'date': "dd.mm.YY HH:ii:ss"}, 
{'price': 179.99, 'date': "dd.mm.YY HH:ii:ss"}
]Не знаю на сколько ето правильно            
                Я думал про этот способ. Просто не очень понятно, как потом выводить данные за определенную дату.            
                    {
"dd.mm.YY.HH": 209.99,
"dd.mm.YY.HH": 199.99,
"dd.mm.YY.HH": 179.99,
}            
                            Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.