2015-12-31 3 views
0

У меня был следующий вопрос: У меня есть таблица, которую я буду читать с программой, тем временем эта таблица будет обновляться каждый день. Но программа обновления не является надежной, она может выйти из строя в любое время. Я получил следующие решения:Как я могу перезагрузить данные в таблице db?

1. Программа обновления записывает данные в таблицу tmp, после успеха я удаляю таблицу чтения, а затем переименую таблицу tmp в таблицу чтения.

2. Я создаю три таблицы T1, T2, S. T1 и T2 - таблицы данных. S - таблица состояния, записывающая таблицу (T1 или T2) для чтения. Программа обновления сначала запрашивает S для текущей таблицы чтения, затем другая представляет собой таблицу записи, загружая данные в таблицу записи после успеха, обновляя S, делая таблицу записи таблицей чтения. Каждый раз программа запроса сначала извлекает таблицу чтения из S, а затем считывает данные из нее.

Я хочу знать, какой из них лучше и ПОЧЕМУ? Или у пар-ребята есть лучшие решения. Цените помощь за помощь, спасибо!

+0

Какой язык/рамки вы используете, и можете ли вы описать приложение, которое вы строите? –

+0

@TimBiegeleisen Программа чтения основана на java, программа записи может быть scala – kent

+0

Ни один из этих подходов не имеет смысла вообще. Если программа ненадежна и может быть неудачной в любое время, с чем справляется любое количество таблиц? – Mjh

ответ

0

Это действительно зависит от вашей модели данных. У вас есть ограничения между таблицами? Если это так, вам нужно будет удалить/вставить в правильном порядке. И какую базу данных вы используете?

В вашем решении fisrt вы бросаете стол. Если вы используете триггеры или хранимые процедуры или любой другой материал базы данных, это будет недействительным после падения. Итак, вам нужно будет перекомпилировать объекты.

Также почему вам нужно удалить все строки в таблице? Вы можете добавить поле даты, то есть овернуться и сохранить, например, сохранение 1 дня или 5 дней или в любом случае. Затем вы очищаете данные предыдущего дня, когда процесс загрузки выполняется и проверяется.

+0

Я использую mysql. У меня есть только индекс на столе. Я удаляю данные, потому что они рассчитаны каждый день, основываясь на последних исходных данных. – kent

+0

более конкретный, я строю рекомендую sys. И мне нужна таблица для кэширования некоторых данных. столбцы: [userid, geohash, profile_list, cf_list], список_событий списка магазинов [restaurantId, оценка], рассчитанный с использованием алгоритма профиля пользователя, а cf_list вычисляется с использованием алгоритма совместного фильтра. – kent

Смежные вопросы