【问题标题】:Using MySQL or NoSQL database [closed]使用 MySQL 或 NoSQL 数据库 [关闭]
【发布时间】:2012-08-08 05:20:52
【问题描述】:

我要启动一个大型 Web 应用程序,该应用程序将由 PHP(YiiFramework)提供支持,我希望在启动该应用程序之前构建一个强大且可扩展的架构,能够处理大量流量。

应用程序 SQL 查询大约(80% 读取,20% 在更新和插入之间),我实际上在数据库中有 15 个表,以及许多 mediumtext 列,这将是许多通过文本搜索的查询,例如(WHERE foo LIKE '%VARS%')

我将使用 PHP APC 来提高性能,并从 Memcached 服务器开始,并使用 Nginx 作为备用代理。

对于数据库: NoSQL 数据库可以替代 MySQL 之类的 RDBMS 吗?

NoSQL 数据库是否比 MySQL 更高效?

什么是我的案例的最佳 NoSQL 数据库解决方案(80% 读取,20% 在更新和插入之间),为什么?

【问题讨论】:

  • 请一个 db 专业人士来看看,这里有很多因素可以给出有意义的答案。
  • 有点离题,但您应该将 varnish 作为缓存代理添加到您的列表中。

标签: php mysql sql performance nosql


【解决方案1】:

LIKE '%term%' 不会缩放。根据表中的行数,查询将始终为 O(N)。随着您添加行,查询会变慢。

您将需要使用文本索引。看看使用 Sphinx 或 SOLR。

Sphinx full text search SOLR full text search

【讨论】:

  • 另一个替代方案——虽然不是一个非常成熟的项目——是 ElasticSearch。非常适合具有大量文本的大型数据库。正如 Justin Swanhart 所说,如果有大表并且您会收到大量 'LIKE "%term"' 类型的查询,您将会遇到 RDBMS 的麻烦。
【解决方案2】:

很多问题。

nosql DB 可以潜在地替换 RDBMS。这取决于您的基础架构和组织需求。但从技术上讲,它没有问题。我不知道很多你不能用 map reduce 做的查询,你可以用 sql 做。

是否更有效取决于您的需求。如果您使用大量文本搜索,请尝试使用 lucene (solr) 之类的索引来提高这两种情况下的性能。但也有使用 nosql 和索引的解决方案。所以一个有经验的 rdbms 程序员绝对可以胜过一个没有经验的 nosql 程序员,反之亦然。

我对 couchdb 有一些经验,它对我的​​应用程序来说很快。但这取决于。大多数稳定的nosql数据库很快,rdbms也很快。这在很大程度上取决于确切的查询和设置。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-03-19
    • 1970-01-01
    • 1970-01-01
    • 2012-05-20
    • 1970-01-01
    • 2011-03-14
    • 2013-05-28
    相关资源
    最近更新 更多