您的位置:首页 > 数据库

如何选择RDBMS关系型数据库和Nosql非关系型数据库?

2014-03-27 09:41 531 查看
RDBMS关系型数据库和Nosql非关系型数据库区别:


一、RDBMS是关系型数据库模式:
1.二维模式,由行列组成。
2.非常强调事务原子性,例如用户提出一个请求,DB完整的去执行,如果报错就全部回滚。
3.适合存储结构性规范性数据,强调数据的一致性,必须所以数据都同步后才能继续。
4.现在流行列式存储在处理大批量加载大批量检索OLAP系统上效果更佳,而且优势很多比如数据即索引数据在存储的时候就被排序了,列式存储可以把同类型的数据放在一起压缩,因为有共性压缩比较大。
5.支持表的复杂关联查询,如果业务涉及到复杂逻辑关系我想RDBMS会更适合。
6.水平扩展是弱势,就算有RAC当节点多的时候也会碰触天花板。
7.无法满足非结构性数据的处理,例如 音频  视频 so on。

二、NOSQL非关系型的一种概念,意思是不仅仅是SQL还有其他的:
1.四大类:key values ,列存储,文档,graph 。
2.大部分都是采用分布式存储结构,大数据来临的时候,先拆分成小块分布的放在不同的机器上,当用户检索的时候又归纳起来,例如现在非常流行的Hbase就是基于HDFS文件系统。
3.Nosql强调数据批处理,快速处理,非常适合非结构性数据,而且数据与数据之间是一种松散的关系,也就是低ACID,一般不提供多表关联查询。
4.分布式架构,优秀的水平扩展能力,倡导廉价PC server搭建大规模的分布式存储系统。
5.根据业务,深度定制自己的sql语句

在NoSQL和SQL的选择上,需要了解到以下内容:

数据模型及操作模型:你的应用层数据模型是行、对象还是文档型的呢?这个系统是否能支持你进行一些统计工作呢?

可靠性:当你更新数据时,新的数据是否立刻写到持久化存储中去了?新的数据是否同步到多台机器上了?

扩展性:你的数据量有多大,单机是否能容下?你的读写量求单机是否能支持?

分区策略:考虑到你对扩展性,可用性或者持久性的要求,你是否需要一份数据被存在多台机器上?你是否需要知道数据在哪台机器上,以及你能否知道。

一致性:你的数据是否被复制到了多台机器上,这些分布在不同点的数据如何保证一致性?

事务机制:你的业务是否需要ACID的事务机制?

单机性能:如果你打算持久化的将数据存在磁盘上,哪种数据结构能满足你的需求(你的需求是读多还是写多)?写操作是否会成为磁盘瓶颈?

负载可评估:对于一个读多写少的应用,诸如响应用户请求的web应用,我们总会花很多精力来关注负载情况。你可能需要进行数据规模的监控,对多个用户的数据进行汇总统计。你的应用场景是否需要这样的功能呢?

转载自:http://blog.itpub.net/26686207/viewspace-734867/

具体如何选择,请大家留言评论帮我补充细化!!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: