3

让我们想象一下要在服务器上完成的非常简单的任务。有很多用户在我们的网站上聊天,我们想知道他们每个人是否在线。

有两种明显的方法可以做到这一点——使用 MySQL 数据库或应用 memcached NoSQL 解决方案。

但是为什么 memcached 应该执行得更快呢?如果我理解正确,MySQL 也会从内存中读取数据,而不是从磁盘中读取数据(如果设置和调整正确)。用于持久性的资源很少,但也不会太多——只有很少的内存页面要刷新到磁盘上。

主要问题。是否有充分的理由为这样的任务使用 NoSQL,或者 MySQL 也能正常执行?

4

2 回答 2

4

对于这样一个微不足道的任务,你是对的,它不会显着改变性能,因为数据将保留在内存中,I/O 不会成为问题。

您的问题似乎暗示 memcached 是一个典型的 NoSQL 引擎;让我强调一下,memcached 本身就是一个实体,通常不被概念化为 NoSQL 数据库,而更像是一种快速且易失的键值存储,通常由磁盘绑定数据库提供支持。

SQL 和 NoSQL 都有超出您的问题范围的优点和缺点,有关此的更多信息可在另一个线程中找到。

于 2013-05-23T04:43:00.160 回答
0

NoSQL 通常用于分析大数据。Memcached 用于制作快速缓存系统。

聊天不需要大数据分析,也不需要缓存系统,因为你只需要展示少量数据,而且数据经常更新。因此,关系型 DBMS 是最佳选择。

想象一下,您有一个很少更改的复杂站点。假设您的页面很复杂,并且必须执行几个复杂的查询来组成每个页面。在这种情况下,使用 memcached 是有意义的,因为您可以组合页面并将它们存储在内存中。

想象一下,您拥有庞大的商业智能数据。您需要进行一些聚合操作,例如平均值、标准差、总和……好吧,大数据解决方案可能比 MySQL 执行得更好。想一想,有很多警告。

结论:NoSQL 不适合聊天 :)

于 2013-05-23T06:00:27.460 回答