内容:当需要ACID属性来保存数据之间的关系和一致性时,可以使用关系型数据库。其他数据的存储需要考虑更适合的工具,如NoSQL DBMS。
场景:当在系统结架构中引入新数据或数据结构时。
用法:考虑数据量、存储量、响应时间长短、关系和其他因素来选择适当的存储工具。也要考虑数据结构及产品需要对数据进行的管理和操作。
原因:关系型数据库提供了高度的事务完整性,但是成本很高,难以扩展,而且与其他许多可选的存储系统相比可用性较低。
要点:使用合适的数据存储工具。不要因素易访问而用关系型数据库存储所有数据。
关系型数据库的特点:
1.通过ACID属性来保证事务的完整性
2.表内部和表之间存在关系结构
3.扩展比非关系型数据库存在更大的挑战性,例如分库分表艰难
关系型数据库适用范围可以根据其特点来确定,例如必须保证事务完整性的任务
文件系统是非常早就可以接触到的系统,这个系统非常适合“写一次,读多次”,特别是短时期内不会更新以及更新的时候不会发生写冲突的场景。
NoSQL存储系统包括:键值存储、可扩展记录存储、文档存储。分类边界模糊,只是一种大体上的区分,可能分属两者。No SQL对实体或对象之间关系的数量有所限制
键值存储大体上是对数据做单一的键值索引,将这些索引存储在内存中。例如:Redis、Simple DB、Memcached、Amazon DynamoDB。当然也有一部分面临关系型数据库同样的限制。
可扩展记录存储,优势被称作宽列存储或表格式的数据库系统,采用AKF扩展立方体里面的x规则和y规则进行扩展。
文档存储,文档又被称作多索引对象模型,不支持ACID属性,使用异步复制来提供最终一致性。例如:MongoDB,CouchDB等。
选取存储工具时,要考虑元素之间所需的关联度、方案成长速度、数据读写的比率,最后是数据的效益成本问题。关联度决定了成本和系统的复杂性。三种存储结构的成本顺序和灵活性顺序由低到高是:文件系统、No SQL, 关系型数据库。扩展性由低到高是:关系型数据库 、No SQL 、文件系统。
可扩张性问题解决方案的成本随着时间的推移而显著下降,产品的整体可用性也会显著上升。
现在技术的发展是我们有了更多的选择,这些选择是要根据实际实际需要确定的。