要对当下的大数据解决方案进行分类评估可着实不是易事。首先,大数据工具似乎是在一夜之间就如雨后春笋般涌现出来,因此大家自然会对它们抱有一丝怀疑,毕竟像Hadoop与NoSQL这样的大项目也才刚刚付诸实际应用。
这个嘛……各位的顾虑及审慎的态度当然值得赞赏,不过实际上大多数此类解决方案早就已经实际服务于生产生活了;另外,某些旧有方法(例如企业搜索)也是可以为大数据业务服务的。
Brian Proffitt是一位Linux及开源项目记者兼分析师,他撰写了一篇相当精彩的文章,详细阐述了当今IT业界中较有影响的几种大数据技术。在这里我要向大家郑重推荐这篇文章,甚至最好把它保存下来,用作日后参考。
首先,Proffitt介绍了NoSQL数据库的特色,并讲述了它与关系类数据库有何不同之处。他结合实例概括了以下五种NoSQL(请注意是非关系类)数据库类型:
分布式键-值存储(简称DKVS)数据库,又名最终一致性键-值存储数据库。这种数据库在设计上主要是为了处理大量服务器上的数据存储问题。此处的关键字是“Dynamo平台”,因为大多数DKVS数据库都采用Dynamo平台或是以Dynamo平台为基础。 键-值存储(简称KVS)数据库,它将数据存储在硬盘或是内存中,并将键与值加以映射。此类解决方案包括开源方案Redis、Berkeley DB以及Memcache DB。 列式存储数据库,作者将其描述为一套“单独的、巨大的数据库列表,内部还充满嵌入式数据列表。”Hadoop、Cassandra以及谷歌的BigTable都是列式存储数据库的典型代表。 文档式存储数据库,顾名思义,存储并对整套文档数据价值进行排序。这类数据库并没有使用像列表、行、列等常见的方法,而是倾向于使用“非shema类JSON型对象即文档”方式,这与常规XML文档截然相反,他指出。此类数据库中的佼佼者包括MongoDB以及CouchDB。 图形式存储数据库。这种类型我不太熟悉,也很难快速掌握其特性,在这里就直接援引原作者的表述:“数据操作在一套面向对象的架构中完成,利用图形来映射键、值以及二者之间的关系,而不是通过常见的列表,”他写道。Neo4j、HypergraphDB以及Bigdata(没错,的确有这么一种大数据解决方案就叫‘Bigdata’——大家是不是在懊恼自己没有抢先使用这么好的名字?)都属于这一类型。 好了,这就是能在网上搜罗到的全部信息了,解释得也很清楚。不过我们要怎么利用它们处理业务中的数据呢?别担心,Proffitt同样精心给出了几种选择,朋友们放心,这份清单比上面的要短得多。熟悉关系类数据库的朋友们有福了,因为这些方案都可以直接创建在原有数据库内部。NoSQL就悲剧了,没有什么能够直接契合的选项。这里Proffitt给出的方案是: MapReduce,这款产品在使用上比较复杂,而且常常需要我们进行手动编码。不过CouchDB与Hadoop也差不多,都比较难用。 企业搜索产品,这类方案在处理大量文档及日常业务等结构化数据方面表现极为出色。他列出的备选产品有Apache Lucene、Apache Solr以及ElasticSearch。就这些,一共两种选择。
信息量似乎不大,但好处还在后面:Proffitt在他的文章中列出了长达两页半的大数据服务供应商及解决方案选项。对于任何一位打算在大数据项目方面投资或是对这一新兴产业感兴趣的朋友,我都诚挚地建议大家认真阅读这篇佳作。