由mysql5.7支持JSON 浅谈数据库设计

为什么MYSQL更新的幅度越来越大 是因为原来的三NF设计完全不够用了 又没有大神提出新的标准 虽然暂时还是最热门的数据库 但是挑战者已经在敲门了 说说这问题 顺便整理下思路 以观后效

以一个简单需求举例 用户发表文章 其它用户可以点赞 前端页面需要显示哪些用户点赞了此文章 本用户点赞了哪些文章

开始数据库设计 

1.用户表 用户名 密码 UID

2. 文章表 UID 文章标题 内容 tid

3.点赞表 UID TID

通过联表查询 以TID为条件索引可查询到点赞了本文章的用户列表

以UID为条件索引可查询到某用户点赞了哪些文章 

需求搞定 如果数据量不大的话一点问题没有 但是如果是新浪微博呢 问题就大大的来了

       首先从背景上来说 之前所有的系统基本都是以公司工厂为单位运行的局域网环境中 90%以上了不起就三~三百台电脑的规模 简单说就是业务流程复杂 数据规模不大 并发性基本不用考虑 在此基础上总结的数据库设计规范 中心思想是一份数据只保存在一个地方 只在一个地方更新 表与表之间通过ID外键互联即可 只要是接触过由EXCEL建立的系统的人 都能理解这种设计的优越性 彻底的解决了数据不一致的困扰。在此基础上发展了外键 触发器 存储过程 索引等概念 将数据库作为数据仓库集中处理数据的作用发挥到了极致。

      但是现在使用的环境已经完全变了 随便一个最简单的帐本应用都是面向互联网公开的 并发量 数据量都不可同日而语 各种新的理论 工具层出不穷  分库分表 Memcache  redis 还有MongoDB 都是为了解决一个问题 MYSQL不够用了 性能不够造成业务崩溃的例子每天都在发生 MYSQL有各种问题 我觉得其它问题什么修改表结构慢之类那都不算事 最主要还是这个中心思想一份数据只保存在一个地方 到底还合不合时宜

     同样以这个需求举例 如果按照文档数据库的设计思路 例如MONGO 可能我会以文章建一个表 包含TID 标题 内容和一个点赞用户列表

再以用户建一个表 包含UID 用户名 密码和一个点赞文章的列表 这样无需联表 只需要一个主键查询 就能获取到需要的数据 但是写入的时候比如某用户点赞了某文章 就要在二个地方写数据 有可能带来数据不一致的问题 当然使用一些手段可以避免或修复 但是这就引入了复杂度 有没有必要?这里我觉得是有必要 大多数的系统读比写多 也比写复杂 这样改写之后 应该可以几乎完全的避免MYSQL死锁的问题 但是如果业务场景太复杂 可能会需要维护不止二份的数据

    来点对比

    1.MongoDB在阿里云比MYSQL贵2倍不止 

    2. MongoDB与MYSQL语法完全不同 有不少坑要踩

    基于以上在简单系统上试用过一段时间的 MongoDB之后 还是没敢切换 用回MYSQL了 但是这次更新支持JSON之后我就在想既然MYSQL成本明显比MongoDB低 稳定性成熟度又比MongoDB好 那能不能把文档数据库的设计思路用来用MYSQL来实现呢???或许是个路子。

    总结一下 个人一点小建议:

   .应用层可以无限制的扩张 CPU 带宽 内存都不是个事(除了¥¥。。。) 所以系统瓶颈一般在数据库 所以尽量不要使用外键 触发器 存储过程等任何需要占用数据库锁甚至是数据库服务器CPU的东西 一切计算往前提 在应用层组装计算 甚至可以提到用户端浏览器去

   .应该可以改变一下传统3NF的设计思路 采用文档数据库的思路 中心思想主要是按需求组织数据和保存数据 好处是可以一次获取所有相关数据 至于写数据的多处修改问题 正好可以使用MYSQL的事务机制 通过前面说的日志队列的方式实现快速返回 队列写入

   .尽信书不如无书 透过现象看本质 在现在这个SSD成本大降 存储成本越来越低 数据却越来越大 并发数越来越高的时代 我觉得牺牲点存储空间 和写入速度 换来瓶颈中心数据库的可扩展性 和读取速度的提升 无论怎么算都是划算的也必将会成为主流设计思路 相信一段时间之后必然有行业大牛出来推出新的设计标准 MYSQL又将大行其道 

   .再次印证了 巨头没那么容易被打倒 屌丝永远还是屌丝。。。。残念。。。

  回头找个小应用 实践下看

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

推荐阅读更多精彩内容