Проблема проектирования: обновление базы данных из приложения C ++ с низкой задержкой - PullRequest
3 голосов
/ 16 августа 2011

Я занимаюсь разработкой приложения с низкой задержкой на C ++.Мне также нужно обновить базы данных моей обработки и всех изменений состояния.Чтобы сэкономить на задержке, связанной с вызовом обновлений базы данных, я использую локальные структуры данных (в памяти) в своем приложении.

Но мне все еще нужно обновлять базы данных.Должен ли я использовать отдельный поток для обновления баз?Как сэкономить на задержке базы данных и при этом поддерживать базы в актуальном состоянии.

Ответы [ 3 ]

6 голосов
/ 16 августа 2011

Для минимальной задержки вам определенно понадобится поток базы данных (я назову его DBT).
Однако, если обновления происходят часто, вы захотите сохранить изменения в буфере и объединить DBT с любыми обновлениями.может, прежде чем они будут отправлены в фактическую базу данных. Если player.x = 1, то player.x = 2, DBT может пропустить первый. Если обновления очень быстрые, а набор данных не огромен, вы можете рассмотретьрегулярные полные дампы вместо запуска обновлений. Например, «сохранение» того, что вы делаете каждые 60 секунд, вместо отправки в базу данных списка всех выполненных действий. Ответ во многом будет зависеть от того, что вы делаете.здесь ответ один на все.

0 голосов
/ 22 августа 2011

Объединяя данные ответы и применяя свои собственные мысли, я думаю о реализации следующей стратегии: - На лету обновите локальную структуру данных и создайте дамп в файл, а не в базу данных.файл и дамп его в базу данных (на самом деле придется заблокировать и переместить существующий файл и скопировать содержимое в базу данных)

Что вы говорите?Любые лазейки в этом решении выше.

0 голосов
/ 16 августа 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...