Динамические данные в postgresql - PullRequest
1 голос
/ 09 февраля 2009

Я собираюсь сделать так, чтобы скрипт Python выполнял много ОБНОВЛЕНИЙ в секунду на 2 433 000 строк. В настоящее время я пытаюсь сохранить динамический столбец в Python как значение в python dict. Тем не менее, держать мой python синхронизированным с изменениями в других столбцах становится все более и более трудным или нежизнеспособным.

Я знаю, что могу поставить автовакуум на перегрузку, но мне интересно, хватит ли этого, чтобы догнать огромное количество ОБНОВЛЕНИЙ. Если бы я только мог связать переменную python с каждой строкой ...

Я боюсь, что VACUUM и перезапись диска убьют мой сервер?

Любые предложения о том, как связать чрезвычайно динамические переменные со строками / ключами?

Thx

1 Ответ

3 голосов
/ 09 февраля 2009

PostgreSQL поддерживает асинхронные уведомления с использованием команд LISTEN и NOTIFY . Приложение (клиент) LISTENs для уведомления с использованием имени уведомления (например, «table_updated»). Сама база данных может быть создана для выдачи уведомлений либо вручную, то есть в коде, который выполняет вставки или модификации (полезно, когда выполняется большое количество обновлений, с учетом пакетных уведомлений), либо автоматически внутри обновления строки TRIGGER .

Вы можете использовать такие уведомления для обновления ваших структур данных.

В качестве альтернативы (или вы можете использовать это в сочетании с вышеупомянутым), вы можете настроить свой словарь Python, переопределив методы __getitem__(), has_key(), contains() и заставить их выполнять поиск по мере необходимости, позволяя вам кэшировать результаты с использованием тайм-аутов и т. д.

...