c# - 支持和反对从 SQL Server 迁移到 MongoDB 的原因

我知道这是一个大问题,它不是一个是或否的答案,但我们开发 Web 应用程序并正在研究使用 MongoDB 作为我们的持久性解决方案。结合 MongoDB 和 NoRM 进行对象存储。

我想问的是,您从 SQL 切换到 mongo 时遇到过哪些陷阱?什么时候 mongo 根本就不是正确的解决方案,mongodb 的优势是否足以将开发从 SQL 转移?

最佳答案

在我看来,您的数据格式应该是选择存储后端时的首要考虑因素。你有本质上是关系的数据吗?如果是这样,在文档中对数据进行建模是否是一个好主意?数据建模在文档数据库中与在关系数据库中一样重要,只是做得不同。你有多少种类型的对象,它们是如何相关的? Mongodb 中的 DBrefs 可以做到这一点,还是你会错过太多外键,这会很痛苦?您对数据的访问模式是什么?您只是在获取按字段值过滤的一种类型的数据,还是有复杂的获取模式?

您需要 ACID 事务完整性吗?域是否对数据施加了很多约束?您是否需要文档数据库的可扩展性因素,或者这只是一个“很酷”的东西?

您的一致性和数据完整性要求是什么?一些 NoSQL 解决方案,尤其是 MongoDB,为了获得性能,在写入一致性方面非常松散。 NoSQL 没有统一的景观和其他产品,例如CouchDB 在这个部门还有其他特点。有些也是可调的。

这些都是选择存储时应该考虑的问题。

一些经验

  • 在使用 MongoDB 或任何文档数据库时,对存储的数据进行广泛的报告可能会更加困难,并且某些用例已将 RDBMS 和 document-db 组合用于此目的。
  • (非常)不同的查询模型。 MongoDB 也不同于其他文档数据库。
  • 在开发过程中灵活更改数据格式/架构
  • 未知领域
  • 驱动程序和框架的不同成熟度
  • 快速
  • 产品和管理工具更简单(在许多方面)(与许多 RDBMS 产品相比)
  • 不再有阻抗不匹配。存储适合数据,而不是相反。
  • 减少摩擦,更直接地访问数据。
  • 与持久性更相关的域(取决于 NoRM 的 ORM“级别”,取决于它抽象出后端的程度。我没有使用过 NoRM,因此无法回答。)

https://stackoverflow.com/questions/3287966/

相关文章:

mongodb - Mongoose 中权重的全文搜索

mysql - 何时使用 MongoDB

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

mongodb - 所以......这个NoSQL的东西

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

MongoDB - $size 的参数必须是一个数组,但类型为 : EOO/missing

mongodb - 对 MongoDB $in 查询的响应顺序?

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

node.js - MongoDB Node 检查objectid是否有效

node.js - 判断预保存回调中是否有记录 "is new"