Domino,专注大规模集团企业信息化应用

[摘要]大家对Domino的评价众说纷纭,褒贬不一。在2009年之前,笔者对IBM Domino并没有太多了解,只知道是办公自动化的鼻祖。从2009年到2013年,4年时间与Domino的亲密接触,让有10余年Java及关系数据库经历的笔者真正见识到了Domino的强大、高效和低成本,他是为大规模集团应用而生,在这一领域,他是王者。我们应该纠正一些厂商和用户对Domino的认识误区。

大家对Domino的评价众说纷纭,褒贬不一。在2009年之前,笔者对IBM Domino并没有太多了解,只知道是办公自动化的鼻祖。从2009年到2013年,4年时间与Domino的亲密接触,让有10余年Java及关系数据库经历的笔者真正见识到了Domino的强大、高效和低成本,他是为大规模集团应用而生,在这一领域,他是王者。我们应该纠正一些厂商和用户对Domino的认识误区。

Domino究竟是什么?

Domino不是一门语言,Domino是一个包括集成开发环境(IDE)、数据库(DataBase)、应用服务器(Application Server)在内的包含前端到后端的统一开发平台。Domino支持的开发语言包括Lotus Script、Java,数据库则采用的是支持分布式的文档数据库(NoSQL),应用服务器则包括Http服务器、Java Runtime等。不太了解Domino的人常拿Java和Domino直接对比,这两者本就不是一个概念层面的东西,有点驴头不对马嘴。更恰当的对比应该是Java 集成开发环境、关系数据库、Java应用服务器,当然在Java的体系里面可以选择的产品就太多了,有着各种搭配,不同的搭配产生的能力也有很大的差异,所以以下笔者将针对单项的比较发表一些观点。

分布式数据库与关系数据库

笔者曾经接触过一家企业,最初采用了Java和关系数据库方案的OA系统,大集中部署,初始用户数量在2000人,初期性能较好,访问较快。随着下属公司不断纳入到系统中,系统的响应开始变慢,尤其是在每天上午9点左右,系统经常出现宕机。经过分析发现:主要是数据库响应延时,无法及时返回结果,而导致应用服务器线程堵塞出现宕机。这样的情况直到企业后续投资购买了一台高性能的数据库服务器才得到缓解。当系统用户数量达到6000人时,应用服务器再次出现宕机,问题依旧,此时单纯提高单台硬件服务器的办法已无法解决问题,而供应商也不具备设计分布式数据库架构的能力。由于这家企业设计的OA系统目标用户数是全集团2万人,最终不得不选择更换为Domino平台的OA系统来彻底解决以上问题。

关系数据库天然就是集中的,所以一般都设计为集中式架构,采用单台服务器来承载,但随着用户规模的不断扩大并发读写访问增多,物理机的性能也会达到极限,到遇到性能问题时将无法通过增加服务器数量来实现横向的性能扩展,而纵向的性能扩展不仅成本高昂同时也有极限。很多系统在架构设计之初就没有将关系数据库设计成为分布式数据库架构,这里面有多种原因,技术的复杂度、成本高昂、维护的复杂度等,一些互联网厂商利用关系数据库设计出伪分布式数据库架构来满足电子商务应用高并发的性能要求,但这类厂商都拥有强大的DBA团队和大量的运维人员,而对普通的企业来说这种高昂的运维成本是难以承受的。

那么有没有结构简单、成本低廉、成熟稳定的解决方案呢?当然有,Domino的文档数据库采用分布式架构、拆分灵活,随着用户访问规模的扩大,可以不断增加新的服务器来实现横向的性能扩展。不仅如此,NoSQL数据库和关系数据库最大的不同是没有强约束关系,数据结构可以灵活的变化,这在大型集团企业的管控领域中是至关重要的,管理和业务的最大区别就是管理的多变性。同时,集团企业内部的重组、兼并非常频繁,也要求系统具有良好的适应性,而大的结构变化对于复杂的关系数据库而言简直就是一场灾难。

为什么很多大型集团企业在经过慎重的选型对比后选择了Domino?是因为Domino在数据库方面的综合能力是其他解决方案难以企及的。架构决定生死,高性能、稳定性、扩展性、低成本缺一不可。

Domino集成开发环境和Java集成开发环境

笔者在Java从业期尝试过很多集成开发环境,如Borland JBuilder、Oracle JDeveloper、IBM Eclipse……换一家公司就要重新学习一个开发工具。当然,还有各种Framework,Oracle ADF、Struts、Spring、Hibernate、JSF……实践证明,要把这些框架都掌握,并且较为精通是要花些时间的。Java的集成开发环境很强,什么都能做,但什么都要从头做起,除非公司经过较长时间的积累封装形成了一系列的类库或控件包,否则,开发效率将较为低下。所以很多以Java为主的公司多是产品型公司,因为二次开发的成本确实是非常高昂的。

Domino的集成开发环境是一个快速开发工具,基于IBM Eclipse,普通的应届生经过三个月的培训就可以利用模板快速完成各类表单及功能的开发。在前端开发上,除传统的Lotus Script外,Domino 8.5以后提供了类似JSF的Xpages开发框架,开发人员可完全采用纯Java语言来完成开发工作,这大为提高了Domino开发的灵活性,所以Java已经成为了Domino平台的一部分。

我们用一个比喻来形象描述两者的差异,Domino 集成开发环境提供的是一个个已经加工好的零配件,开发人员进行装配动作;而Java 集成开发环境提供的则是一堆毛坯,需要经过多道工序的加工然后变成零配件,最后完成装配。

在笔者所经历的IT项目中,没有任何一个产品可以完美的适应企业发展过程中的各个阶段,尤其是快速发展变化中的中国集团型企业。因此,系统就需要随着当前企业所处的阶段以及管理现状随需应变。要做到这一点,就需要系统具备低成本、快速的开发能力,而Domino 集成开发环境表现得确实非常出众。

Domino Server和Java Application Server

Domino Server是一个集大成者,除了运行Domino专属的Script语言之外,也支持Java应用的运行,同时跨平台的部署能力也相当优秀,Windows、Linux、Sun Solaris、AIX、HP Unix各种版本的操作系统及服务器都不在话下。同时Domino Server安装维护简单,可以通过附加服务器的方式快速建立服务器集群。

在安全及日志审计方面Domino的表现也非常突出,Domino支持对服务器上所有操作行为进行日志记录,如打开数据库、修改记录、授权操作、修改系统配置参数等等,任何一个操作都将会被截获并记录到系统中。在权限方面,Domino提供严密的七层安全机制,从用户身份认证到数据库存取控制,再到文档级甚至域级别的权限控制,有效保障了系统中各种粒度的数据安全。

与关系数据库结合的数据统计

数据统计一直是Domino被诟病的一点,从架构上来讲,分布式数据库的优势就在于应对高并发的事务处理,同时带来的问题是数据也因此分散到了不同的服务器上,所以在进行统计时我们建议利用关系数据库的优势来完成这项工作。通过数据同步工具将数据写入到关系数据库中,然后结合Web报表设计器实现报表的绘制,最后按照管理期间生成所需的各类汇总统计表。而在这项工作中,企业并不需要付出太多额外的成本,IBM的合作伙伴一般都可以提供数据同步工具及报表工具,因此,Domino配合关系数据库将是应对大型集团企业需求的一个较为均衡的解决方案。我们利用分布式能力来应对集团企业的高并发访问、完成事务处理,利用关系数据库将分散的数据汇集并进行统计实现报表的输出,在性能、成本、复杂度方面取得一个平衡。

Domino配合关系数据库的解决方案能力也在众多集团企业信息化实践中得到了验证。再举一个曾经实施过的集团企业电子报销项目:该集团近2万用户,包括140余家下属单位,大集中部署,采用6台PC服务器,单台服务器承载3000用户(单台服务器设计承载5000用户,保持40%的性能冗余)。集团各下属单位报销审批数据存储在不同的服务器上,进行数据统计非常不方便。为解决这一问题,我们利用数据同步工具配置好数据字段映射关系,将分散在各个服务器上的报销审批数据写入到一台中心数据库中,然后利用Web报表设计工具定制好报表样式,最后根据会计期间定期生成所需的各类管理报表。

与ERP及其他系统的双向集成

一些不了解Domino的人士认为Domino不开放,没有办法与其他系统集成,而在实际业务中,Domino已经远远走在了前面,包括与SAP ECC、Oracle EBS、Hyperion的全面预算管理、资金集中管理等系统均有大量的集成案例。

笔者曾在一个集团企业的资金及费用管控项目中,完成了Domino与全面预算管理、资金管理、账务管理、合同管理系统的集成,通过提取预算数据实现费用报销的控制,通过提取资金计划控制业务付款,通过生成记账凭证到账务系统来保障数据的一致性,通过提取合同付款条件数据帮助决策者在审批过程中掌握合同的历史付款情况。通过流程,我们将各自分立的业务系统有机的联系起来。

同时,在基于Domino开发的大量应用产品之上,也提供了外部系统调用的接口,如工作流引擎的外部调用。很多大型集团企业将基于Domino平台的OA系统定位为整个企业的审批中心,业务系统中的审批均可通过调用OA系统中的流程接口发起审批流程,在流程审批结束后将过程及结果数据回写到业务系统中。

投资对比

从投资角度来看,Domino是包含了集成开发环境、数据库、应用服务器在内的一个完整平台,单独购买Domino即可形成完整的解决方案能力,同时,其稳定性和高扩展性也对发展中的集团企业更为适用;而商用关系数据库、商用Java应用服务器都需要单独购买,而一些商用数据库的价格就远远超过Domino整体的购买价格。

另一方面,Domino也是一个一体化的平台,从前端到后端,系统已经铺设好了完整的轨道,企业要做的只是让火车跑起来;而不同的Java集成开发环境、关系数据库、应用服务器的产品可能每个都有一条独立的轨道需要企业去拼接,这将带来技术和维护的复杂度、以及更高的成本。

总述

任何系统、任何技术体系都有其优势和缺陷,企业应该根据自身业务及应用的需求并结合总体拥有成本进行综合考量和理性选择。多种技术体系的融合是未来的发展之路,我们看到Domino作为一个完整的平台从发布至今也在不断的发展和融合各种技术,也在践行为企业提供低成本、高性能系统的目标。我们坚信,Domino将会继续在中国大型集团企业的信息化建设中发挥巨大的作用。在这一领域,Domino就是当之无愧的王者。





免责声明:

本站系本网编辑转载,会尽可能注明出处,但不排除无法注明来源的情况,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与本网联系, 来信: liujun@soft6.com 我们将在收到邮件后第一时间删除内容!

[声明]本站文章版权归原作者所有,内容为作者个人观点,不代表本网站的观点和对其真实性负责,本站拥有对此声明的最终解释权。