【发布时间】:2019-10-02 23:36:20
【问题描述】:
我正在为特定的架构设计寻找比我更好的解决方案。
现在,我们的 Oracle 上有一个巨大的用户表(大约 3000 万行并且还在增长),该表正在由每天添加/删除行的现有服务更新,每天只有大约 10k 行。
我们应该创建一个需要获取所有用户的新服务,对其进行一些统计并打印报告。我不能在数据库中做这个报告,因为一些额外的信息会来自其他微服务。
当然,查询需要很长时间才能返回,而且我们需要分批进行,因为我们的新服务将无法在内存中处理所有内容。
所以我正在考虑为该表创建一个内存缓存(Redis 或其他),使用 Read-Through 策略,读取时间会减少,但我担心最终这个数据库会增长,我们会几个月后内存耗尽。
另一个想法,我们可以尝试扩展我们的 Oracle 以增加读取实例,然后多线程处理具有特定范围的大量查询。
在这种情况下我还有哪些其他选择?
提前致谢!
【问题讨论】:
-
你能告诉我们更多关于尺寸的信息吗?如您所知,您可以部署 Redis(和其他解决方案)多个分片以允许您进行扩展,如果需要,您还可以使用 Redis On Flash 将一些值存储到磁盘并保持您的数据库非常快。
-
在我的查询中,我只需要带上有用的列,每行的数据少于500字节。唯一的问题是我们的数据库每天都在增长。
标签: database-design architecture