设计问题:从低延迟的c++应用程序更新数据库

Design problem: Updating database from a low latency C++ application

本文关键字:c++ 应用程序 更新 数据库 延迟 问题      更新时间:2023-10-16

我正在用c++开发一个低延迟的应用程序。我还需要更新我的处理和所有状态更改的数据库。为了节省调用数据库更新所涉及的延迟,我在应用程序中使用本地数据结构(内存中)。

但是我仍然需要更新数据库。我应该使用一个单独的线程更新数据库吗?如何在节省数据库延迟的同时保持数据库最新

为了最小化延迟,您肯定需要一个数据库线程(我称之为DBT)。
但是,如果更新频繁,则需要缓冲更改,并让DBT在将更新推送到实际数据库之前合并任何更新。如果球员。X = 1,然后是玩家。x = 2时,DBT可以跳过第一个。如果更新非常快,并且数据集不是很大,那么您可以考虑定期进行完整转储,而不是运行更新。例如,每隔60秒"保存"你正在做的事情,而不是向数据库发送完成的每个动作的列表。答案很大程度上取决于你在做什么。这里没有一个放之四海而皆准的答案。

有一个绝对好的解决方案:尽可能少地保存到数据库。你不需要每秒钟都呼叫save,在大多数情况下,你可以安全地每分钟呼叫一次DB,甚至更少。

结合给出的答案并运用我自己的想法,我正在考虑实施以下策略:-—动态更新本地数据结构并转储到文件而不是数据库-一个单独的数据库线程将从文件中读取并将其转储到数据库(实际上将不得不采取锁并移动现有文件并将内容复制到数据库)

你说什么?上述解决方案中的任何漏洞。