07-选择RDBMS、NoSQL还是两者
1.2 选择RDBMS、NoSQL还是两者
研究NoSQL数据库时,在选择哪种数据库以及如何使用它们方面,应保持开放心态。对于高性能系统尤其应该如此。
您可能选择只使用RDBMS或NoSQL,也可能需要结合使用它们以提供最佳的解决方案。
在所有高性能数据库中,都必须在速度、准确性和可靠性之间进行折衷。下面列出了选择数据库时需要考虑的一些因素。
- 要存储的数据是什么样的? 要存储的数据可能适合采用RDBMS的表/行结构、文档结构或简单的键/值对结构。
- 当前是如何存储数据的? 如果数据当前存储在RDBMS数据库中,就必须进行评估,将其全部或部分迁移到NoSQL需要多少人力和物力。另外,还应考虑是否能够保留原来的数据不动,只使用NoSQL数据库来存储新增的数据。
- 确保数据库事务的准确性有多重要? NoSQL的一个缺点是,大多数解决方案在ACID(原子性、一致性、隔离性和持久性)方面都无法与广泛接受的RDBMS系统媲美。
- 数据库的速度有多重要? 如果对您的数据库来说,速度至关重要,那么使用NoSQL可能是合适的,因为它能够极大地提高性能。
- 数据不可用将导致什么后果? 考虑数据不可用对客户的影响有多大。别忘了,在客户看来,数据库响应太慢也属于不可用。包括MongoDB在内的很多NoSQL解决方案都使用复制和分片提供了良好的高可用性计划。
- 数据库将被如何使用? 具体地说,考虑大多数数据库操作都是写入还是读取的。您还可以据此确定数据分割边界,将主要被写入的数据和主要被读取的数据分开。
- 该将数据分开以充分利用 RDBMS 和 NoSQL 的优点吗? 考虑前述问题后,您可能想将有些数据(如关键交易)放在RDBMS数据库中,而将其他数据(如博客文章)放在NoSQL数据库中。