`

个人对于关系数据和NOSQL的看法

 
阅读更多

 

存储模型:

关系数据库中每条数据都是符合一定的格式,每个字段都有一个确定的类型,简单的说是一个格式化的数据。

NOSQL的特点在于数据的格式是非固定的,每一个文档都可以拥有自己的数据格式,归纳的讲就是非格式化的数据,无论底层是采用文档,列存储还是K-V模式

 

业务功能实现:

伴随着关系数据库的有数据库的三设计范式,范式所约定的终极目的是降低数据间的冗余,对于多关系之间数据查询难免的会使用到join,但是为了性能及开发的方便性上来,我们又期望不要过多的join(join操作会带来一定的性能问题),这个时候才用的手段大多是数据的冗余,牺牲一定的设计范式。但是,但是,这个join操作还是很难完全避免!

而NOSQL这种完全抛弃关系数据库中的关系,灵活的数据组织方式,这个大大提升了开发的效率,得到一个完整业务含义的数据,而不是多个表。同时降低了将来的数据格式的更变陈本,这种数据格式的变更在关系数据库中若存在大数据的话陈本是非常高的。

 现在的业务大多可以分为两类:联机分析处理(OLAP)及联机事务处理(OLTP),对于OLAP根本没有必要使用NOSQL,而OLTP业务选择NOSQL,也只能满足CAP中的两项而已,所以将来NOSQL不会也不能完全的取代关系数据库

 

ACID:

这块一直都是关系数据库的强项,因为现在火热的大多是些互联网网站或是业务模型,而这类的场景通常会牺牲一定的事务和一致性来保证业务的完整性(详见CAP理论),但是对于传统的电信,金融领域NOSQL还是难以撼动关系数据库的地位。而且对于事务的支持NOSQL还不是很完善。但是NOSQL的水平可扩展性上非常强大,这个也是牺牲了一定的ACID代价来实现的!

 

辅助功能:

    切库,分表,备份,监控等功能方面,现在的关系数据库还是较NOSQL成熟点。

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics