文档章节

关系型数据库与nosql数据库的比较

南洋牧师
 南洋牧师
发布于 2015/01/22 10:52
字数 569
阅读 1783
收藏 0

传统的关系型数据库如oracle、mysql在过去很长一段时间内占据了数据库领域的统治地位,随着互联网以及移动互联网的爆发,近年开始流行的nosql以及newsql的崛起似乎撼动了他们的地位。

社区讨论中常看到nosql数据库(如mongodb、redis之类)比关系型数据库快的说法,我尝试分析一下。

关系型数据库在进行数据库建模的时候,通常是遵循三大范式,根据数据本身之间的关系进行建模,如用户-订单这样一个简单的关系,在关系型数据库中,建模可能如下:

用户表

user_id    user_name

订单表

order_id    user_id    item_id   item_count

商品表

item_id    item_name    item_price

这样的表结构设计,在查询用户的所有订单时,需要聚合三张表的数据(join),由于数据库中的数据是按照表的不同顺序存储的,所以在关系型数据库中聚合数据意味着更多的磁盘扫描。

nosql数据库是面向聚合的,是no schema的,更多的从查询场景出发,例如,已知有获取用户所有订单这样的查询,将用户订单作为数据的一个聚合,结构如下:

{user_id : @user_id,user_name:@user_name,

    orders :[

                {order_id :@order_id,

                               items:[

                                        {item_id:@item_id,item_name:@item_name,item_price:@item_price,item_count:item_count}

                                        ]

                }

                ]

}

这种结构在查询用户所有订单的时候,只有一条数据库记录,在大部分nosql数据库中,同一条数据库记录是保存在磁盘中连续的块中的(不同于oracle中的行链接、行迁移机制),这也就意味着更少的磁盘扫描,但同时造成了数据的冗余。

大部分nosql数据库都是分布式的,根据分布式中的CAP理论,最多只能保证一致性、可用性、分区容错性中的两个,出现了最终一致性等说法。

nosql数据库又分为k-v,memory,document,big-table,graph几种,不一一细说。

nosql数据库并不是普适的,传统的关系型数据库的地位不可替代。

推荐阅读:nosql distilled

© 著作权归作者所有

共有 人打赏支持
上一篇: mr与spark的比较
南洋牧师
粉丝 1
博文 15
码字总数 3058
作品 0
南京
程序员
私信 提问
《NoSQL数据库入门》书评赠书活动,国内首本NoSQL书

图灵教育&开源中国联合举办读样章赠图书活动,免费赠送《NoSQL数据库入门》10册! 本书核心:了解当今最炙手可热的NoSQL新型数据库技术;介绍memcached、Tokyo Tyrant、Redis、MongoDB;如何...

生气的散人
2012/06/19
5.2K
44
难以抗衡关系型数据库 NoSQL革命仍要等待

一、NoSQL项目提出的背景。 NoSQL的支持者喜欢这个NoSQL项目,主要是看其在性能上的优势。NoSQL支持者称,NoSQL技术可以打破传统关系型数据库的性能瓶 颈。如通过NoSQL架构可以省去将Web或者...

红薯
2009/07/10
1K
4
关系型数据库和NoSQL数据库

关系型数据库和NoSQL数据库 什么是NoSQL 大家有没有听说过“NoSQL”呢?近年,这个词极受关注。看到“NoSQL”这个词,大家可能会误以为是“No!SQL”的缩写,并深感愤怒:“SQL怎么会没有必要...

丈量大地
2014/03/11
0
1
阿里P8架构师谈:NoSQL和SQL的区别,NoSQL的使用场景和选型比较

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/t4i2b10X4c22nF6A/article/details/84327110 什么是NoSQL NoSQL,指的是非关系型的数据库。NoSQL有时也称作N...

JAVA高级架构v
2018/11/21
0
0
SequoiaDB CTO:企业级NoSQL的发展之路

几年前,经历过NoSQL数据库革命的人也许还记得,web 2.0效应曾引发大批互联网企业竞相上线NoSQL,甚至有一部分企业彻底抛弃传统关系型数据库,将数据全部迁移至NoSQL。NoSQL以其易扩展、高 ...

SequoiaDB2013
2013/09/15
0
0

没有更多内容

加载失败,请刷新页面

加载更多

如何开发一款以太坊(安卓)钱包系列2 - 导入账号及账号管理

这是如何开发一款以太坊(安卓)钱包系列第2篇,如何导入账号。有时用户可能已经有一个账号,这篇文章接来介绍下,如何实现导入用户已经存在的账号。 导入账号预备知识 从用户需求上来讲,导...

Tiny熊
17分钟前
1
0
intellJ IDEA搭建java+selenium自动化环境(maven,selenium,testng)

1.安装jdk1.8; 2.安装intellJ; 3.安装maven; 3.1 如果是单前用户,配置用户环境变量即可,如果是多用户,则需配置系统环境变量,变量名为MAVEN_HOME,赋值D:\Application\maven,往path中...

不最醉不龟归
今天
2
0
聊聊ShenandoahGC的Brooks Pointers

序 本文主要研究一下ShenandoahGC的Brooks Pointers Shenandoah Shenandoah面向low-pause-time的垃圾收集器,它的GC cycle主要有 Snapshot-at-the-beginning concurrent mark包括Init Mark(P......

go4it
昨天
2
0
Makefile通用编写规则

#简单实用的Makefile模板: objs := a.o b.o test:$(objs) gcc -o test $^ # .a.o.d .b.o.d dep_files := $(foreach f,$(objs),.$(f).d) dep_files := $(wildcard $(dep_files)) ifneq ($(d......

shzwork
昨天
1
0
《万历十五年》的读后感作文4000字

《万历十五年》的读后感作文4000字: 万历十五年,即1587年,距今已过去432年。在明朝276的历史中,这一年很平淡,并没有什么特别之处。黄仁宇的《万历十五年》一书,有别于其他的历史叙述方...

原创小博客
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部