本来今天是想休息一下,看看我喜欢看的“奇葩说”, 和看那些肥皂剧相比,唇枪舌战,脑洞大开才是我 favorite.  本期说的是死亡,听完双方慷慨激昂的PK 后,输赢我到不关心,而生命有限,做自己喜欢的事情,马上做,多做一些,此生无憾。

说道脑洞的问题,让我想到我周围众多的水瓶座的朋友。说到脑洞,没有那个星座的人,比水瓶座的人脑洞开的之大,看问题之清晰,思维之独立,内心之冷静,想法之“怪异”,在热情的外表下,有一颗寒冷的“心”。 提到数据库,Mongo DB 恐怕就是数据库中的 水瓶座,你懂他,他就是你世界,你不懂他那你只能感受“寒冰刺股”。

那你如何去懂他,更好的使用  Mongo DB,让他用独特的数据处理方式来解决那些你平时头疼的问题,让那些可能困扰你的大数据问题,在风淡云轻中被轻描淡写的化解。那我们来看看你如何来更懂他 ----

1  反范式, 提到范式,那是一个数据库人引以为傲的“知识点”,如何将数据库表设计成,符合三范式的要求,曾经成为一个DBA 或者 数据库架构师的一个卖点。 可时代变化的太快,随着数据量以几何数的方式叠加,十几个表的JOIN,才能查出你要的数据,损耗的时间,人们对时间的速度的渴求,这一切让范式变得不再重要,MONGO DB 在使用中第一个要点就是要 破除 范式的思维,如何将那些分散在每个表中的数据,变成一个collection,用冗余的数据来换取高速的查询速度,这是一个用磁盘容量换取时间的 “”脑洞问题“”。  嵌套可以将你了JOIN 彻底的打碎,在一个collection中将你所要的多个表的数据,在一次I/O操作中就能获得,这就是 水瓶座的 “脑洞”, 你或许不理解,但快速的查询速度就在哪里,水瓶也以不屑的寒光,淡然的面对那些老古董的 “固执”。

2 什么数据适合嵌套,这又是一个脑洞的问题,如果你乱用嵌套,将一些数据经常会改变的,数据在每个阶段都要求一致的,属于既要看结果,还要看过程的 leader们,我劝你还是省省吧,比射手座还爱自由的水瓶座,会再一次打破你的束缚,你的MONG DB 的设计可能需要的是, 子文档较小,数据不会经常被改变,最终数据一致即可,数据结果就可以在一个文档中得到,需要快速的读取,如果你能开这样的"脑洞" , 那你的数据的获得将变得异常的 快速。

3 一对多,多对一,多对多,这是数据库中查询经常要面对的问题,传统的子查询,EXISTS,JOIN ,传统的数据库们做着这些普通的不能在普通的工作,而在MONGO DB,这里最大的问题是多对多,而MONGO DB 要处理多对多的问题,其实也有他自己的主张,多对多,中在多也有少和多的比较,用多和少的比较关系,确定那个被嵌套更好,或者数据的变换频繁度,是嵌套好,还是引用好,是一次查询就得到数据还是二次查询获得数据更适合,这完全决定于你的数据,你的业务,这也和水瓶座性格一样,一分钟一个脑洞,你在想出一个脑洞的时候,他可能已经将你的脑洞团团围住。

4 自由,与传统的数据库表的定义不一样,MONGODB 的表(collection)也是飘忽不定,脑洞在上一个document 还是“天苍苍”,下一个document 就已经是“清明上河图了”,看似不靠谱,但生活中又有多少靠谱的事情,以包容的,淡然的心去面对那些不靠谱,这不也是水瓶对世间种种的化解。在MONGO DB 的世界里面,不是没有规矩,而是不要太多规矩,为什么要让可以简单的工作复杂化,这是MONGO 对待数据的态度,也是水瓶座对待世间问题的看法。

5 扩展性,不同于传统数据库的分库分表,Sharding 是MONGO DB 支持的,也是一个卖点,不同于MYSQL 分库分表中要不就是死去活来的设计,要不就是各种中间件的使用,造成各种故障和不便,MONGO DB 的 分片,将数据的扩展变得和吃一顿早餐一样简单,当然Shard Key 你要选择的对,就如同你如果早餐吃了咸鸭蛋,然后在上一碗豆腐脑,和一盘咸菜,想想你是要“飞”吗?shard key 让分片有效的将大数据量化解到每台MONGODB ,而选择不好,只能让你“飞”的越来越失控。和水瓶座的随性一样,完全取决于你的态度,如果你态度好,自然是everything is possible, 如果你态度恶劣,迎接你的必将是“Aurora Execution”。

6 快速的存取速度,如同你上一秒还在感叹水瓶座的热情,下一秒就会冻结你一切的幻想,在数据的存储上,同样是存储同样的尺寸的数据,传统的数据库可能还在 “毫秒”中打转,而MONGODB 就能让你领略到“速冻”的感觉,纳秒的速度对数据的存取,当然还是那句话,你的懂他,如果你还是用“老脑筋”让他去做什么聚合之类的“适合传统”的事情,那他一定也不会让你如意。

7 无以伦比的Replicate set , 说道沟通和交流以及人际关系,水瓶座绝对也是有一手的,他能很好的拿捏人与人之间的距离,不同世界观的包容,世界中不少的偏见在他那里都变得很正常,所有的数据库都有replication,集群,等等的功能,而到目前如果说,在异步复制中,做的最好的,我个人认为 MONGO DB 们在和每个节点的切换,在对应用的透明无感的转换,在对读写分离的淡然处之都是别的数据库学不来的,将这些功能交给了developers,或者说交给了developers 一大部分,这不就是对这个世界的包容吗,没有条条框框的处理,才是最好的处理,给人和人之间更多的平静,靠理性而不是感性的生活,这世界或许会更好,至少不会更糟。

MONGODB 作为文档数据库,起家,但我个人浅薄的看法,MONGODB 不会止步于此,或者现在就不,今天我们公司的一个程序员,将复杂的SQL 变量运算,移植到MONGO DB,将嵌套,JAVASCRIPT 语言结合,将复杂的事情变得简单,快速,如果能成功,那MONGO DB 绝对不再是 仅仅存一些不重要的数据,LOG ,重复性的文档,声音,图片,辅助对数据的高压缩。 彻底摆脱传统数据库的束缚,将自由开放坚持到底,给程序员一片更 “蓝” 的天空。这样的水瓶座,你不喜欢吗?

数据库之十二星座 水瓶座相关推荐

  1. 数据库之十二星座 ---- 狮子座的獠牙

    写过了双子座的 MYSQL  白羊座的 SQL SERVER 水瓶座的MONGODB ,这次终于轮到狮子座 ORACLE 数据库,为何是狮子座,敢问那个星座能有狮子座霸道,强悍,并且就是霸道也是正面冲 ...

  2. 数据库之十二星座 --- 双鱼座的复杂关系

    提起双鱼座,估计大多想起的是偶像剧里面的神经的男偶(呕吐)像和哭哭啼啼大呼小叫的"女神"经.不过双鱼座本身的真面目却不那么简单,具有天蝎座的第六感,还是加强型,具有巨蟹座的柔情,具 ...

  3. 数据库之十二星座 白羊座

    接上回书,双子座MYSQL,未待续完........ 本回的讲讲 SQL SERVER --- 白羊座 说起SQL SERVER 基本上大部分DBA 都是这个表情,切,我也想的到大部分人就是这个表情. ...

  4. Spring Boot参考指南

    Spring Boot参考指南 作者 菲利普·韦伯,戴夫 Syer,约什 长,斯特凡 尼科尔,罗布 绞车,安迪·威尔金森,马塞尔 Overdijk,基督教 杜普伊斯,塞巴斯蒂安·德勒兹,迈克尔·西蒙斯 ...

  5. 数据库十二星座 之 射手座的闪电

    作为数据库十二星座的文章的小结,选择了射手座,为什么是射手座,因为这个星座是我钟爱的,虽然我自己不是这个星座的,但我独爱这个星座的人,他们乐观,开朗,友善,我众多的朋友,家人,有恩之人都在这个星座里面 ...

  6. 十二星座匹配对象_水瓶座最佳配对对象是谁

    每个星座都能够如此,就好像大家如果没有遇到喜欢的人,就很难和一个人将就在一起,这样还不如单身,所以今天就来给大家简单的说一说水瓶座最佳配对对象是谁. 一.水瓶座最佳配对对象是谁 水瓶座最佳配对对象是天 ...

  7. 十二星座的美丽传说——星座查询api接口

    星座的美丽传说 十二星座的美丽传说,相信大家都有所耳闻,如果要说出它的来源可不是人人都能说来的,这里让我们一起来听听星座文明起源的故事吧:星座起源为米索不达亚文明,是天上的恒星组合,也是用来确定天空方 ...

  8. 十二星座职业成功忠告

    十二星座职业成功忠告<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&g ...

  9. java星座测试需求分析_java十二星座 (快来测试你是什么星座吧)

    无聊写个十二星座.. 我发现我好像都是无聊的时候学习的... package 十二星座; import java.awt.*; import javax.swing.*; import java.aw ...

最新文章

  1. Android Studio 第一次配置及其使用
  2. MongDB与Spring整合及操作
  3. 古塔问题matlab,基于 Matlab 对古塔变形趋势探究的数学模型
  4. 临危不乱,.Net+IIS环境经常出现的问题及排障。(转)
  5. oracle 增长型分区,oracle 11g 分区表创建(自动按年分区)
  6. 2018.12.30|区块链技术头条
  7. node+mongoose使用例子
  8. COVID-19和世界幸福报告数据告诉我们什么?
  9. 自动轮播与按钮的联动
  10. .net web 点击链接在页面指定位置显示DIV的问题
  11. 吴伯凡-认知方法论-知行合一的本质
  12. 解决stm32下载错误 “Could not stop Cortex-M device.Please check the JTAG cable.“
  13. java商城源码视频教程_Java商城秒杀系统设计视频教程学习下载(含项目源码)...
  14. CentOS升级内核版本_linux升级内核版本_Redhat升级内核版本
  15. 大数据笔记-外存算法
  16. linux键盘模拟程序,linux下模拟键盘的几种方法
  17. 【图书】前端工程化:体系设计与实践
  18. [附源码]java毕业设计哈金院快递驿站管理信息系统
  19. 机器学习排序算法:RankNet to LambdaRank to LambdaMART
  20. 项目系统设计与数据库设计(那周余嘉熊掌将得队)

热门文章

  1. Maximal GCD
  2. python pppoe拨号_Python实现PPPOE攻击工具
  3. 2016基于百度地图定位
  4. MarkMan – 马克鳗 IU好伙伴啊
  5. android广播教程,Android学习笔记(广播机制)
  6. 关于 网页 链接 分享朋友圈 更换title 文字方法
  7. 如何把源代码格式复制到WPS文档中
  8. 台式计算机的规格参数有什么,台式机主流配置型号参数
  9. 地平线4显示与服务器通讯发生错误,地平线4加载失败发生不明错误的解决方法 - 系统家园...
  10. 六、模块实现:用户管理模块(1)