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