案例:Craigslist网站的大数据和NoSQL解决方案

日期: 2013-03-06 作者:Cameron McKenzie翻译:张宣彬 来源:TechTarget中国 英文

每天拥有超过150万个新的广告发布,Craigslist网站用户已经产生超过100亿条记录——有些人可能甚至认为这就是“大数据”。更重要的是,立法要求公司不能随意的将这些纪录简单地删除或是覆盖:按照法律法规,在这个页面60天的保留期之后,记录必须被迁移到归档空间。   那么Craigslist网站又是如何管理这样巨大数据量的呢?在2011年之前,归档是由一个MySQL集群组成的,这个集群是公司的一个更大数据库架构的一部分,此数据库包含超过100台的MySQL服务器。不幸的是,没有使数据持久性工作变得更容易,而是使MySQL的性质变得更复杂,迫使Craigslist开始探索NoSQL的解决方案,……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

每天拥有超过150万个新的广告发布,Craigslist网站用户已经产生超过100亿条记录——有些人可能甚至认为这就是“大数据”。更重要的是,立法要求公司不能随意的将这些纪录简单地删除或是覆盖:按照法律法规,在这个页面60天的保留期之后,记录必须被迁移到归档空间。

  那么Craigslist网站又是如何管理这样巨大数据量的呢?在2011年之前,归档是由一个MySQL集群组成的,这个集群是公司的一个更大数据库架构的一部分,此数据库包含超过100台的MySQL服务器。不幸的是,没有使数据持久性工作变得更容易,而是使MySQL的性质变得更复杂,迫使Craigslist开始探索NoSQL的解决方案,以处理大量的传入数据,同时使用流式归档进程,并随时容易扩展。

  大数据”的挑战

  正如你能想像到的,由于已经存储在他们的MySQL关系型数据库中数据的属性和量,Craigslist网站面临着一些挑战。例如,多年来数次改变其数据结构。仅这一点,要对数据库模式进行修改都是昂贵的、长期的噩梦,因为变化往往意味着停机时间,当然,任何改变潜在着意想不到的后果。如果数据库的改变是一个挑战,那么试着想象一下引入全新的功能又会是一种怎么样的困难呢?更重要的是,每一次对实时数据库模式的修改,都需要相应地改变整个存档——每次都得花几个月时间来执行的一个过程。并且在这些更新的过程中,存档过程必须被搁置,这意味着过时的数据堆积在实时数据库中,肯定会降低网站的性能。

  NoSQL解决方案

  现在并没有感觉到有任何人在Craigslist网站抨击MySQL。MySQL仍然是值得尊敬的,它是一个恒星式关系型数据库,并且企业负责人不希望在有效的在线帖子数据中停止使用它。而是死掉的帖子需要一个更好的“墓地”。那么,NoSQL的解决方案是什么?Craigslist网站把归档帖子和伴随的元数据的接力棒传给了MongoDB,并且他们把这些帖子作为文件而不是把它们当作一个关系数据库表中的行。而这个过程是相当迅速的。包括对其审计和准备数据的时间,迁移150亿个帖子到一个新的归档数据库仅仅只用了三个月左右的时间。

  像MongoDB这样的NoSQL大数据解决方案的主要优点是:

  动态性和灵活性,没有被捆绑到一个单一的模式
  水平可扩展性的自动分片
  内置的复制功能
  高可用性
  比关系型数据库更快,更便宜
  基于文档的查询
  支持全索引

  当然,在关系型存储和NoSQL解决方案之间存在明显差异的同时,也有相似之处。毕竟,这两个系统都简单地存储数据以备将来检索。在Craigslist公司,软件工程师JeremyZawodny,对这种兼容性表示赞赏:“来自一个关系型背景,特别是MySQL的背景,搬过来很多的概念……这使得它非常容易上手。”

  Craigslist能够在其两个数据中心使用多节点集群服务器实现这样一个NoSQL解决方案,提供数据复制功能,并增强其可靠性,确保没有单点故障,因为整个归档文件存在于每一个“碎片”中,因此服务器能够转移故障而不会丢失任何数据。整个系统可随时扩展硬件,新机器添加到集群中而不需要任何停机时间。

  归档现在可以无缝衔接,甚至当MySQL架构发生变化时。Samantha Kosko描述这一过程是如何工作的,“一旦一个帖子死掉了,那么MongoDB就会读到MySQL并且把那个帖子写入类似与JSON的文件中,这个文件是MongonDB存储信息的方法。这样做,Craigslist网站能够提供一个无模式的设计,它允许多年的文件进行灵活的归档,而不必担心失败或未来的灵活性和设计。”

相关推荐