0

我正在开发一个像这样工作的应用程序:

  1. 它从许多来源获取数据,产生大约 500,000-1,500,000 条记录的池(取决于时间/天)
  2. 数据被解析
  3. 以某种方式处理部分数据以将其与预先存在的数据(从数据库中读取)进行比较,进行计算并将其存储在数据库中。然而,必须存储在数据库中的结果数据集的大小要小得多(与原始数据集相比),并且记录范围为 5,000-50,000 条。这个过程几乎总是更新现有数据,也许会添加更多记录。
  4. 然后,步骤 2 中的数据应该以某种方式保存在某个地方,以便下次获取数据时,有一个可用于执行计算的数据集,而无需触及数据库中预先存在的数据。我应该指出,这些数据可能会丢失,它不是不可替代的(如果需要,可以从数据库中读取关键信息),但它会加快下一次的进程。

应用程序组件可以(并且将会)在不同的计算机上(在同一个网络中)运行,因此必须可以从多个主机访问存储。

我曾考虑过使用 memcached,但我不太确定是否应该这样做,因为一条记录通常不小于 200 字节,如果我有 1,500,000 条记录,我猜它会超过 300 MB 的 memcached 缓存。 .. 但这对我来说似乎不可扩展——如果数据是那个数量的 5 倍呢?如果它只消耗 1-2 GB 的缓存来保持迭代之间的数据(这很容易发生)?

所以,问题是:哪种临时存储机制最适合这种处理?我没有考虑使用 mysql 临时表,因为我不确定它们是否可以在会话之间持续存在,并被网络中的其他主机使用......还有其他建议吗?我应该考虑什么?

4

1 回答 1

1

我知道这听起来很老套,但是 SAN 上的临时文件既简单又便宜。

与一直消耗 300M 的缓存相比,在每次运行开始时加载 300M 的文件是微不足道的。

而且,如果您可以从数据库密钥重新创建它,那么明智的做法是编写和测试该部分并使其自动化,如果临时文件不可用,则将从密钥中挖掘并重新创建信息。

于 2011-01-05T20:50:35.350 回答