数据库种类那么多,该如何选择?

题图:by _seo_hanbit from Instagram.jpg

本文原创发布于微信公众号「极客猴」,欢迎关注第一时间获取更多原创分享
文章归档于极客猴的博客:http://geekmonkey.top

技术真的是日新月异,Web 网站已经脱离之前的静态网站的体系,转而使用动态语言搭建的动态网站。这也衍生出一个问题:该如何存储数据了?数据库就应运而生,它的作用是提供存储数据的容器。方便 web 网站进行存储、查询、更新等。数据库种类也很多,有成熟且稳定的 MySql 数据库,有后起之秀的 MangoDB 数据库,也有新时代宠儿 Redis 数据库。除此之外,还有其他一些数据库,例如 Sqlite、Oracle 等。

那么问题来了,面对多种类型的数据库,自己该如何选择?

或许你因个人比较喜欢 MySql 数据库,所以选择它。也许你在网络上查了一下资料,发现别人都推荐使用 MangoDB,所以就选择它。

这两种想法都是不能正确地选择。任何脱离业务来谈架构都是在瞎扯。因此,要根据项目业务的场景需求来决定选择哪种数据库。每种数据库都各有优缺点,而选取标准是选择最优,最适合。

我个人的理解是结合以下几个方面来考虑:

1 读写速度

这存储数据方式往往决定读写的速度。

  • Mysql 无论数据还是索引都存放在硬盘中。到要使用的时候才交换到内存中。能够处理远超过内存总量的数据。

  • MongoDB 的所有数据实际上是存放在硬盘的,所有要操作的数据通过 mmap 的方式映射到内存某个区域内。然后,MongoDB 就在这块区域里面进行数据修改,避免了零碎的硬盘操作。

  • Redis 所有数据都是放在内存中的。但是它也支持数据持久化到硬盘中。

我们都知道磁盘读取数据的效率远远低于内存。所以在一般情况下,这三者的读写数据的速度排序是:Redis > MongoDB > Mysql

2 是否支持事务以及复杂查询

MySql 是关系型数据库,支持事务操作以及 join 方式的复结构化查询。而 MangoDB 是非关系型数据库, 既不支持事务操作,也不支持 join 操作。Redis 同样不支持。

因此,针对以下场景应考虑使用 MySql:
1)业务数据中有大量结构化数据,如用户账号、地址等。因为这些数据通常需要做结构化查询。
2)业务存在许多事务性操作,需要保证事务的强一致性。

3 业务数据量增长速度

在一到两年内,业务数据的增长量不在预测范围内,优先考虑使用 MangoDB。

因为 MangoDB 内建了sharding、很多数据分片的特性,容易水平扩展,比较好的适应大数据量增长的需求。而 MySql 在这方面表现要逊色些,MySql 单表数据量达到 5-10 G 时会出现明细的性能降级,需要做数据的水平和垂直拆分、库的拆分完成扩展。

Redis 由于内存容量限制,不会用来存储大量数据。一般拿它做缓存。

4 表结构是否明确

如果在业务场景中,数据库表接口不明确,数据还在不断增加。例如以下场景,内容管理平台(如 BBS 论坛中帖子场景),用户社交平台(如贴吧中的帖子以及用户评论),优先考虑使用 MangDB 。

因为 MongoDB 是非结构化文档数据库,扩展字段很容易且不会影响原有数据。

写在最后,数据库作为存储数据的容器, 在架构选择上,应多花点时间考虑。


另外,我还给你准备了对我帮助巨大的学习资料,都是极客猴花千元购买的。关注极客猴的微信公众号「极客猴」即可免费领取

微信公众号后台直接回复:
回复「资料」:获取海量编程资料,认真学完 BAT offer 拿到手软。
回复「面试」:获取2019年最新的 Python 面试真题,面试通关不是梦。
回复「书单」:送你 80 本「圣经级」的精选书单,让你业余时间偷偷变牛逼。
回复「赚钱」:简单可实操的 30 个赚钱小项目,每天多赚 100 快零花钱。

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

推荐阅读更多精彩内容