Tema: Re: MSSQL DB duomenų sinchronizavimas į vieną pusę
Autorius: Laimis
Data: 2010-09-15 22:29:50
bala nemate rašė:

>> Tai merge replikacija: serveris (MSSQL2005) publikuoja db, o
>> prenumeratoriai (SQLEXPRESS2005) per push/pull (pagal sąlygas ir
>> politiką; ar centras pareikalauja duomenų ar prenumeratoriai, kaip jiems
>> ten gaunasi, juos į centrą atoduoda) subscription suneša duomenis.
>> Tiesa, pull prenumeravimo režime, prenumeratoriuose tai įmanoma tik per
>> windows synchonization manager'į, nes SQL2005EXPRESS neturi SQL Server
>> Agent'ų.
>>
>> http://technet.microsoft.com/en-us/library/ms165686(SQL.90).aspx
>
> nu reiks giliau pasiskaityti, nes pradžioj, permetus akimis, pasirodė, kad
> per pull prenumeratorius susisinchronizuoja visus duomenis su publikuojama
> db , o man reikia tik kad būtų perdavimas į centrą. Nauji duomenai
> atsiranda nutolusiuose kompuose ir yra įdomus tik vietoje (t.y., vienam
> filialui neįdomu, kad atsitiko kitame), o centrui reikia viską turėti.

Perdavimas į centrą vyksta visuomet, kai vyksta sinchronizavimas, tačiau 
tai galima daryti dvejopai:
a) serveris (centras) pats pareikalauja (inicjuoja) duomenų 
sinchronizavimą su prenumeratoriais -- push subscription;
b) prenumeratoriai patys (kaip jiems patogu/gaunasi ar pagal kažkokį 
grafiką) inicijuoja duomenų sinchronizavimą -- pull subscription.

Dabar dėl antros problemos dalies: jei duomenų bazėje yra stulpelis ID, 
tai į jį sukris duomenys iš visų prenumeratorių -- tam būtina atitinkama 
logika/sistema, kad nebūtų konfliktų (tiek DB/PK lygyje, tiek pačioje 
programoje). Kiekvienam prenumeratoriui tokiu atveju rašomi 
filtrai/sąlygos -- kokius įrašus, pagal kokius požymius jis turi 
gauti/siųsti į publikuojamą DB. Kiek man yra tekę susidurti (esu daręs 
Rivilės replikavimą į filialus), tai programoje/DB kiekvienas nutolęs, 
pavadinkime, padalinys, ten/tada kur/kai būtina atskirti, kieno tai 
įrašai, logiškai apibrėžiamas/identifikuojamas atskirtais ID/operacijų 
skaitliukais; tuomet filtrai/sąlygos yra gana paprastos, kažkas 
panašaus: „SELECT ... WHERE site_id = x“ -- į/iš centro į konkretų 
filialą keliauja tik tie įrašai, kurie tenkina sąlygą. Visa tai yra 
ganėtinai komplikuota, nes replikavimui reikia apmąstyti/paruošti, 
suderinti ir DB struktūrą ir programos logiką. Jei ji atitinkamai 
paruošta, tai galima duomenimis keistis gana lanksčiai (kažkas per 
centrą vaikšto tarp visų filialų, kažkas tik į/iš centro į/iš filialus).
Priešingu atveju vargu ar tau tinka merge duomenų replikavimas kaip 
toks, nes į lentelę centre sukris skirtingi duomenys (viena problemos 
pusė), o taip pat duomenys vaikščios iš padalinių į padalinius per centrą.

O jei reikia tik duomenų atsarginių kopijų centre (galbūt ir ne vienoje 
DB), tai galima tiesiog publikuoti į atskiras DB centre, o iš jų pagal 
tam tikrą logiką (ir poreikį; jei to reikia) sukelti įrašus į vieną 
centro DB.

Iš trumpo problemos paaiškinimo nesupratau kokia yra ta „tikroji 
problema“ -- ar turima konkrečioji programa pritaikyta (jau) 
replikavimui ir jį tereikia paleisti, ar kuriama savo sistema, ar pats 
išmanai replikavimo principus/technologiją MS kontekste, todėl galbūt 
visa ši tirada ir bereikalinga/beprasmė.




3Dastronomyagricultureaudioautosautos.audiautos.audioautos.binariesautos.bmwautos.clubautos.fordautos.hondacrxautos.japanautos.mercedesautos.opelautos.sportautos.volvoautos.vwaviaavia.binariesbankcardsbinariesbooksbuildingcinemacommercecomp.hardwarecomp.softwarecomp.lietuvinimascomp.networksculturedarbas.ieskaudarbas.siulaudesigneconomicselectronicsfaunafauna.aquafauna.binariesfishingflorafotofoto.binariesgamesgames.csgames.onlinegsmgurmanaihumourhumour.binariesinternetlawmicrosoftmotomusicmusic.binariesmusic.instrumentsmusic.LT.binariesnavigacijaphppoliticsprogrammingrpgsportstudyingsveikatatalktesttranslationtransportationtraveltravel.binariestvunixvideovideo.binarieswatersportswwwwww.flashpdaautos.supermama.ltmobiledarbasretro.3Dretro.agricultureretro.astronomyretro.audioretro.autosretro.autos.audiretro.autos.audioretro.autos.binariesretro.autos.bmwretro.autos.clubretro.autos.fordretro.autos.hondacrxretro.autos.japanretro.autos.mercedesretro.autos.opelretro.autos.sportretro.autos.supermamaretro.autos.supermama.ltretro.autos.volvoretro.autos.vwretro.aviaretro.avia.binariesretro.bankcardsretro.beosretro.binariesretro.booksretro.buildingretro.cinemaretro.commerceretro.compretro.comp.hardwareretro.comp.lietuvinimasretro.comp.networksretro.comp.softwareretro.cultureretro.darbasretro.darbas.ieskauretro.darbas.siulauretro.designretro.economicsretro.electronicsretro.e-vejasretro.faunaretro.fauna.aquaretro.fauna.binariesretro.fishingretro.floraretro.fotoretro.foto.binariesretro.gamesretro.games.csretro.games.onlineretro.games.rpgretro.genealogijaretro.gsmretro.gurmanairetro.humourretro.humour.binariesretro.internetretro.YZFretro.YZF.nebukretro.YZF.nebuk.netikintisretro.YZF.nebuk.netikintis.bukretro.YZF.nebuk.netikintis.buk.tikintisretro.lawretro.microsoftretro.mobileretro.motoretro.musicretro.music.binariesretro.music.instrumentsretro.music.LTretro.music.LT.binariesretro.navigacijaretro.newsretro.news.taisyklesretro.newuserretro.pdaretro.phpretro.politicsretro.programmingretro.rpgretro.sportretro.studyingretro.sveikataretro.talkretro.translationretro.transportationretro.travelretro.travel.binariesretro.tvretro.unixretro.videoretro.video.binariesretro.watersportsretro.wwwretro.www.flashdiylt.rkm.news.announcelt.rkm.news.newuser