Notes数据库——文档数据库探究

转载 2007年10月14日 20:39:00
美国Lotus公司(已被IBM公司兼并)于八十年代后期推出的群组工作软件(群件)——Lotus Notes/Domino是一种基于Internet/Intranet技术为构架的群件系统,运行模式不但有客户机/服务器(Client/Server),而且有浏览器/服务器(Browser/Server),是构造企业信息网主要工具之一。现已被广泛应用于办公自动化、工作流控制、协同工作环境等方面,它提供了功能强大的多媒体共享文档数据库和电子邮件系统,是工业界的群件标准

  在SQL Server、DB2、Sybase、Oracle等大型关系数据库得到普遍应用的大环境下,当前我国的院校学历教育课程中,有关数据库系统的教学内容主要集中在关系数据库上,关于文档数据库的知识介绍较少。尤其是Notes文档数据库在我国大、中型行政和企、事业单位应用日趋普及的情况下,对于每一个转向Notes的开发者来说,必须有比较深刻的认识和理解。本文根据在实际开发中的经验体会,结合对Notes应用中的需要来对文档数据库原理和模式结构进行比较分析,加以讨论。

  一.关于Notes数据库与关系数据库的概念比较:

  我们知道在数据库理论中,有外模式、模式和内模式之分。外模式(又称子模式或用户模式)是数据库用户使用的局部数据的逻辑结构和特征的描述,是数据库用户的数据视图,如视图和表的结构、类型、长度、保密级别等。模式是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图,如不同表的结构、类型、长度、保密级别等,以及表和表之间的各种逻辑关系。内模式(又称物理模式)是数据物理结构和存储方式的描述,是数据在数据库内部的表示方式,如存储、索引方式以及数据压缩、加密和聚簇等。为了对Notes文档数据库和关系数据库进行比较,下面让我们来了解一下Notes文档数据库的相关概念。

  1.Notes 数据库文件 (.NSF):数据库文件包容应用程序的数据,其结构由表单、域、文件夹、视图及其他显示功能部件(诸如导航器和数据库图标)组成。具体分两个部分:设计元素、数据文档。设计元素就是表单(Form)、域(Field)、视图(View)和文件夹(Folder)等等,它们构成了应用的基础。数据文档(Document)是用户提交的数据信息。形象来说,它就是用户保存在Form中的文档,例如:一份公文。

  2.表单(Form):NSF数据库文件中,一个NSF数据库中可定义多个表单,表单由多个表单元素组成。表单元素是用于创建表单外观和功能的组件。和页面一样,表单可以包含:文本、水平基准线、表格、区段、图形、图像映射、链接、自动功能、小程序、附件、嵌入元素和HTML。表单可由多个子表单组成,子表单是表单元素集合,它作为一个单独的对象来保存。子表单可以包含与常规表单相同的元素。使用子表单可以节省重新设计的时间。如果更改了子表单的某个域,则用到该子表单的每个表单都会更新。子表单的一般用法包括:向商务文档中添加公司标志,或向邮件和便笺表单中添加邮寄标签信息。子表单可以作为表单的永久部件,或者可以根据公式的结果有条件地显示。例如:可以给用户提供一种选择,允许用户使用不同的图像和样式来为各种类型的邮件消息定制邮件表单,例如便笺、警告或信函。在子表单中用到的域名不能在表单的其他地方使用。对子表单所做的更改将影响到所有使用该子表单的表单和文档。

  3.域(Field):域是构成表单的重要元素,对一个Notes数据库来说,外部数据的录入要通过域,库内存放数据显示也要依靠域。域类型确定了域可以包含的信息类型。用户可以在“域属性”框中定义域类型。域类型是:文本、日期/时间、数字、对话框列表、复选框、单选按钮、列表框、组合框、RTF 文本、作者、姓名、读者、口令和公式。域的主要属性是:
  可编辑:数据可以通过按钮执行公式(Formulas)或脚本(Script)来产生。
  隐含的:只作存储,没有显示作用,显示文档时不显示该域的数据。
  准许多值:单一域准许用户存入多个值。

  4.文档(Document):在Lotus Notes中,信息是以文档的形式保存在数据库中的,一个文档相当于关系型数据库中的一个记录。

  5.视图(View):视图是 Lotus Notes中文档的主要浏览窗口,当一个视图的选择条件给定以后,通过该视图所看到的文档就是符合条件的文档,每一视图都包含符合一定条件的文档。视图除了有选择条件外,还可以按不同的特性将文档进行分类和排序,使得我们可以及其快捷地导航到要查找的文档。对于简单的查询,可以不编写任何程序,而通过把视图按合理的方式进行分类和排序就可以了。对用户来说是直观的,可打印输出屏幕上显示的视图。如某一视图的选择条件为:Select form="通知";则打开该视图后,我们所看到的文档都是通知。

  6.文件夹(Folder): 文件夹也是文档的浏览窗口之一,但是和视图不同的是,文件夹没有选择条件。由于Lotus Notes的文档是可以共享的,文件夹也可以共享,也可以私有。里面的文档通过Putinfolder放进去,必须通过RemoveFromFolder来将其中的文档移开。

  不难看出,在Notes的文档数据库当中,模式也是表格的定义表单(Form)和域(Field),它用来向用户显示和保存数据。而外模式通常是一个用户的能看到视图(View)或是文件夹(Folder)。

  从某种角度来看,一方面表单(Form)提供用户浏览保存在NSF文件中的文档信息的方法,Form也是一种内模式的机制,我们可以实现为不同的用户定制不同的Form,以达到不同的用户他们能看到的文档信息(Form)是不同的。另一方面由于在Notes当中,表单(Form)本身并不保存在文档里,只在显示文档时才起作用,Form也是一种数据库的外模式的体现。另外不像关系数据库,一个Table中的一行数据就必须是符合Table定义的。Notes文档数据库中的一份文档可以不符合任何的格式定义,也没有相应的数据约束,数据约束只在用户透过Form输入数据时是有效的。

  我们可以认为,Notes中视图(View)或是文件夹(Folder)是一个外模式,它提供用户浏览和查找文档数据的方法,我们可以为不同的用户定制不同的视图或文件夹。例如:在常见的公文处理应用中,文件审批者和承办人,能看到视图的内容是不一样的。Notes的文档数据库与关系数据库的类比关系(见表1)

  二.NSF数据库与关系数据库比较的技术特点:

  Lotus Notes/Domino是一个较优秀的群件工作平台,拥有较强的应用开发能力和编程能力,适应于企业级的管理和与互联网络的集成等性能。并且它有很好的电子邮件系统,领先的全文检索和复制功能。对信息的查询就是对文档的查询,信息检索技术作为Lotus Notes/Domino的一个主要技术,为用户提供了包括全文检索、按关键字查询、视图和文件夹等多种方式。它还具有极强的安全机制,可以可靠地保证信息安全性。但Notes不支持关系,NSF中的文档不支持加锁,Lotus Notes数据库作为非关系数据库管理系统,它的特点是:①.基于文档组织模式;②.使用非结构化的数据元素;③.通过定时复制刷新数据;④.使用视图定位数据;⑤.通过全文检索访问数据。关系数据库管理系统的特点是:①.基于事物处理模式;②.使用结构化数据元素;③.提供对数据的实时访问;④.使用实时查询定位数据;⑤.通过SQL语言访问数据。

  三.访问Notes数据库的方法:

  Lotus Notes群件系统,它不仅仅是个应用软件,更是一个开发平台。开发Notes应用系统,除了Notes自身的开发环境外,开发者还可根据自己的技术、经验以及工作环境来决定使用第三方厂商提供的开发工具。

  1.通过ODBC(Open Database Connectivity,开放式数据库互接)方式访问Notes数据库,该方式需要安装NotesSQL(ODBC Driver for Domino),驱动程序可到IBM公司的技术支持网站(http://www-142.ibm.com/software/sw-lotus/products/product4.nsf/wdocs/notessqlhome下载,其最新版本是NotesSQL 3.02g。值得注意的是Notes尽管可以通过Notes ODBC访问,但它并不支持全文检索。

  2.使用COM(The Component Object Model,组件对象模型)和OLE(Object Link and Embed,对象链接和嵌入)访问Notes数据库。

  ①.OLE作为Windows的一个特征,通过把应用程序的功能作为对象暴露给其他应用程序,这些对象拥有属性(数据)和方法(函数),应用程序可以通过定义、调用OLE中的对象去执行相应的任务。Domino既可以作为一个OLE提供者被外部程序调用,也可以通过OLE去控制其他OLE对象。例如:Visual Basic可以利用OLE功能,通过CreatObject获得Notes.NotesUIWorkspace 和 Notes.NotesSession对象来访问Notes类。使用OLE有许多优点但也存在一些弊端,如Domino的OLE服务不支持早期绑定,应用程序中对OLE编程进行类型检查、快速启动时,需要强迫启动Notes的客户端,对系统压力大且不能同时启动多个NotesSession等。

  ②.Lotus Notes/Domino在R5.03以后的版本中,提供了一个后台的COM类NotesSession。它是一个功能强大的对象模型,它提供了其他Notes对象的接口,即只有通过它才能访问Notes中的数据库对象NotesDatabase、NotesView等对象。 由于COM与OLE的兼容性,使应用程序操作Domino变得十分容易,应用程序不需要调用Lotus Notes客户端就可以访问Notes的函数;且可以在设计时使用早期绑定,其速度比晚绑定快;COM的运行速度比Lotus Script快;可以独立于Lotus Notes客户端进行应用程序发布。如在VB中支持后台的Domino对象,即Session,但对于UIWorkSpace 并不支持。

  3.使用第三方厂商提供的开发工具开发Notes应用系统,例如:Powersoft公司的Notes库。PowerBuilder(以下简称为PB)作为客户/服务器计算环境下优秀的客户端开发工具,在访问Notes数据库时就采用了不同于以往的数据库连接方式,即利用PB提供的Lotus Notes数据库应用开发库(LLN,Power Builder Library for Lotus Notes)来实现对Lotus Notes数据库的存取。依托PB下的Notes库就可利用数据窗口访问Notes数据库,并将其结合到应用程序中,利用PB的特点开发出更完美的Notes应用程序。

  四.Notes数据库与其他关系型数据库的数据交换工具:

  异构数据环境已经是一个普遍存在的问题,Windows常用开放数据库互连标准ODBC进行数据交换与操作,后来微软又推出了ADO技术。在Notes应用开发过程中,经常需要实现Notes数据库与其他关系型数据库(如Oracle、Sybase、SQL Server、DB2等)的数据交换,为此Lotus公司推出了相关组件来完成Notes数据库与RDBMS(关系型数据库管理系统)之间高效、快速、可伸缩的批量数据交换,如Notes Pump和LEI等。

  早期的Notes Pump组件,它作为Lotus公司Domino/Notes 系列产品之一,是一个企业级规模的数据分发服务器,它可实现RDBMS和Notes 数据库之间数据的周期性复制,主、辅Domino服务器之间数据的及时和自动的同步。数据的移动可以是调度安排的,也可以是轮询或手动的,还可以被某个特定的条件所激发。是一个基于服务器的32位多任务数据传输引擎(见图1)。


 图1

  Notes Pump包含三部分:服务器、管理员、开发客户端。Notes Pump服务器必须安装在已装有必要的Notes DLL的平台上,但其运行可独立于已安装的Notes服务器或客户端。"管理员"是一个Notes 的应用数据库,存储在Domino服务器上,且可运行于任何装有Notes Client4.11或更高版本的平台上。Notes Pump开发客户是一个可选组件,安装后可为后面创建"活动(Activity)"时提供方便,并支持Notes Pump LotusScript Extensions编程。装有Notes Pump 服务器的机器还需要有相应的数据库通讯软件,如Oracle SQL *NET,DB/2CAE,ODBC等,以便和相应的数据库服务器连接。

  LEI(Lotus Enterprise Integrator)是Notes Pump的后继产品,利用LEI工具的连接及行为来实现NOTES与SQL数据库的连接,实际上起到中间服务器的作用,它使不同数据库通过它的connection及activity文档来实行数据交换。示意图如下(见图2):


图2

  五.分析Notes数据库的工具:

  在这里本人向大家推荐一款Notes数据库分析工具——《Domino数据库浏览器》,可以到南山软件屋网站(http://www.nssoft.net/)中的“原创软件”栏目中下载。《Domino数据库浏览器》是一个小工具,可以用来浏览NSF(Domino数据库)文件中的所有文档数据,并将其导出。既可以浏览Domino服务器上的所有文档,也可以打开浏览独立的NSF文件,作为软件开发的协助分析工具。

  综上所述,我们必须清醒地认识到文档数据库与传统关系型数据库应用程序开发系统有很大的差别,当然,这涉及到具体应用等很多其他的问题,如:应用是否适合用Notes来开发。试图将传统的应用程序开发技术映射到Notes环境中的开发人员,将很难获得Notes应用程序的优点。

Notes消除冲突文档

之前开发的xpages项目出现多个重复的文档,从BS端来看是多个相同文档,在CS端来看就是冲突文档,看了前辈留下的文档,下面介绍如何来消除冲突文档。 Domino 的数据库在使用的过程中,会因为复制...
  • liuchang__
  • liuchang__
  • 2015年07月27日 17:13
  • 691

PowerDesigner如何导出数据库文档

背景:     前几天组长交给小编一个任务,研究一下PowerDesigner,听完我就蒙了,自己根本就没有接触过,但是自己还是很有勇气的承担下来了,这是一个学习的机会。 是什么: Power Des...
  • u013045868
  • u013045868
  • 2015年12月06日 23:41
  • 2300

什么时候面向文档NoSQL数据库可以代替SQL数据库

声明:      1、我不是SQL的信徒,同样也不是NoSQL的信徒。      2、只讨论面向文档的NoSQL和SQL数据库在数据存储方面的使用。 我相信任何技术既然被认可都有其用武之地,但是我...
  • tianliangsxy
  • tianliangsxy
  • 2015年06月11日 14:16
  • 704

47. Lotus Notes中编程发送邮件(二)

在编程发送各种类似通知的邮件时,时常会需要发件人显示为某个特定的帐户,比如某个部门的名称或者管理员的名字。另一种需求是,用户收到某封邮件后,回复邮件的地址不同于发件人栏显示的地址。而正常情况下,发送邮...
  • starrow
  • starrow
  • 2013年08月17日 17:00
  • 6727

关于数据库管理工具的使用----把数据库中的表等生成word文档

最近因为项目原因,发过来的数据库word文档都是或多或少的存在着一定的问题(呵呵,人工有时候会打盹啊)。我就见到过明明上面的主键类型长度是varchar(40),下面变成另外一个表的外键时就成了var...
  • long636
  • long636
  • 2016年06月25日 12:36
  • 1215

用PDMReader工具生成数据库设计文档

你是否在为写庞大的数据库设计文档发愁,帮你轻松搞定,前提是你需要有pdm文件! 第一步:下载并安装PDMReader(见附件); 第二步:打开PDMReader,新建项目:test; 第三步:在项目t...
  • xinglun88
  • xinglun88
  • 2014年02月26日 17:08
  • 1788

基于数据库的自动化生成工具,自动生成JavaBean、自动生成数据库文档等(v4.1.2版)

一直以来把数据库的表转换成JavaBean和数据库设计文档都是一件让人头痛的事情,既浪费时间又很繁琐,于是就自己用Swing写了一个基于数据库的自动化生成工具,支持MySQL、Oracle、SQLSe...
  • vipbooks
  • vipbooks
  • 2017年01月09日 20:52
  • 3335

Exchange & Lotus Notes邮件系统在线批量迁移账号及邮件

Exchange & Lotus Notes邮件系统在线批量迁移账号及邮件
  • aliasman
  • aliasman
  • 2016年07月19日 14:29
  • 1126

利用DBExportDoc V1.0 For MySQL自动生成数据库表结构文档

DBExportDoc V1.0 For MySQL是一款利用office特性VBA开发的小工具,利用此工具可以将本机MySQL上任意数据库、任意表的数据结构导出。但是它不是一款你安装是一路next到...
  • chenzenan
  • chenzenan
  • 2014年07月10日 14:33
  • 1750

startbbs数据库文档整理

由张井西整理发布 v1.1.5版数据库文档 一共13张表   标记 * 的表示暂时没有用到或者笔者没有找到,还请大家赐教。   stb_categories:管理后台->板块节点(分类节点...
  • u014635169
  • u014635169
  • 2014年05月20日 15:28
  • 931
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Notes数据库——文档数据库探究
举报原因:
原因补充:

(最多只允许输入30个字)