Marklogic学习 由浅入深(B)—— Marklogic vs. Hadoop

来源:互联网 发布:lo娘为什么很讨厌知乎 编辑:程序博客网 时间:2024/05/01 07:33

摘要: Hadoop是一个由Apache基金会所开发的分布式系统基础架构。Hadoop非常擅长分布式计算,能充分利用集群的威力进行高速运算和存储。Marklogic运用了Hadoop的思想,却有诸多不同,今天借助Kurt Cagle的观点,了解一下它们之间的优劣 Data Hubs: MarkLogic vs. Hadoop

引子

Marklogic使用Hadoop作为其内容处理核心MLCP,这一举措作为需要多线程处理大量文档数据的Marklogic来说是非常合适的。Hadoop是一个非Map/Reduce方案,它是一个很好的处理框架。但却不是最好的,在处理转换关系和依赖关系方面,它有优势。问题出在Hadoop被吹捧为能处理所有复杂数据中心的下一代主流数据库技术之后,它是一个大型的、复杂的系统,专注于移动数据的机制,这需要大量的开发人员编写复杂的ETL代码,特别是处理大量的来自标准数据库的异构数据源。

数据集成需要上下文环境,你得知道数据从何而来,需要知道他们如何通过主键关联,有时候数据表中的主键还不明确。你还需要命名空间,因为数据来源有时候是不好追溯的。

Hadoop除了在少数情况下,对XML支出的都不好。其查询和索引往往很慢,因为它总是批量处理这类请求,无法做到实时处理。如果将过去5年的会议录音记录迁移到Hadoop,将是一个伟大的技术,但是如果你要拿这些数据做点播之类的实时处理,那还是不必了。

每个人都可以有偏见,对于一个使用Marklogic近10年的程序员,会认为MarkLogic有一个陡峭的学习曲线。不过对于一个数据集群来说,Marklogic还是有很多优势的。

True data hub integration requires sophisticated transformation capabilities, semantic master key management and rich security. Hadoop has none of these things.

安全

多租户技术是处理海量数据的关键,因为需要同时存储来自多个客户端不可预知的数据,还要防止黑客攻击。Marklogic的安全机制来自对role和permisson的合理划分。它所能达到的安全级别也是少数几个SQL/NoSQL数据库所能实现的。有时候安全策略还可以针对某一字段,这对于使用语义存储的数据很有用。当然这也成为了Marklogic被政府采用的主要原因。Hadoop没有这么细粒度的安全控制。

格式和语言多变

Marklogic可以随意存储和查询XML或JSON格式的数据,可以使用一个通用的接口处理与格式无关的数据。利用已有的JavaScript或XQuery API可以轻松地查询或更新XML和JSON数据,Marklogic已经集成了基于Google V8的JavaScript引擎。而且,Marklogic还支持node.js, Java, Ruby, Python, C++ 和 C#,如果你愿意,甚至可以通过使用基于RESTful的API来实现跨语言。Marklogic支持ODBC驱动,这样你就可以把它当成是一个关系型数据库。 Hadoop也有针对不同语言的插件,不过,由于Java版本的不同,Hadoop版本的不同和集成API的多变,使得连接性和可移植性变得困难。

MarkLogic’s bet was simple - make JavaScript a first class language and JSON a first class data format, and the developers will come. By all indications, they are.

可变换性 Transformability

ETL(提取转换加载)过程需要强大的可变换能力。大多数基于Java的实现仍使用发表在2001年的Xalan XSLT 1.0处理器,尽管XSLT 3.0是刚刚发布,但XSLT 2.0已经存在了将近十年。XSLT 2.0是一款强大转换工具,你可以使用Marklogic来容易地转换XML和JSON数据。这种多变性是Hadoop所没有的,即使出现了,也是Marklogic先有此功能之后。

For transformations, Hadoop utilizes Xalan, released nearly fifteen years ago and using XSLT1. MarkLogic has most of the features of XSLT 3, all of XQuery, JavaScript and SPARQL.

数据的可伸缩性Data Scalability

Hadoop可以使用建立索引的方法来向外扩展,人们潜意识地认这可以提供数据的可伸缩性。这里引入了分布式文件系统,一可以向外扩展多个节点,但是访问时间也会随之加长。
Marklogic也使用了分布式文件系统,不过除了存取内容,它还肩负着索引内容。Marklogic有着出色的索引技术,HDFS被认为是缓慢的技术,因而采用了多层数据节点。MarkLogic也因为这个架构,具有了很好的可伸缩性,并能使集群的节点能够动态地进行扩张或者收缩。

语义Semantics

人们在研究数据时,往往会看它的元数据,里面包含字段名,日期等信息。然而,对对数据集成来说,通常更重要的是能够将各种数据库的主键和外键相匹配。实践证明,使用RDF可以容易地实现,这个Resource Description Framework(数据描述框架)使用了像R2RML 这样的映射约定,它很容易创建不同的数据系统之间的相关概念映射。
另一个大数据的需求是有效处理参考数据管理(RDM)或元数据管理系统(MTDM)——也称为受控词汇表。一些特殊的项目代表了特定的状态,如性别、婚姻、国籍等。它们往往被用于政府机构,医疗保健,保险类,金融,科研,教育,人际关系等,语义系统非常适合于管理这种类型的信息。

版本化和双时态性Versioning and Bitemporality

Hadoop不支持版本化(记录随着时间的变化数据)。大多数应用是用不到这个功能的。但对于数据中心来说,却很重要,在一些关键应用如金融交易系统,需要提前预知事务是否已经完成,这就不仅仅是支持事务这么简单了。少数关系型数据库现在已经合并成为了双时态存储,用于财务数据,研究数据,保险行业等。

Data Governance is not just a position in an org chart. It has to be built into the database at a foundational level. Data provenance matters.

开发技巧Developer Skills

几年前,Marklogic确实遇到一个困难——开发人员急缺。那时候懂XQuery的人很少,因此很难在大型项目上用到Marklogic。但Marklogic8以后,3项改进可能会解决这一困境。第一是适用JavaScript,还配有强大的node.js引擎。第二是增加了免费培训课程,从初级到高级全面覆盖。第三是整合API,让你可以轻松地在XQuery和XML, XQuery和JSON, Javascript和XML, JavaScript和JSON, SPARQL 和RDF之间转换。

许可成本Total Cost of Ownership

Hadoop是免费的。Marklogic授权大约是1.8万美元一年。似乎看起来这次Hadoop完胜,但是关注总体拥有成本的话,则不然。Marklogic只需要很少的人员去开发与维护,所耗费的时间也更少,但可以处理的数据却更复杂。只要基础框架搭建好以后,增加功能只会变得越来越简单。
假设有4个开发人员,每人每年的工资是8万美金,组建一个Marklogic数据中心的成本大约是10万美金。一年以后,这个数据库的运营成本大约是2.5万美金。

Licensing costs would seem to skew in Hadoop’s favor. Take total cost of ownership into account, however, and a very different story emerges.

一般来说,Hadoop团队往往需要一些10到15年工作经验的架构师来搭建框架。随然Hadoop没有许可费,但是,你需要MDM系统,转换系统,语义系统,集成,业务流程和规则管理,安全、报告等等。拿到这些许可并将它们整合到Hadoop,你可能花费很多金钱和人力还有时间。

Five years from now, Hadoop should be where MarkLogic is now. Five years from now, MarkLogic will be a true AI database.

就目前而言,Marklogic开发的成本还不明朗,高昂的许可成本,高的维护成本,再加上员工工资,这笔不小的开支对大多数公司来说,还是会选择Hadoop这样免费的产品。

0 0
原创粉丝点击