DDIA(二)

  • 数据模型:数据模型恐怕是开发软件中最重要的一部分,因为它不仅影响到软件如何编写,同时也影响我们如何去思考要解决的问题。在复杂的系统中会有很多的中间层,API通常构建在其他的API之上,但是基本的思路是一样的,屏蔽底层实现细节,提供一个一致的数据模型。
  • NoSql的诞生:确切的说NoSQL是说Not Only SQL,主要基于以下几个驱动力:
    • 更容易的水平扩展来解决大数据集和吞吐量的问题。
    • 关系型数据库不支持查询。
    • 渴望有一个更加动态的和更富表现力的数据模型,而不是严格的schema
  • 关系型数据库和文档数据库对比
    • 文档数据库的主要的点在于1)schema不是严格限制的,更好的性能,更贴近应用的数据结构,不会出现object-relation-mismatch的情况。而关系型数据库最主要的点在于对于Join的支持更好,对于处理一对多和多对多的模型更加得心应手。
    • 如何选择:
      • 如果你的应用的数据是文档类型结构(比如一个一对多的树形结构,并且典型的应用场景都是把一整个load进来)这个时候适合文档数据库。但是文档数据库有它的局限,没法直接获取到你想访问的片段,但是只要不是嵌套的太深也还ok。同时join支持的也很差,也是取决于应用场景。
      • 如果你的应用中有需要多对多关系,这个时候用文档数据库不见得是明智之举。
  • Schema
    • 文档数据库有的时候被称作无schema数据库,但是这是有所误导的,应用的代码在读取数据的时候还是会假定数据是某一种结构,所以这里是有隐式的schema存在的,只是不是用数据库来强制约束的。更确切的描述是schema on read而不是schema on write。就像程序里面的动态类型和静态类型一样。
    • 如果处于某种原因数据并不是所有的都有相同的结构的时候,schema on read是很有用处的。原因可能是:有很多类型或者数据是由外部系统提供的不可控。
  • 数据局部性
    • 文档数据库通常会存一个大的连续的字符串,比如Json,xml或者某些二进制结构。如果你的应用需要访问整个数据,数据局部性是有优势的。如果数据散落到几张表里面你会需要更多的时间。这种局部化的数据只有在面对需要一次拿到整个文档数据时候才有优势,如果你只关心一小部分,则不是很适合。在整个较大的情况下会造成很大的浪费,因为大多数的更新都会重新写入这条数据。需要指出的是把相关数据放在一块来达到数据局部性不仅限于文档数据库,比如HBase的 column-family也是为了达到这个目的。
  • 声明式查询和命令式查询
    • 声明式查询就是类似sql,命令式就是类似于一段JavaScript代码来写出sql的逻辑。声明式查询是更加生动的因为它更加的一致并且更容易上手。更重要的是,它屏蔽了数据库的实现细节,这可以在不改变查询的情况下通过数据库进行优化。
    • 声明式查询不关心数据的顺序,但是命令式的代码数据库没法保证它是否依赖于数据的顺序。事实上SQL通过限制函数来给数据库更多的自动优化空间。
    • 声明式查询更容易并行化。
    • Map - Reduce既不是声明式查询也不是命令式,它介于两者中间,查询通过命令片段去表达,整体上通过基于map reduce函数的框架去调度。
  • 图数据库
    • 如果多对多的关系是非常常见的话,关系型数据库也会变得无力,这个时候考虑使用图数据库。
  • 总结:最开始大家都使用一个树形结构来存放数据,后来发现在多对多关系中不太行,因此发明了关系型数据库。但是发展到最近,开发者发现有些应用用关系数据库也不太行,这个时候就产生了NoSQL,主要是两个方向:
    • 文档数据库,对标于数据是一个包含自己的文档并且相互直接没啥关系。
    • 图数据库恰巧相反,主要解决数据里面有太多的多对多的关系。
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,125评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,293评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,054评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,077评论 1 291
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,096评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,062评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,988评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,817评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,266评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,486评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,646评论 1 347
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,375评论 5 342
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,974评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,621评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,796评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,642评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,538评论 2 352

推荐阅读更多精彩内容