新聞中心
優(yōu)化命令:Domino數(shù)據(jù)庫普通更新設(shè)計(jì)

Domino數(shù)據(jù)庫是一種非常流行的文檔式數(shù)據(jù)庫,在企業(yè)級(jí)應(yīng)用程序中得到了廣泛的應(yīng)用。這種數(shù)據(jù)庫能夠存儲(chǔ)各種類型的文檔和元數(shù)據(jù),并提供了比關(guān)系型數(shù)據(jù)庫更為靈活的數(shù)據(jù)訪問方式。在許多企業(yè)中,Domino數(shù)據(jù)庫已經(jīng)成為不可或缺的一部分,因?yàn)樗軌蛞蚤_放的方式適應(yīng)不斷變化的業(yè)務(wù)需求。在這篇文章中,我們將談?wù)撊绾蝺?yōu)化Domino數(shù)據(jù)庫的普通更新設(shè)計(jì),以提高數(shù)據(jù)庫的性能和可用性。
Domino數(shù)據(jù)庫的普通更新操作經(jīng)常用于修改文檔中存在的字段值。這種更新操作在Domino數(shù)據(jù)庫中非常常見,但是如果不加以優(yōu)化,將會(huì)嚴(yán)重影響數(shù)據(jù)庫的性能和可用性。以下是一些優(yōu)化Domino數(shù)據(jù)庫普通更新操作的建議。
1. 盡可能地使用批量更新操作
批量更新操作可以大大提高Domino數(shù)據(jù)庫的性能,減少更新操作對(duì)數(shù)據(jù)庫的影響。如果需要修改多個(gè)文檔的字段值,請(qǐng)嘗試使用批量更新操作來同時(shí)修改這些文檔。具體地說,可以使用NotesDocumentCollection類中的“StampAll”方法來更新文檔中的所有文檔。這種方式可以避免在每次更新文檔時(shí)進(jìn)行大量的IO操作,同時(shí)減少對(duì)數(shù)據(jù)庫的鎖定時(shí)間。
2. 使用UpdateProcessedDocuments選項(xiàng)
UpdateProcessedDocuments選項(xiàng)可以用來控制Domino數(shù)據(jù)庫在更新文檔后是否重新計(jì)算視圖。當(dāng)UpdateProcessedDocuments選項(xiàng)設(shè)置為true時(shí),Domino數(shù)據(jù)庫會(huì)重新計(jì)算所有受影響的視圖,這會(huì)導(dǎo)致數(shù)據(jù)庫的性能受到影響。因此,在更新單個(gè)文檔時(shí),建議將UpdateProcessedDocuments選項(xiàng)設(shè)置為false并手動(dòng)計(jì)算視圖。
3. 使用事務(wù)來管理更新操作
事務(wù)可以用來確保更新操作的原子性和一致性。在Domino數(shù)據(jù)庫中,如果需要進(jìn)行多個(gè)文檔字段值的更新操作,請(qǐng)使用事務(wù)來管理這些操作。具體地說,可以使用NotesTransaction類來定義一個(gè)事務(wù),并將所有更新操作包含在事務(wù)中。當(dāng)事務(wù)被提交時(shí),所有的更新操作都會(huì)被一起提交,如果中途出現(xiàn)錯(cuò)誤,所有的更新操作都會(huì)被撤銷。
4. 選擇合適的更新方式
在Domino數(shù)據(jù)庫中,有多種方式可以更新文檔字段的值。其中,NotesDocument類的ReplaceItemValue方法是最常用的方式。除此之外,還有使用Update方法、使用Formula語言、使用Java代碼等方式來更新文檔字段的值。在選擇更新方式時(shí),需要考慮到數(shù)據(jù)更新的復(fù)雜度以及所涉及的數(shù)據(jù)量大小等因素。通常情況下,使用ReplaceItemValue方法可以滿足大多數(shù)更新操作的要求。
5. 減少訪問沖突
在Domino數(shù)據(jù)庫中,同時(shí)訪問同一個(gè)文檔可能會(huì)導(dǎo)致訪問沖突,從而影響到數(shù)據(jù)庫的性能和可用性。為了減少訪問沖突,需要在更新文檔時(shí)進(jìn)行一些額外的處理。具體地說,可以使用NotesDocument類中的“SaveOptions”屬性來設(shè)置保存選項(xiàng),防止并發(fā)訪問沖突。同時(shí),還可以使用“TransactionLogging”選項(xiàng)來控制操作是否被記錄到事務(wù)日志中,從而避免意外的數(shù)據(jù)損壞。
優(yōu)化Domino數(shù)據(jù)庫的普通更新設(shè)計(jì)可以提高數(shù)據(jù)庫的性能和可用性,減少對(duì)數(shù)據(jù)庫的影響。在實(shí)踐中,我們需要結(jié)合具體的業(yè)務(wù)需求,選擇合適的更新方式,并遵循上述建議來實(shí)現(xiàn)優(yōu)化。通過這種方式,我們可以更好地利用Domino數(shù)據(jù)庫的特性,以實(shí)現(xiàn)更高效、更可靠的企業(yè)級(jí)應(yīng)用程序。
成都網(wǎng)站建設(shè)公司-創(chuàng)新互聯(lián),建站經(jīng)驗(yàn)豐富以策略為先導(dǎo)10多年以來專注數(shù)字化網(wǎng)站建設(shè),提供企業(yè)網(wǎng)站建設(shè),高端網(wǎng)站設(shè)計(jì),響應(yīng)式網(wǎng)站制作,設(shè)計(jì)師量身打造品牌風(fēng)格,熱線:028-86922220如何開發(fā)Domino中的WebService
在domino中寫webservice可以使用LotusScript,也可以使用java,由于LotusScript API提供的功能多數(shù)都是操作domino數(shù)據(jù)庫中文檔的,在web service中也有一些限制,具體如下:
1. 不要使用原生 LotusScript 類(如 NotesDatabase、NotesDocument 等)作為參數(shù)或返回值。
2. 不要使用變量或貨幣數(shù)據(jù)類型作為參數(shù)或返回值。
3. 不要使用列表或數(shù)組作為參數(shù)或返回值(可以使用數(shù)組,不過必須使用稍后在本文中所描述的一種特定數(shù)據(jù)類型)。
4. 不要使用定制類型作為參數(shù)或返回值。
而java的基礎(chǔ)類庫中則包含的豐富的功能,所以復(fù)雜的webservice使用LotusScript編寫不是很方便,我們就都是使用java來編寫的。
1. 在domino7.0中web服務(wù)是一個(gè)新的設(shè)計(jì)元素,我們來看下相關(guān)設(shè)置,先是基本標(biāo)簽:
1.1.注意 如果修改了WSDL接口則發(fā)出警告 選
項(xiàng):選中這個(gè)選項(xiàng),如果隱式的 WSDL
結(jié)構(gòu)更改時(shí),例如,改變類名稱、改變方法或函數(shù)的名稱以及添加或刪除類變量,那么將導(dǎo)致服務(wù)顯示一條消息。在生產(chǎn)環(huán)境中,這樣的改變可能會(huì)引起現(xiàn)有消費(fèi)您
的 Web 服務(wù)的軟件客戶機(jī),由于解析更改了的 Web
服務(wù)響應(yīng)結(jié)構(gòu)產(chǎn)生的錯(cuò)誤而停止工作。設(shè)置這一選項(xiàng)還能夠阻止您保存這樣的更改并給您一個(gè)將代碼修改回原來狀態(tài)的機(jī)會(huì)。在創(chuàng)建和測試階段不需要設(shè)置這一選
項(xiàng)。
1.2.在 PortType 類 域中,指定了這個(gè)特定服務(wù)的類中包含的可用操作(方法和函數(shù))。通俗的說它就是 Web 服務(wù)代碼中帶有用戶可訪問的 public 方法的類。如果在沒有設(shè)置這個(gè)域之前試圖保存 Web 服務(wù),那么 Domino Designer 7 客戶機(jī)將產(chǎn)生一個(gè)警告。
2.安全性標(biāo)簽
2.1.使用調(diào)試信息編譯java代碼的選項(xiàng),使在控制臺(tái)上查看哪一行代碼產(chǎn)生了運(yùn)行時(shí)錯(cuò)誤成為可能。為web服務(wù)創(chuàng)建簡要表 選項(xiàng)允許為概要分析收集運(yùn)行時(shí)的統(tǒng)計(jì)信息。
2.2. 允許公共訪手如問用戶使用此web服務(wù):該選項(xiàng)使得僅擁有數(shù)據(jù)庫 ACL 中 “Read Public Documents” 訪問權(quán)的用戶可以使用該 Web 服務(wù),當(dāng)不想為大量用戶授予完全的 Reader 訪問權(quán)限(或更高級(jí)別)時(shí),這點(diǎn)很有用。
3.高級(jí)標(biāo)簽
3.1可以在兩個(gè)編程模型選項(xiàng)中進(jìn)行選擇困滲:RPC 和 消息。RPC 支持常規(guī)方法參數(shù)和返回類型;消息限制方法接口為一個(gè) “消息”
參數(shù)和返回類型(有關(guān)更多信息,請(qǐng)參閱聯(lián)機(jī)文檔)。對(duì)于 RPC 編程模型,RPC/編碼 SOAP
消息格式是默認(rèn)的,但是如果有使用其他格式的特殊要求,那么可以修改它。對(duì)于 消息 編程模型,SOAP 消息格式是在 Doc/literal
中固定的。(大多數(shù)情況下使用 RPC)。
3.2 端口類型名稱、服務(wù)元素名稱 和 服務(wù)端口名稱 域是在您保存 Web 服務(wù)時(shí)自動(dòng)填充。在端口類型名稱域中,指定訪問服務(wù)的端口類型名稱。這個(gè)指定對(duì)應(yīng)于 WSDL 文檔中 的 name 屬性。對(duì)于每個(gè)服務(wù),Lotus Domino 7 識(shí)別一個(gè)端口類型。在服務(wù)元素名稱域中,指定服務(wù)的名稱。默畢尺啟認(rèn)情況下,該字段值是 PortType 名稱加上單詞 Service(盡管您可以使用任何想用的名稱)。這個(gè)指定對(duì)應(yīng)于 WSDL 文檔中 的 name 屬性。在服務(wù)端口名稱域
中,指定訪問服務(wù)的端口。默認(rèn)情況下,該字段值是 Domino(盡管您可以使用任何想用的名稱)。這個(gè)指定對(duì)應(yīng)于 WSDL 文檔中
下面 的 name 屬性。對(duì)于每個(gè)服務(wù),Lotus Domino 7
識(shí)別一個(gè)端口。
4.注意:解釋 LotusScript 的 Web
服務(wù)引擎把所有公開的函數(shù)和變量名更改為大寫字母。例如,當(dāng) Lotus Domino 7 自動(dòng)生成 WSDL 時(shí), GetEmailAddress
更改為 GETEMAILADDRESS。當(dāng)您為這樣一個(gè) Web 服務(wù)創(chuàng)建消費(fèi)客戶機(jī)時(shí),知道這一更改是重要的。不過java寫的web
service不會(huì)轉(zhuǎn)為大寫的。還是java的好,都是大寫的看著不舒服。
5.舉例說明,我們新建一個(gè)WebService設(shè)計(jì)元素并按上面設(shè)置,代碼如下:
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調(diào)用domino數(shù)據(jù)庫
java訪問操作lotus domino數(shù)據(jù)庫
有幾種方式:
1、直接使用domino本身的jar文件接口,這種連接方式需要domino服務(wù)器啟動(dòng)diiop服務(wù);
2、使用domino的lddj接口,接口可以到ibm的網(wǎng)站上去下載,這種連接方式只能在window環(huán)境下使用,需要安裝notes客戶端,使用id來驗(yàn)證的,需要手動(dòng)輸入密碼;
3、使用corba來訪問domino,這個(gè)比較煩,我至今沒有調(diào)通
… pendocument&skeyword=corba發(fā)表者:slzhang
是可以通過java來取得domino的資料.也可以通過jsp來讀domino里的資料,只要你在domino上打開diiop服務(wù)就可以.
附一個(gè)jsp的例子如下:
” + ne.getmessage());
}
%>
jsp get domino data
姓名性別生日職務(wù)職稱 部門
胡磨
發(fā)表者:cnhxjtoa
以前我寫過domino5–>oracle8
以下是與domino建立鏈接的相關(guān)代碼
import lotus.domino.*;
try {
system.out.println(“開始notes數(shù)據(jù)源進(jìn)行連接….”);
session s = notesfactory.createsession(noteshost,username,userpassword);
system.out.println(“與notes數(shù)據(jù)源成功連接,現(xiàn)正在查找notes登錄數(shù)據(jù)庫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
{
//具體分析每一個(gè)對(duì)象
switch (entry.getusertype()) {
case aclentry.type_mixed_group :
//混合組
system.out.println(“混合組 “+entry.getname()) ;break;
case aclentry.type_person :
//個(gè)人
namesuser=entry.getname().substring(3,entry.getname().indexof(“/”) );
addnotesuser(namesuser);
system.out.println(“個(gè)人 : “+ namesuser) ;
break;
case aclentry.type_person_group :
//個(gè)人群組
system.out.println(“個(gè)人群組: “+entry.getname() ) ;
//names.nsf 中視圖groups 文檔members域有每一個(gè)用戶
doc = view.getfirstdocument();
while (doc != null && !doc.getfirstitem(“l(fā)istname”).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 :
//服務(wù)器
system.out.println(“服務(wù)器 “+entry.getname()) ;break;
case aclentry.type_server_group :
//服務(wù)器組
system.out.println(“服務(wù)器組 “+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(“找到一個(gè)沒有指定類型的用戶 “+entry.getname().substring(3,entry.getname().indexof(“/”))) ;
break;
}
else
{
system.out.println(“沒有指定 “+entry.getname()) ;
break;
}
}
} while ((entry = acl.getnextentry(entry)) != null);
system.out.println(“用戶導(dǎo)入完成”) ;
}
catch (exception ex)
{
ex.printstacktrace() ;
system.out.println(“與notes數(shù)據(jù)源連接失敗” ) ;
}
1 ncso.jar要放到CLASSPATH中
2 import lotus.domino.*
詳細(xì)請(qǐng)查念老閱桐枝domino幫助局高敏
關(guān)于domino 普通數(shù)據(jù)庫更新設(shè)計(jì)命令的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。
成都創(chuàng)新互聯(lián)科技公司主營:網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)、小程序制作、成都軟件開發(fā)、網(wǎng)頁設(shè)計(jì)、微信開發(fā)、成都小程序開發(fā)、網(wǎng)站制作、網(wǎng)站開發(fā)等業(yè)務(wù),是專業(yè)的成都做小程序公司、成都網(wǎng)站建設(shè)公司、成都做網(wǎng)站的公司。創(chuàng)新互聯(lián)公司集小程序制作創(chuàng)意,網(wǎng)站制作策劃,畫冊、網(wǎng)頁、VI設(shè)計(jì),網(wǎng)站、軟件、微信、小程序開發(fā)于一體。
本文題目:優(yōu)化命令:domino數(shù)據(jù)庫普通更新設(shè)計(jì)(domino普通數(shù)據(jù)庫更新設(shè)計(jì)命令)
URL鏈接:http://www.fisionsoft.com.cn/article/cdjcgso.html


咨詢
建站咨詢
