优化命令:domino数据库普通更新设计 (domino 普通数据库更新设计命令)

优化命令:Domino数据库普通更新设计

Domino数据库是一种非常流行的文档式数据库,在企业级应用程序中得到了广泛的应用。这种数据库能够存储各种类型的文档和元数据,并提供了比关系型数据库更为灵活的数据访问方式。在许多企业中,Domino数据库已经成为不可或缺的一部分,因为它能够以开放的方式适应不断变化的业务需求。在这篇文章中,我们将谈论如何优化Domino数据库的普通更新设计,以提高数据库的性能和可用性。

Domino数据库的普通更新操作经常用于修改文档中存在的字段值。这种更新操作在Domino数据库中非常常见,但是如果不加以优化,将会严重影响数据库的性能和可用性。以下是一些优化Domino数据库普通更新操作的建议。

1. 尽可能地使用批量更新操作

批量更新操作可以大大提高Domino数据库的性能,减少更新操作对数据库的影响。如果需要修改多个文档的字段值,请尝试使用批量更新操作来同时修改这些文档。具体地说,可以使用NotesDocumentCollection类中的“StampAll”方法来更新文档中的所有文档。这种方式可以避免在每次更新文档时进行大量的IO操作,同时减少对数据库的锁定时间。

2. 使用UpdateProcessedDocuments选项

UpdateProcessedDocuments选项可以用来控制Domino数据库在更新文档后是否重新计算视图。当UpdateProcessedDocuments选项设置为true时,Domino数据库会重新计算所有受影响的视图,这会导致数据库的性能受到影响。因此,在更新单个文档时,建议将UpdateProcessedDocuments选项设置为false并手动计算视图。

3. 使用事务来管理更新操作

事务可以用来确保更新操作的原子性和一致性。在Domino数据库中,如果需要进行多个文档字段值的更新操作,请使用事务来管理这些操作。具体地说,可以使用NotesTransaction类来定义一个事务,并将所有更新操作包含在事务中。当事务被提交时,所有的更新操作都会被一起提交,如果中途出现错误,所有的更新操作都会被撤销。

4. 选择合适的更新方式

在Domino数据库中,有多种方式可以更新文档字段的值。其中,NotesDocument类的ReplaceItemValue方法是最常用的方式。除此之外,还有使用Update方法、使用Formula语言、使用Java代码等方式来更新文档字段的值。在选择更新方式时,需要考虑到数据更新的复杂度以及所涉及的数据量大小等因素。通常情况下,使用ReplaceItemValue方法可以满足大多数更新操作的要求。

5. 减少访问冲突

在Domino数据库中,同时访问同一个文档可能会导致访问冲突,从而影响到数据库的性能和可用性。为了减少访问冲突,需要在更新文档时进行一些额外的处理。具体地说,可以使用NotesDocument类中的“SaveOptions”属性来设置保存选项,防止并发访问冲突。同时,还可以使用“TransactionLogging”选项来控制操作是否被记录到事务日志中,从而避免意外的数据损坏。

优化Domino数据库的普通更新设计可以提高数据库的性能和可用性,减少对数据库的影响。在实践中,我们需要结合具体的业务需求,选择合适的更新方式,并遵循上述建议来实现优化。通过这种方式,我们可以更好地利用Domino数据库的特性,以实现更高效、更可靠的企业级应用程序。

相关问题拓展阅读:

如何开发Domino中的WebService

在domino中写webservice可以使用LotusScript,也可以使用java,由于LotusScript API提供的功能多数都是操作domino数据库中文档的,在web service中也有一些限制,具体如下:

1. 不要使用原生 LotusScript 类(如 NotesDatabase、NotesDocument 等)作为参数或返回值。

2. 不要使用变量或货币数据类型作为参数或返回值。

3. 不要使用列表或数组作为参数或返回值(可以使用数组,不过必须使用稍后在本文中所描述的一种特定数据类型)。

4. 不要使用定制类型作为参数或返回值。

而java的基础类库中则包含的丰富的功能,所以复杂的webservice使用LotusScript编写不是很方便,我们就都是使用java来编写的。

1. 在domino7.0中web服务是一个新的设计元素,我们来看下相关设置,先是基本标签:

1.1.注意 如果修改了WSDL接口则发出警告 选

项:选中这个选项,如果隐式的 WSDL

结构更改时,例如,改变类名称、改变方法或函数的名称以及添加或删除类变量,那么将导致服务显示一条消息。在生产环境中,这样的改变可能会引起现有消费您

的 Web 服务的软件客户机,由于解析更改了的 Web

服务响应结构产生的错误而停止工作。设置这一选项还能够阻止您保存这样的更改并给您一个将代码修改回原来状态的机会。在创建和测试阶段不需要设置这一选

项。

1.2.在 PortType 类 域中,指定了这个特定服务的类中包含的可用操作(方法和函数)。通俗的说它就是 Web 服务代码中带有用户可访问的 public 方法的类。如果在没有设置这个域之前试图保存 Web 服务,那么 Domino Designer 7 客户机将产生一个警告。

2.安全性标签

2.1.使用调试信息编译java代码的选项,使在控制台上查看哪一行代码产生了运行时错误成为可能。为web服务创建简要表 选项允许为概要分析收集运行时的统计信息。

2.2. 允许公共访手如问用户使用此web服务:该选项使得仅拥有数据库 ACL 中 “Read Public Documents” 访问权的用户可以使用该 Web 服务,当不想为大量用户授予完全的 Reader 访问权限(或更高级别)时,这点很有用。

3.高级标签

3.1可以在两个编程模型选项中进行选择困渗:RPC 和 消息。RPC 支持常规方法参数和返回类型;消息限制方法接口为一个 “消息”

参数和返回类型(有关更多信息,请参阅联机文档)。对于 RPC 编程模型,RPC/编码 SOAP

消息格式是默认的,但是如果有使用其他格式的特殊要求,那么可以修改它。对于 消息 编程模型,SOAP 消息格式是在 Doc/literal

中固定的。(大多数情况下使用 RPC)。

3.2 端口类型名称、服务元素名称 和 服务端口名称 域是在您保存 Web 服务时自动填充。在端口类型名称域中,指定访问服务的端口类型名称。这个指定对应于 WSDL 文档中 的 name 属性。对于每个服务,Lotus Domino 7 识别一个端口类型。在服务元素名称域中,指定服务的名称。默毕尺启认情况下,该字段值是 PortType 名称加上单词 Service(尽管您可以使用任何想用的名称)。这个指定对应于 WSDL 文档中 的 name 属性。在服务端口名称域

中,指定访问服务的端口。默认情况下,该字段值是 Domino(尽管您可以使用任何想用的名称)。这个指定对应于 WSDL 文档中

下面 的 name 属性。对于每个服务,Lotus Domino 7

识别一个端口。

4.注意:解释 LotusScript 的 Web

服务引擎把所有公开的函数和变量名更改为大写字母。例如,当 Lotus Domino 7 自动生成 WSDL 时, GetEmailAddress

更改为 GETEMAILADDRESS。当您为这样一个 Web 服务创建消费客户机时,知道这一更改是重要的。不过java写的web

service不会转为大写的。还是java的好,都是大写的看着不舒服。

5.举例说明,我们新建一个WebService设计元素并按上面设置,代码如下:

public class DbInfo

{

public String dbName;

public String dbSO;

}

import lotus.domino.*;

import lotus.domino.types.*;

public class DbInfoManager

{

public DbInfo getAllDbInfo()

{

DbInfo di = new DbInfo;

try

{……… }

catch(Exception e)

{

e.printStackTrace();

}

return di;

}

}

java调用domino数据库

java访问操作lotus domino数据库

有几种方式:

1、直接使用domino本身的jar文件接口,这种连接方式需要domino服务器启动diiop服务;

2、使用domino的lddj接口,接口可以到ibm的网站上去下载,这种连接方式只能在window环境下使用,需要安装notes客户端,使用id来验证的,需要手动输入密码;

3、使用corba来访问domino,这个比较烦,我至今没有调通

… pendocument&skeyword=corba发表者:slzhang

是可以通过java来取得domino的资料.也可以通过jsp来读domino里的资料,只要你在domino上打开diiop服务就可以.

附一个jsp的例子如下:

” + ne.getmessage());

}

%>

jsp get domino data

姓名性别生日职务职称 部门

胡磨

发表者:cnhxjtoa

以前我写过domino5–>oracle8

以下是与domino建立链接的相关代码

import lotus.domino.*;

try {

system.out.println(“开始notes数据源进行连接….”);

session s = notesfactory.createsession(noteshost,username,userpassword);

system.out.println(“与notes数据源成功连接,现正在查找notes登录数据库oak.nsf”);

//定义全局性变量

database db = null;

database namesdb=null;

view view =null;

document doc = null;

string namesuser=””;

db = s.getdatabase(s.getservername(), sysinf.notes_dir +”/oak.nsf”);

acl acl = db.getacl();

aclentry entry = acl.getfirstentry();

namesdb=s.getdatabase(s.getservername() ,”names.nsf”) ;

view = namesdb.getview(“groups”);

do

{

//具体分析每一个对象

switch (entry.getusertype()) {

case aclentry.type_mixed_group :

//混合组

system.out.println(“混合组 “+entry.getname()) ;break;

case aclentry.type_person :

//个人

namesuser=entry.getname().substring(3,entry.getname().indexof(“/”) );

addnotesuser(namesuser);

system.out.println(“个人 : “+ namesuser) ;

break;

case aclentry.type_person_group :

//个人群组

system.out.println(“个人群组: “+entry.getname() ) ;

//names.nsf 中视图groups 文档members域有每一个用户

doc = view.getfirstdocument();

while (doc != null && !doc.getfirstitem(“listname”).gettext().equals(entry.getname() ))

{

doc = view.getnextdocument(doc);

}

if (doc!=null){

enumeration values = doc.getfirstitem(“members”).getvalues().elements();

while (values.haoreelements()) {

//将cn=administrator/o=autosoft只取它的名字administrator

namesuser=values.nextelement().tostring() ;

namesuser=namesuser.substring(3,namesuser.indexof(“/”) ) ;

addnotesuser(namesuser);

}

}

break;

case aclentry.type_server :

//服务器

system.out.println(“服务器 “+entry.getname()) ;break;

case aclentry.type_server_group :

//服务器组

system.out.println(“服务器组 “+entry.getname()) ;break;

case aclentry.type_unspecified :

//没有指定

if(entry.getname().indexof(“/”)>1 )

{

namesuser=entry.getname().substring(3,entry.getname().indexof(“/”) );

addnotesuser(namesuser);

system.out.println(“找到一个没有指定类型的用户 “+entry.getname().substring(3,entry.getname().indexof(“/”))) ;

break;

}

else

{

system.out.println(“没有指定 “+entry.getname()) ;

break;

}

}

} while ((entry = acl.getnextentry(entry)) != null);

system.out.println(“用户导入完成”) ;

}

catch (exception ex)

{

ex.printstacktrace() ;

system.out.println(“与notes数据源连接失败” ) ;

}

1 ncso.jar要放到CLASSPATH中

2 import lotus.domino.*

详细请查念老阅桐枝domino帮助局高敏

关于domino 普通数据库更新设计命令的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。


数据运维技术 » 优化命令:domino数据库普通更新设计 (domino 普通数据库更新设计命令)