设为首页收藏本站

LUPA开源社区

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

为什么你不应该使用MongoDB

2013-12-13 13:43| 发布者: joejoe0332| 查看: 9784| 评论: 1|原作者: super0555, yale8848, ley, 黄劼, lwei, Garfielt, SimpleBy, 李孟华|来自: oschina

摘要: 我也有几次做出了错误的选择。这是一个关于其中一次的故事——原本我们为什么选择它,我们是如何发现它不合适,以及我们如何修复的。这一切都发生在一个开放源码的名为Diaspora的项目中。 ...


  这是一个 Rails 应用


  每个pod都是一个Ruby on Rails应用,后端有一个数据库,最初是MongoDB。从某种程度来说,这个代码库是一个‘典型’的Rails应用——它同时具有一个可视化与可编程的UI,一些Ruby代码,以及一个数据库。但在其他方面,它决不是典型的。


一个 Diaspora pod的内部结构


  视觉UI显然就是网站用户与Diaspora交互的方式。这个API被各种Diaspora移动客户端使用——这一部分相当典型——但同时它也被用于"federation"(联邦),这也是描述pod之间通讯的技术名词。(我有一次问过这与罗慕伦人的相似点在哪里,结果得到一堆白眼,擦。)所以说这个系统的分布式特性,给代码库增加了典型应用中所不存在的中间层。


  当然,MongoDB是一种数据存储的典型选择。而绝大多数的Rails应用程序是由PostgreSQL(近来不常见)或MySQL所支持。


  所以代码部分就是这样。我们再来考虑一下我们存储的是什么样的数据。


  (译注:罗慕伦帝国是科幻系列《星际旅行》中虚构的外星帝国,2158年,罗慕伦帝国与当时的地球联邦发生了一场核战争。这场战争同时威胁到了其他的一些种族,并最终促使了星际联邦的建立。2160年罗慕伦人被打败,后与星际联邦签订合约并划定中立区。)


  我不认为单词的意思是你认为的意思


  “社交数据”是关于我们朋友、他们朋友和他们活动的网络信息。从概念上来看,我们确实认为它是一个网络——一个以我们为中心,朋友围绕在我们身边的无向网络。



  所有照片来自rubyfriends.com。感谢Matt Rogers、Steve Klabnik、Nell Shamrell、Katrina Owen、Sam Livingston-Grey、Josh Susser、Akshay Khole、Pradyumna Dandwate和Hephzibah Watharkar对#rubyfriends的贡献!


  当我们存储社交数据时,我们存储的是那个图的拓扑结构,和那些随着边移动的活动信息。


  多年之后的今天,大家公认社交数据并不是关系型的,如果你把它存储在关系型数据库中,你就错了。


  但是,其它方案有哪些呢? 有人说图数据库更自然些,不过这里我不打算介绍它,因为图数据库太过小众而不适合用于生产环境。另外一些人说文档数据库对社交数据来说堪称完美,而且也更为主流化足以投入实际使用。下面,让我们看看为什么人们认为社交数据更适合放在MongoDB里,而不是放在PostgreSQL里。



酷毙

雷人

鲜花

鸡蛋

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

最新评论

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

返回顶部