【发布时间】:2011-06-26 06:55:48
【问题描述】:
我正在编写一个不一定需要扩展能力的应用程序,因为它一开始不会收集大量数据。 (但是,如果我幸运的话,我可能会走上这条路。)
我将在同一个机器上运行我的网络服务器和数据库(目前)。
话虽如此,我正在寻找性能和效率。
我的应用程序的主要部分是加载博客文章。使用 RDBMS (MySQL) 我将进行 6 个查询(其中 2 个查询是连接的),只是为了加载一个博客文章页面。
select blog
select blog_album
select blog_tags
select blog_notes
select blog_comments (join with users)
select blog_author_participants (join with users)
但是,使用MongoDB,我可以将 6 个表反规范化并展平为 2 个表/集合,并将我的查询最小化为可能只有 1 个查询,
users
blogs
->blog_album
->blog_tags
->blog_notes
->blog_comments
->blog_author_participants
现在,使用 MongoDB 架构,会有一些数据冗余。但是,硬盘空间比 CPU/服务器便宜。
1.) 这是使用 MongoDB 的好场景吗?
2.) 使用 MongoDB 进行扩展时,您是否只会在性能方面受益?
3.) 使用 MongoDB 是否存在任何持久性风险?我听说在执行插入时可能会丢失数据 - 因为插入首先写入内存,然后写入数据库。
4.) 这是否应该阻止我在生产中使用 MongoDB?
【问题讨论】:
-
"我正在寻找性能和效率。"和“我将在同一个盒子上运行我的网络服务器和数据库。”彼此矛盾。
-
3000 万人使用 WordPress 似乎做得很好,每页运行同样多的查询来显示他们的博客。您似乎已经被 NoSQL 炒作所吸引。当您实际上对 RDBMS 的查询过多而无法构建页面时遇到问题,您只需在前面扔一个缓存代理,或者更简单,在您的博客平台中一键安装缓存插件。
标签: mysql mongodb database-design relational-database database