3. MBO Best Practices

download 3. MBO Best Practices

of 37

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