Domino自动分库功能的实现与应用

来源 :中国管理信息化 | 被引量 : 0次 | 上传用户:aini123321231
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  [摘 要] 本文从實际应用的角度,讨论了基于Domino平台的协同办公应用中数据库膨胀的原因以及解决方案。从技术实现的角度,进行了分析设计;结合LS开发技术,讨论了实现功能的通用方法和步骤,给出了实际应用的实例和效果供参考。
  [关键词] 分库;入口库;文档库;代理
  doi : 10 . 3969 / j . issn . 1673 - 0194 . 2013 . 15. 035
  [中图分类号] TP317.1 [文献标识码] A [文章编号] 1673 - 0194(2013)15- 0054- 03
  在大庆油田协同办公领域,基于Domino的B/S架构应用了许多年,随着协同办公系统在油田应用的深入,各类业务数据不断增长,Domino数据库不断膨胀,甚至超过最大64G的限制。当数据库里数据达到一定程度后,数据库读、写性能明显下降,以至于会影响整个应用系统的性能。虽然Domino本身提供归档等功能,但只能在一定程度上缓解数据库膨胀问题。对于要求一直在线访问的数据,并且数据量增长迅速的应用,归档则无能为力。本文主要讨论在Domino平台上,充分利用其开发和应用方面的特性,结合以往的实际经验,实现一种能够根据设定的数据量自动分库,同时对应用透明的功能。
  1 Domino平台简介
  Domino是一个群件平台,提供了一个简化的、高安全性的实时工作环境,版本由4.X到8.X,平台功能不断升级和增强。在企业中利用其强大的业务应用、协作应用和通讯应用,能快速开发行政办公、业务管理以及个人事务处理等系统,提高了员工的工作效率,简化了业务流程,提高了企业业务的响应能力。
  2 设计实现
  进行基于Domino的应用开发,主要使用Domino的数据库对象。数据库对象集数据存储、表单、视图、代理等于一身,应用的开发可以使用一个或多个数据库。为了降低开发难度,提高开发效率,大多选择一个数据库进行应用开发。因此,数据和设计元素都存储在这个数据库中,库数据量的膨胀就不可避免。
  2.1 分析
  在我们企业中采用Domino的B/S架构进行开发和应用,要解决数据库数据量快速膨胀问题,同时不增加开发难度,本文对数据库的存储、读取以及安全控制等进行分析。
  (1)Domino的安全控制是分层的,只有通过对服务器、数据库、文档以及域的正确授权才能正常访问信息。因此分库后的新库,要与原数据库的访问权限、文档的授权方式保持一致,才能保证用户正常访问数据库,保障文档的个性化授权可用。
  (2)Domino的Web应用是把设计元素转换成浏览器能够运行的标准的HTML进行展示;在存储时,服务器获取前端表单控件中的数据,与后端表单中的域对应,然后按照后端表单的设计方式存储在数据库里。因此,分库后必须按照这种方式进行访问和存储。
  (3)Domino数据库的膨胀是由文档附件、文档域过多引起的。控制域的数量、不保存附件,然后定期进行压缩处理,在同等文档数的情况下,数据库年膨胀率仅为10%左右。
  2.2 设计
  经过以上两个方面的分析后,结合实际的应用经验建立了如图1所示的应用框架。这个框架中包括Index库(访问入口库)、模板库和运行时的文档库。
  (1)以Index库作为访问入口,负责根据配置文档所记录的文档库名跳转到文档库访问真正的文档;建立定时代理检测配置文档的分库阈值与当前文档库的尺寸对比,超出则根据模板新建一个文档库,用新库名替换配置文档中所存储的库名;Index库必须建立用于文档分类、全文索引等所需的设计元素。
  (2)建立文档库模板,在档库模板中创建必需的设计元素以及回写代理,并对模板进行必要的用户访问权限配置。
  (3)在文档库中创建文档时,回写代理要把文档权限写回到与之对应的Index库中的文档里,保证文档权限的访问正确性。
  2.3 功能实现
  2.3.1 Index(访问入口库)
  (1)建立一个表单,表单里放置subject、creatdate、category等用于存储应用数据的域,放置reader、author等用于安全控制的安全域,同时放入内置HTML,内容为
  
  “计算的值”设置为URL域。
  (2)建立数据库简要表,保存文档库的数据库名称,主要代码如下:
  Set proDoc = thisDb.GetProfileDocument(thisDoc.F_Form(0))
  Call thisDoc.RemoveItem("F_Form")
  Call thisDoc.CopyAllItems(proDoc,True)
  Call DocumentSave(proDoc,"",True)
  (3)建立定时检测代理,检测文档数据库的大小,与设定值比较,超过设定值则建立新库,主要代码如下:
  Set prodoc = db.GetProfileDocument("FM_Configure")
  DocDBName=prodoc.DDName(0)’简要表中保存的文档数据库名
  DocDSize=prodoc.DDSize(0)’简要表中保存的文档数据库大小阈值
  DocDtemplete=prodoc.DDtemplete(0)’简要表中保存的文档数据库模板名
  Set db = ss.GetDatabase("","DocDBName")   if db.size>=DocDSize then‘判斷文档库尺寸是否大于等于设定的值
  Dim template As New NotesDatabase( "",DocDtemplete)
  Dim NewDb As NotesDatabase
  newDBName=DocDBName str(now)
  Set NewDb=template.CreateFromTemplate("",newDBName,True)
  prodoc.DDName=newDBName
  Call DocumentSave(proDoc,"",True)
  end if
  (4)用Domino的视图和关联表单创建概览,在关联表单的WebQueryOpen事件中加入获取文档数据名称,并保存在表单的DocDName域里。概览视图的“创建”按钮中加入如下Js代码
  path=path.substring(0,path.indexOf("Index数据库名") 4) document.DocDName.value "/文档库中的文档表单名?openForm";
  window.open(path);
  这样就能打开文档库中的表单来创建文档。
  2.3.2 模板库
  (1)根据实际文档录入、展示的需要建立文档表单以及表单里的所有设计元素。
  (2)在表单中创建操作按钮:保存、编辑、修订等。保存按钮调用保存代理,代理执行流程如图2所示。
  创建主文档保存后,要重新加载该文档,这样才能获得这个文档的ID。URL的格式为:http://域名/当前库名.nsf/0/文档库当前文档id?opendocument。文档库中的文档与Index的文档(主文档)用文档库中的文档ID进行关联,执行一些相关联的操作等,主要代码如下:
  Call DocumentSaveEx(doc,"",True,True)’保存正式文档
  Call Sav_ReloadDoc(doc)’重新加载文档
  Set newDoc=viewnew.GetDocumentByKey(StrKey,True)’用保存在StrKey中的正式文档ID查找主文档
  If newDoc Is Nothing Then ’如果主文档不存在
  Set newDoc = dbnew.CreateDocument
  newDoc.Form="FDocNew"’用Index库中的访问入口表单创建文档
  newDoc.Subject=doc.Subject’把正式文档的相关域值赋给入口表单
  …
  …
  newDoc.F_Author=doc.F_Author
  newDoc.F_Reader=doc.F_Reader’把正式文档权限域值赋给入口文档,使两个文档的权限一致
  Call newDoc.Save(True,True)’保存入口文档
  else
  同样的方式更新所有域值
  end if
  2.4 应用实例
  这种分库方式在系统的规章制度模块进行了应用。规章制度模块是行政管理的主要内容之一,按照绩效考核的要求,每年各个部门要提交大量的管理文档及文档附件,数据库的年膨胀速度为20G左右。
  应用这项技术时,该模块中已经存在大量的老文档。为了兼容老文档的浏览、查询,在建立一个入口文档表单的同时,需要创建一个视图。这个视图选择两个创建文档的表单,一个是老文档表单,另一个是入口文档表单。这样,以上介绍的技术就能够全面应用,不需要做大的改动,实际应用界面展示了一个从入口库到文档库的访问过程。
  应用这项技术后,原库的文档量在不断增加,而库的膨胀速度却得到了控制,经过近8个月的观察,入口数据库的膨胀量仅为400M多一点,分库很及时,创建、访问文档很顺畅,达到了分库的目的,解决了数据库膨胀过快的问题。
  3 结束语
  随着企业信息化的不断深入,信息量也在不断增大,在Domino环境下运行应用模块,都面临数据库膨胀的问题。在合理设计单文档的存储结构,安全保护附件内容的情况下,“附件”文件系统保存,辅助本文所讨论的自动分库技术,从实际应用效果来看,能够解决大部分非结构化数据库膨胀过快的问提。从实现技术看,本文只讨论了Domino的LS实现方法。如果转换成Java技术来实现,配合Domino提供的DIIOP服务,运行效率会进一步提升,应用范围也将进一步扩大。
  主要参考文献
  [1]李宁.Notes数据库与关系型数据库之间的整合在办公自动化系统中的应用[J].数字技术与应用,2011(8)
  [2]郭健.Lotus文件管理系统的应用研究[J].计算机工程应用技术,2012(7).
其他文献
[摘 要] 如何协调“老工业基地的改造”与“新农村建设”二者之间的关系,是实现东北老工业基地振兴的关键所在,也是构建和谐社会的必然要求。本文首先综述了两个相关理论,简述了我国城乡一体化的研究进展,同时指出了老工业基地改造与新农村建设存在的几点具体问题,最后提出了二者之间的互动战略。  [关键词] 城乡一体化;互动;战略;老工业基地;新农村;建设  [中图分类号] F291.1 [文献标识码] A
2012年3月7-9日IFAT CHINA+EPTEE+CWS2012暨亚洲环保行业以及污水处理行业盛会将于上海新国际博览中心拉开华丽序幕。据悉德国威乐将携供水、污水处理全系列产品亮相此次博览会
我院急诊科是门、急诊合二为一的科室,即要收治急、危、重患者,也要诊治普通门诊病人,同时还担负了院前急救的工作;我们日常工作繁锁,每个护士均承担着超负荷的工作量,工作具有高度
随着社会的老龄化,老年人口比例日趋增加,目前已占总人口的10%,如何保障老年人享有健康的晚年生活,注意合理营养和膳食是及其重要的防病保健措施之一.
静脉给药是患儿治病、抢救危重患儿的一种迅速、有效的给药途径。但是,由于患儿哭闹好动等原因,造成小儿输液外渗发生率高且严重。这不仅增加了患儿的痛苦,也给输液工作带来困扰
京剧艺术家李慧芳刘淮她已年愈古稀,如今仍然活跃在京剧舞台上,闪耀着艺术青春的光辉。她嗓音甜美圆润又能高亢激越,她的扮相既雍容华贵又呈现苍凉冷峻;青衣、花衫、老生、小生、
目的:总结B超在检查闭合性肝外伤中的作用和体会。方法:对我院自2003年-2008年由B超诊断急性肝外伤33例患者的声像图进行分析总结。结果认为:B超检查对闭合性肝外伤的诊断准确率
父亲·儿子·长城肖黎在新世界出版社当美编的严欣强实在是貌不惊人,穿戴上也是朴素得不能再朴素,如果你在社里看见一位一年四季都穿着绿色军裤,脚上一双翻毛大头鞋的人
河南省地方史志副会长杨静琦女士说,早在1800年以前的史志记载中,台湾就是中国临海郡的一个州。
20世纪后半期,是信息技术迅猛发展的时代,电子计算机与现代技术结合,为人类创造了一个全新的信息环境———网络环境,整个社会信息环境发生巨大变化。信息技术革命对高校图书