我正在开发一个像这样工作的应用程序:
- 它从许多来源获取数据,产生大约 500,000-1,500,000 条记录的池(取决于时间/天)
- 数据被解析
- 以某种方式处理部分数据以将其与预先存在的数据(从数据库中读取)进行比较,进行计算并将其存储在数据库中。然而,必须存储在数据库中的结果数据集的大小要小得多(与原始数据集相比),并且记录范围为 5,000-50,000 条。这个过程几乎总是更新现有数据,也许会添加更多记录。
- 然后,步骤 2 中的数据应该以某种方式保存在某个地方,以便下次获取数据时,有一个可用于执行计算的数据集,而无需触及数据库中预先存在的数据。我应该指出,这些数据可能会丢失,它不是不可替代的(如果需要,可以从数据库中读取关键信息),但它会加快下一次的进程。
应用程序组件可以(并且将会)在不同的计算机上(在同一个网络中)运行,因此必须可以从多个主机访问存储。
我曾考虑过使用 memcached,但我不太确定是否应该这样做,因为一条记录通常不小于 200 字节,如果我有 1,500,000 条记录,我猜它会超过 300 MB 的 memcached 缓存。 .. 但这对我来说似乎不可扩展——如果数据是那个数量的 5 倍呢?如果它只消耗 1-2 GB 的缓存来保持迭代之间的数据(这很容易发生)?
所以,问题是:哪种临时存储机制最适合这种处理?我没有考虑使用 mysql 临时表,因为我不确定它们是否可以在会话之间持续存在,并被网络中的其他主机使用......还有其他建议吗?我应该考虑什么?