对于您的特定情况,MongoDB听起来是一个不错的选择,但是在很多情况下(可能是大多数情况),它并不是最佳选择。
MongoDB更适合需要读取/写入大量数据,而又不十分强调事务安全性的情况(如果某些数据偶尔在服务器崩溃中丢失,这没什么大不了的),希望扩大规模,而不要确实有一个稳定的架构。
MongoDB 不适合需要以下条件的方案:
- 强大的ACID保证:MongoDB允许存储重复的数据,不一致的读取甚至丢失数据。这些东西在某些应用程序中很好,但在大多数应用程序中却不是。
- 多对象事务:MongoDB确实支持ACID事务,但仅适用于单个对象/文档。这只是不会将其用于更复杂的操作,例如银行转账,预订等。
- 传统的BI:有很多BI工具只能与传统的SQL一起使用。
- SQL:MongoDB有一种非常特定的查询语言,而SQL被很多人所熟知(可能是要考虑的一个重要方面),可以做很多复杂的事情(而对于MongoDB,您将无法执行简单的操作联接),并且可以在许多实现中转移。
MongoDB更快,通过消除默认情况下RDBMS强制执行的许多工作(例如完整性检查),可以使您从系统中获得更多性能(请注意,您仍然可以为此目的调整RDBMS),但事实是,在大多数情况下,只是不需要它。另外,要权衡的是可靠性和灵活性(如果以后决定需要对现有数据执行更复杂的操作,将会遇到麻烦)。
这完全取决于您正在构建的应用程序的需求。是速度和可用性,还是安全性,可靠性和灵活性。您必须知道数据(以及数据连接)中的何处具有更大的价值。如果您还不知道,最好选择将来不会使您陷入困境的东西,并允许您添加功能并执行应用程序所需的操作。