设为首页收藏本站

LUPA开源社区

 找回密码
 注册
文章 帖子 博客
LUPA开源社区 首页 业界资讯 技术文摘 查看内容

缓存是新的内存

2014-11-24 11:29| 发布者: joejoe0332| 查看: 3881| 评论: 0|原作者: douxingxiang, stefanzhlg|来自: oschina

摘要: 这是一次在 defrag 2014的演讲。这是经过长时间地多次技术变革后的(多个)技术优势之一。你看到了实际上突破。如果你只是看到了其中的一部分,很难正确推断。你要么短期有进展,要么落后 很远。令人惊讶的不是事物 ...


  更令人担心的是应用越来越复杂,越来越聊天化(chattier,可能聊天程序对数据库写的次数很多)。几乎每次都会进行多次数据库写操作。现在,写,而不是读,成为了瓶颈。这时我们才最终认真对待数据库切分。Facebook最初是根据university字段来切分其用户数据,然后做成了"哈佛数据库(The Harvard Database)",并且维持了很长一段时间。Flickr是另一个好例子。他们使用PHP手动建立了一个切分系统,这个系统使用用户ID的哈希值来切分数据库,跟memcached根据key来切分很像。在技术交流会上,他们透露,不得不对数据表去规范化(denormalize),以及对一些对象(比如评论、消息、喜欢)进行两次写(doule-write)。


  要解决无限伸缩(infinite scaling)总要付出点代价,对吧。

Screen Shot 2014-11-11 at 3.47.18 PM
(2008:NoSQL解决一切)


  手动切分关系型数据库的问题是,你的关系型数据库已经没了。切分API实际上成为你的查询语言了。你对操作的头疼还没好,而修改一组模式(schema)更加痛苦。


  这就需要大家深呼一口气,列出大家选用的SQL实现的所有不足和瑕疵,然后因此责怪SQL。一波潮人似的NoSQL,难民似的XML数据库出现了,并且都作出了根本办不到的承诺。它们提供了自动切分,灵活的模式,一些冗余,...,一开始也就这么多。但是总比自己写要好多了。


  你知道,“不用自己写”成为主要卖点的东西总是令人绝望。

Screen Shot 2014-11-11 at 3.47.25 PM
(2010:Map/Reduce解决一切)

  转移到NoSQL并不比使用手动切分差,因为我们已经放弃了使用常用的客户端工具控制和分析数据的希望。但这没好多少。之前由商业人员(business folks)编写的SQL查询变成了开发人员维护的报表代码。


  还记得用于备份和分析的热备份数据库吧?现在它变身为Hadoop filestores以及上层的Hive查询而卷土重来了。既然奏效,商业人员再也不来烦我们了。但一个大问题是,这些系统的操作复杂性。就像航天飞机一样,它们是作为可靠且几乎不用维护的产品出售的,但是最后还是需要大量的手动操作。另一个大问题是,数据的存入和取出:花费一整天的时间已经相当不错了。第三个大问题是IO同时成为网络和磁盘的瓶颈。我们告诉自己,这就是从大数据(big data)毕业的代价。


  不管怎样,Google就是这样做的,对吧。

Screen Shot 2014-11-11 at 3.47.32 PM
(2012:NoSQL再次解决一切)


  随着一些NoSQL数据库的逐渐成熟,它们的API发生了诡异的变化:它们开始长得像SQL一样。这时因为SQL是关系型集合理论(relational set theory)的相当直接的实现,而数学不是那么好愚弄的。


Screen Shot 2014-11-11 at 3.47.46 PM


  我重述下Paul Graham对Lisp那难以忍受、并自鸣得意的评论:一旦你添加了group by, filter, join,你也不能声称发明了新的查询语言,因为这仅仅算是SQL的一个新方言。而且语法很差,还没有优化器。


  由于我们绕过了SQL,大部分系统都缺少了一些很重要的东西,比如存储引擎、查询优化器,而这些都是基于关系型集合理论设计的。拖延到后期去实现导致了严重的性能问题。即使对解决了性能问题的那些(或者通过停驻在内存中来掩盖此问题),也缺少了其他东西,如合适的备份。


  我知道一个非常成功的互联网初创公司(你肯定也听过)使用了4个(!!)不同的NoSQL系统来解决问题。


Screen Shot 2014-11-11 at 3.47.54 PM
(2014:现在需要什么来解决一切?)


  现在已经相当明显,我们不会回到单数据库以及10毫秒一次的随机定位(10-million-nanosecond random seek)的那个从前了。在寻找一劳永逸解决所有问题的炒作周期(hype cycle, 也叫技术成熟度曲线)的过程中,有个有趣的模式:聪明的方法在减轻一个痛点的同时会引入新的痛点。 


Screen Shot 2014-11-11 at 3.48.01 PM



酷毙

雷人

鲜花

鸡蛋

漂亮
  • 快毕业了,没工作经验,
    找份工作好难啊?
    赶紧去人才芯片公司磨练吧!!

最新评论

关于LUPA|人才芯片工程|人才招聘|LUPA认证|LUPA教育|LUPA开源社区 ( 浙B2-20090187 浙公网安备 33010602006705号   

返回顶部