存储模型:
关系数据库中每条数据都是符合一定的格式,每个字段都有一个确定的类型,简单的说是一个格式化的数据。
NOSQL的特点在于数据的格式是非固定的,每一个文档都可以拥有自己的数据格式,归纳的讲就是非格式化的数据,无论底层是采用文档,列存储还是K-V模式
业务功能实现:
伴随着关系数据库的有数据库的三设计范式,范式所约定的终极目的是降低数据间的冗余,对于多关系之间数据查询难免的会使用到join,但是为了性能及开发的方便性上来,我们又期望不要过多的join(join操作会带来一定的性能问题),这个时候才用的手段大多是数据的冗余,牺牲一定的设计范式。但是,但是,这个join操作还是很难完全避免!
而NOSQL这种完全抛弃关系数据库中的关系,灵活的数据组织方式,这个大大提升了开发的效率,得到一个完整业务含义的数据只需要关心Schema,而不是多个表。同时降低了将来的数据格式的更变陈本,这种数据格式的变更在关系数据库中若存在大数据的话陈本是非常高的(DDL)。
现在的业务大多可以分为两类:联机分析处理(OLAP)及联机事务处理(OLTP),对于OLAP根本没有必要使用NOSQL,而OLTP业务选择NOSQL,也只能满足CAP中的两项而已,所以将来NOSQL不会也不能完全的取代关系数据库
ACID:
这块一直都是关系数据库的强项,因为现在火热的大多是些互联网网站或是业务模型,而这类的场景通常会牺牲一定的事务和一致性来保证业务的完整性(详见CAP理论),但是对于传统的电信,金融领域NOSQL还是难以撼动关系数据库的地位。而且对于事务的支持NOSQL还不是很完善。但是NOSQL的水平可扩展性上非常强大,这个也是牺牲了一定的ACID代价来实现的!
辅助功能:
切库,分表,备份,监控等功能方面,现在的关系数据库还是较NOSQL成熟点。
nosql最近流行,特别在大数据领域。因为他舍弃了很多传统关系数据的优点,比如事物,sql,join等,专注扩展性和特定应用场景的性能(比如hbase优化写性能,随机读性能不咋地)。使用sql还是nosql,最主要看你的应用场景
数据库三个要素:速度、安全、功能。RDBMS 相对偏向后两者,而 NoSQL 往往更偏向于速度,然后各有各自功能方面的重点。很明显,各个 NoSQL 数据库的功能差异也是相当巨大的。
RDBMS 的基础还是基于磁盘的,内存用于缓存,合适加速依赖于 DBA 的仔细调配和优化。而一些 NoSQL 数据库,如著名的 Redis,是以全内存为设计出发点的,本身以极高性能为设计目标。出发点不一样,能达到的效果自然是不同的。
NOSQL:大数据且对于ACID要求不高的场景
0 条评论。