3. MBO Best Practices
Transcript of 3. MBO Best Practices
-
7/29/2019 3. MBO Best Practices
1/37
SUP2.1KNOWLEDGETRANSFER
DATAMODELING
MICHAEL HO
OCTOBER 20, 2011
-
7/29/2019 3. MBO Best Practices
2/37
2CompanyConfidenalDecember12,2011
CONTENTS
MBODefinion DataLoading CachePolicies DataModelImplicaonsonClient ChallengesintheField SUP2.1.1Preview
-
7/29/2019 3. MBO Best Practices
3/37
3CompanyConfidenalDecember12,2011
MBODEFINITION
THEMBODATAMODELISTHECLIENTDATAMODEL
-
7/29/2019 3. MBO Best Practices
4/37
4CompanyConfidenalDecember12,2011
MBODATAMODEL
MBOdatamodelisNOTamodelforbackendbusinessobjects ItisthedatamodelforthemobileapplicaononthedeviceAuserreplicatesthedatamodelforthedesktopapplicaon
onthedevicewheremanyoftheaributesareneverused,
leadingtoslowsynchronizaonandperformancedegradaon
EmpiricaldatashowsthatMBOdatamodelimpactsnotonlymobileapplicaondevelopmentbutsynchronizaon
performance
MBOdefinionshouldtakeintoconsideraonmobiledatabaselimitaons
Synchronizaongroupdefineswhattosynchronize CachegroupdefineswhatandwhentoloadfrombackendtofillthetablesinCDB
-
7/29/2019 3. MBO Best Practices
5/37
5CompanyConfidenalDecember12,2011
MBODATAMODEL
Relaonshipenablesnavigaon,whole-partremoval,cascadeoperaons
Supportsassociaon(itemsproduct)andcomposion(salesorderitems)
SurrogatekeyschemeontheclientdatabaseAsprimarykeyforsynchronizaonForeignkeytoimplementrelaonship
Cacheassociatessurrogatekeywithbackendprimarykey
-
7/29/2019 3. MBO Best Practices
6/37
6CompanyConfidenalDecember12,2011
MBODATAMODEL
Backendcreateoperaonexpectedtoreturnprimarykeysoassociaonbetweensurrogatekeyandprimarykeycanbeformed
Synchronizaonparametersserveassubscripontodownloaddata
CanhavemulplesetsofsynchronizaonparametersatanygivenmeDatacorrespondingtothesesetsofsynchronizaon
parametersaredownloadedtothedevice
Maydeleteen#recolleconofsynchronizaonparameterssetstoreclaimstoragespace
-
7/29/2019 3. MBO Best Practices
7/377CompanyConfidenalDecember12,2011
GOODMBOMODELINGPRACTICEMBODEFINITION EveryaUributeisusedbythemobileapplicaon MBOinstance=databaserow(mustfitwithinapage)Largerowsizerequireslargerpagesizeimpacng
performanceondeviceandsynchronizaon
DonotdefineaMBOwithmorethan50aributesDonotuseSTRINGdatatype.Instead,useSTRING(n)to
definethemaximumstringlength(STRINGdefaultsto300)
PromoonofVARCHAR(n)toLONGVARCHARcanoccurduringcodegeneraonifthespecifiedpagesizeislessthan
thecalculatedmaximumrowsizeUselargerpagesizeduringcodegeneraonandrunwitha
smalleroneondeviceifnormalsizeismuchlowerthan
maximum
-
7/29/2019 3. MBO Best Practices
8/378CompanyConfidenalDecember12,2011
GOODMBOMODELINGPRACTICEINDEX setheminimumnumberofindexestosupportqueriesusedbythemobileapplicaon
Indexslowsdownupdateoperaonsondeviceandsynchronizaon,especiallyonlowenddevices
UncheckfindByPrimaryKeyandFindAllqueriesgeneratedforeachMBObydefaultiftheyarenotneededbythemobileapplicaon
Determineifindexshouldbecreatedforuserdefinedobjectqueries
-
7/29/2019 3. MBO Best Practices
9/379CompanyConfidenalDecember12,2011
GOODMBOMODELINGPRACTICESYNCHRONIZATIONGROP sesynchronizaongrouptoaddflexibilityonwhattosynchronize
ControlswhichMBOstosynchronizeataparcularmeSupportspriorizaoni.e.getservicecketswithoutdetailsLimitstheamountofdataduringsynchronizaonfor
customersfacingimpairedconnecvitytoavoidrepeatedlytryingtocompletealargesynchronizaon
Thinktwiceifthesynchronizaongrouphasmorethan5members
Runmeflexibilityavailablebycombiningsynchronizaongrouptoreduceoverhead
Relaonshipacrosssynchronizaongroupsmayresultinincompleteobjectgraphsontheclient
-
7/29/2019 3. MBO Best Practices
10/3710CompanyConfidenalDecember12,2011
GOODMBOMODELINGPRACTICECACHEGROP secachegrouptocontrolwhatandwhentoloaddataintoCDB
BreakupexpensivedataretrievalsfrombackendRelaonshipacrosscachegroupmayresultinincomplete
objectgraphsinCDB
Mappingcachegrouptosynchronizaongroupreducesunnecessaryrefreshnotrelatedtothetriggering
synchronizaon
Avoidcirculardependenciesbetweencachegroups.Similarly,avoiddrivingtheloadofanMBOinonecache
groupbasedontheaributesofanMBOinanothercache
group
-
7/29/2019 3. MBO Best Practices
11/3711CompanyConfidenalDecember12,2011
GOODMBOMODELINGPRACTICEPRIMARYKEY MBOprimarykeyshouldmatchbackendbusinesskey MBOwithacompositeprimarykeyandtheEISloadoperaonparametersdonotmatchinscope,datamaybe
duplicatedinthecache
Ifnoprimarykeyismodeled,animplicitcompositeprimarykeythatismadeupofallcolumnsisgenerated
-
7/29/2019 3. MBO Best Practices
12/3712CompanyConfidenalDecember12,2011
GOODMBOMODELINGPRACTICESYNCHRONIZATIONPARAMETER Synchronizaonparametersshouldbedefinedandmappedtoallresult-affecngloadparameters
MBOusesWSoperaongetAllBooksByAuthor(Author,userKey)whereuserKeyissimplyamechanismtoauthencateauser
anddoesnoteffecttheresultsoftheoperaon.Inthiscase
"userKey"isnotaresult-affecngparameterandthereforeshouldnotbemappedtoasynchronizaonparameter
MBOusesWSoperaongetEmployees(Group,department).Groupismappedtoasynchronizaonparameterbutdepartmentis
mappedtoapersonalizaonkey.Theparonidenfiedby
Groupisnowconstantlyoverwrien
-
7/29/2019 3. MBO Best Practices
13/3713CompanyConfidenalDecember12,2011
GOODMBOMODELINGPRACTICEPARTITION Paronisparons/uniqueEISresultsetsidenfiedbytheresultaffec+ngloadparameters
semulpleparonswheneverpossible.Bydefault,wehaveasingleparon
Increaseparallelism Loadvs.load,loadvs.update
ReducerefreshlatencyData/rowsmustnotbecontainedinmulpleparon
otherwisedataneedtobeconstantlyupdated,evenifthe
actualbusinessdatadidn'tchange,asitwillbouncebetweenparonsandthatseverelyimpactsperformanceand
downloadincorrectdatatoclient
-
7/29/2019 3. MBO Best Practices
14/3714CompanyConfidenalDecember12,2011
GOODMBOMODELINGPRACTICEPARTITIONParonscanalsobeusedtogetdata"real-#me"whenusing
acacheintervalofzeroandverysmallparonsintheirowncachegroup/syncgrouprelaonship
Parongranularity Toocoarse-longrefreshmeToofinehighoverheadduetoEIS/SUPchaness.Itismoreefficienttohavereasonablychunkyinterfacebetweenservernetworked
components
-
7/29/2019 3. MBO Best Practices
15/3715CompanyConfidenalDecember12,2011
GOODMBOMODELINGPRACTICESHAREDREADMBO sesharedreadMBOwhenappropriatePopulatemulpleMBOswithasingledataretrieval
invocaonforefficientdataloading
AllMBOssharethesameparonkey, theywillalwaysbeloaded/refreshedtogetherwhenthecacheexpired
ApplyoperaonsresultsalwaysonlyappliestotheMBOinstancetheoperaonisexecutedon,youcannotfill
mulpleMBOfromasingleoperaonoutput/result*
ForApplyResultstoCachetowork,theoutputfromoperaonhastolookjustliketheoutputfromtheprimaryread*
-
7/29/2019 3. MBO Best Practices
16/3716CompanyConfidenalDecember12,2011
GOODMBOMODELINGPRACTICESHAREDREADMBOSharedreadisveryusefultoreadobjectsintothecache
efficientlyandtransaconally,yousllhavetouseclientparametersfortransaconalwriteoperaons*
ChildrowscannotbeapplytocacheAlternavely,useMLItochaindiscretecreaonoperaons
withinthehierarchy
Rootcreateoperaonreturnsprimarykeyforassociaonwithsurrogatekeyandchildcreaon
Applyresultsshouldbeusedwheneverpossible,ifonewantstomaintainthesurrogate->businesskeyaffinity
Invalidatecacheisrequiredtobeusedifthedevicesidecontentmustbeconfirmedinthemostmelyfashion
Mulpleparonstoreduceinvalidate-refreshcosttoretrieveresult
-
7/29/2019 3. MBO Best Practices
17/37
17CompanyConfidenalDecember12,2011
DATALOADING
FILLINGTHECDBWITHENTERPRISEDATA
-
7/29/2019 3. MBO Best Practices
18/37
18CompanyConfidenalDecember12,2011
DATALOADINGDESIGNPREPARATION
KnowThyDataReferencevs.Transaconal:MostlyReadvs.Read/WriteSharedvs.PrivateSourcesofchanges:coherencyimplicaonsUpdatefrequencyandfreshnessrequirementAccesspaern:peakandvalleyordistributedDatavolume:sizedoesmaer
KnowThyDataSourcesEfficiencyofinterface
Protocol:JCOvs.WebServices API:Numberofinvocaonsrequired
Pushvs.Pull
Reacontopeakload
-
7/29/2019 3. MBO Best Practices
19/37
19CompanyConfidenalDecember12,2011
RLEOFTHMBRE:DATALOADING
DonotuseexisngAPIjustbecauseitisthereEvaluateitsefficiencyforloadingdataintoCDBDevelopcustommobileadaponifappropriateLoadwhatisneedednotwhatisprovided
seanefficientinterface(protocol)forhighdatavolume seDCNforverylargedatavolumeAvoidslargedatatransferanddifferenalcalculaonDoesnothelpwithinialloading
semulpleparonstosplittheloadingwheneverpossiblePrivatedatashouldconsidertheuseofparonby
requesteranddeviceidentyorequivalent
DevelopbackendAPItoloadbyparonifappropriate
-
7/29/2019 3. MBO Best Practices
20/37
20CompanyConfidenalDecember12,2011
RLEOFTHMBRE:DATALOADING
DonotmixDCNwithscheduledorondemand DonotuseverylargeDCNmessagetoimproveefficiencyExcessivememoryconsumpontoprocesslargemessageMayblockdownloadduetomanylockedrows
secachegroupstogroupMBOswithsimilarusagecharacteriscstotuneloadperformance
Referencevs.transaconalPrivatevs.shared
sesharedreadoperaonsifpossibleReducebackendinteracons
-
7/29/2019 3. MBO Best Practices
21/37
21CompanyConfidenalDecember12,2011
REFERENCEDATA
[MostlyRead,LargeDataVolume,LowVolality] Strategy:CacheandShare OnDemandwithnonzerocacheintervalAlleviatelargeinialdataloadingissuethroughparoningif
userstakedifferentsubsetsofthereferencedata
Largeinialloadisspreadoutoverme Loaddataondemandandinparallel
Sasfydatafreshnessrequirementthroughcacheinterval
-
7/29/2019 3. MBO Best Practices
22/37
22CompanyConfidenalDecember12,2011
REFERENCEDATA
ScheduledMatchbackendwithpredeterminedreferencedataupdate
schedulee.g.batchrun@midnight
ParoningtorestrictloadingonlyforsubscribeddataNotrecommendedforhighdatafreshnessifbackenddatais
volaleaswearelimitedbytheupdateinterval
-
7/29/2019 3. MBO Best Practices
23/37
23CompanyConfidenalDecember12,2011
REFERENCEDATA
DCN(FillandFilterModel)Enablebackenddatachangepropagaontocachewith
lowestcostcomparedtoondemandorscheduled
EnablesSISwithoutextraworkSupportshighdatafreshnessthroughproperchange
deteconinterval
cacheintervalUsesynchronizaonparametersforfilteringdownloaddataHighinialloadcostforlargedatavolumecanbeanissue
SERVER INITIATED SYNCHRONIZATION
-
7/29/2019 3. MBO Best Practices
24/37
24CompanyConfidenalDecember12,2011
SERVERINITIATEDSYNCHRONIZATIONREFERENCEDATA OnDemandChangedeteconfunconalifsomeonerefreshedthedata+
cacheexpiraon(NZCI)
ScheduledChangedeteconfunconalwheneverthechangeispulled
intothesystem DCNMostopmalwithSISaschangesarepushedtothecacheChangedeteconfunconalaerpush
NoficaonMBOpaUernforOnDemandwithZCI
-
7/29/2019 3. MBO Best Practices
25/37
25CompanyConfidenalDecember12,2011
READ/WRITEDATAWITHCACHEINTERVAL
DataincacheusingNonZeroCacheIntervalSystemofRecord
Ithelpstoreducenumberdataretrievalinvocaonstobackend
Applyresultstocacheisnotalwaysthesameaswhatisinthebackendevenwhentheoperaonsucceeds
Racecondioncanproduceastaleresultinthecacheunlnextrefresh.IncaseofDCN,itmaybeunlthenextupdate
-
7/29/2019 3. MBO Best Practices
26/37
26CompanyConfidenalDecember12,2011
TRANSACTIONALDATA(PRIVATE)
[Read/Write,PerserData,LowVolume,ModerateVolality] OnDemandwithzerocacheintervalDataisalwaysconsistentwithbackendRequester/Devicebasedorequivalentparoninglimits
refreshcost
SIScanbeimplementedthroughnoficaonMBOpaernEvaluateifbackendcanhandlepeakloadifuserstendto
synchronizewithincertainmeoftheday
OnDemandwithnonzerocacheintervalNobenefitunlessusersynchronizesrepeatedlyinsuccession
e.g.submingoperaonanddownloadingofappliedresults
-
7/29/2019 3. MBO Best Practices
27/37
27CompanyConfidenalDecember12,2011
TRANSACTIONALDATA(PRIVATE)
ScheduledEnablesSISbasedoncacheintervalPerformanceimplicaons
DCNEnablesSISwithoutextraworkSupportshighdatafreshnessthroughproperchange
deteconinterval
Dataisnotalwaysconsistentwithbackend.Mayrequireanotherupdatetofixtheinconsistency
Seenotes
-
7/29/2019 3. MBO Best Practices
28/37
28CompanyConfidenalDecember12,2011
TRANSACTIONALDATA(SHARED)
SharingattwolevelsMBOinstanceslevel(ML)Paronlevel(PL)
OnDemandwithnonzerocacheintervalSISbasedonusersynchronizaonacvity+expiraonParonbyRequesterandDeviceIdenty(ML)
Duplicatedrowsinnon-overlappingparons Duplicatedparonsifuserhasmulpledevices
Paronbyuserspecificidenty(ML) MakesurethattheuserspecificidentyiscombinedwithbackendprimarykeytoformtheMBOprimarykeytoavoidsharedrowbouncing
betweenparons
-
7/29/2019 3. MBO Best Practices
29/37
29CompanyConfidenalDecember12,2011
CACHEPOLICY
STAGINGVS.CACHING
-
7/29/2019 3. MBO Best Practices
30/37
30CompanyConfidenalDecember12,2011
CACHEPOLICY:ONDEMAND
Refreshtriggeredbysynchronizaon ZerocacheintervalAllowslatestdatafrombackendtoberetrievedUnlessdatavolumeissmall,shouldbecoupledwithparoningUsersynchronizaonacviesallowchangestobedetected
NonzerocacheintervalReducedataloadinginvocaonsagainstbackendCoupledwithparoningtoreduceamountofdatatobeloaded
perinvocaon
Usersynchronizaonacvies+cacheintervalexpiraonallowchangestobedetected
ChancesofinconsistencywithbackendIncreaseparallelismwhenforshareddata
-
7/29/2019 3. MBO Best Practices
31/37
31CompanyConfidenalDecember12,2011
CACHEPOLICY:ONDEMAND
Refreshtriggeredbysynchronizaon ZerocacheintervalAllowslatestdatafrombackendtoberetrievedUnlessdatavolumeissmall,shouldbecoupledwith
paroning
Usersynchronizaonacviesallowchangestobedetected
-
7/29/2019 3. MBO Best Practices
32/37
32CompanyConfidenalDecember12,2011
CACHEPOLICY:SCHEDLED
Automacrefreshbasedoninterval Cacheintervalisbasecasenoficaongranularity Paroninghelpstospreadoutinialdataloading Matchbackenddataupdatefrequencyespeciallyforreferencedata
Chancesofinconsistencywithbackend
-
7/29/2019 3. MBO Best Practices
33/37
33CompanyConfidenalDecember12,2011
CACHEPOLICY:DCN
Singleparon Downloadfilteringviasynchronizaonparameters Inialdataloadingcantakealongme.Synchronizaonmustwaitforloadingtocomplete
Concurrencywithsynchronizaon@rowlevel DCNtakesadvantageofmulpleSPserversintheclustertoparallelizeloading
seanoficaonMBOtoletdeviceknowdataisready ReferredtoMBOshavetobepushedbeforereferringMBOs
-
7/29/2019 3. MBO Best Practices
34/37
34CompanyConfidenalDecember12,2011
DATAMODELIMPLICATIONSONCLIENT
LIMITATIONSOFMOBILEDATABASE
-
7/29/2019 3. MBO Best Practices
35/37
35CompanyConfidenalDecember12,2011
CLIENTIMPLICATIONS
DatabasepagesizegovernedbymaximumrowsizederivedfromMBOdefinion
Lotsofaributesorlengthyoneslargerrowslargerpagesize
OnsomedevicesliketheBlackberry,morethanmemoryisconsumedobjecthandles
Basedonourobservaons,pagesizesbetween1k4kseemstoprovidebestoverallperformance
DonotforgettoaccountfornonLanencodingwhichwillresultinlargerowsize
Largerowsmeanslessrowsperpageandmorepagesmustbefetchedorcached.ForMBOsusedinlistviews,thiscan
impacttheUIresponse
-
7/29/2019 3. MBO Best Practices
36/37
36CompanyConfidenalDecember12,2011
CLIENTIMPLICATIONS
LargeMBOinstanceleadstoslowandexpensiveobjectinstanaon
Objectqueryreturnsobject(s)anddynamicqueryreturnsresultset.sedynamicquerytobypassobjectinstanaon
andselecvelyretrieveasubsetofaUributes
Forone
manyoronemanyrelaonshipwherecount(many)islarge
Navigaonandcascadeoperaoncanbeexpensive Doesthedatamodelenableapplicaontousesimplequeriesformostusecases?
Simplejoinsareexpensiveonmobiledevices.ThisistrueevenforiPhoneandthelike
Indexesslowdownsynchronizaonandupdates
-
7/29/2019 3. MBO Best Practices
37/37