Ik ben betrokken bij de ontwikkeling van een applicatie die standalone werkt. De dossiers waarmee de gebruikers werken zijn opgeslagen in een relationele database (MSDE 2000, een gestripte versie van Microsoft SQL Server). Er is in de huidige situatie dus sprake van één programma dat slechts met één database (nl. de lokaal geïnstalleerde) werkt. De applicatie kan draaien onder Windows 98, ME, NT (vanaf SP6), 2000 en XP.
Er is nu voor de volgende versie van dit product de behoefte ontstaan om met meerdere gebruikers dossiers te kunnen delen. Het is niet nodig dat men tegelijkertijd aan hetzelfde dossier kan werken, wel moet men in principe vanaf elke werkplek bij dezelfde data kunnen. Tot zover nog geen vuiltje aan de lucht: het is immers mogelijk om binnen een kantoor alle clients naar dezelfde centrale database te laten wijzen.
Echter, het is zeer wenselijk dat men losgekoppeld van het netwerk ook met de applicatie kan werken. Dit is bijvoorbeeld het geval als de medewerkers on the road zijn en met hun laptop op lokatie werken. Op het moment dat zij van kantoor weggaan en de netwerkomgeving verlaten, willen zij de meest recente informatie bij zich hebben. Wijzigingen in dossiers en nieuw toegevoegde dossiers moeten zodra men weer aan het netwerk hangt ook beschikbaar worden voor de andere clients. Het lijkt mij overduidelijk dat dit probleem met een of andere manier van synchronisatie kan worden opgelost, al ligt de precieze implementatie ervan niet voor de hand. Op dit moment ben ik aan het onderzoeken of het mogelijk is het probleem geheel binnen MS SQL Server/MSDE op te lossen m.b.v. merge replication (door Microsoft aangeraden wanneer er sprake is van een online/offline-applicatie, zie bijvoorbeeld deze pagina op MSDN), of dat het toch verstandiger is om zelf een 'synchronisator' te bouwen.
Ik heb een testopstelling gemaakt om eens wat te spelen met de merge replication van SQL Server en heb het inmiddels aan de praat gekregen (anonymous pull subscriptions). Toch liep ik tegen een aantal problemen aan met permissies. Het is bijvoorbeeld niet mogelijk om merge replication te gebruiken wanneer beide instanties van MSDE draaien onder het Local System account. De documentatie van SQL Server geeft mij bovendien te vrezen dat wanneer ik ook een Windows 98 subscriber (client) in mijn netwerk opneem, ik allerhande aanvullende problemen kan verwachten. Ik heb dit nog niet geprobeerd.
De omgeving waarin onze applicatie wordt gebruikt is er een waarin de gebruikers niet zoveel verstand hebben van computers, laat staan het beheer van hun netwerk. Op de meeste lokaties in het veld zal een workgroup aanwezig zijn, slechts in enkele gevallen valt een domein te verwachten. Ik voorzie problemen wanneer een oplossing op basis van merge replication op lokatie moet worden geïnstalleerd. Er zullen veel situaties zijn waarbij problemen met permissies (de gebruiker waaronder de SQL Server en de SQL Server Agent draaien, shared folders) optreden. Ik krijg wel de indruk dat ik een heleboel instellingen vanuit de software kan sturen (gezien de enorme hoeveelheid beschikbare stored procedures voor het sturen van replicatie), maar kan slecht inschatten wat de impact zou zijn om iets dergelijks binnen onze software in te bouwen.
Dit topic heb ik geopend om wat meer inzicht te krijgen in onder andere de volgende vragen:
Er is nu voor de volgende versie van dit product de behoefte ontstaan om met meerdere gebruikers dossiers te kunnen delen. Het is niet nodig dat men tegelijkertijd aan hetzelfde dossier kan werken, wel moet men in principe vanaf elke werkplek bij dezelfde data kunnen. Tot zover nog geen vuiltje aan de lucht: het is immers mogelijk om binnen een kantoor alle clients naar dezelfde centrale database te laten wijzen.
Echter, het is zeer wenselijk dat men losgekoppeld van het netwerk ook met de applicatie kan werken. Dit is bijvoorbeeld het geval als de medewerkers on the road zijn en met hun laptop op lokatie werken. Op het moment dat zij van kantoor weggaan en de netwerkomgeving verlaten, willen zij de meest recente informatie bij zich hebben. Wijzigingen in dossiers en nieuw toegevoegde dossiers moeten zodra men weer aan het netwerk hangt ook beschikbaar worden voor de andere clients. Het lijkt mij overduidelijk dat dit probleem met een of andere manier van synchronisatie kan worden opgelost, al ligt de precieze implementatie ervan niet voor de hand. Op dit moment ben ik aan het onderzoeken of het mogelijk is het probleem geheel binnen MS SQL Server/MSDE op te lossen m.b.v. merge replication (door Microsoft aangeraden wanneer er sprake is van een online/offline-applicatie, zie bijvoorbeeld deze pagina op MSDN), of dat het toch verstandiger is om zelf een 'synchronisator' te bouwen.
Ik heb een testopstelling gemaakt om eens wat te spelen met de merge replication van SQL Server en heb het inmiddels aan de praat gekregen (anonymous pull subscriptions). Toch liep ik tegen een aantal problemen aan met permissies. Het is bijvoorbeeld niet mogelijk om merge replication te gebruiken wanneer beide instanties van MSDE draaien onder het Local System account. De documentatie van SQL Server geeft mij bovendien te vrezen dat wanneer ik ook een Windows 98 subscriber (client) in mijn netwerk opneem, ik allerhande aanvullende problemen kan verwachten. Ik heb dit nog niet geprobeerd.
De omgeving waarin onze applicatie wordt gebruikt is er een waarin de gebruikers niet zoveel verstand hebben van computers, laat staan het beheer van hun netwerk. Op de meeste lokaties in het veld zal een workgroup aanwezig zijn, slechts in enkele gevallen valt een domein te verwachten. Ik voorzie problemen wanneer een oplossing op basis van merge replication op lokatie moet worden geïnstalleerd. Er zullen veel situaties zijn waarbij problemen met permissies (de gebruiker waaronder de SQL Server en de SQL Server Agent draaien, shared folders) optreden. Ik krijg wel de indruk dat ik een heleboel instellingen vanuit de software kan sturen (gezien de enorme hoeveelheid beschikbare stored procedures voor het sturen van replicatie), maar kan slecht inschatten wat de impact zou zijn om iets dergelijks binnen onze software in te bouwen.
Dit topic heb ik geopend om wat meer inzicht te krijgen in onder andere de volgende vragen:
- Heeft er iemand ervaring met het gebruik van merge replication binnen SQL Server in het algemeen en specifiek toegepast binnen online/offline-applicaties (MSDE)?
- Heeft er iemand ervaring met de deployment van een dergelijke applicatie binnen omgevingen waarbij gebruikers een minimum aan configuratie hoeven te doen?
- Heeft er iemand een dergelijk synchronisatieprobleem op een andere manier opgelost (binnen de RDBMS/DAL of op een hoger hierarchisch niveau)?
[ Voor 1% gewijzigd door Ralluph op 06-10-2003 16:33 . Reden: overbodige/verwarrende cursivering verwijderd, typos ]