mysql - 何时使用 MongoDB

我正在编写一个不一定需要扩展能力的应用程序,因为它一开始不会收集大量数据。 (但是,如果我幸运的话,我可能会走上这条路。)

我将在同一个机器上运行我的网络服务器和数据库(目前)。

话虽如此,我正在寻找性能和效率。

我的应用程序的主要部分是加载博客文章。使用 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?

最佳答案

当你有一个与其优势相匹配的用例时,你会使用 MongoDB。

您需要无模式文档存储吗?不,你有一个稳定的架构。

您需要自动分片吗?不,您没有非凡的数据需求或预算来横向扩展硬件。

您需要 map/reduce 数据处理吗?不适用于博客之类的东西。

那你为什么还要考虑呢?

https://stackoverflow.com/questions/4981753/

相关文章:

mongodb - 在 mongodb 中运行 javascript 脚本(.js 文件),包括 j

mongodb - 如何删除 Mongo 中已弃用的字段?

mongodb - Mongoose 中权重的全文搜索

mongodb - 在 MongoDB 中查找最大的文档大小

mongodb - 如何在 Mongo 中描述一个集合?

node.js - Mongoose 'static' 方法与 'instance' 方法

.net - 我应该使用哪个 NoSQL 数据库进行日志记录?

python - 如何使用 PyMongo 在 MongoDB 中创建新数据库?

python - 集合对象不是 PyMongo 的可调用错误

node.js - 为什么我们应该使用 mongoose ODM 而不是直接使用 Mongodb 和