【问题标题】:Which data store is best for my scenario哪个数据存储最适合我的场景
【发布时间】: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


    【解决方案1】:

    我从您的说法中了解到您每 20 秒更新 20 万条记录。然后就像在 10 分钟内一样,您将更新几乎所有数据。在那种情况下,如果更新如此频繁,为什么要将这些状态写入数据库。我对您的要求一无所知,但您为什么不使用表 A 中的数据按需计算呢?

    【讨论】:

      【解决方案2】:

      我建议查看完全实现 MVCC 的内存 DBMS,以消除阻塞问题。如果您的应用程序当前正在使用 SQL,那么没有理由从它转移到 nosql。您描述的性能要求当然可以通过内存中支持 SQL 的 DBMS 来满足。

      【讨论】:

        猜你喜欢
        • 2018-01-19
        • 1970-01-01
        • 2010-12-29
        • 2012-01-15
        • 2020-08-08
        • 1970-01-01
        • 2013-08-25
        • 2015-07-17
        • 1970-01-01
        相关资源
        最近更新 更多