NOTESSIDAN

Allt om Lotus Notes & Domino




Temporära vyer istället för gömda lookupvyer
När man skapar vyer i Notes bör man tänka till både en och två gånger. det är väldigt vanligt att man skapar gömda vyer i Notes och använder dessa som lookupvyer programmatiskt. Användarna ser aldrig dessa vyer men dom finns i databasen och måste uppdatera sina index precis som dom synliga.

Vad jag tänkte visa här är ett sätt att istället skapa temporära vyer som sedan tas bort. tekniken är inte applicerbar på alla typer av databaser men tänk dig att du har en databas på 20Gb, 500.000 document, 200 vyer och inget fulltextindex. då börjar det bli dags att se över antalet vyer i databasen.

Tekniken att skapa temporära vyer är kanske inte världens snabbast process men ibland kanske det är bättre att det tar lite tid att trigga kod än att vänta på vyer som måste uppdateras. speciellt om databasen har flera hundra transaktioner varje dag. vyn som skapas måste förvisso indexeras men behöver i de flesta fall bara innehålla 1 kolumn så det går förvånandsvärt snabbt även för mycket data.

Nedan kod skapar en vy i den databasen den körs ifrån, sätter selection formula, hämtar ett dokument baserat på en nyckel och tar sedan bort vyn igen. detta är förstås bara ett exempel, man skulle också kunna tänka sig att man vill visa en temporär vy för användarna i en dialogbox (ws.picklistcollection) som sedan tas bort när dialogboxen stängs.
Sub Initialize Dim session As New notessession,db As notesdatabase,ViewName As String Dim view As notesview,column As notesviewcolumn, doc As notesdocument Set db = session.currentdatabase ViewName = "TmpLookup" Set view = db.CreateView(ViewName, |SELECT Form = "Company"|) Call view.RemoveColumn(1) Set column = view.CreateColumn(1,"Company","fldCompany") column.IsSorted = True column.IsSortDescending = False Delete view Set view = db.getview(viewName) Set doc = view.GetDocumentByKey("Volvo AB") ' hämta värden från doc... Call view.Remove() End Sub


Det är en grannlaga uppgift att bygga om ett komplext system till temporära vyer men om man har denna teknik i åtanke innan man börjar bygga så kanske man kan slippa gömda lookupvyer helt i databaserna och på så sätt öka prestandan.

Updatering: Skapa vyer via Lotusscript kan även användas för andra ändamål, Se här



Relevanta Poster på Notessidan:



Publicerad 2007-04-04 | Kommentarer: 7 | Läsningar: 1476
Kommentarer

Patrick Kwinten ( 2007-04-04 15:59:21 ) Websida
Jag kan inte förstår varför man skulle skapa en vy och tar den bort direkt efter man har använt vyn. Är en agent som kör inte mer logisk då?

Men en bra dokumenterat applikation man vet exakt vilken vy och vilken kolumn används, eller hur?
Thomas ( 2007-04-04 21:24:38 ) Websida
Anledningen till att man skulle vilja skapa temporära vyer är för att hålla antalet vyer i databaser till ett minimum.

Vyer orsaker ofta prestandaproblem i större databaser. Det är väldigt lätt att skapa vyer, men ofta svårt att ta bort dom.

- Thomas
Andrei Kouvchinnikov ( 2007-04-05 20:12:52 ) Websida
Jag tror det kan bli prestandaproblem om flera användare kör skriptet samtidigt. Och det går säkert 3-5 gånger snabbare att göra lookup på en befintlig vy än att vänta på att en ny vy är indexerad. Har du gjort prestanda mätningar för databas med typ 100000 dokument?

Thomas ( 2007-04-06 09:12:14 ) Websida
Hej Andrei,

Du har helt rätt , det kan säkert uppkomma prestandaproblem när scriptet körs, men tanken med detta var inte att det ska gå jätte snabbt när det körs. anledningen till temporära vyer är att minimera antalet vyer i databaserna och på så sätt få upp prestandan i hela databasen.

Jag har gjort tester i en databas med 10.000 dokument utan problem. men om man har större databaser så kan man antagligen styra vyselection formulan på den temorära vyn att inte behöva indexera alla dokument på den temporära vyn.

Jag har inte vågat använda denna tekniken hos någon kund ännu, men jag ser inte varför det skulle bli några stora problem.

Tänk om detta är lösningen på alla prestandaproblem i stora databaser ? tänk om man kunde ta bort 190 av dom 200 vyer som finns min kunds databas.

- Thomas




Jocke ( 2007-04-08 10:17:55 )
Varför göra en vy (måste inte användaren vara designer då, om man kör scriptet från klienten) - går det inte lika enkelt att göra en NotesDatabase.Search istället? Då allokerar du inte något extra utrymme för det vyindex som sekund(minuten?) senare tas bort, och därmed ligger kvar tills compacten av databasen har gått...


Thomas ( 2007-04-08 14:30:22 ) Websida
Hej Jocke

Bra tänkt, Jag hade faktiskt inte tänkt på att man kanske behöver vara designer för att skapa en vy i databasen. (kanske kan lösas med att scripten går med annan användare)

db.search är ett bra alternativ om man har fulltextindex, men om man har databaser med mycket transaktioner och en halvmiljon dokument så väljer många att slå av FT index av olika anledningar och då är db.search ett ganska dåligt alternativ.

- Thomas





Lars Larsson ( 2007-04-19 22:39:23 )
db.search är inte samma som FTSearch, db.search skapar "in-memory views", via "selection formula". Det borde vara ett bättre alternativ än att skapa vyer? Fungerar mycket väl om du frågar mig...
/Lars



Sök på Notessidan
Thomas Adrian
ThomasCertifierad utvecklare och administratör inom Notes & Domino

Kontakta mig







Senaste Sökningarna på Notessidan
Sön - sharepoint (R:1)
Sön - räkna and antal and besökare (R:0)
Sön - browser (R:17)
Sön - stoppar and mail (R:1)
Sön - korrupt (R:3)
Sön - böcker (R:0)
Sön - kalendern (R:12)
Sön - feature (R:15)
Sön - print and mime (R:2)
Sön - länka (R:0)
Sön - databasen (R:94)
Sön - access (R:47)
Sön - outlook (R:15)
Sön - webanvändare (R:0)
Sön - google and maps (R:6)
Sön - juffe (R:2)
Sön - uidoc.print (R:1)
Sön - java and lotusscript (R:26)
Sön - besök (R:0)




Databasstatistik Blogg
Uppdateras var 15:e Minut

Antal Poster:562
Antal Kommentarer: 1405
Alla sidvisningar idag:
Unika Besökare idag:
Databasstorlek: 149,75Mb
Fixup: 2019-09-19 00:31:04
FT:2019-09-19 03:17:12
DB Procent använd: 99,9
Antal Agenter: 42
Antal Formulär: 65
Antal Vyer: 60
Antal Dokument: 7984
Antal Image Resources: 108
Antal Subformulär: 18
Antal Scriptbibliotek: 11
Totalt Antal Designelement: 576
Antal Attachments: 159
Antal Konflikter: 0
Server version 1: 405
Server version 2: Release 9.0.1FP9|August 14, 2017
Server Plattform: Windows/64
Ändrad: 2019-09-19 04:52:44
Server Tidszon: Z=-1$DO=1$DL=3 -1 1 10 -1 1$ZX=131$ZN=W. Europe
Region:
Kommentarsspam Idag: 5
Kommentarsspam Totalt: 18824


BlogRankers.com

Top Sites at iWEBTOOL.com

Fight Spam! Click Here!

Bloggtoppen.se

Listed on BlogShares

Increase website traffic

Top Internet Blogs

Site Checker