将流式处理输入与大型 SQL 数据库高效同步



我手上有一个效率问题,我正在寻找解决它的方法。情况如下:

  • 我有基于行的流式数据从在线来源进入系统,每个都有独特的id
  • 我有一个SQL数据库,其中包含现有的基于行的数据,按id索引。
  • 如果SQL数据库
  • 与数据库中已有的数据不同,则需要使用新数据流更新SQL数据库。

显而易见的解决方案是:

  1. 读取传入行
  2. 读取数据库中的相应行
  3. 如果数据不同,请更新数据库

大量的往返使这个算法变得不可思议地慢。

我拥有的替代解决方案是将整个SQL数据库读入内存,并与新的传入数据进行比较。这消除了往返,但所需的内存也使其不可行。

那么,我有什么选择呢?

  1. 将数据库拆分为多个部分。(解决大小问题)

  2. 设计一种算法,将其中一些数据库片段缓存到内存中。(速度)

  3. 根据传入的 id,将查询哈希到相关数据库。

如果无法有效地实现步骤 2,这将不起作用。

最新更新