【发布时间】:2016-02-02 01:48:27
【问题描述】:
我正在开发一个涉及在数据库中执行非常高的更新/选择查询的应用程序。
我有一个基表 (A),其中一天有大约 500 条实体记录。对于系统中的每个用户,该实体的变体是根据用户的某些偏好创建的,并将它们存储在另一个表 (B) 中。这是由每天午夜运行的 cron 作业完成的。
所以如果表 A 中有 10,000 个用户和 500 条记录,那么表 B 中将有 500 万条记录。我总是在这些表中保留一天的数据,并在午夜将历史数据归档到 HBase。此设置运行良好,到目前为止我没有遇到任何性能问题。
最近业务需求发生了一些变化,现在基表 A 中的一些属性(对于 15 - 20 条记录)将每 20 秒更改一次,基于此我必须重新计算所有这些变化记录的一些值表 B 为所有用户。即使只有 20 条主记录发生变化,我也需要重新计算和更新 200,000 条用户记录,这需要 20 多秒,然后下一次更新最终会导致所有 Select 查询排队。我从在线用户那里收到大约 3 次获取请求/5 秒,这导致 6-9 次选择查询。为了响应 api 请求,我总是使用表 B 中的字段。
我可以购买更多的处理能力来解决这种情况,但我有兴趣拥有一个可以处理甚至一百万用户的适当扩展的系统。
这里有人可以提出更好的选择吗? nosql + 关系数据库在这里对我有帮助吗?是否有任何平台/数据存储可以让我在不锁定的情况下频繁更新数据,同时让我可以灵活地对实体中的各个字段运行选择查询?
干杯 水壶
【问题讨论】:
标签: database database-design database-performance in-memory-database nosql