NO331680B1 - Fremgangsmate for handtering av flerfil-tilstander for replikerte filer. - Google Patents

Fremgangsmate for handtering av flerfil-tilstander for replikerte filer. Download PDF

Info

Publication number
NO331680B1
NO331680B1 NO20040829A NO20040829A NO331680B1 NO 331680 B1 NO331680 B1 NO 331680B1 NO 20040829 A NO20040829 A NO 20040829A NO 20040829 A NO20040829 A NO 20040829A NO 331680 B1 NO331680 B1 NO 331680B1
Authority
NO
Norway
Prior art keywords
copy
local copy
rollback
local
computer
Prior art date
Application number
NO20040829A
Other languages
English (en)
Other versions
NO20040829L (no
Inventor
Noah Edelstein
Lauren Antonoff
Hani Saliba
Hai Liu
Steven James Rayson
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of NO20040829L publication Critical patent/NO20040829L/no
Publication of NO331680B1 publication Critical patent/NO331680B1/no

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • EFIXED CONSTRUCTIONS
    • E05LOCKS; KEYS; WINDOW OR DOOR FITTINGS; SAFES
    • E05BLOCKS; ACCESSORIES THEREFOR; HANDCUFFS
    • E05B65/00Locks or fastenings for special use
    • E05B65/0025Locks or fastenings for special use for glass wings
    • EFIXED CONSTRUCTIONS
    • E05LOCKS; KEYS; WINDOW OR DOOR FITTINGS; SAFES
    • E05BLOCKS; ACCESSORIES THEREFOR; HANDCUFFS
    • E05B47/00Operating or controlling locks or other fastening devices by electric or magnetic means
    • EFIXED CONSTRUCTIONS
    • E05LOCKS; KEYS; WINDOW OR DOOR FITTINGS; SAFES
    • E05BLOCKS; ACCESSORIES THEREFOR; HANDCUFFS
    • E05B9/00Lock casings or latch-mechanism casings ; Fastening locks or fasteners or parts thereof to the wing
    • E05B9/08Fastening locks or fasteners or parts thereof, e.g. the casings of latch-bolt locks or cylinder locks to the wing

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Storage Device Security (AREA)

Abstract

En tjener er implementert med en modifisert filåpningshandling som, når en bruker utfører den modifiserte filåpningen, innledningsvis åpner en fil uten å låse filen. Når en bruker angir (enten eksplisitt eller implisitt) at han eller hun forsøker eller har til hensikt å åpne filen, kan filen da bli låst for redigering. Som følge av dette er standardhandlingen når en bruker ber om en fil å åpne filen uten å nekte andre brukere tilgang til filen. Deretter, når brukeren angir at han eller hun vil editere filen, blir låsen for filen akkvirert.

Description

[0001] Foreliggende oppfinnelse vedrører området dokumentstyring, og spesielt en fremgangsmåte og et system for håndtering av flere filtilstander under bruk av en fil som er kopiert fra en tjener.
[0002] Det er vanlig praksis i et miljø av nettverkstilsluttede datamaskiner at en bruker av en datamaskin samarbeider om et dokument med en annen bruker i nettverket. Et slikt nettverk kan være et lokalt nettverk (LAN), et regionalt nettverk (WAN), Internett eller liknende. I et slikt samarbeid kan hver bruker skape og redigere en elektronisk fil ved anvendelse av en programapplikasjon, for eksempel en generell applikasjon, programvare tilveiebragt spesifikt for den typen fil som er målet for samarbeidet eller liknende.
[0003] Et samarbeid kan muliggjøres ved å opprettholde en masterversjon av den elektroniske filen på et sted som er tilgjengelig for alle brukere som skal samarbeide om filen. I et konvensjonelt datanettverk kan det eksistere en tjenerdatamaskin og én eller flere brukermaskiner. Tjeneren kan aksesseres av hver enkelt brukerdatamaskin, og kan derfor lagre og kontrollere masterversjonen av den filen brukerne samarbeider om.
[0004] Når han eller hun deltar i et samarbeid om en elektronisk fil, aksesser brukeren filen ved tjeneren. Brukeren kan da arbeide med filen ved å endre filen på en hvilken som helst måte som tillates av applikasjonen. Dersom for eksempel applikasjonen er en tekstbehandler, et regneark, en database og/eller liknende, kan applikasjonen gi mulighet for å utføre oppgaver så som å føye til i, redigere, kopiere og/eller slette filen. Når eventuelle endringer er utført, kan brukeren lagre endringene av den versjonen av filen som er lagret hos tjeneren dersom han eller hun ønsker å beholde disse endringene av filen og har de nødvendige rettigheter.
[0005] Selv om det å ha en sentralt lagret fil er hensiktsmessig for samarbeid, har det å nødvendiggjøre aksess til tjeneren uheldige aspekter. En bruker må være forbundet med tjeneren for å kunne aksessere tjener-kopien av filen. Dupliseringsmotorer anvendes for å løse dette problemet. Slike motorer lar brukeren ha en lokal kopi av filen som forvaltes av tjeneren. Denne lokale kopien gjør at brukeren kan jobbe med eller besiktige en fil selv om tjener-kopien ikke er tilgjengelig. Dupliseringsmotoren håndterer dupliseringen av tjenerens filversjon til brukerens lokale maskin, og gir med det brukeren offline aksess samtidig som den forsøker å opprettholde overensstemmelse mellom tjener-kopien og den lokale kopien.
[0006] Denne løsningen har imidlertid ulemper, og en slik overensstemmelse er vanskelig eller umulig å opprettholde med bruk av eksisterende dupliseringsmotorer. Versjonen av filen på tjenerdatamaskinen kan endre seg mens brukeren ikke er oppkoplet. For eksempel kan versjonen av filen hos tjeneren være versjon A. Denne versjon A blir kopiert til brukerens datamaskin av dupliseringsmotoren. Mens brukeren er "offline" (ikke i forbindelse med tjeneren), redigerer han eller hun filen, hvilket gir versjon B. I mellomtiden redigerer en annen bruker tjener-kopien av filen, og skaper versjon C. Når brukeren igjen kopler seg til tjeneren, vil brukeren ha tilgang til sin gjeldende versjon (B) og tjenerens versjon (C). Dagens dupliseringsmotorer gir kun mulighet for å kopiere brukerens versjon over tjenerens versjon, i hvilket tilfelle den andre brukerens endringer vil gå tapt, eller å kopiere tjenerens versjon over brukerens versjon. Ingen informasjon er tilgjengelig for brukeren vedrørende endringer i forhold til versjon A. Dersom brukeren synkroniserer ved å lagre versjon C og forkaste sine endringer, vil versjon B ikke lenger være tilgjengelig for brukeren.
[0007] Balasubramaniam, S., m.fl.: "What is a File Synchronizer?", CSCI Technical Report datert 22. april 1998 (1998.04.22), sider 1-21, omhandler spørsmålet om hva en filsynkronisering er. En filsynkronisering blir eksplisitt påberopt eller kalt opp av en handling av brukeren. To klart atskilte faser av filsynkroniseringens oppgave er identifisert: oppdateringsdeteksjon - dvs. gjenkjenning av hvor oppdateringer er gjort til de enkelte filsystemkopier siden det siste punktet for synkronisering - og forsoning - dvs. kombinering av oppdateringer for å frembringe den nye synkroniserte tilstanden for hver kopi. Filsystemene i begge kopier starter med det samme innholdet O. Oppdateringer utført av brukeren i en eller begge kopier fører til avvikende tilstander A og B på det tidspunket når synkroniseringen er påberopt eller påkalt. Oppdateringsdetektorene for de to kopiene sjekker de gjeldende eller nåværende tilstandene for filsystemene (kanskje ved bruk av informasjon fra O som tidligere var lagret) og beregner oppdateringspredikater dirtyA og dirtyB. En forsoner bruker disse predikatene og de gjeldende eller nåværende tilstandene A og B for å beregne nye tilstander A' og B' som skal sammenfalle eller inntreffe
samtidig med mindre det var motstridende oppdateringer.
[0008] Som følge av ovennevnte ulemper er det ønskelig med en forbedret fremgangsmåte og et datasystem for håndtering av replikerte filer fra en tjener. Hensikten med den foreliggende oppfinnelse er å forbedre synkroniseringsytelsen. Dette løses ved trekkene ifølge oppfinnelsen angitt i de selvstendige krav. Ytterligere trekk ved oppfinnelsen er angitt i de uselvstendige krav.
[0009] En fremgangsmåte for å replikere tjener-forvaltede filer er implementert som lagrer tre kopier av en replikert fil. Disse tre filene muliggjør en bedre behandling av konflikter for brukeren.
[0010] Skyggefilen er en kopi av den siste kjente synkroniserte eller gyldige versjonen av en fil ved tjeneren. Når filen innledningsvis blir kopiert fra tjeneren, blir det tatt en ekstra kopi til skyggefilen. Skyggefilen blir overført til den lokale maskinen for å bedre ytelsen ved synkronisering og håndtering av konflikter, så vel som å muliggjøre offline funksjonalitet. Skyggefilen blir oppdatert fra tjener-kopien når det eksisterer en forbindelse til tjeneren og tjener-kopien har blitt endret fra versjonen inneholdt i skyggekopien. Dette er eneste gang denne filen blir oppdatert.
[0011] Den lokale kopien er brukerens arbeidskopi. Alle endringer brukeren gjør i filen lagres i den lokale kopien. Denne lokale kopien anvendes for å oppdatere tjeneren (dersom brukerens endringer trenger å bli overført til tjeneren) eller for å identifisere konflikter (når både brukerens og tjenerens versjon har endret seg).
[0012] En tilbakeføringsfil eller gjenopprettingsfil blir også lagret. Denne filen er en kopi som tas av den lokale kopien dersom den lokale kopien blir endret (for eksempel ved behandling av konflikter eller når tjenerens versjon blir kopiert til den lokale kopien). Denne kopien sikrer at det er mulig å returnere brukeren til den siste kjente kopien som brukeren har sett.
[0013] Den foregående oppsummeringen, så vel som den følgende detaljerte beskrivelsen av foretrukne utførelsesformer, vil bli forstått bedre når de leses sammen med de vedlagte figurene. For det formål å illustrere oppfinnelsen, er det i figurene vist eksempler på utførelse av oppfinnelsen. Oppfinnelsen er imidlertid ikke begrenset til de spesifikke fremgangsmåter og virkemidler som er beskrevet.
[0014] Figur 1 er et blokkdiagram som viser et eksempel på datamiljø i hvilket
aspekter ved oppfinnelsen kan bli realisert,
[0015] Figur 2 er et funksjonelt diagram som illustrerer et eksempel på en relasjon mellom en tjenerdatamaskin, et nettverk, en brukerdatamaskin og andre datamaskiner,
[0016] Figur 3 er et tilstandsdiagram som viser tilstandsoverganger i henhold til én utførelsesform av foreliggende oppfinnelse,
[0017] Figur 4 er et flytdiagram som viser duplisering av fil i henhold til en utførelsesform av oppfinnelsen, og
[0018] Figur 5 er et flytdiagram som viser duplisering av fil i henhold til en utførelsesform av oppfinnelsen.
[0019] En fremgangsmåte for å replikere tjener-forvaltede filer er implementert som lagrer tre kopier for hver fil som blir replikert. En lokal fil som lagres er brukerens arbeidskopi av filen. Skyggefilen er en kopi av den siste kjente synkroniserte versjonen av tjener-filen (den versjonen av filen som er lagret hos tjeneren). En tilbakeføringsfil lagrer en kopi av den siste kjente lokale kopien før en behandling av en konflikt eller en duplisering har oppdatert den.
[0020] Når filen innledningsvis blir kopiert fra tjeneren som den lokale kopien, blir det tatt en ekstra kopi av skyggefilen. Dette blir gjort for å bedre synkroniseringsytelsen og implementere konflikterhåndtering.
[0021] Når brukerens datamaskin koples til tjeneren, forekommer replikering. Skyggefilen blir sammenliknet med tjenerversjonen. Dersom de er like, har det ikke vært foretatt noen oppdatering av tjenerens versjon av filen siden forrige synkronisering. Dersom de ikke er like, blir tjenerens versjon kopiert til skyggefilen. Den lokale versjonen blir lagret som tilbakeføringskopi, og skyggeversjonen blir lagret til den lokale versjonen.
[0022] Versjonsstatuser holder rede på status for endringer av den lokale filen og tjener-filen. Informasjon vedrørende versjonsstatus og valgmuligheter for håndtering av konflikter blir gitt til brukeren.
Eksempel på databehandlingsanordning
[0023] Figur 1 og den følgende beskrivelsen er ment for å gi en kort, generell beskrivelse av et egnet databehandlingsmiljø i hvilket oppfinnelsen kan bli implementert. Det skal imidlertid forstås at håndholdte, bærbare og andre dataanordninger og databehandlende objekter av alle typer er tenkelige for anvendelse i forbindelse med foreliggende oppfinnelse, som beskrevet over. Selv om en generell datamaskin er beskrevet nedenfor, er dette således kun ett mulig eksempel, og foreliggende oppfinnelse kan bli implementert i andre databehandlingsanordninger, så som en tynn klient som har nettverk/buss-interoperabilitet og -vekselvirkning. Foreliggende oppfinnelse kan således implementeres i et miljø av nettverksomfattede tjenester der veldig lite eller minimalt med klientressurser er påkrevet, f.eks. et nettverksmiljø der klientanordningen kun tjener som et grensesnitt mot nettverket/bussen, så som et objekt anordnet i et apparat, eller også andre databehandlende anordninger og objekter. Kort sagt er hvor som helst hvor data kan bli lagret eller hvorfra data kan bli hentet ut et egnet sted for operasjon i henhold til oppfinnelsen.
[0024] Selv om det ikke er nødvendig, kan oppfinnelsen være implementert via et operativsystem, for bruk av en utvikler av tjenester for en anordning eller et objekt, og/eller innlemmet i applikasjonsprogrammer som opererer i henhold til oppfinnelsen. Programvare kan beskrives i den generelle sammenhengen datamaskin-eksekverbare instruksjoner, så som programmoduler, som blir eksekvert av én eller flere datamaskiner, så som klient-arbeidsstasjoner, tjenere eller andre anordninger. Generelt omfatter programmoduler rutiner, programmer, objekter, komponenter, datastrukturer og liknende som utfører spesifikke oppgaver eller implementerer spesifikke abstrakte datatyper. Funksjonaliteten til programmodulene kan typisk kombineres eller distribueres som ønsket i forskjellige utførelsesformer. Videre vil fagmannen forstå at oppfinnelsen kan tilpasses andre typer datastrukturer. Andre velkjente datasystemer, -miljøer og/eller -strukturer som kan være egnet for anvendelse med oppfinnelsen omfatter, men er ikke begrenset til, personlige datamaskiner (PCer), automatiserte kassaapparater, tjener-datamaskiner, håndholdte anordninger eller laptop-anordn inger, flerprosessorsystemer, mikroprosessorbaserte systemer, programmerbar forbrukerelektronikk, personlige datamaskiner i nettverk, husholdningsapparater, lamper, miljøstyringselementer, minidatamaskiner, stormaskiner og liknende. Oppfinnelsen kan også tilpasses distribuerte databehandlingsmiljøer der oppgaver blir utført av fjern-prosesseringsanordninger som er forbundet gjennom et kommunikasjonsnettverk eller en buss, eller et annet dataoverføringsmedium. I et distribuert databehandlingsmiljø kan programmoduler befinne seg i både lokale og eksterne datamaskin-lagringsmedier som omfatter minnelagringsanordninger, og klientnoder kan også opptre som tjenernoder.
[0025] Figur 1 illustrerer således et eksempel på et egnet datamiljø 100 i hvilket oppfinnelsen kan bli implementert, selv om, som presisert ovenfor, datamiljøet 100 bare er ett mulig eksempel på et egnet datamiljø og ikke er ment for å antyde noen begrensning vedrørende oppfinnelsens bruksområde eller funksjonalitet. Heller ikke skal datamiljøet 100 fortolkes å ha noen som helst avhengighet eller krav vedrørende noen enkelt eller noen kombinasjon av komponenter som er illustrert i det eksemplifiserte datamiljøet 100.
[0026] Som kan sees i figur 1, omfatter et eksempel på system for å implementere oppfinnelsen en generell databehandlingsanordning i form av et datasystem 110. Komponenter av datasystemet 110 kan omfatte, men er ikke begrenset til, en prosesseringsenhet 120, et systemminne 130 og en systembuss 121 som kopler forskjellige systemkomponenter omfattende systemminnet til prosesseringsenheten 120. Systembussen 121 kan være en hvilken som helst av mange typer busstrukturer, omfattende en minnebuss eller minnekontroller, en periferenhet-buss og en lokal buss, som anvender en hvilken som helst av en rekke alternative bussarkitekturer. Som eksempler, og uten begrensning, omfatter slike arkitekturer en ISA (Industry-Standard-Architecture)-buss, en MCA (Micro-Channel-Architecture)-buss, en EISA (Enhanced ISA)-buss, en lokal VESA (Video-Electronics-Standards-Association)-buss og en PCI (Peripheral-Component-lnterconnect)-buss (også kjent som en Mezzanine-buss).
[0027] Datasystemet 110 omfatter typisk et antall datamaskinlesbare medier. Et datamaskinlesbart medium kan være et hvilket som helst tilgjengelig medium som kan aksesseres av datasystemet 110, og omfatter både volatile og ikke-volatile medier samt flyttbare og ikke-flyttbare medier. Som eksempler, uten begrensning, kan datamaskinlesbare medier omfatte datamaskin-lagringsmedier og kommunikasjonsmedier. Datamaskin-lagringsmedier omfatter både volatile og ikke-volatile og flyttbare og ikke-flyttbare medier som er realisert med en hvilken som helst fremgangsmåte eller teknologi for lagring av informasjon så som datamaskinlesbare instruksjoner, datastrukturer, programmoduler eller andre data. Datamaskin-lagringsmedier omfatter, men er ikke begrenset til, RAM (Random Access Memory), ROM (Read Only Memory), EEPROM (Electrically Erasable Programmable Read Only Memory), flash-minne eller annen minneteknologi, CD-ROM (Compact Dise Read Only Memory), DVD (Digital Versatile Disk) eller andre optisk-disk lagre, magnetkasetter, magnetbånd, magnetdisklagre eller andre magnet-lagringsanordninger, eller et hvilket som helst annet medium som kan anvendes for å lagre den ønskede informasjonen og som kan aksesseres av datasystemet 110. Kommunikasjonsmedier inneholder typisk datamaskinlesbare instruksjoner, datastrukturer, programmoduler eller andre data i et modulert datasignal så som en bærebølge eller en annen transportmekanisme, og omfatter ethvert informasjonsleveringsmedium. Med betegnelsen "modulert datasignal" menes et signal som får én eller flere av sine karakteristika satt eller endret på en slik måte at det innkodes informasjon i signalet. Som et eksempel, og uten begrensning, omfatter kommunikasjonsmedier kablede medier så som et kabelnettverk eller en direktekoplet forbindelse, samt trådløse medier så som akustiske, RF-baserte, infrarøde og andre trådløse medier. Enhver kombinasjon av det ovennevnte er også omfattet innenfor rammen av datamaskinlesbare medier.
[0028] Systemminnet 130 omfatter datamaskin-lagringsmedier i form av volatilt og/eller ikke-volatilt minne så som et leseminne (ROM) 131 og et direkteaksessminne (RAM) 132. Et BIOS (basic input/output system) 133, som inneholder de grunnleggende rutinene som hjelper til å overføre informasjon mellom elementer i datasystemet 110, for eksempel under oppstart, er typisk lagret i ROM 131. RAM 132 inneholder typisk data og/eller programmoduler som er umiddelbart tilgjengelige for og/eller som opereres på av prosesseringsenheten 120. Som et eksempel, og uten begrensning, illustrerer figur 1 et operativsystem 134, applikasjonsprogrammer 135, andre programmoduler 136 og programdata 137.
[0029] Datasystemet 110 kan også omfatte andre flyttbare/ikke-flyttbare, volatile/ikke-volatile datamaskin-lagringsmedier. Kun som et eksempel illustrerer figur 1 en harddiskstasjon 141 som leser fra eller skriver til ikke-flyttbare, ikke-volatile magnetiske medier, en magnetdiskstasjon 151 som leser fra eller skriver til en flyttbar, ikke-volatil magnetdisk 152 og en optisk-disk stasjon 155 som leser fra eller skriver til en flyttbar, ikke-volatil optisk disk 156, så som et CD-ROM eller et annet optisk medium. Andre flyttbare/ikke-flyttbare, volatile/ikke-volatile datamaskin-lagringsmedier som kan anvendes i det eksemplifiserte kjøremiljøet omfatter, men er ikke begrenset til, magnetbåndkassetter, flashminnekort, DVD-plater, digitale videobånd, statisk RAM, statisk ROM og liknende. Harddiskstasjonen 141 er typisk koplet til systembussen 121 via et ikke-flyttbart minne-grensesnitt, så som grensesnittet 140, og magnetdiskstasjonen 151 og optisk-disk stasjonen 155 er typisk koplet til systembussen 121 via et flyttbart minne-grensesnitt, så som grensesnittet 150.
[0030] De stasjonene og deres tilknyttede datamaskin-lagringsmedier som er diskutert ovenfor og illustrert i figur 1 besørger lagring av datamaskinlesbare instruksjoner, datastrukturer, programmoduler og andre data for datasystemet 110. I figur 1 er for eksempel harddiskstasjonen 141 vist som lagrende et operativsystem 144, applikasjonsprogrammer 145, andre programmoduler 146 og programdata 147. Merk at disse komponentene enten kan være de samme som eller forskjellige fra operativsystem 134, applikasjonsprogrammer 135, andre programmoduler 136 og programdata 137. Operativsystem 144, applikasjonsprogrammer 145, andre programmoduler 146 og programdata 147 er gitt forskjellige referansenummer her for å illustrere det at de i det minste er forskjellige kopier. En bruker kan mate inn kommandoer og informasjon til datasystemet 110 via innmatingsanordninger så som et tastatur 162 og en pekeranordning 161, vanligvis omfattende en mus, en styreball eller en berøringsmatte. Andre innmatingsanordninger (ikke vist) kan omfatte en mikrofon, styrespak, spillkontroll, parabolantenne, skanner eller liknende. Disse og andre innmatingsanordninger er ofte koplet til prosesseringsenheten 120 via et brukerinnmatingsgrensesnitt 160 som er koplet til systembussen 121, men kan også være tilkoplet via andre grensesnitts- og busstrukturer, så som en parallellport, en spillutgang eller en universell seriell buss (USB-port). Et grafikk-grensesnitt 182, så som Northbridge, kan også være koplet til systembussen 121. Northbridge er et chipset som kommuniserer med CPU-enheten, eller vertsprosesseringsenheten 120, og har ansvaret for akselerert grafikkport(AGP)- kommunikasjon. Én eller flere grafikkprosesseringsenheter (GPU-enheter) 184 kan stå i kommunikasjon med grafikk-grensesnittet 182.1 denne henseende omfatter GPU-enhetene 184 generelt interne (on-chip) minnelagre, så som registerlagre, og GPU-enhetene 184 kommuniserer med et videominne 186. GPU-enhetene 184 er imidlertid kun ett eksempel på en koprosessor, og det kan således være tilveiebragt en rekke forskjellige koprosesseringsanordninger i datasystemet 110. En monitor 191 eller en annen type fremvisningsanordning er også koplet til systembussen 121 via et grensesnitt, så som et skjermkort 190, som i sin tur kan kommunisere med videominnet 186.1 tillegg til monitoren 191, kan datasystemer også omfatte andre periferiske utmatingsanordninger så som høyttalere 197 og en skriver 196, som kan være tilkoplet via et utmatingsgrensesnitt 195.
[0031] Datasystemet 110 kan operere i et nettverk eller distribuert miljø som anvender logiske forbindelser til én eller flere fjerndatamaskiner, så som en fjerndatamaskin 180. Fjerndatamaskinen 180 kan være en personlig datamaskin, en tjener, en ruter, en nettverks-PC, en peer-anordning eller en annen vanlig nettverksnode, og omfatter typisk mange av eller alle de elementene som er beskrevet ovenfor i forbindelse med datasystemet 110, selv om kun en minnelagringsanordning 181 er illustrert i figur 1. De logiske forbindelsene som er vist i figur 1 omfatter et lokalt nettverk (LAN) 171 og et regionalt nettverk (WAN) 173, men kan også omfatte andre typer nettverk/busser. Slike nettverksmiljøer er vanlige i private hjem, kontorer, bedriftsomspennende datanettverk, intranett og Internett.
[0032] Når det blir anvendt i et LAN-nettverksmiljø, er datasystemet 110 forbundet til LAN 171 via et nettverksgrensesnitt eller nettverkskort 170. Når det blir anvendt i et WAN-nettverksmiljø, omfatter datasystemet 110 typisk et modem 172 eller andre midler for å etablere kommunikasjon over WAN 173, for eksempel Internett. Modemet 172, som kan være internt eller eksternt, kan være koplet til systembussen 121 via brukerinnmatingsgrensesnittet 160 eller en annen dertil egnet mekanisme. I et nettverksmiljø kan programmoduler som er vist i forbindelse med datasystemet 110, eller deler av disse, være lagret i den eksterne minnelagringsanordningen. Som et eksempel, og uten begrensning, illustrerer figur 1 eksterne applikasjonsprogrammer 185 som lagret i minneanordningen 181. En vil forstå at de viste nettverksforbindelsene kun er eksempler, og at andre midler for å etablere en kommunikasjonslink mellom datamaskinene kan anvendes.
[0033] Forskjellige strukturer for distribuert databehandling er og blir nå utviklet som følge av sammensmeltingen av personlig databehandling og Internett. Privatpersoner og på samme måte bedriftsbrukere er tilveiebragt med et sømløst samspillende og Web-bevisst grensesnitt for applikasjoner og dataanordninger, noe som gjør databehandlingsaktiviteter mer og mer nettleser- eller nettverksorientert.
[0034] For eksempel omfatter MICROSOFT<®>sin .NET-plattform tjenere, byggeblokk-tjenester, så som Web-basert datalagring, og nedlastbar anordnings-programvare. Selv om utførelseseksempler her er beskrevet i forbindelse med programvare tilveiebragt i en databehandlingsanordning, kan én eller flere deler av oppfinnelsen også bli implementert i et operativsystem, et API eller et "mellommann"-objekt mellom hav som helst av en koprosessor, en fremvisningsanordning og et forespørrende objekt, slik at funksjonalitet i henhold til oppfinnelsen kan utføres av, støttes i eller aksesseres via alle .NET sine språk og tjenester, så vel som i andre distribuerte databehandlingsstrukturer.
Håndtering av flere filtilstander for replikerte filer
Duplisering
[0035] Som kan sees i figur 2, er en tjenerdatamaskin 200 forbundet via et nettverk 215 med en brukerdatamaskin 220. Når forespørselen mottas av tjeneren, lar tjeneren brukerdatamaskinen 220 åpne filen. Filduplisering gjør at en bruker ved brukerdatamaskinen 220 kan arbeide, sammen med brukere ved andre brukerdatamaskiner 270, med en lokal versjon av en tjener-administrert fil. Den offisielle versjonen av filen er lagret som tjener-kopien 210 på tjenerdatamaskinen 200. Fildupliseringsstyreren 230 genererer tre kopier av filen i brukerdatamaskinen 220. Disse er den lokale kopien 232, skyggekopien 234 og tilbakeføringskopien 238.
[0036] Den lokale kopien 232 åpnes på brukerdatamaskinen 220 av en applikasjon 240.1 én utførelsesform eksisterer det en kopi av den lokale kopien 232 i brukerens navnerom i brukerdatamaskinen 220.1 denne utførelsesformen sporer den lokale kopien 232 endringer av navnerom-kopien, og navnerom-kopien blir
anvendt av applikasjonen 240.
[0037] Når en navnerom-kopi blir anvendt, er ikke navnerom-kopien administrert av fildupliseringsstyreren 230.1 denne utførelsesformen er navnerom-filen den filen som brukeren i alminnelighet aksesserer. Denne filen kan være en fil som de har generert selv eller en fil de har mottatt via e-post. Når filen mottas via e-post, mottar brukeren et "always live"-vedlegg (med tjenerinformasjon) og lagrer en kopi på sin lokale datamaskin. Det at denne filen blir lagret lokalt innebærer at det eksisterer to kopier, den i epost-lagringsområdet og den i den lokale maskinen. Kopien i den lokale maskinen er navnerom-kopien. Tjenerinformasjonen i vedlegget muliggjør filduplisering og generering av den lokale kopien 232, skyggekopien 234 og tilbakeføringskopien 238. Navnerom-kopier blir synkronisert av dupliseringsstyreren 220 med den lokale kopien 232 når de blir anvendt av en bruker.
[0038] Skyggekopien 234 holder den seneste versjonen av tjener-kopien 210 som er kjent for brukerdatamaskinen 220. Når brukerdatamaskinen 220 står i forbindelse med tjenerdatamaskinen 200, er skyggekopien 234 lik tjener-kopien 210.
[0039] Tilbakeføringskopien 238 lagrer den siste kjente kopien som brukeren har besiktiget eller redigert. Når den lokale kopien 232 har blitt overskrevet i dupliseringsprosessen og brukeren ønsker å returnere til den forrige tilstanden, blir tilbakeføringskopien 238 anvendt for å frembringe den siste kopien som en bruker har lest eller redigert.
[0040] Fildupliseringsstyreren 230 kan være atskilt fra applikasjonen 240, som vist, eller den kan være integrert i applikasjonen 240.1 begge tilfeller kan meldinger og informasjon til brukeren fra fildupliseringsstyreren, samt brukergrensesnittene som innhenter inndata fra brukeren og viser meldinger for brukeren, være integrert i fremvisningen presentert for brukerapplikasjonen 240. Informasjon presentert for brukeren vedrørende endringer gjort mellom to versjoner av en fil (ytterligere beskrevet nedenfor) kan også bli presentert ved hjelp av fremvisningen til applikasjonen 240.1 tillegg kan det som produserer denne informasjonen for fremvisning for brukeren benytte funksjonalitet tilveiebragt av applikasjonen 240. Versionstilstander
[0041] Handlingene i fremgangsmåtene for å replikere filer ifølge én utførelsesform av oppfinnelsen kan forklares med henvisning til versjonstilstander. For hvert replikerte dokument beskriver en versjonstilstand hva som skjer med dokumentet ved brukerdatamaskinen 220. Disse versjonstilstandene er basert på tidligere versjonstilstander og handlingene utført på den lokale kopien 232, skyggekopien 234 og tjener-kopien 210 (master-kopien av dokumentet).
[0042] Den første tilstanden er "gjeldende". Versjonstilstanden er "gjeldende" når den lokale kopien 232 er lik skyggekopien 234. Når for eksempel en fil som er lagret på brukerdatamaskinen 220 blir lastet opp til tjenerdatamaskinen 200 for samarbeid, er den lokale kopien 232 lik skyggekopien 234. Tilsvarende, når en fil på tjenerdatamaskinen 200 første gang blir replikert på brukerdatamaskinen 220, er den lokale kopien lik skyggekopien 234. Som vist i tilstandsdiagrammet i figur 3, når en endring blir gjort av den lokale kopien 232, slik at den ikke lenger er lik skyggekopien 234, går tilstanden fra "gjeldende"-tilstanden 300 til "modifisert"-tilstanden 310. Når denne modifikasjonen blir overført til tjeneren eller forkastet, slik at den lokale kopien 232 igjen er lik skyggekopien 234, returnerer tilstanden til "gjeldende"-tilstanden 300.
[0043] Når brukerdatamaskinen 220 står i forbindelse med tjenerdatamaskinen 200 og detekterer at tjener-kopien 210 har blitt oppdatert, blir den nye tjener-kopien 210 kopiert til skyggekopien 234. Den lokale kopien 232 lagres som tilbakeføringskopi 238, og skyggekopien 234 blir deretter kopiert til den lokale kopien 232.1 én utførelsesform blir den siste kopien som er besiktiget av brukeren sporet. Dersom brukeren har aksessert versjon A, og versjon B har blitt lastet ned fra tjeneren, vil således tilbakeføringsfilen være en kopi av versjon A. Dersom versjon C nå blir lastet ned fra tjeneren, vil tilbakeføringsfilen ikke bli endret til versjon B dersom ikke versjon B har vært aksessert av brukeren. Tilbakeføringsfilen inneholder således den siste versjonen som brukeren har aksessert.
[0044] Som kan sees i figur 3, dersom en endring av tjener-filen blir lastet ned til skyggefilen og det blir lagret en tilbakeføringskopi, og tilstanden er "gjeldende" 300, vil den nye tilstanden være "tilbakeføringskopi tilgjengelig" 320. Dersom imidlertid dette skjer i "modifisert"-tilstanden 310, har det da vært gjort både lokale endringer av en tidligere versjon av tjener-kopien, som er lagret i den lokale kopien 232, og andre endringer (foretatt av andre brukere) som har resultert i en ny versjon av tjener-kopien 210. Dette resulterer i "konflikf-tilstanden 330.
[0045] Når en "konflikf-tilstand 330 inntreffer, er det nødvendig å avgjøre konflikter mellom de to muligens avvikende settene av endringer i den lokale kopien 232 og skyggekopien 234. For eksempel kan en bruker velge å forkaste endringer som hadde blitt gjort i den lokale kopien 232, eller å overskrive endringene. Filen som fremkommer etter denne avgjørelsen blir lagret som lokal kopi 232, og tilstanden returnerer til "modifisert". Som angitt tidligere, når endringene i den lokale kopien 232 blir lastet opp til tjeneren eller oppgitt til fordel for den gjeldende tjener-kopien, returnerer tilstanden til "gjeldende".
Opplasting av endringer til tjeneren
[0046] I hver av versjonstilstandene er synkroniseringsvalg tilgjengelige for en bruker. Disse funksjonsvalgene kan være eksternt tilgjengelige fra fildupliseringsstyreren 230, eller kan være integrert i applikasjonen 240. Dersom det har blitt foretatt endringer, er opplasting (eller overføring) av endringene til tjener-kopien én valgmulighet. Dette synkroniseringsvalget gjør det mulig for brukeren å kople seg til tjenerdatamaskinen 200 (dersom en forbindelse er tilgjengelig) og synkronisere den lokale kopien 232 med tjener-kopien 210.
[0047] Dersom versjonstilstanden er "gjeldende" 300 eller "tilbakeføringskopi tilgjengelig" 320, har ingen endringer blitt foretatt, slik at ingen fil blir overført til tjeneren. Dersom versjonstilstanden er "modifisert" 310, blir forskjellene mellom den lokale kopien 232 og skyggekopien 234 bestemt. Denne prosessen er kjent som å "generere en diff" (for difference) mellom de to filene. Dersom versjonstilstanden var "modifisert" 310, er skyggekopien 234 lik tjener-kopien 210 (ellers ville versjonstilstanden ha vært "konflikt" 330). Hele filen trenger derfor ikke å bli lastet opp til tjeneren, idet en fil som omfatter all informasjon vedrørende forskjeller mellom den lokale kopien 232 og skyggekopien 234 inneholder den nødvendige informasjonen. Denne "diff'-filen anvendes av tjenerdatamaskinen 200 for å oppdatere tjener-kopien 210. Når tjener-kopien 210 har blitt oppdatert, må den kopieres til skyggekopien 234, og versjonstilstanden endres på korrekt måte.
[0048] Genereringen av "diff-filen kan gjøres offline. Brukeren vil kunne bestemme seg for å beordre synkronisering på et tidspunkt da tjeneren 200 ikke kan nås fra brukerdatamaskinen 220. Dersom dette skjer, kan da en "diff' bli generert og forespørselen køet, slik at opplastingsprosessen kan fortsette neste gang tjenerdatamaskinen 200 er tilgjengelig.
[0049] Dersom versjonstilstanden er "konflikt" 330, må da et konflikt-brukergrensesnitt bli initiert. Dette grensesnittet må la brukeren håndtere forskjellene mellom den lokale kopien 232 og skyggekopien 234, for eksempel ved å lagre den lokale kopien 232 et annet sted på brukerdatamaskinen 220 og kopiene skyggekopien 234 som ny lokal kopi 232. Brukergrensenittet kan også være et mer avansert grensesnitt, som beskrevet i den beslektede søknaden angitt ovenfor.
[0050] I én utførelsesform blir det foretatt sjekker for å sikre at ingen lokale endringer har blitt gjort når filen er i "gjeldende"-tilstanden 300 eller i "tilbakeføringskopi tilgjengelig"-tilstanden 320, og for å sikre at opplastingen av "diff-filen var vellykket. Dersom disse sjekkene avdekker feil, bør dette resultere i "modifisert"-tilstanden 310 eller "konflikf-tilstanden 330.
Tilbakeføringsversion
[0051] Et annet funksjonsvalg tilgjengelig for brukeren er når versjonstilstanden er "tilbakeføringskopi tilgjengelig" 320 eller "modifisert" 310. Et brukergrensesnitt vil da være tilgjengelig for brukerne som gir dem mulighet til å gå tilbake til den versjonen av dokumentet som de tidligere har besiktiget eller redigert, som er lagret i tilbakeføringskopien 238.
[0052] I én utførelsesform blir brukergrensesnittet vist for brukeren, hvilket angir at dokumentet har blitt oppdatert av en annen bruker. Brukergrensesnittet lar brukeren velge den forrige versjonen, lagret i tilbakeføringskopien 238, eller besiktige forskjellene mellom den forrige versjonen, lagret i tilbakeføringskopien 238, og den gjeldende versjonen, lagret i den lokale kopien 232.
[0053] Tilbakeføringskopien er kun tilveiebragt i noen utførelsesformer av oppfinnelsen. Som vist i figur 4, utføres duplisering av en tjener-fil på en brukerdatamaskin ved at en lokal kopi blir lagret (trinn 400) og at en skyggekopi blir lagret (trinn 410). Aksess tillates til den lokale kopien for modifisering (trinn 420). I enkelte utførelsesformer gjøres dette gjennom en navneromskopi av den lokale kopien. Når brukerdatamaskinen står i forbindelse med tjenerdatamaskinen og masterfilen endres, blir da skyggekopien oppdatert (trinn 430). I én utførelsesform opprettholdes versjonstilstander for dupliseringen.
[0054] Når en tilbakeføringskopi blir opprettholdt, som vist i figur 5, utføres også da duplisering av en tjener-fil på en brukerdatamaskin ved at en lokal kopi blir lagret (trinn 500) og at en skyggekopi blir lagret (trinn 510). Aksess tillates til den lokale kopien for modifisering (trinn 520). Når brukerdatamaskinen står i forbindelse med tjenerdatamaskinen og masterfilen endres, blir da skyggekopien oppdatert (trinn 530). I dette trinnet, når skyggekopien oppdateres, blir om nødvendig også tilbakeføringskopien oppdatert. Først blir den lokale kopien lagret som tilbakeføringskopi, og deretter blir den lokale kopien oppdatert med skyggekopien. I én utførelsesform gjøres dette kun dersom den lokale kopien har vært aksessert siden forrige gjenoppretting.
[0055] Fildupliseringsstyreren 220 kan være et separat program eller kan være helt eller delvis integrert i applikasjonen anvendt med filen som blir replikert. Konklusjon
[0056] Som nevnt ovenfor, selv om eksempler på utførelsesformer av foreliggende oppfinnelse har blitt beskrevet i forbindelse med forskjellige
databehandlingsanordninger og nettverksarkitekturer, kan de underliggende konseptene bli anvendt med hvilke som helst databehandlingsanordninger eller datasystemer der det er ønskelig å muliggjøre samarbeid via en tjener. Fremgangsmåtene og systemene ifølge foreliggende oppfinnelse kan således anvendes med en rekke forskjellige applikasjoner og anordninger. Selv om illustrerende programmeringsspråk, navn og eksempler er valgt her for å representere forskjellige muligheter, er ikke disse språkene, navnene og eksemplene ment å være begrensende. Fagmannen vil forstå at det finnes mange måter å tilveiebringe objektkode som frembringer samme, tilsvarende eller ekvivalente systemer og fremgangsmåter som frembragt av oppfinnelsen.
[0057] De forskjellige teknikkene som er beskrevet her kan bli implementert i forbindelse med maskinvare eller programvare eller, der det er hensiktsmessig, med en kombinasjon av begge. Fremgangsmåtene og anordningene ifølge foreliggende oppfinnelse, eller visse aspekter ved eller andeler av disse, kan således være i form av programkode (dvs. instruksjoner) inneholdt i fysiske medier, så som floppy-disketter, CD-ROM, harddisker eller et hvilket som helst annet maskinlesbart lagringsmedium, idet, når programkoden blir lastet inn i og eksekvert av en maskin, så som en datamaskin, maskinen blir en anordning for å praktisere oppfinnelsen. I tilfellet med eksekvering av programkode i programmerbare datamaskiner, vil databehandlingsanordningen generelt omfatte en prosessor, et lagringsmedium som er lesbart for prosessoren (som omfatter volatile og ikke-volatile minne- og/eller lagringselementer), minst én innmatingsanordning og minst én utmatingsanordning. Ett eller flere programmer som kan anvende signalbehandlingstjenestene ifølge foreliggende oppfinnelse, f.eks. ved anvendelse av et dataprosesserings-API eller tilsvarende, er fortrinnsvis implementert i et høynivå prosedyre- eller objektorientert programmeringsspråk for å kommunisere med en datamaskin. Programmet eller programmene kan imidlertid om ønsket bli implementert i assembler- eller maskinspråk. I alle tilfeller kan språket være et kompilert eller interpretert språk, og være kombinert med
maskinvareimplementasjoner.
[0058] Fremgangsmåtene og anordningene ifølge foreliggende oppfinnelse kan også praktiseres via kommunikasjoner tilveiebragt i form av programkode som blir overført over et transmisjonsmedium, for eksempel elektriske ledninger eller kabler, fiberoptikk eller en hvilken som helst annen form for overføringsmekanisme, idet, når programkoden er mottatt av, lastet inn i og blir eksekvert av en maskin, så som et EPROM, en gate-array, en programmerbar logikk-anordning (PLD), en klientdatamaskin, en video-opptaker eller lignende, eller en mottakende maskin som har signalprosesseringsmulighetene som beskrevet i utførelseseksemplene ovenfor, denne maskinen blir et apparat for å praktisere oppfinnelsen. Når den er implementert i en generell prosessor, samvirker programkoden med prosessoren i å tilveiebringe et unikt apparat som opererer ved å kalle opp funksjonaliteten ifølge foreliggende oppfinnelse. I tillegg vil enhver lagringsteknikk som blir anvendt i forbindelse med foreliggende oppfinnelse alltid kunne være en kombinasjon av maskinvare og programvare.
[0059] Selv om foreliggende oppfinnelse har blitt beskrevet i forbindelse med de foretrukne utførelsesformer i de forskjellige figurene, må det forstås at andre tilsvarende utførelsesformer kan anvendes eller at det kan foretas modifikasjoner av og suppleringer til de beskrevne utførelsesformene for å utføre samme funksjon som foreliggende oppfinnelse uten å avvike fra denne. Videre skal det understrekes at en rekke forskjellige datamaskin-plattformer, omfattende operativsystemer for håndholdte anordninger og andre applikasjonsspesifikke operativsystemer er tenkelige, spesielt ettersom antallet trådløse nettverkede anordninger fortsetter å øke raskt. Foreliggende oppfinnelse skal derfor ikke begrenses til noen enkelt utførelsesform, men skal i stedet fortolkes i bredde og omfang i overensstemmelse med de etterfølgende patentkravene.

Claims (28)

1. Fremgangsmåte for duplisering av en masterfil (210) på en første datamaskin som kan aksesseres av et flertall andre datamaskiner, omfattende trinnene med å: lagre (400) en lokal kopi (232) av masterfilen på minst ett delsett av flertallet andre datamaskiner, lagre (410) en skyggekopi (234) av masterfilen på minst ett delsett av flertallet andre datamaskiner, tillate (420) aksess av den lokale kopien for modifisering, og oppdatere (430) skyggekopien når masterfilen endres.
2. Fremgangsmåte ifølge krav 1, videre omfattende trinnet med å lagre en versjonstilstand assosiert med dupliseringen, og der trinnet med å tillate aksess av den lokale kopien for modifisering omfatter det å endre versjonstilstanden når den lokale kopien modifiseres.
3. Fremgangsmåte ifølge krav 2, der trinnet med å endre versjonstilstanden når den lokale kopien modifiseres omfatter det å sette versjonstilstanden til en "modifiserf-tilstand som angir at den lokale kopien har blitt modifisert.
4. Fremgangsmåte ifølge krav 1, videre omfattende trinnet med å lagre en versjonstilstand assosiert med dupliseringen, og der trinnet med å oppdatere skyggekopien når den lokale kopien endres omfatter det å endre versjonstilstanden når oppdateringen skjer.
5. Fremgangsmåte ifølge krav 1, der trinnet med å oppdatere skyggekopien når masterfilen oppdateres omfatter trinnene med å: detektere at den lokale kopien har blitt modifisert, og behandle konflikter mellom den lokale kopien og den oppdaterte skyggekopien.
6. Fremgangsmåte ifølge krav 5, videre omfattende trinnet med å lagre en versjonstilstand assosiert med dupliseringen, og der trinnet med å håndtere konflikter mellom den lokale kopien og den oppdaterte skyggekopien omfatter det å endre versjonstilstanden til en "konflikf-tilstand som angir at det eksisterer en konflikt.
7. Fremgangsmåte ifølge krav 5, der trinnet med å behandle konflikter mellom den lokale kopien og den oppdaterte skyggekopien omfatter trinnene med å: presentere et konflikt-grensesnitt, ta imot en konfliktløsende kommando, og utføre den konfliktløsende kommandoen.
8. Fremgangsmåte ifølge krav 7, der utførelsen av konfliktløsende kommandoer omfatter trinnene med å: bestemme hvorvidt en endring skal gjøres av masterfilen, og kommunisere endringen som skal gjøres til den første datamaskinen.
9. Fremgangsmåte ifølge krav 8, der trinnet med å kommunisere endringen som skal gjøres til den første datamaskinen omfatter trinnene med å: generere informasjon vedrørende forskjeller mellom den lokale kopien og masterfilen, og kommunisere informasjonen vedrørende forskjeller til masterfilen.
10. Fremgangsmåte ifølge krav 1, der trinnet med å oppdatere skyggekopien når masterfilen endres omfatter trinnene med å: lagre den lokale kopien som tilbakeføringskopi, og oppdatere den lokale kopien med skyggekopien.
11. Fremgangsmåte ifølge krav 10, der trinnet med å lagre den lokale kopien som tilbakeføringskopi omfatter trinnene med å: presentere et tilbakeførings-grensesnitt, ta imot en tilbakeføringskommando, og vise tilbakeføringskopien i respons til gjenopprettingskommandoen.
12. Fremgangsmåte ifølge krav 10, videre omfattende trinnet med å lagre en versjonstilstand assosiert med dupliseringen, og der trinnet med å lagre den lokale kopien som tilbakeføringskopi omfatter det å endre versjonstilstanden til en "tilbakeføringskopi tilgjengelig"-tilstand.
13. Fremgangsmåte ifølge krav 10, videre omfattende trinnet med å holde rede på hvorvidt den lokale kopien har blitt aksessert, og der trinnet med å lagre den lokale kopien som tilbakeføringskopi omfatter det å lagre den lokale kopien som tilbakeføringskopi kun dersom den lokale kopien har blitt aksessert.
14. Fremgangsmåte ifølge krav 1, hvor fremgangsmåte utføres av et operativsystem, en koprosesseringsanordning, eller en databehandlingsanordning.
15. Et datamaskinlesbart medium i hvilket det er lagret et antall datamaskin-eksekverbare instruksjoner, og et modulert datasignal som bærer datamaskin-eksekverbare instruksjoner for å utføre fremgangsmåten ifølge krav 1.
16. Datasystem (220) for duplisering av en masterfil (210), der masterfilen er lagret på en første datamaskin, idet den første datamaskinen i hvert fall tidvis er operativt koplet et flertall andre datamaskiner, idet minst ett delsett av flertallet andre datamaskiner omfatter: et lokalkopi-lager for lagring av en lokal kopi (232) av masterfilen, et skyggekopi-lager for lagring av en skyggekopi (234) av masterfilen, en lokalkopi-modifiseringsmodul som muliggjør aksess til den lokale kopien for modifisering, og en skyggekopi-oppdateringsmodul for oppdatering av skyggekopi-lageret når masterfilen blir endret.
17. Datasystem ifølge krav 16, idet det minst ene delsett av flertallet andre datamaskiner videre omfatter: et versjonstilstandslager for lagring av en versjonstilstand assosiert med dupliseringen, og der lokalkopi-modifiseringsmodulen endrer versjonstilstanden når den lokale kopien har blitt modifisert.
18. Datasystem ifølge krav 17, der lokalkopi-modifiseringsmodulen endrer eller setter versjonstilstanden til en "modifiserf-tilstand som angir at den lokale kopien har blitt modifisert.
19. Datasystem ifølge krav 16, hvor det minst ene delsett av flertallet andre datamaskiner videre omfatter: et versjonstilstandslager for lagring av en versjonstilstand assosiert med dupliseringen, og der skyggekopi-oppdateringsmodulen endrer versjonstilstanden når oppdateringen er gjort.
20. Datasystem ifølge krav 16, der skyggekopi-oppdateringsmodulen omfatter: en modul for detektering at den lokale kopien har blitt modifisert, og en konflikthåndteringsmodul for håndtering av konflikter mellom den lokale kopien og den oppdaterte skyggekopien.
21. Datasystem ifølge krav 20, hvor det minst ene delsett av flertallet andre datamaskiner videre omfatter: et versjonstilstandslager for lagring av en versjonstilstand assosiert med dupliseringen, og der konflikthåndteringsmodulen endrer versjonstilstanden til en "konflikf-tilstand som angir at det eksisterer en konflikt.
22. Datasystem ifølge krav 20, der konflikthåndteringsmodulen omfatter: en modul for presentering av et konflikt-grensesnitt, en modul for å ta imot en konfliktløsende kommando, og en konfliktbehandlingsinnretning for utføring av den konfliktløsende kommandoen.
23. Datasystem ifølge krav 20, der konfliktbehandlingsinnretningen omfatter: en modul for bestemmelse hvorvidt en endring skal gjøres av masterfilen, og en første modul for kommunisering av endringen som skal gjøres til den første datamaskinen.
24. Datasystem ifølge krav 23, der den første modulen for kommunisering av endringen som skal gjøres til den første datamaskinen omfatter: en modul for generering av informasjon vedrørende forskjeller mellom den lokale kopien og masterfilen, og en andre modul for kommunisering informasjonen vedrørende forskjeller til masterfilen.
25. Datasystem ifølge krav 16, der skyggekopien-oppdateringsmodul omfatter: et tilbakeføringskopi-lager for lagring av den lokale kopien som tilbake-føringskopi, og en lokalkopi-oppdateringsmodul for oppdatering av den lokale kopien med skyggekopien.
26. Datasystem ifølge krav 25, der lokalkopi-oppdateringsmodulen omfatter: en modul som presenterer et tilbakeførings-grensesnitt, en modul som tar imot en tilbakeføringskommando, og en fremvisning for å vise tilbakeføringskopien i respons til tilbakeførings-kommandoen.
27. Datasystem ifølge krav 25, hvor det minst ene delsett av flertallet andre datamaskiner videre omfatter: et versjonstilstandslager for lagring av en versjonstilstand assosiert med dupliseringen, og der tilbakeføringskopi-lageret endrer versjonstilstanden til en "tilbakeføringskopi tilgjengelig"-tilstand.
28. Datasystem ifølge krav 25, hvor det minst ene delsett av flertallet andre datamaskiner videre omfatter: en modul for å holde rede på hvorvidt den lokale kopien har blitt aksessert, og der tilbakeføringskopi-lageret for lagring av den lokale kopien som tilbakeføringskopi omfatter logikk for lagring av den lokale kopien som tilbakeføringskopi kun dersom den lokale kopien har blitt aksessert.
NO20040829A 2003-02-28 2004-02-25 Fremgangsmate for handtering av flerfil-tilstander for replikerte filer. NO331680B1 (no)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/376,873 US8010491B2 (en) 2003-02-28 2003-02-28 Method for managing multiple file states for replicated files

Publications (2)

Publication Number Publication Date
NO20040829L NO20040829L (no) 2004-09-01
NO331680B1 true NO331680B1 (no) 2012-02-20

Family

ID=32771511

Family Applications (1)

Application Number Title Priority Date Filing Date
NO20040829A NO331680B1 (no) 2003-02-28 2004-02-25 Fremgangsmate for handtering av flerfil-tilstander for replikerte filer.

Country Status (19)

Country Link
US (1) US8010491B2 (no)
EP (1) EP1452982A3 (no)
JP (1) JP4643915B2 (no)
KR (1) KR101076851B1 (no)
CN (1) CN100377099C (no)
AU (1) AU2004200462A1 (no)
BR (1) BRPI0400364A (no)
CA (1) CA2458249C (no)
CO (1) CO5550075A1 (no)
IL (1) IL160353A0 (no)
MX (1) MXPA04001929A (no)
MY (1) MY147939A (no)
NO (1) NO331680B1 (no)
NZ (1) NZ531279A (no)
PL (1) PL365551A1 (no)
RU (1) RU2344468C2 (no)
SG (1) SG125106A1 (no)
TW (1) TWI316667B (no)
ZA (1) ZA200401310B (no)

Families Citing this family (43)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7370025B1 (en) 2002-12-17 2008-05-06 Symantec Operating Corporation System and method for providing access to replicated data
JP2004265193A (ja) * 2003-03-03 2004-09-24 Canon Inc 情報処理方法、情報処理装置、サーバ装置の制御方法、サーバ装置
US8135755B2 (en) 2005-06-29 2012-03-13 Microsoft Corporation Templates in a schema editor
US7716168B2 (en) * 2005-06-29 2010-05-11 Microsoft Corporation Modifying table definitions within a database application
US7546286B2 (en) * 2004-02-19 2009-06-09 Microsoft Corporation Offline multi-table data editing and storage
US7546291B2 (en) * 2004-02-19 2009-06-09 Microsoft Corporation Data source task pane
GB2445368A (en) * 2005-04-14 2008-07-09 Rajesh Kapur A method and system for preserving access to a system in case of a disaster allowing transaction rollback
US8255362B2 (en) * 2005-06-08 2012-08-28 rPath Methods, systems, and computer program products for provisioning software using local changesets that represent differences between software on a repository and a local system
CN100373347C (zh) * 2005-07-13 2008-03-05 华硕电脑股份有限公司 一种具自动备份功能的电子装置
CN100438416C (zh) * 2005-12-02 2008-11-26 无锡永中科技有限公司 一种实现文件协同处理的方法
US7743026B2 (en) * 2006-01-31 2010-06-22 Microsoft Corporation Redirection to local copies of server-based files
CN101042688B (zh) * 2006-03-21 2011-06-01 北京北大方正电子有限公司 一种报刊版面网络标引的方法及系统
US20080140732A1 (en) * 2006-12-11 2008-06-12 Bentley System, Inc. Method and system for sharing file based data
JP4432087B2 (ja) * 2006-12-26 2010-03-17 インターナショナル・ビジネス・マシーンズ・コーポレーション データベース更新管理システム、プログラムおよび方法
US9495370B1 (en) * 2007-07-19 2016-11-15 American Megatrends, Inc. Data recovery point review in a continuous data protection system
US8190987B2 (en) * 2007-10-25 2012-05-29 Microsoft Corporation Private views of data and local calculations during real time collaboration
US7941399B2 (en) 2007-11-09 2011-05-10 Microsoft Corporation Collaborative authoring
US9143561B2 (en) 2007-11-09 2015-09-22 Topia Technology, Inc. Architecture for management of digital files across distributed network
US8825758B2 (en) 2007-12-14 2014-09-02 Microsoft Corporation Collaborative authoring modes
US20090164970A1 (en) * 2007-12-20 2009-06-25 At&T Knowledge Ventures, L.P. System for Managing Automated Report Versions
US8239345B2 (en) * 2007-12-27 2012-08-07 Microsoft Corporation Asynchronous replication
US8135838B2 (en) 2008-04-08 2012-03-13 Geminare Incorporated System and method for providing data and application continuity in a computer system
US8352870B2 (en) 2008-04-28 2013-01-08 Microsoft Corporation Conflict resolution
US8825594B2 (en) 2008-05-08 2014-09-02 Microsoft Corporation Caching infrastructure
US8706694B2 (en) * 2008-07-15 2014-04-22 American Megatrends, Inc. Continuous data protection of files stored on a remote storage device
US8145687B2 (en) * 2009-04-08 2012-03-27 Hitachi, Ltd. File detection device and method
US8346768B2 (en) * 2009-04-30 2013-01-01 Microsoft Corporation Fast merge support for legacy documents
US8612380B2 (en) * 2009-05-26 2013-12-17 Adobe Systems Incorporated Web-based collaboration for editing electronic documents
US9298834B2 (en) 2009-05-26 2016-03-29 Adobe Systems Incorporated User presence data for web-based document collaboration
WO2011034548A1 (en) * 2009-09-21 2011-03-24 Hewlett-Packard Development Company, L.P. System including a virtual disk
US8612398B2 (en) * 2010-03-11 2013-12-17 Microsoft Corporation Clean store for operating system and software recovery
US9652440B2 (en) * 2010-05-27 2017-05-16 Microsoft Technology Licensing, Llc Concurrent utilization of a document by multiple threads
US9665582B2 (en) * 2010-08-04 2017-05-30 Quantum Corporation Software, systems, and methods for enhanced replication within virtual machine environments
CN101937310B (zh) * 2010-09-06 2014-07-16 宇龙计算机通信科技(深圳)有限公司 文件复制方法及终端
US20120158891A1 (en) * 2010-12-21 2012-06-21 Microsoft Corporation Techniques for universal representation of digital content
US9924002B1 (en) 2012-06-21 2018-03-20 EMC IP Holding Company LLC Managing stateless processes
WO2014064817A1 (ja) * 2012-10-25 2014-05-01 富士通株式会社 情報処理端末、同期制御方法および同期制御プログラム
CN104123126B (zh) * 2013-04-26 2018-04-10 阿里巴巴集团控股有限公司 一种用于生成合并冲突记录列表的方法和装置
CN104750536B (zh) * 2013-12-30 2018-08-21 华为技术有限公司 一种实现虚拟机自省的方法和装置
WO2020025124A1 (en) * 2018-08-01 2020-02-06 Huawei Technologies Co., Ltd. Device and method for rollback of a structure modification operation
AU2020264946B2 (en) * 2019-04-30 2022-11-17 Clumio, Inc. Deduplication in a cloud-based data protection service
CN110262997A (zh) * 2019-05-06 2019-09-20 阿里巴巴集团控股有限公司 用于管理公共文件的方法和系统
CN110795252A (zh) * 2019-09-20 2020-02-14 北京浪潮数据技术有限公司 一种多用户串行编辑文件的方法、装置、设备及存储介质

Family Cites Families (49)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0188072B1 (en) * 1984-11-14 1992-01-22 Canon Kabushiki Kaisha Image processing system
JPH04181423A (ja) * 1990-11-16 1992-06-29 Fujitsu Ltd バージョン管理方式
US5278979A (en) 1990-12-20 1994-01-11 International Business Machines Corp. Version management system using pointers shared by a plurality of versions for indicating active lines of a version
US5280612A (en) * 1991-11-26 1994-01-18 International Business Machines Corporation Multiple version database concurrency control system
JPH05241933A (ja) * 1992-02-28 1993-09-21 Mitsubishi Electric Corp 分散データ管理システムのファイル保全方式
JP3213766B2 (ja) 1992-03-16 2001-10-02 株式会社日立製作所 レプリケートファイル更新システム
JPH0827754B2 (ja) * 1992-05-21 1996-03-21 インターナショナル・ビジネス・マシーンズ・コーポレイション コンピュータシステムにおけるファイル管理方法及びファイル管理システム
US5493728A (en) * 1993-02-19 1996-02-20 Borland International, Inc. System and methods for optimized access in a multi-user environment
US5630116A (en) * 1993-08-11 1997-05-13 Nec Corporation Automatic delivery system for master files in a distributed processing system
US5835911A (en) * 1994-02-08 1998-11-10 Fujitsu Limited Software distribution and maintenance system and method
EP0756730B1 (en) * 1994-04-21 1998-09-23 BRITISH TELECOMMUNICATIONS public limited company Data storage
US5806078A (en) * 1994-06-09 1998-09-08 Softool Corporation Version management system
EP0713183A3 (en) * 1994-11-18 1996-10-02 Microsoft Corp Network-independent shadow files
US5694596A (en) * 1995-05-25 1997-12-02 Kangaroo, Inc. On-line database updating network system and method
US5881292A (en) * 1996-09-26 1999-03-09 Microsoft Corporation Dynamic versioning system for multiple users of multi-module software system
US5930794A (en) * 1996-10-18 1999-07-27 Sagent Technologies, Inc. Database repository with deferred transactions
JP2001514776A (ja) * 1997-02-27 2001-09-11 シーベル システムズ,インコーポレイティド ローカルな修正を組み込むソフトウェア配布の連続レベル移送の方法
US6314565B1 (en) * 1997-05-19 2001-11-06 Intervu, Inc. System and method for automated identification, retrieval, and installation of multimedia software components
US6182073B1 (en) * 1997-05-20 2001-01-30 Intel Corporation Integrated information browsing and multiple-participant application with a persistency control configured to monitor and to prevent attempts to replace data within the information browser
JP3567696B2 (ja) * 1997-09-24 2004-09-22 松下電器産業株式会社 ソフトウェアダウンロードシステム
US6014669A (en) * 1997-10-01 2000-01-11 Sun Microsystems, Inc. Highly-available distributed cluster configuration database
JPH11143754A (ja) * 1997-11-05 1999-05-28 Hitachi Ltd バージョン情報・構成情報表示方法および装置およびバージョン情報・構成情報表示プログラムを記録したコンピュータ読み取り可能な記録媒体
US6067551A (en) * 1997-11-14 2000-05-23 Microsoft Corporation Computer implemented method for simultaneous multi-user editing of a document
US6041333A (en) * 1997-11-14 2000-03-21 Microsoft Corporation Method and apparatus for automatically updating a data file from a network
US6052531A (en) * 1998-03-25 2000-04-18 Symantec Corporation Multi-tiered incremental software updating
US6457021B1 (en) * 1998-08-18 2002-09-24 Microsoft Corporation In-memory database system
US6804663B1 (en) * 1998-09-21 2004-10-12 Microsoft Corporation Methods for optimizing the installation of a software product onto a target computer system
US6341291B1 (en) * 1998-09-28 2002-01-22 Bentley Systems, Inc. System for collaborative engineering using component and file-oriented tools
US6324544B1 (en) 1998-10-21 2001-11-27 Microsoft Corporation File object synchronization between a desktop computer and a mobile device
JP2000284998A (ja) 1999-03-31 2000-10-13 Ricoh Co Ltd データ更新制御システム、データ更新制御方法、その方法を実行させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体
US6405219B2 (en) * 1999-06-22 2002-06-11 F5 Networks, Inc. Method and system for automatically updating the version of a set of files stored on content servers
US6560655B1 (en) * 1999-06-22 2003-05-06 Microsoft Corporation Synchronization manager for standardized synchronization of separate programs
US6529921B1 (en) * 1999-06-29 2003-03-04 Microsoft Corporation Dynamic synchronization of tables
US6513084B1 (en) * 1999-06-29 2003-01-28 Microsoft Corporation Arbitration of state changes
US6516339B1 (en) * 1999-08-18 2003-02-04 International Business Machines Corporation High performance client/server editor
US6256773B1 (en) * 1999-08-31 2001-07-03 Accenture Llp System, method and article of manufacture for configuration management in a development architecture framework
US6449624B1 (en) * 1999-10-18 2002-09-10 Fisher-Rosemount Systems, Inc. Version control and audit trail in a process control system
US6757893B1 (en) * 1999-12-17 2004-06-29 Canon Kabushiki Kaisha Version control system for software code
JP2001193735A (ja) * 2000-01-05 2001-07-17 Minebea Co Ltd 球面滑り軸受のトルク調節機構
US6721767B2 (en) * 2000-01-31 2004-04-13 Commvault Systems, Inc. Application specific rollback in a computer system
US6598059B1 (en) * 2000-04-22 2003-07-22 Oracle Corp. System and method of identifying and resolving conflicts among versions of a database table
CN1290038C (zh) * 2000-05-25 2006-12-13 英业达股份有限公司 一种即时生成文件版本的方法
US6845383B1 (en) * 2000-06-19 2005-01-18 International Business Machines Corporation System and method for managing concurrent scheduled or on-demand replication of subscriptions
US6865591B1 (en) * 2000-06-30 2005-03-08 Intel Corporation Apparatus and method for building distributed fault-tolerant/high-availability computed applications
US6658330B2 (en) * 2000-12-29 2003-12-02 General Electric Co. Method and system for upgrading software for controlling locomotives
US6714953B2 (en) * 2001-06-21 2004-03-30 International Business Machines Corporation System and method for managing file export information
US20030167318A1 (en) * 2001-10-22 2003-09-04 Apple Computer, Inc. Intelligent synchronization of media player with host computer
US7389309B2 (en) * 2003-02-28 2008-06-17 Microsoft Corporation Method for managing file replication in applications
US7350191B1 (en) * 2003-04-22 2008-03-25 Noetix, Inc. Computer implemented system and method for the generation of data access applications

Also Published As

Publication number Publication date
CN1525328A (zh) 2004-09-01
MY147939A (en) 2013-02-15
AU2004200462A1 (en) 2004-09-16
KR101076851B1 (ko) 2011-10-25
JP2004265414A (ja) 2004-09-24
MXPA04001929A (es) 2005-04-25
EP1452982A3 (en) 2006-11-08
US8010491B2 (en) 2011-08-30
KR20040077497A (ko) 2004-09-04
SG125106A1 (en) 2006-09-29
TWI316667B (en) 2009-11-01
CO5550075A1 (es) 2005-08-31
NZ531279A (en) 2005-07-29
CN100377099C (zh) 2008-03-26
CA2458249C (en) 2012-03-27
CA2458249A1 (en) 2004-08-28
JP4643915B2 (ja) 2011-03-02
PL365551A1 (en) 2004-09-06
US20040172424A1 (en) 2004-09-02
TW200508891A (en) 2005-03-01
IL160353A0 (en) 2004-07-25
RU2344468C2 (ru) 2009-01-20
NO20040829L (no) 2004-09-01
EP1452982A2 (en) 2004-09-01
RU2004105881A (ru) 2005-08-10
BRPI0400364A (pt) 2004-12-28
ZA200401310B (en) 2005-11-30

Similar Documents

Publication Publication Date Title
NO331680B1 (no) Fremgangsmate for handtering av flerfil-tilstander for replikerte filer.
CN110147369B (zh) 多重租赁数据库系统中的数据分离和写入重新定向
CN110019215B (zh) 多重租赁数据库系统中的键模式管理
US7194489B2 (en) System, method and computer program product for collaborative engineering using component and file oriented tools
CN109947767B (zh) 多重租赁数据库系统中的系统共享类型
US7131112B1 (en) Managing code changes for software development
NO332246B1 (no) Fremgangsmate for a forsinke lasing av tjener-filer under redigering.
JP4753693B2 (ja) スナップショットなしでアイテムを同期化するシステムおよび方法
CN109564529B (zh) 基于符号链接的占位符
AU2008247683B2 (en) Mesh - managing data across a distributed set of devices
US7389309B2 (en) Method for managing file replication in applications
US7577691B2 (en) Extending hierarchical synchronization scopes to non-hierarchical scenarios
US8280908B2 (en) Merging file system directories
US20080126444A1 (en) Hybrid computer restore using network service
WO2009147847A1 (ja) データベース並行編集方式
US20030051230A1 (en) Code management software fast transactions using state table technology
US7107272B1 (en) Independent distributed metadata system and method
US7478115B2 (en) System and method for database and filesystem coordinated transactions
US20060041870A1 (en) Systems and methods for varying software build properties using primary and supplemental build files
JP2000347915A (ja) ドキュメント管理システムおよびドキュメント管理システムのドキュメント提供方法
Shapiro et al. CPCMS: A Configuration Management System Based on Cryptographic Names.
US11422733B2 (en) Incremental replication between foreign system dataset stores
JPWO2009147847A1 (ja) データベース並行編集方式
JP5543901B2 (ja) データベース並行編集方式
JP2011040106A (ja) データベース並行編集方式

Legal Events

Date Code Title Description
CHAD Change of the owner's name or address (par. 44 patent law, par. patentforskriften)

Owner name: MICROSOFT TECHNOLOGY LICENSING, US

MM1K Lapsed by not paying the annual fees