如何选择合适的的数据库产品

来自《App 后台开发运维和架构实践》

1.Redis、MongoDB、MySQL读写数据区别

数据涉及读和写这两个问题,出于性能考虑,当然希望读和写的速度越快越好。
计算机中常见的存储设备是内存和硬盘,其特性如下:
1.内存的读取速度大概是硬盘的80倍,因此为了更快的读写速度,数据尽可能放在内存。
2.内存的容量有限。例如UCloud 最多只能拥有64G的内存,而UCloud服务器上的单个硬盘可高达1000G

Redis 的数据是存放在服务器的内存,当内存用满了后需要扩容,就只能使用Redis的分布式方案,为了防止断电或者Redis程序重启后造成内存数据的丢失,可调整Redis配置文件,按照一定策略把数据持久化传到硬盘。

Mongodb同时使用了硬盘和内存,其使用了操作系统的MMAP(内存文件映射)机制进行数据文件的读写,MMAP可以把文件直接映射到进程的内存空间中,这样文件就会在内存中有对应的地址,这是对文件的读写是通过操作内存进行额,而不需要使用传统的如fread.fwrite文件操作方式。

Mysql的数据是放在硬盘中,虽然Mysql也有缓存,但是Mysql缓存是查询的结果,而不是缓存数据。

2.Redis、MongoDB、MySQL查找数据的区别

如果读者需要在一栋大楼里面查找某个房间,但是读者不知道这个房间的门牌号,只记得这个房间的门是非常特别的。那么找到这个房间唯一的方式只能每层楼逐个房间找一次,比较一下房间的们和记忆中房间的门是否相同。
如果读者知道这个房间的门牌号,就很简单,直奔那个楼层就可以了。

Redis的数据是基于“键值对”存储,“键”相当于门牌号,“值”相当于房间。Redis查找数据,每次都是直奔目标,读写速度相当快。

MongoDB和MySQL中,每组数据都有一个id(或者可以为每组数据建立索引),这个id或索引就相当于门牌号。
MongoDB和MySQL中查找数据,有两种模式:知道id或者索引,不知道id或索引。知道id或索引的情况就相当于知道门牌号,直奔目标就可以了,效率高。如果不知道id和索引的情况下,查找数据,那么就相当于每个楼层逐一找房间,效率很低。

3.应用场景

1.Redis

数据读写速度非常快,但是由于Redis数据只存在于服务器的内存(可以采用Redis的分布式方案扩容),内存的价格高,所以用内存存储数据的成本高。
同时由于Redis存放的数据必须是键值对的形式,在读写Redis数据的时候必须要知道所读写数据的key。
所以在App后台中,读写频率高的数据一般都会存放在Redis中(当然这部分数据也可以同时存放在MysQL或者MongoDB中,Redis中的数据是以缓存的形式存在的,当数据更新的时候,两部分都要更新以保持数据的一致性)。
利用API中附带了用户的身份信息,由于每次API操作都要验证用的身份信息,这些身份信息的数据存放在Redis中就非常合适了,因为验证用户信息是个频率非常高的操作。

2.MongoDB

适合于
(1)网站数据:MongoDB非常适合实时的插入、更新和查询,并且具备网站实时数据存储所需要的复制以及高度伸缩性。
(2)大尺寸、低价值的数据:使用传统的关系数据库存储一些数据时可能会比较贵、在此之前,很多程序员往往会选择传统的文件进行存储。
(3)高伸缩性的场景:MongoDB非常适合由数十台或者数百台服务器组成的数据库。
(4)存储地理坐标的数据:MongoDB的地理坐标查询功能非常强大,例如,MongoDB可以查找在某个矩形范围内的所有坐标,因此MongoDB非常适合于LBS应用。
不适合
(1)高度事务性的系统:例如银行、会计系统。传统的关系型数据库目前还是更适用于需要大量原子性复杂事务的应用程序。例如:涉及金钱的操作,假设要转账,必须从一个找好上扣钱,再在另外一个账号上把钱转账。这个操作必须保证要么要个都要完成、要么两个都不做,不能只做一个。但是MongoDB不支持事务,所以没有办法保证
(2)传统的商业只能应用:针对特定问题的BI数据库会产生高度优化的查询方式,但它的查询比起Mysql是有一定差距的。
(3)需要SQL的问题:虽然MongoDB支持类似SQL的查询方式,但他的查询比起Mysql还是有一定的差距的

3.MySQL

(1)事务性的系统。
(2)需要复杂SQL的问题

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,324评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,356评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,328评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,147评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,160评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,115评论 1 296
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,025评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,867评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,307评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,528评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,688评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,409评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,001评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,657评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,811评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,685评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,573评论 2 353

推荐阅读更多精彩内容