让我们想象一下在服务器上完成的非常简单的任务。有许多用户在我们的网站上聊天,我们想知道,如果他们每个人都在线。
有两种明显的方法可以做到这一点 - 使用MySQL数据库或应用memcached NoSQL解决方案。
但为什么memcached的执行速度更快?如果我理解正确,MySQL也会从内存中读取数据,而不是从磁盘中读取数据(如果设置和调整正确)。持久化的资源很少,但也没有太多 - 只需要很少的内存页面就可以在磁盘上刷新。
主要问题。是否有充分理由将NoSQL用于此类任务,或者MySQL也能正常运行?
答案 0 :(得分:4)
对于这样一个微不足道的任务,你是对的,它不会显着改变性能,因为数据将保留在内存中,I / O不会成为问题。
你的问题似乎暗示memcached是典型的NoSQL引擎;让我强调一点,memcached本身就是一个实体,通常不会被概念化为NoSQL数据库,而更像是一个快速且易变的键值存储,通常不受磁盘绑定数据库的支持。
SQL和NoSQL在你的问题范围内都有很多优点和缺点,有关它的更多信息是available in another thread。
答案 1 :(得分:0)
NoSQL通常用于分析大数据。 Memcached用于构建快速缓存系统。
聊天不需要分析大数据,也不需要缓存系统,因为您只需要显示一些数据,并且数据经常更新。因此,关系型DBMS是最佳选择。
想象一下,你有一个很少改变的复杂网站。想象一下,您的页面很复杂,必须执行几个复杂的查询来组成每个页面。在这种情况下,使用memcached是有意义的,因为您可以组合页面,并将它们存储在内存中。
想象一下,您拥有庞大的商业智能数据。你需要得到一些聚合操作,比如平均值,标准偏差,总和......好吧,大数据解决方案可能比MySQL更好。想到了,有很多警告。
结论:NoSQL不适合聊天:)