KR102432302B1 - 점진적 클라이언트 동기화 - Google Patents
점진적 클라이언트 동기화 Download PDFInfo
- Publication number
- KR102432302B1 KR102432302B1 KR1020207013685A KR20207013685A KR102432302B1 KR 102432302 B1 KR102432302 B1 KR 102432302B1 KR 1020207013685 A KR1020207013685 A KR 1020207013685A KR 20207013685 A KR20207013685 A KR 20207013685A KR 102432302 B1 KR102432302 B1 KR 102432302B1
- Authority
- KR
- South Korea
- Prior art keywords
- tree
- content
- actions
- modifications
- state
- Prior art date
Links
- 230000000750 progressive effect Effects 0.000 title description 3
- 230000004048 modification Effects 0.000 claims abstract description 170
- 238000012986 modification Methods 0.000 claims abstract description 170
- 230000009471 action Effects 0.000 claims description 209
- 238000000034 method Methods 0.000 claims description 84
- 230000015654 memory Effects 0.000 claims description 36
- 230000001360 synchronised effect Effects 0.000 claims description 34
- 230000004044 response Effects 0.000 claims description 4
- 230000000246 remedial effect Effects 0.000 claims 1
- 238000005516 engineering process Methods 0.000 abstract description 37
- 230000006870 function Effects 0.000 description 27
- 230000008569 process Effects 0.000 description 20
- 238000004891 communication Methods 0.000 description 19
- 238000012545 processing Methods 0.000 description 17
- 230000000875 corresponding effect Effects 0.000 description 15
- 230000008859 change Effects 0.000 description 12
- 238000012217 deletion Methods 0.000 description 11
- 230000037430 deletion Effects 0.000 description 11
- 230000007246 mechanism Effects 0.000 description 6
- 230000006399 behavior Effects 0.000 description 5
- 230000006872 improvement Effects 0.000 description 5
- 238000013475 authorization Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 230000009467 reduction Effects 0.000 description 4
- 230000004913 activation Effects 0.000 description 3
- 230000002730 additional effect Effects 0.000 description 3
- 238000012790 confirmation Methods 0.000 description 3
- 230000001419 dependent effect Effects 0.000 description 3
- 230000003993 interaction Effects 0.000 description 3
- 230000002085 persistent effect Effects 0.000 description 3
- 238000013515 script Methods 0.000 description 3
- 230000002596 correlated effect Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000004321 preservation Methods 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 238000007792 addition Methods 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000007598 dipping method Methods 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000008450 motivation Effects 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000000135 prohibitive effect Effects 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 230000009897 systematic effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/178—Techniques for file synchronisation in file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/04—Generating or distributing clock signals or signals derived directly therefrom
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1458—Management of the backup or restore process
- G06F11/1469—Backup restoration techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1458—Protection against unauthorised use of memory or access to memory by checking the subject access rights
- G06F12/1466—Key-lock mechanism
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/11—File system administration, e.g. details of archiving or snapshots
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/11—File system administration, e.g. details of archiving or snapshots
- G06F16/113—Details of archiving
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/11—File system administration, e.g. details of archiving or snapshots
- G06F16/116—Details of conversion of file system types or formats
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/11—File system administration, e.g. details of archiving or snapshots
- G06F16/119—Details of migration of file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/11—File system administration, e.g. details of archiving or snapshots
- G06F16/122—File system administration, e.g. details of archiving or snapshots using management policies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/11—File system administration, e.g. details of archiving or snapshots
- G06F16/122—File system administration, e.g. details of archiving or snapshots using management policies
- G06F16/125—File system administration, e.g. details of archiving or snapshots using management policies characterised by the use of retention policies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/11—File system administration, e.g. details of archiving or snapshots
- G06F16/128—Details of file system snapshots on the file-level, e.g. snapshot creation, administration, deletion
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/13—File access structures, e.g. distributed indices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/13—File access structures, e.g. distributed indices
- G06F16/137—Hash-based
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/14—Details of searching files based on file metadata
- G06F16/148—File search processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/14—Details of searching files based on file metadata
- G06F16/148—File search processing
- G06F16/152—File search processing using file content signatures, e.g. hash values
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/14—Details of searching files based on file metadata
- G06F16/156—Query results presentation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/16—File or folder operations, e.g. details of user interfaces specifically adapted to file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/16—File or folder operations, e.g. details of user interfaces specifically adapted to file systems
- G06F16/162—Delete operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/16—File or folder operations, e.g. details of user interfaces specifically adapted to file systems
- G06F16/168—Details of user interfaces specifically adapted to file systems, e.g. browsing and visualisation, 2d or 3d GUIs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/172—Caching, prefetching or hoarding of files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/1734—Details of monitoring file system events, e.g. by the use of hooks, filter drivers, logs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/174—Redundancy elimination performed by the file system
- G06F16/1744—Redundancy elimination performed by the file system using compression, e.g. sparse files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/176—Support for shared access to files; File sharing support
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/176—Support for shared access to files; File sharing support
- G06F16/1767—Concurrency control, e.g. optimistic or pessimistic approaches
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/178—Techniques for file synchronisation in file systems
- G06F16/1787—Details of non-transparently synchronising file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/182—Distributed file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/182—Distributed file systems
- G06F16/1824—Distributed file systems implemented using Network-attached Storage [NAS] architecture
- G06F16/1827—Management specifically adapted to NAS
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/182—Distributed file systems
- G06F16/1824—Distributed file systems implemented using Network-attached Storage [NAS] architecture
- G06F16/183—Provision of network file services by network file servers, e.g. by using NFS, CIFS
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/182—Distributed file systems
- G06F16/184—Distributed file systems implemented as replicated file system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/182—Distributed file systems
- G06F16/184—Distributed file systems implemented as replicated file system
- G06F16/1844—Management specifically adapted to replicated file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/185—Hierarchical storage management [HSM] systems, e.g. file migration or policies thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2246—Trees, e.g. B+trees
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2255—Hash tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2308—Concurrency control
- G06F16/2315—Optimistic concurrency control
- G06F16/2322—Optimistic concurrency control using timestamps
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2358—Change logging, detection, and notification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2365—Ensuring data consistency and integrity
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2379—Updates performed during online database operations; commit processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24552—Database cache management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
- G06F16/275—Synchronous replication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9027—Trees
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/907—Retrieval characterised by using metadata, e.g. metadata not derived from the content or metadata generated manually
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/951—Indexing; Web crawling techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/955—Retrieval from the web using information identifiers, e.g. uniform resource locators [URL]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/958—Organisation or management of web site content, e.g. publishing, maintaining pages or automatic linking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/604—Tools and structures for managing or administering access control systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/062—Securing storage systems
- G06F3/0623—Securing storage systems in relation to content
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/065—Replication mechanisms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0652—Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/547—Remote procedure calls [RPC]; Web services
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/08—Network architectures or network communication protocols for network security for authentication of entities
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/08—Network architectures or network communication protocols for network security for authentication of entities
- H04L63/0853—Network architectures or network communication protocols for network security for authentication of entities using an additional device, e.g. smartcard, SIM or a different communication terminal
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/10—Network architectures or network communication protocols for network security for controlling access to devices or network resources
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/10—Network architectures or network communication protocols for network security for controlling access to devices or network resources
- H04L63/101—Access control lists [ACL]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/10—Network architectures or network communication protocols for network security for controlling access to devices or network resources
- H04L63/102—Entity profiles
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/06—Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1095—Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/321—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving a third party or a trusted authority
- H04L9/3213—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving a third party or a trusted authority using tickets or tokens, e.g. Kerberos
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3247—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/84—Using snapshots, i.e. a logical point-in-time copy of the data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1052—Security improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2141—Access rights, e.g. capability lists, access control lists, access tables, access matrices
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/2866—Architectures; Arrangements
- H04L67/30—Profiles
- H04L67/306—User profiles
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Human Computer Interaction (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Library & Information Science (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Multimedia (AREA)
- Technology Law (AREA)
- Automation & Control Theory (AREA)
- Quality & Reliability (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Information Transfer Between Computers (AREA)
- Storage Device Security (AREA)
- Mobile Radio Communication Systems (AREA)
- Small-Scale Networks (AREA)
- Circuits Of Receivers In General (AREA)
- Synchronisation In Digital Transmission Systems (AREA)
- Computer And Data Communications (AREA)
- Finger-Pressure Massage (AREA)
- Communication Control (AREA)
Abstract
개시된 기술은, 싱크 트리, 원격 트리, 및 로컬 트리를 포함하는 트리 데이터 구조체들의 세트에 기초하여 수정들의 세트를 식별하도록 구성된 시스템에 관한 것이다. 싱크 트리는 서버 상태와 파일 시스템 상태 사이의 알려진 싱크된 상태를 나타내며, 원격 트리는 서버 상태를 나타내고, 로컬 트리는 파일 시스템 상태를 나타낸다. 시스템은 추가로, 각각의 수정이 종속성을 갖는지 여부에 기초하여 수정들의 세트로부터 차단되지 않은 수정들의 세트를 선택하고, 차단되지 않은 수정들의 세트에 기초하여, 서버 상태와 파일 시스템 상태를 수렴시키도록 구성된 태스크들의 세트를 실행하도록 구성된다.
Description
관련 출원들에 대한 상호 참조
본 출원은, 2018년 01월 10자로 출원된 미국 정규 출원 제15/867,505호, 및 2017년 12월 28일자로 출원된 미국 가출원 제62/611,473호에 대한 우선권을 주장하며, 이들 둘 모두는 그 전체가 명백하게 본원에 참조로서 통합된다.
배경기술
콘텐트 관리 시스템들은 사용자들이 네트워크를 사용하여 다수의 디바이스들에 걸쳐 콘텐트 아이템들을 액세스하고 관리하는 것을 가능하게 한다. 일부 콘텐트 관리 시스템들은 사용자들이 콘텐트 아이템들을 공유하고 콘텐트 아이템들을 사용하여 협동하는데 있어서 사용자들을 보조하는 추가적인 특징부들을 제공하는 것을 가능하게 할 수 있다. 콘텐트 관리 시스템들은 일반적으로 서버들 상에 콘텐트 아이템들을 저장하며, 사용자들이 네트워크를 통해 콘텐트 아이템들을 액세스하는 것을 가능하게 한다. 일부 콘텐트 관리 시스템들은 또한, 사용자들에게 더 자연스러운 인터페이스(예를 들어, 네이티브 애플리케이션 또는 클라이언트 디바이스의 파일 시스템 내에)에서 콘텐트 아이템들에 대한 더 빠른 액세스를 제공하기 위하여 클라이언트 디바이스 상에 로컬 카피들이 저장되는 것을 가능하게 한다. 추가적으로, 이는 사용자가 오프라인일 때 사용자가 콘텐트에 대한 액세스를 갖는 것을 가능하게 한다. 콘텐트 관리 시스템들은, 각각의 카피가 동일하도록 복수의 클라이언트 디바이스들 및 서버들에 걸쳐 콘텐트 아이템의 카피들을 동기화하려고 시도한다. 그러나, 콘텐트 아이템들의 동기화가 어려우며, 이는 다수의 기술적 장애들과 연관된다.
본 기술의 이상에서 언급된 그리고 다른 장점들 및 특징들은 첨부된 도면들에 예시된 특정 구현예들을 참조함으로써 명백해질 것이다. 당업자는, 이러한 도면들이 단지 본 기술의 일부 예들만을 도시하며 본 기술의 범위를 이러한 예들로 한정하지 않는다는 것을 이해할 것이다. 추가로, 당업자는 첨부된 도면들의 사용을 통해 추가적인 특정사항 및 세부사항을 가지고 설명되고 기술되는 바와 같은 본 기술의 원리들을 인식할 것이다.
도 1은 일부 실시예들에 따른 콘텐트 관리 시스템 및 클라이언트 디바이스들의 일 예를 도시한다.
도 2는 일부 실시예들에 따른 클라이언트 동기화 서비스의 일 예를 도시한다.
도 3은 다양한 실시예들에 따른 트리 데이터 구조체들의 일 예를 도시한다.
도 4는 다양한 실시예들에 따른 트리 데이터 구조체의 일 예를 도시한다.
도 5는 본 기술의 다양한 실시예들에 따른 트리 데이터 구조체들을 사용하여 서버 상태 및 파일 시스템 상태를 동기화하기 위한 예시적인 방법을 도시한다.
도 6은 본 기술의 다양한 실시예들에 따른 트리 데이터 구조체들을 사용하여 서버 상태 및 파일 시스템 상태를 동기화할 때의 충돌들을 해결하기 위한 예시적인 방법을 도시한다.
도 7은 다양한 실시예들에 따른 추가 동작에 대한 규칙의 위반을 예시하는 트리 데이터 구조체의 일 예를 도시한다.
도 8은 본 기술의 다양한 실시예들에 따른 서버 상태 및 파일 시스템 상태를 점진적으로 수렴시키기 위한 예시적인 방법을 도시한다.
도 9는 다양한 실시예들에 따른 트리 데이터 구조체들의 일 예를 도시한다.
도 10은 예시적인 시나리오를 도시한다.
도 11은 본 기술의 다양한 실시예들에 따른 동작들의 2개의 플랜들의 예시적인 벤 다이어그램 표현을 도시한다.
도 12는 본 기술의 다양한 실시예들에 따른 동작들의 플랜들에서의 변화들을 관리하기 위한 예시적인 방법을 도시한다.
도 13은 본 기술의 다양한 실시예들에 따른 파일명 어레이 및 해시 인덱스 어레이의 일 예시를 도시한다.
도 14는 본 기술의 다양한 실시예들에 따른 파일명을 저장하기 위한 예시적인 방법을 도시한다.
도 15는 본 기술의 다양한 실시예들에 따른 주어진 파일명에 대하여 파일명의 위치를 검색하기 위한 예시적인 방법을 도시한다.
도 16a 및 도 16b는 다양한 실시예들에 따른 트리 데이터 구조체의 예들을 도시한다.
도 17은 다양한 실시예들에 따른 트리 데이터 구조체의 일 예를 도시한다.
도 18은 본 기술의 다양한 실시예들에 따른 주어진 파일명에 대한 파일명의 위치를 검색하기 위한 예시적인 방법을 도시한다.
도 19는 본 기술의 특정 측면들을 구현하기 위한 시스템의 일 예를 도시한다.
도 1은 일부 실시예들에 따른 콘텐트 관리 시스템 및 클라이언트 디바이스들의 일 예를 도시한다.
도 2는 일부 실시예들에 따른 클라이언트 동기화 서비스의 일 예를 도시한다.
도 3은 다양한 실시예들에 따른 트리 데이터 구조체들의 일 예를 도시한다.
도 4는 다양한 실시예들에 따른 트리 데이터 구조체의 일 예를 도시한다.
도 5는 본 기술의 다양한 실시예들에 따른 트리 데이터 구조체들을 사용하여 서버 상태 및 파일 시스템 상태를 동기화하기 위한 예시적인 방법을 도시한다.
도 6은 본 기술의 다양한 실시예들에 따른 트리 데이터 구조체들을 사용하여 서버 상태 및 파일 시스템 상태를 동기화할 때의 충돌들을 해결하기 위한 예시적인 방법을 도시한다.
도 7은 다양한 실시예들에 따른 추가 동작에 대한 규칙의 위반을 예시하는 트리 데이터 구조체의 일 예를 도시한다.
도 8은 본 기술의 다양한 실시예들에 따른 서버 상태 및 파일 시스템 상태를 점진적으로 수렴시키기 위한 예시적인 방법을 도시한다.
도 9는 다양한 실시예들에 따른 트리 데이터 구조체들의 일 예를 도시한다.
도 10은 예시적인 시나리오를 도시한다.
도 11은 본 기술의 다양한 실시예들에 따른 동작들의 2개의 플랜들의 예시적인 벤 다이어그램 표현을 도시한다.
도 12는 본 기술의 다양한 실시예들에 따른 동작들의 플랜들에서의 변화들을 관리하기 위한 예시적인 방법을 도시한다.
도 13은 본 기술의 다양한 실시예들에 따른 파일명 어레이 및 해시 인덱스 어레이의 일 예시를 도시한다.
도 14는 본 기술의 다양한 실시예들에 따른 파일명을 저장하기 위한 예시적인 방법을 도시한다.
도 15는 본 기술의 다양한 실시예들에 따른 주어진 파일명에 대하여 파일명의 위치를 검색하기 위한 예시적인 방법을 도시한다.
도 16a 및 도 16b는 다양한 실시예들에 따른 트리 데이터 구조체의 예들을 도시한다.
도 17은 다양한 실시예들에 따른 트리 데이터 구조체의 일 예를 도시한다.
도 18은 본 기술의 다양한 실시예들에 따른 주어진 파일명에 대한 파일명의 위치를 검색하기 위한 예시적인 방법을 도시한다.
도 19는 본 기술의 특정 측면들을 구현하기 위한 시스템의 일 예를 도시한다.
본 기술의 다양한 예들이 이하에서 상세하게 논의된다. 특정 구현예들이 논의되지만, 이는 오로지 예시적인 목적들을 위해 이루어진다는 것이 이해되어야 한다. 당업자는, 본 기술의 사상 및 범위로부터 벗어나지 않고 다른 컴포넌트들 및 구성들이 사용될 수 있음을 인식할 것이다.
컴퓨팅 및 네트워킹 기술들에서의 다양한 발전들이 사용자들에게 다수의 디바이스들에 걸쳐 콘텐트 아이템들에 대한 액세스를 제공하기 위한 콘텐트 관리 시스템들을 가능하게 하였다. 콘텐트 아이템들은, 비제한적으로, 파일들, 문서들, 메시지들(예를 들어, 이메일 메시지들 또는 텍스트 메시지들), 미디어 파일들(예를 들어, 사진들, 비디오들, 및 오디오 파일들), 다른 콘텐트 아이템들을 포함하는 폴더들, 또는 콘텐트의 임의의 다른 유닛을 포함할 수 있다. 콘텐트 아이템들은 다수의 사용자들과 공유되거나, 편집되거나, 삭제되거나, 추가되거나, 재명명되거나, 또는 이동될 수 있다. 그러나, 이러한 콘텐트 아이템들을 몇몇 컴퓨팅 디바이스들(예를 들어, 서버들 및 클라이언트 디바이스들)에 걸쳐 그리고 몇몇 사용자 계정들에 걸쳐 동기화하는 것은 여전히 기술적 장애들로 인해 결점이 있는 상태로 널리 퍼져 있는 채로 남아 있다.
기술적 장애들의 일부를 예시하기 위하여, 제 1 기계(예를 들어, 클라이언트 디바이스 또는 서버)는, 사용자가 콘텐트 관리 시스템에 의해 관리되는 콘텐트 아이템들을 어떻게 수정했는지에 대한 정보를 제공하는 통신들을 제 2 기계로 전송할 수 있다. 이러한 통신들은, 제 1 기계 상에서 콘텐트 아이템들에 대하여 수행되는 액션들이 제 2 기계 상의 콘텐트 아이템들에 반영되고 제 1 기계 상의 콘텐트 아이템들이 제 2 기계 상의 콘텐트 아이템들과 실질적으로 동일해지도록, 제 2 기계 상의 콘텐트 아이템들을 동기화하기 위하여 제 2 기계에 의해 사용될 수 있다.
그러나, 전송되는 몇몇 통신들이 존재할 수 있으며, 통신들은 통신들을 송신하기 위해 사용되는 하나 이상의 네트워크들에 의해 사용되는 다양한 네트워크 라우팅 프로토콜들, 제 1 또는 제 2 기계의 기술적 동작들, 또는 어떤 다른 이유의 결과로서 순서가 뒤바뀌어 수신될 수 있다. 추가로, 사용자는 많은 수의 콘텐트 아이템들에 대한 많은 수의 수정들을 수행하거나, 짧은 시간 내에 이전의 수정들의 실행취소(undo)하거나, 또는 이전에 수정된 콘텐트 아이템 또는 콘텐트 아이템들의 세트에 대하여 빠르게 추가적인 수정들을 수행할 수 있다. 이는, 이러한 통신들이 순서가 뒤바뀌어 수신되거나, 특정 통신들이 유효 기간이 지났거나(out of date), 또는 제 2 기계가 최신이 아닌 콘텐트 아이템들에 대하여 동작들을 수행할 가능성을 증가시킨다. 결과적으로, 동작들 중 다수가 콘텐트 아이템들의 현재 상태와 호환되지 않을 수 있다. 실제로, 심지어 일부 동작들이 다른 동작들과 충돌하는지 여부 또는 콘텐트 아이템들의 현재 상태와 충돌하지는 여부를 검출하는 것이 어려울 수 있다.
추가적으로, 동기화 액션들에 대하여 고유 레이턴시(latency)가 존재한다. 예를 들어, 제 1 기계 상에서 취해지는 액션들은 먼저 제 1 기계에 의해 검출되며, 통신이 생성되고 그런 다음 네트워크를 통해 송신된다. 통신은, 여전히 이전 통신들을 프로세싱하고 통신들 내에서 상세화된 액션들을 취하고 있을 수 있는 제 2 기계에 의해 수신된다. 이러한 예시적인 시나리오에 있어서, 레이턴시가 제 1 기계, 제 2 기계, 및/또는 네트워크의 한정된 컴퓨팅 자원들(예를 들어, 대역폭, 메모리, 프로세싱 시간, 프로세싱 사이클들 등)에 의해 도입되는 몇몇 포인트들이 존재한다. 레이턴시는, 어떤 이유로 인하여, 콘텐트 아이템들의 현재 상태와 충돌하는 통신들이 증가될 가능성을 증가시킨다. 추가로, 이러한 충돌되는 통신들을 프로세싱하고 충돌들을 해결하는 것이 또한 프로세싱 시간, 메모리, 에너지, 또는 대역폭과 같은 불필요한 컴퓨팅 자원들을 소비하며, 추가로 레이턴시를 증가시킨다.
문제들을 더 복잡하게 하기 위하여, 콘텐트 아이템들에 대한 액세스를 갖는 제 2 기계 및/또는 추가적인 기계들 상에서 동일하거나 또는 상이한 사용자가 또한 콘텐트 아이템들에 대한 수정들을 수행하고 있을 수 있다. 결과적으로, 이상의 이슈들이 배가될 수 있으며, 로컬 액션들이 원격 액션들과 충돌하지는 여부 및/또는 로컬 액션들이 최신 콘텐트 아이템들에 대하여 동작하는지 여부와 관련하여 추가적인 기술적 이슈들이 발생한다.
개시되는 기술은 이상의 기술적 문제점들뿐만 아니라 다른 문제점들에 대한 기술적 해법을 제공하는 콘텐트 관리 시스템에 대한 클라이언트 동기화 서비스에 대한 당업계의 요구를 해결한다. 클라이언트 동기화 서비스는 클라이언트 디바이스 상에서 동작하고 클라이언트 관리 시스템의 서버 상의 콘텐트 아이템들과 클라이언트 디바이스 상의 대응하는 콘텐트 아이템들 사이의 동기화 불일치를 식별하도록 구성될 수 있다. 각각의 동기화 불일치에 대하여, 클라이언트 동기화 서비스는 콘텐트 아이템들을 동기화하기 위해 필요한 동작들을 식별하고 이러한 동작들을 개시할 수 있다.
클라이언트 동기화 서비스는, 트리 데이터 구조체들("트리들")의 세트를 사용하여 서버 상의 콘텐트 아이템들의 상태, 클라이언트 디바이스 상의 콘텐트 아이템들의 상태, 및 그들의 동기화 상태를 추적할 수 있다. 일부 실시예들에 따르면, 3개의 트리들의 세트가 사용될 수 있다. 3개의 트리들은, 서버 상태를 나타내는 원격 트리, 클라이언트 디바이스 상의 파일 시스템 상태를 나타내는 로컬 트리, 및 로컬 트리 및 원격 트리에 대한 병합 베이스(merge base)를 나타내는 싱크(sync) 트리를 포함할 수 있다. 병합 베이스는 로컬 트리와 원격 트리의 공통 조상 또는 로컬 트리와 원격 트리 사이의 마지막으로 알려진 동기화된 상태로서 여겨질 수 있다. 따라서, 클라이언트 동기화 서비스는, 3개의 트리들(예를 들어, 원격 트리, 싱크 트리, 및 로컬 트리) 모두가 동일할 때 서버 상태와 클라이언트 디바이스 상태가 동기화되었다고 결정할 수 있다.
콘텐트 아이템들의 서버 상태 또는 콘텐트 아이템들의 클라이언트 디바이스 파일 시스템 상태("파일 시스템 상태")에 대한 수정이 검출될 때, 클라이언트 동기화 서비스는 3인조(triumvirate) 트리들에 기초하여 적절한 트리를 업데이트하고 서버 상태 및 파일 시스템 상태가 동기화되었는지 여부를 결정한다. 트리들 중 하나에 대한 업데이트에 기초하여, 서버 상태 및 파일 시스템 상태가 동기화되거나, 비동기화(unsynchronize)되거나, 또는 더 비동기화될 수 있다. 서버 상태 및 파일 시스템 상태가 동기화되지 않은 경우, 클라이언트 동기화 서비스는 적어도 서버 상태 및 파일 시스템 상태를 수렴시키기 위해 필요한 동작들의 초기 세트를 식별하고 서버 상태 및 파일 시스템 상태를 동기화된 상태에 더 가깝게 가져갈 수 있다.
서버 상태 및 파일 시스템 상태를 모니터링하기 위해 트리 데이터 구조체들의 세트에 의존함으로써, 다양한 기술적 문제들에 대한 컴퓨팅 기술에 뿌리를 둔 해법들 및/또는 대안예들을 제공한다. 예를 들어, 클라이언트 동기화 서비스는 파일 상태뿐만 아니라 서버 상태를 추적하고 2개의 상태들의 병합 베이스의 표현을 저장할 수 있다. 결과적으로, 본 기술의 다양한 실시예들은 사용자들이 콘텐트 아이템들을 원격적으로 어떻게 수정하는지를 명시하는 복수의 통신들을 수신하는 것 및 이러한 수정들이 로컬적으로 구현되어야만 하는 순서를 결정하는 것, 수정들이 다른 수정들과 충돌하는지 또는 유효 기간이 지났는지 여부, 및 원격 수정들이 사용자들에 의해 로컬적으로 수행된 로컬 수정들과 충돌하는지 여부와 연관된 기술적 문제점들을 회피한다. 이러한 이슈들 중 다수는 수반되는 다양한 액터(actor)(예를 들어, 서버 및 클라이언트 디바이스)의 상태를 추적할 수 없으며 상태들이 동기화되었는지 여부를 빠르게 결정할 수 없는 다른 해법들로부터 기인한다. 그 대신에, 이러한 다른 해법들은, 서버 상태 및 파일 시스템 상태가 동기화되었는지 여부의 상황정보 없이, 콘텐트 아이템을 로컬적으로 어떻게 수정할 지에 대한 명령어들을 수신하는 것에 의존한다.
추가로, 서버 상태 및 파일 시스템 상태가 동시에 모니터링되기 때문에, 이들의 동기화되었는지 여부를 결정하는 것이 절차 복잡성뿐만 아니라 컴퓨팅 시간 및 자원들과 관련하여 훨씬 더 효율적이다. 이하에서 추가로 상세하게 설명되는 바와 같이, 클라이언트 동기화 서비스는 보다 더 결정론적(deterministic) 방식으로 서버 상태 및 파일 시스템 상태의 점진적이고 조직적인 동기화를 가능하게 한다. 결과적으로, 콘텐트 관리 시스템 특징부들의 스케일링(scaling) 및 테스팅이 또한 효율적이다.
콘텐트 관리 시스템
일부 실시예들에 있어서, 개시되는 기술은, 다른 것들 중에서도 특히, 콘텐트 아이템 동기화 성능들 및 협동 특징부들을 갖는 콘텐트 관리 시스템의 맥락에서 전개된다. 예시적인 시스템 구성(100)이 도 1a에 도시되며, 이는 클라이언트 디바이스(150)와 상호작용하는 콘텐트 관리 시스템(110)을 도시한다.
계정들
콘텐트 관리 시스템(110)은 계정들과 연관하여 콘텐트 아이템들을 저장할 수 있을 뿐만 아니라, 다양한 콘텐트 아이템 관리 태스크(task)들, 예컨대, 콘텐트 아이템(들)의 검색, 수정, 브라우징, 및/또는 공유를 수행할 수 있다. 추가로, 콘텐트 관리 시스템(110)은 계정이 복수의 클라이언트 디바이스들로부터 콘텐트 아이템(들)을 액세스하는 것을 가능하게 할 수 있다.
콘텐트 관리 시스템(110)은 복수의 계정들을 지원한다. 엔티티(entity)(사용자, 사용자들의 그룹, 팀, 회사, 등)는 콘텐트 관리 시스템을 가지고 계정을 생성할 수 있으며, 계정 세부사항들이 계정 데이터베이스(140) 내에 저장될 수 있다. 계정 데이터베이스(140)는 등록된 엔티티들에 대한 프로파일 정보를 저장할 수 있다. 일부 경우들에 있어서, 등록된 엔티티들에 대한 프로파일 정보는 사용자명 및/또는 이메일 주소를 포함한다. 계정 데이터베이스(140)는 계정 관리 정보, 예컨대 계정 유형(예를 들어, 다양한 계층들의 무료 또는 유료 계정들), 할당된 저장 공간, 사용된 저장 공간, 그 위에 상주하는 등록된 콘텐트 관리 클라이언트 애플리케이션(152)을 갖는 클라이언트 디바이스들(150), 보안 세팅들, 개인용 구성 세팅들, 등을 포함할 수 있다.
계정 데이터베이스(140)는 엔티티와 연관된 계정들의 그룹들을 저장할 수 있다. 그룹들은 그룹 정책들 및/또는 액세스 제어 리스트들에 기초하여 허가(permission)들을 가질 수 있으며, 그룹들의 멤버들은 허가들을 계승할 수 있다. 예를 들어, 마케팅 그룹은 콘텐트 아이템들 중 하나의 세트에 대한 액세스를 가질 수 있으며, 반면 엔지니어링 그룹은 콘텐트 아이템들의 다른 세트에 대한 액세스를 가질 수 있다. 관리자 그룹은 그룹들을 수정하거나, 사용자 계정들을 수정하거나 할 수 있는 등이다.
콘텐트 아이템 저장
콘텐트 관리 시스템(110)의 하나의 특징은, 콘텐트 저장부(142) 내에 저장될 수 있는 콘텐트 아이템들의 저장부이다. 콘텐트 아이템들은 임의의 디지털 데이터 예컨대 문서들, 협동 콘텐트 아이템들, 텍스트 파일들, 오디오 파일들, 이미지 파일들, 비디오 파일들, 웹페이지들, 실행가능 파일들, 2진 파일들 등일 수 있다. 콘텐트 아이템은 또한 콘텐트 아이템들을 폴더들, 집 파일들, 플레이리스트들, 앨범들 등과 같은 상이한 거동들과 함께 그룹화하기 위한 수집물(collection)들 또는 다른 메커니즘들을 포함할 수 있다. 수집물은, 공통 속성에 의해 관련되거나 또는 그룹화되는 복수의 콘텐트 아이템들 또는 폴더를 지칭할 수 있다. 일부 실시예들에 있어서, 콘텐트 저장부(142)는 특정 기능들을 핸들링하기 위하여 다른 유형들의 저장부들 또는 데이터베이스들과 결합된다. 콘텐트 저장부(142)는 콘텐트 아이템들을 저장할 수 있으며, 반면 콘텐트 아이템들에 관한 메타데이터는 메타데이터 데이터베이스(146) 내에 저장될 수 있다. 마찬가지로, 콘텐트 아이템이 콘텐트 저장부(142) 내에 저장되는 위치에 관한 데이터는 콘텐트 디렉토리(144) 내에 저장될 수 있다. 추가적으로, 변화들, 액세스 등에 관한 데이터는 서버 파일 저널(journal)(148) 내에 저장될 수 있다. 콘텐트 저장부(142), 콘텐트 디렉토리(144), 서버 파일 저널(148), 및 메타데이터 데이터베이스(146)와 같은 다양한 저장부들/데이터베이스들의 각각은 2개 이상의 이러한 저장부 또는 데이터베이스로 구성될 수 있으며, 다수의 디바이스들 및 위치들에 걸쳐 분산될 수 있다. 다른 구성들이 또한 가능하다. 예를 들어, 콘텐트 저장부(142), 콘텐트 디렉토리(144), 서버 파일 저널(148), 및 메타데이터 데이터베이스(146)로부터의 데이터는 하나 이상의 콘텐트 저장부들 또는 데이터베이스들 내로 결합될 수 있거나 또는 추가적인 콘텐트 저장부들 또는 데이터베이스들로 분할될 수 있다. 따라서, 콘텐트 관리 시스템(110)은 도 1에 도시된 것보다 더 많거나 또는 더 적은 저장부들 및/또는 데이터베이스들을 포함할 수 있다.
일부 실시예들에 있어서, 콘텐트 저장부(142)는 적어도 하나의 콘텐트 저장 서비스(116)와 연관되며, 이는, 비제한적으로, 저장하기 위해 콘텐트 아이템들을 수신하는 것, 저장을 위해 콘텐트 아이템들을 준비하는 것, 콘텐트 아이템에 대한 저장 위치를 선택하는 것, 저장부로부터 콘텐트 아이템들을 검색하는 것 등을 포함하는, 콘텐트 아이템들의 저장을 관리하기 위한 소프트웨어 또는 다른 프로세서 실행가능 명령어들을 포함한다. 일부 실시예들에 있어서, 콘텐트 저장 서비스(116)는 콘텐트 저장부(142)에서의 저장을 위해 더 작은 청크(chunk)들로 콘텐트 아이템을 분할할 수 있다. 콘텐트 아이템을 구성하는 각각의 청크의 위치가 콘텐트 디렉토리(144) 내에 기록될 수 있다. 콘텐트 디렉토리(144)는 콘텐트 저장부(142) 내에 저장된 각각의 콘텐트 아이템에 대한 콘텐트 엔트리를 포함할 수 있다. 콘텐트 엔트리는, 콘텐트 아이템을 식별하는 고유 ID와 연관될 수 있다.
일부 실시예들에 있어서, 콘텐트 디렉토리(144) 내에서 콘텐트 아이템을 식별하는 고유 ID는 결정론적 해시 함수로부터 도출될 수 있다. 콘텐트 아이템에 대한 고유 ID를 도출하는 이러한 방법은, 예컨대, 결정론적 해시 함수가 동일한 콘텐트 아이템의 매 카피에 대하여 동일한 식별자를 출력할 것이지만 상이한 콘텐트 아이템에 대하여 상이한 식별자를 출력할 것이기 때문에, 콘텐트 아이템 복제(duplicate)들이 인식되는 것을 보장할 수 있다. 이러한 방법론을 사용하면, 콘텐트 저장 서비스(116)는 각각의 콘텐트 아이템에 대하여 고유 ID를 출력할 수 있다.
콘텐트 저장 서비스(116)는 또한 메타데이터 데이터베이스(146) 내에 콘텐트 아이템에 대한 콘텐트 경로를 지정하거나 또는 기록할 수 있다. 콘텐트 경로는 콘텐트 아이템의 명칭 및/또는 콘텐트 아이템과 연관된 폴더 계층을 포함할 수 있다. 예를 들어, 콘텐트 경로는, 그 안에 콘텐트 아이템이 클라이언트 디바이스 상의 로컬 파일 시스템 내에 저장되는 폴더들의 경로 또는 폴더를 포함할 수 있다. 콘텐트 아이템들이 블록들로 콘텐트 저장부(142) 내에 저장되고 디렉토리 구조체와 같은 트리 아래에 저장되지 않을 수 있지만, 이러한 디렉토리 구조체는 사용자들에게 편안한 네비게이션 구조체이다. 콘텐트 저장 서비스(116)는 콘텐트 아이템에 대한 콘텐트 경로를 정의하거나 또는 기록할 수 있으며, 여기에서 디렉토리 구조체의 "루트(root)" 노드는 각각의 계정에 대한 명칭공간(namespace)일 수 있다. 계정의 사용자 및/또는 콘텐트 저장 서비스(116)에 의해 정의되는 디렉토리 구조체가 명칭공간 내에 존재할 수 있다. 메타데이터 데이터베이스(146)는 콘텐트 엔트리의 부분으로서 각각의 콘텐트 아이템에 대한 콘텐트 경로를 저장할 수 있다.
일부 실시예들에 있어서, 명칭공간은, 마치 이들이 루트 노드 내에 저장되는 것처럼 디렉토리 구조체 내에 내포되는(nested) 추가적인 명칭공간들을 포함할 수 있다. 이는, 계정이 공유된 수집물에 대한 액세스를 가질 때 발생할 수 있다. 공유된 수집물들에는 콘텐트 관리 시스템(110) 내에서 그들 자체의 명칭공간이 할당될 수 있다. 공유된 수집물들은 실제로 공유된 수집물에 대한 루트 노드일 수 있지만, 이들은 디렉토리 구조체 내에서 계정 명칭공간에 종속되어 위치되며, 계정에 대한 폴더 내의 폴더로서 나타날 수 있다. 이상에서 다루어진 바와 같이, 디렉토리 구조체는 단지 사용자들에 대한 편리한 네비게이션 구조체이며, 콘텐트 저장부(142) 내의 콘텐트 아이템들의 저장 위치와 상관되지 않는다.
그 안에서 계정이 콘텐트 아이템들을 보는 디렉토리 구조체가 콘텐트 관리 시스템(110)에서의 저장 위치들과 상관되지 않지만, 디렉토리 구조체는 클라이언트 디바이스(150)에 의해 사용되는 파일 시스템에 의존하여 클라이언트 디바이스(150) 상의 저장 위치들과 상관될 수 있다.
이상에서 언급된 바와 같이, 콘텐트 디렉토리(144) 내의 콘텐트 엔트리는 또한 콘텐트 아이템을 구성하는 각각의 청크의 위치를 포함할 수 있다. 보다 더 구체적으로, 콘텐트 엔트리는, 콘텐트 아이템을 구성하는 청크들의 콘텐트 저장부(142) 내의 위치를 식별하는 콘텐트 포인터(pointer)들을 포함할 수 있다.
콘텐트 경로 및 콘텐트 포인터에 더하여, 콘텐트 디렉토리(144) 내의 콘텐트 엔트리는 또한, 콘텐트 아이템에 대한 액세스를 갖는 사용자 계정을 식별하는 사용자 계정 식별자 및/또는 콘텐트 엔트리가 속하는 명칭공간 및/또는 콘텐트 아이템에 대한 액세스를 갖는 그룹을 식별하는 그룹 식별자를 포함할 수 있다.
콘텐트 저장 서비스(116)는, 콘텐트 아이템 또는 콘텐트 아이템의 버전들을 구성하는 복제 콘텐트 아이템들 또는 복제 블록들을 식별함으로써 요구되는 저장 공간의 양을 감소시킬 수 있다. 복수의 카피들을 저장하는 대신에, 콘텐트 저장부(142)는 콘텐트 아이템의 단일 카피 또는 콘텐트 아이템의 블록을 저장할 수 있으며, 콘텐트 디렉토리(144)는 복제들을 단일 카피에 링크하기 위한 포인터 또는 다른 메커니즘을 포함할 수 있다.
콘텐트 저장 서비스(116)는 또한, 콘텐트 아이템의 고유 ID와 연관하여, 콘텐트 아이템들, 콘텐트 아이템 유형들, 폴더들, 파일 경로, 및/또는 다양한 계정들, 수집물들, 또는 그룹들에 대한 콘텐트 아이템들의 관계를 설명하는 메타데이터를 메타데이터 데이터베이스(146) 내에 저장할 수 있다.
콘텐트 저장 서비스(116)는 또한 변화들, 액세스, 등에 관한 데이터의 로그(log)를 서버 파일 저널(148) 내에 저장할 수 있다. 서버 파일 저널(148)은 콘텐트 아이템의 고유 ID 및 시간 스탬프 또는 버전 번호 및 임의의 다른 관련 데이터와 함께 변화 또는 액세스 액션의 설명을 저장할 수 있다. 서버 파일 저널(148)은 또한 변화 또는 콘텐트 아이템 액세스에 의해 영향을 받은 블록들에 대한 포인터들을 포함할 수 있다. 콘텐트 저장 서비스는, 서버 파일 저널(148)로부터 획득될 수 있는, 콘텐트 아이템들에 대한 변화들, (발산(diverging) 버전 트리들을 포함하는) 콘텐트 아이템들의 상이한 버전들, 및 변화 히스토리를 추적하는 콘텐트 아이템 버전 제어를 사용함으로써, 동작들을 실행취소하기 위한 능력을 제공할 수 있다.
콘텐트 아이템 동기화
콘텐트 관리 시스템(110)의 다른 특징은 적어도 하나의 클라이언트 디바이스(150)와 콘텐트 아이템들의 동기화이다. 클라이언트 디바이스(들)는 상이한 형태들을 취할 수 있으며, 상이한 성능들을 가질 수 있다. 예를 들어, 클라이언트 디바이스(1501)는 그 위에 상주하는 다수의 애플리케이션들에 의해 액세스가능한 로컬 파일 시스템을 갖는 컴퓨팅 디바이스이다. 클라이언트 디바이스(1502)는 컴퓨팅 디바이스이며, 여기에서 콘텐트 아이템들은 오로지 특정 애플리케이션에 대해서만 또는 특정 애플리케이션에 의해 주어진 허가에 의해서만 액세스가능하며, 콘텐트 아이템들은 전형적으로 애플리케이션 특정 공간 내에 또는 클라우드 내에 저장된다. 클라이언트 디바이스(1503)는 웹 브라우저를 통해 콘텐트 관리 시스템(110)을 액세스하며 웹 인터페이스를 통해 콘텐트 아이템들을 액세스하는 임의의 클라이언트 디바이스이다. 예시적인 클라이언트 디바이스들(1501, 1502, 및 1503)은 랩탑, 모바일 디바이스, 또는 웹 브라우저와 같은 폼 팩터들로 도시되지만, 이의 설명들이 이러한 예시적인 폼 팩터들의 디바이스들로 한정되지 않는다는 것이 이해되어야만 한다. 예를 들어, 클라이언트(1502)와 같은 모바일 디바이스는 상주하는 다수의 애플리케이션들에 의해 액세스될 수 있는 로컬 파일 시스템을 가질 수 있거나 또는 클라이언트(1502)는 웹 브라우저를 통해 콘텐트 관리 시스템(110)을 액세스할 수 있다. 이와 같이, 폼 팩터는 클라이언트(150)의 성능을 고려할 때 제한적으로 간주되지 않아야 한다. 클라이언트 디바이스(150)와 관련하여 본원에서 설명되는 하나 이상의 기능들은 디바이스의 특정 성능들에 의존하여 매 클라이언트 디바이스 상에서 이용가능하거나 또는 이용가능하지 않을 수 있다 - 파일 액세스 모델은 이러한 하나의 성능이다.
다수의 실시예들에 있어서, 클라이언트 디바이스들은 콘텐트 관리 시스템(110)의 계정과 연관되지만, 일부 실시예들에 있어서, 클라이언트 디바이스들은 공유 링크들을 사용하여 콘텐트를 액세스하고 계정을 필요로 하지 않을 수 있다.
이상에서 언급된 바와 같이, 일부 클라이언트 디바이스들은 웹 브라우저를 사용하여 콘텐트 관리 시스템(110)을 액세스할 수 있다. 그러나, 클라이언트 디바이스들은 또한 클라이언트 디바이스(150)에 저장되어 클라이언트 디바이스 상에서 구동되는 클라이언트 애플리케이션(152)을 사용하여 콘텐트 관리 시스템(110)을 액세스할 수 있다. 클라이언트 애플리케이션(152)은 클라이언트 동기화 서비스(156)를 포함할 수 있다.
클라이언트 동기화 서비스(156)는 클라이언트 디바이스(150)와 콘텐트 관리 시스템(110) 사이에 콘텐트 아이템들에 대한 변화들을 동기화하기 위하여 서버 동기화 서비스(112)와 통신하고 있을 수 있다.
클라이언트 디바이스(150)는 클라이언트 동기화 서비스(156)를 통해 콘텐트 관리 시스템(110)과 콘텐트를 동기화할 수 있다. 동기화는 플랫폼에 구애받지 않을 수 있다. 즉, 콘텐트는 다양한 유형, 성능, 운영 시스템 등의 다수의 클라이언트 디바이스들에 걸쳐 동기화될 수 있다. 클라이언트 동기화 서비스(156)는 클라이언트 디바이스(150)의 파일 시스템의 지정된 위치 내의 콘텐트 아이템들에 대한 임의의 변화들(신규, 삭제된, 수정된, 복사된, 또는 이동된 콘텐트 아이템들)을 동기화할 수 있다.
콘텐트 아이템들은 클라이언트 디바이스(150)로부터 콘텐트 관리 시스템(110)으로 그리고 이의 역으로 동기화될 수 있다. 동기화가 클라이언트 디바이스(150)로부터 콘텐트 관리 시스템(110)으로 이루어지는 실시예들에 있어서, 클라이언트 동기화 서비스(156)가 모니터링되는 폴더들 내의 파일들에 대한 변화들에 대하여 클라이언트 디바이스(150) 상의 디렉토리를 모니터링할 수 있는 동안 사용자는 클라이언트 디바이스(150)의 파일 시스템으로부터 직접적으로 콘텐트 아이템들을 조작할 수 있다.
클라이언트 동기화 서비스(156)가 그것이 모니터링하는 디렉토리 내의 콘텐트의 기입, 이동, 복사, 또는 삭제를 검출할 때, 클라이언트 동기화 서비스(156)는 변화들을 콘텐트 관리 시스템 서비스(116)로 동기화할 수 있다. 일부 실시예들에 있어서, 클라이언트 동기화 서비스(156)는, 콘텐트 아이템을 블록들로 분할하는 것, 고유 식별자를 생성하기 위하여 콘텐트 아이템을 해시하는 것 등과 같은 이상에서 다루어진 기능들을 포함하는 콘텐트 관리 시스템 서비스(116)의 일부 기능들을 수행할 수 있다. 클라이언트 동기화 서비스(156)는 클라이언트 저장 인덱스(164) 내에 콘텐트를 인덱싱(index)할 수 있으며, 결과를 저장 인덱스(164)내에 세이브(save)할 수 있다. 인덱싱은 경로들에 더하여 고유 서버 식별자를 저장하는 것을 포함할 수 있으며, 고유 클라이언트 식별자는 각각의 콘텐트 아이템에 대한 것이다. 일부 실시예들에 있어서, 클라이언트 동기화 서비스(156)는 서버 동기화 서비스(112)로부터 고유 서버 식별자를 학습하고, 클라이언트 디바이스(150)의 운영 시스템으로부터 고유 클라이언트 식별자를 학습한다.
클라이언트 동기화 서비스(156)는 콘텐트 관리 시스템(110)의 사용자 계정과 연관된 콘텐트와 클라이언트 저장부 내의 콘텐트의 적어도 일 부분의 동기화를 가능하게 하기 위하여 저장 인덱스(164)를 사용할 수 있다. 예를 들어, 클라이언트 동기화 서비스(156)는 저장 인덱스(164)와 콘텐트 관리 시스템(110)을 비교할 수 있으며, 클라이언트 저장부 상의 콘텐트와 콘텐트 관리 시스템(110) 상의 사용자 계정과 연관된 콘텐트 사이의 차이점을 검출할 수 있다. 그러면, 클라이언트 동기화 서비스(156)는 클라이언트 저장부 상의 콘텐트를 적절하게 업로딩하거나, 다운로딩하거나, 수정하거나, 삭제함으로써 차이점들을 일치시키려고 시도할 수 있다. 콘텐트 저장 서비스(116)는 콘텐트 아이템에 대한 변화된 또는 신규 블록을 저장하고 서버 파일 저널(148), 메타데이터 데이터베이스(146), 콘텐트 디렉토리(144), 콘텐트 저장부(142), 계정 데이터베이스(140) 등을 적절하게 업데이트할 수 있다.
콘텐트 관리 시스템(110)으로부터 클라이언트 디바이스(150)로 동기화할 때, 서버 파일 저널(148) 내에 기록된 콘텐트 아이템의 마운트(mount), 수정, 추가, 삭제, 이동은 통지 서비스(117)를 사용하여 통지가 클라이언트 디바이스(150)로 전송되도록 트리거(trigger)할 수 있다. 클라이언트 디바이스(150)가 변화를 통지받을 때, 클라이언트 디바이스에 알려진 마지막 동기화 포인트로부터 서버 파일 저널(148) 내에 리스트된 요청이 변화한다. 클라이언트 디바이스(150)가 이것이 콘텐트 관리 시스템(110)과 동기가 어긋났다(out of synchronization)고 결정할 때, 클라이언트 동기화 서비스(156)는 변화들을 포함하는 콘텐트 아이템 블록들을 요청하고, 그것의 변화된 콘텐트 아이템들의 로컬 카피를 업데이트한다.
일부 실시예들에 있어서, 저장 인덱스(164)는 트리 데이터 구조체들을 저장하며, 여기에서 하나의 트리는 서버 동기화 서비스(112)에 따라 디렉토리의 최신 표현을 반영하고, 반면 다른 트리는 클라이언트 동기화 서비스(156)에 따라 디렉토리의 최신 표현을 반영한다. 클라이언트 동기화 서비스는, 서버 동기화 서비스(112)로부터 데이터를 요청함으로써 또는 클라이언트 디바이스(150) 상의 변화들을 콘텐트 관리 시스템(110)으로 커밋(commit)함으로써 트리 구조체들이 일치한다는 것을 보장하도록 작동할 수 있다.
때때로, 클라이언트 디바이스(150)가 이용가능한 네트워크 연결을 갖지 않을 수 있다. 이러한 시나리오에서, 클라이언트 동기화 서비스(156)는 콘텐트 아이템 변화들에 대하여 링크된 수집물을 모니터링하고, 이후에 네트워크 연결이 이용가능할 때 콘텐트 관리 시스템(110)에 대한 동기화를 위해 이러한 변화들을 큐잉(queue)할 수 있다. 유사하게, 사용자는 수동으로 콘텐트 관리 시스템(110)과의 동기화를 시작하거나, 중지하거나, 일시 정지하거나, 또는 재개할 수 있다.
콘텐트 동기화 서비스(156)는 콘텐트 관리 시스템(110) 상의 특정 사용자 계정과 연관된 모든 콘텐트를 동기화할 수 있다. 대안적으로, 클라이언트 동기화 서비스(156)는 콘텐트 관리 시스템(110) 상의 특정 사용자 계정과 연관된 전체 콘텐트 중의 콘텐트의 일 부분을 선택적으로 동기화할 수 있다. 콘텐트의 일 부분만을 선택적으로 동기화하는 것은 클라이언트 디바이스(150) 상의 공간을 보존하고 대역폭을 절약할 수 있다.
일부 실시예들에 있어서, 클라이언트 동기화 서비스(156)는 선택적으로 특정 사용자 계정과 연관된 콘텐트의 일 부분을 저장하며, 콘텐트의 나머지 부분에 대하여 클라이언트 저장부 내에 플레이스홀더(placeholder) 콘텐트 아이템들을 저장한다. 예를 들어, 클라이언트 동기화 서비스(156)는, 콘텐트 관리 시스템(110) 상의 그것의 개별적인 완전한 콘텐트 아이템의 동일한 파일명, 경로, 확장, 메타데이터를 갖지만 완전한 콘텐트 아이템의 데이터가 없는 플레이스홀더 콘텐트 아이템을 저장할 수 있다. 플레이스홀더 콘텐트 아이템은 수 바이트 또는 그 이하의 크기일 수 있으며, 반면 개별적인 완전한 콘텐트 아이템은 훨씬 더 클 수 있다. 클라이언트 디바이스(150)가 콘텐트 아이템을 액세스하려고 시도한 이후에, 클라이언트 동기화 서비스(156)는 콘텐트 관리 시스템(110)으로부터 콘텐트 아이템의 데이터를 검색하고, 액세스 중인 클라이언트 디바이스(150)에 완전한 콘텐트 아이템을 제공할 수 있다. 이러한 접근 방식은, 여전히 콘텐트 관리 시스템(110) 상의 사용자의 콘텐트에 대한 완전한 액세스를 제공하면서 상당한 공간 및 대역폭 절약을 제공할 수 있다.
협동 특징들
콘텐트 관리 시스템(110)의 다른 특징은 사용자들 사이에 협동을 가능하게 하는 것이다. 협동 특징들은 콘텐트 아이템 공유, 콘텐트 아이템들에 대한 코멘팅, 콘텐트 아이템들에 대한 공동-작업, 인스턴스 메시징, 콘텐트 아이템들에 관한 프레즌스(presence) 및 보여진(seen) 상태 정보를 제공하는 것 등을 포함한다.
공유
콘텐트 관리 시스템(110)은 공유 서비스(128)를 통해 콘텐트를 공유하는 것을 관리할 수 있다. 콘텐트에 대한 링크를 제공함으로써 콘텐트를 공유하는 것은 콘텐트 관리 시스템(110)과 통신하고 있는 네트워크 내의 임의의 컴퓨팅 디바이스로부터 콘텐트 아이템을 액세스 가능하게 만드는 것을 포함할 수 있다. 그러나, 일부 실시예들에 있어서, 링크는 콘텐트 관리 시스템(110) 및 액세스 제어 리스트(145)에 의해 집행되는 액세스 제한들과 연관될 수 있다. 콘텐트를 공유하는 것은 또한, 각각의 사용자 계정이 콘텐트 아이템에 대한 액세스를 갖도록 콘텐트 관리 시스템(110) 내의 콘텐트를 (콘텐트 아이템과 연관된 원래의 사용자 계정에 더하여) 적어도 하나의 추가적인 사용자 계정과 공유하기 위해 공유 서비스(128)를 사용하여 콘텐트를 링크하는 것을 포함할 수 있다. 추가적인 사용자 계정은 콘텐트를 수락함으로써 콘텐트에 대한 액세스를 획득할 수 있으며, 그러면 콘텐트는 웹 인터페이스 서비스(124)를 통해 또는 클라이언트 디바이스(150) 상의 그들의 계정과 연관된 디렉토리 구조체 내로부터 직접적으로 액세스될 수 있을 것이다. 공유는 플랫폼에 구애받지 않는 방식으로 수행될 수 있다. 즉, 콘텐트는 다양한 유형, 성능, 운영 시스템 등의 다수의 클라이언트 디바이스들(150)에 걸쳐 공유될 수 있다. 콘텐트는 또한 다양한 유형들의 사용자 계정들에 걸쳐 공유될 수 있다.
콘텐트 관리 시스템(110) 내의 콘텐트 아이템을 공유하기 위하여, 공유 서비스(128)는 콘텐트 아이템과 연관된 액세스 제어 리스트 데이터베이스(145) 내의 콘텐트 엔트리에 사용자 계정 식별자 또는 다수의 사용자 계정 식별자들을 추가하고 그에 따라서 추가된 사용자 계정이 콘텐트 아이템에 액세스하는 것을 승인할 수 있다. 공유 서비스(128)는 또한 콘텐트 아이템에 대한 사용자 계정의 액세스를 제한하기 위하여 콘텐트 엔트리로부터 사용자 계정 식별자들을 제거할 수 있다. 공유 서비스(128)는 또한 액세스 제어 리스트 데이터베이스(145) 내에 콘텐트 아이템 식별자들, 콘텐트 아이템에 대한 액세스가 주어진 사용자 계정 식별자들, 및 액세스 레벨들을 기록할 수 있다. 예를 들어, 일부 실시예들에 있어서, 단일 콘텐트 엔트리와 연관된 사용자 계정 식별자들은 연관된 콘텐트 아이템에 대하여 개별적인 사용자 계정 식별자들에 대한 상이한 허가들을 지정할 수 있다.
콘텐트 관리 시스템(110) 외부에서 콘텐트 아이템들을 공유하기 위하여, 공유 서비스(128)는, 임의의 웹 브라우저가 임의의 인증 없이 콘텐트 관리 시스템(110) 내의 콘텐트 아이템 또는 수집물을 액세스하는 것을 가능하게 하는, 자원 위치 지정자(uniform resource locator; URL)와 같은 커스텀 네트워크 어드레스를 생성할 수 있다. 이를 달성하기 위하여, 공유 서비스(128)는 생성된 URL 내에 콘텐트 식별 데이터를 포함시킬 수 있으며, 이는 이후에 요청된 콘텐트 아이템을 적절하게 식별하고 반환하기 위하여 사용될 수 있다. 예를 들어, 공유 서비스(128)는 생성된 URL 내에 계정 식별자 및 콘텐트 경로 또는 콘텐트 아이템 식별 코드를 포함시킬 수 있다. URL의 선택 시에, URL 내에 포함된 콘텐트 식별 데이터는 콘텐트 관리 시스템(110)으로 송신될 수 있으며, 콘텐트 관리 시스템은 적절한 콘텐트 아이템을 식별하고 콘텐트 아이템을 반환하기 위하여 수신된 콘텐트 식별 데이터를 사용할 수 있다.
URL을 생성하는 것에 더하여, 공유 서비스(128)는 또한 콘텐트 아이템에 대한 URL이 생성되었다는 것을 액세스 제어 리스트 데이터베이스(145) 내에 기록하도록 구성될 수 있다. 일부 실시예들에 있어서, 콘텐트 아이템과 연관된 콘텐트 엔트리는 콘텐트 아이템에 대한 URL이 생성되었는지 여부를 나타내는 URL 플래그를 포함할 수 있다. 예를 들어, URL 플래그는 콘텐트 아이템에 대한 URL이 생성되지 않았다는 것을 나타내기 위하여 처음에 0 또는 거짓(false)으로 설정된 불(Boolean) 값일 수 있다. 공유 서비스(128)는 콘텐트 아이템에 대한 URL을 생성한 이후에 플래그의 값을 1 또는 참(true)으로 변화시킬 수 있다.
일부 실시예들에 있어서, 공유 서비스(128)는 콘텐트 아이템에 대한 URL에 허가들의 세트를 연관시킬 수 있다. 예를 들어, 사용자가 URL을 통해 콘텐트 아이템을 액세스하려고 시도하는 경우, 공유 서비스(128)는 콘텐트 아이템에 대한 허가들의 제한된 세트를 제공할 수 있다. 제한된 허가들의 예들은, 사용자가 콘텐트 아이템을 다운로드할 수 없거나, 콘텐트 아이템을 세이브할 수 없거나, 콘텐트 아이템을 카피할 수 없거나, 콘텐트 아이템을 수정할 수 없는 등의 제한들을 포함한다. 일부 실시예들에 있어서, 제한된 허가들은, 콘텐트 아이템이 지정된 도메인으로부터만, 즉, 회사 네트워크 도메인 내로부터만 또는 지정된 도메인과 연관된 계정들에 의해서만, 예를 들어, 회사 계정과 연관된 계정들(예를 들어, @acme.com)에 의해서만 액세스되도록 허가하는 제한들을 포함한다.
일부 실시예들에 있어서, 공유 서비스(128)는 또한 생성된 URL을 비활성화하도록 구성될 수 있다. 예를 들어, 각각의 콘텐트 엔트리는 생성된 URL로부터의 요청에 응답하여 콘텐트가 반환되어야만 하는지 여부를 나타내는 URL 활성 플래그를 포함할 수 있다. 예를 들어, 공유 서비스(128)는, URL 활성 플래그가 1 또는 참으로 설정된 경우에만 생성된 링크에 의해 요청된 콘텐트 아이템을 반환할 수 있다. 따라서, 이에 대하여 URL이 생성되었던 콘텐트 아이템에 대한 액세스는 URL 활성화 플래그의 값을 변화시킴으로써 용이하게 제한될 수 있다. 이는 사용자가, 콘텐트 아이템을 이동시키거나 또는 생성된 URL을 삭제할 필요 없이 공유된 콘텐트에 대한 액세스를 제한하는 것을 가능하게 한다. 마찬가지로, 공유 서비스(128)는, URL 활성화 플래그의 값을 다시 1 또는 참으로 변화시킴으로써 URL을 재활성화할 수 있다. 따라서, 사용자는 새로운 URL을 생성할 필요 없이 콘텐트 아이템에 대한 액세스를 용이하게 복원할 수 있다.
일부 실시예들에 있어서, 콘텐트 관리 시스템(110)은 콘텐트 아이템을 업로딩하기 위한 URL을 지정할 수 있다. 예를 들어, 사용자 계정을 갖는 제 1 사용자가 이러한 URL을 요청하고, 그 URL을 기여(contributing) 사용자에게 제공하며, 기여 사용자는 그 URL을 사용하여 제 1 사용자의 사용자 계정으로 콘텐트 아이템을 업로드할 수 있다.
팀 서비스
일부 실시예들에 있어서, 콘텐트 관리 시스템(110)은 팀 서비스(130)를 포함한다. 팀 서비스(130)는 사용자 계정들의 정의된 팀들의 생성하고 관리하기 위한 기능을 제공할 수 있다. 팀들은 서브-팀들(예를 들어, 비지니스 유닛들, 또는 프로젝트 팀들 등)을 갖는 상태로 회사에 대하여 생성될 수 있으며, 팀들 및 서브-팀들에 할당된 사용자 계정들은 사용자 계정들의 임의의 정의된 그룹에 대하여 생성될 수 있다. 팀 서비스(130)는 팀에 대한 공통 공유 공간, 사적 사용자 계정 폴더들, 및 액세스 제한 공유 폴더들을 제공할 수 있다. 팀 서비스는 또한 관리자가 팀 내에서 수집물들 및 콘텐트 아이템들을 관리하기 위한 관리 인터페이스를 제공할 수 있으며, 팀과 연관된 사용자 계정들을 관리할 수 있다.
인가 서비스
일부 실시예들에 있어서, 콘텐트 관리 시스템(110)은 인가 서비스(132)를 포함한다. 인가 서비스(132)는, 명칭공간을 액세스하려고 시도하는 사용자 계정이 명칭공간을 액세스하기 위한 적절한 권리들을 갖는다는 것을 보장한다. 인가 서비스(132)는 명칭공간을 액세스하기 위한 요청 다음에 클라이언트 애플리케이션(152)으로부터 토큰을 수신할 수 있으며, 사용자 계정에 허가된 능력들을 반환할 수 있다. 다수의 레벨들의 액세스를 갖는 사용자 계정들(예를 들어, 사용자 권리들 및 관리자 권리들을 갖는 사용자 계정)에 대하여, 인가 서비스(132)는 또한 관리자들에 의한 비의도적 액션들을 회피하기 위해 명시적인 특권 상승을 필요로 할 수 있다.
프레즌스 및 보여진 상태
일부 실시예들에 있어서, 콘텐트 관리 시스템은, 콘텐트 아이템을 공유하는 사용자들이 콘텐트 아이템과 어떻게 상호작용하고 있는지 또는 상호작용하였는지에 대한 정보를 제공할 수 있다. 일부 실시예들에 있어서, 콘텐트 관리 시스템(110)은 콘텐트 아이템을 공유하는 사용자가 현재 콘텐트 아이템을 보고 있다는 것을 보고할 수 있다. 예를 들어, 클라이언트 협동 서비스(160)는, 클라이언트 디바이스(150)가 콘텐트 아이템을 액세스할 때 통지 서비스(117)에 통지할 수 있다. 그러면, 통지 서비스(117)는 콘텐트 아이템에 대하여 클라이언트 디바이스(150)의 사용자의 프레즌스의 동일한 콘텐트 아이템에 대한 액세스를 갖는 다른 사용자들의 모든 클라이언트 디바이스들로 통지할 수 있다.
일부 실시예들에 있어서, 콘텐트 관리 시스템(110)은 공유 콘텐트 아이템과의 사용자 상호작용의 히스토리를 보고할 수 있다. 협동 서비스(126)는, 사용자가 콘텐트 아이템을 세이브했다는 것, 사용자가 아직 콘텐트 아이템을 보고 있다는 것 등을 결정하기 위하여 메타데이터 데이터베이스(146) 및 서버 파일 저널(148)과 같은 데이터 소스들에 질의할 수 있으며, 다른 사용자들이 누가 현재 콘텐트 아이템을 보고 있는지 또는 보았는지 또는 수정했는지를 알 수 있도록 통지 서비스(117)를 사용하여 다른 사용자들에게 이러한 상태 정보를 전파할 수 있다.
협동 서비스(126)는, 심지어 콘텐트 아이템이 천성적으로 코멘팅 기능을 갖지 않는 경우에도 콘텐트와 연관된 코멘트들을 가능하게 할 수 있다. 이러한 코멘트들은 메타데이터 데이터베이스(146) 내에 저장될 수 있다.
협동 서비스(126)는 사용자들에 대한 통지들을 발생시키고 이를 송신할 수 있다. 예를 들어, 사용자는 코멘트에서 다른 사용자를 언급할 수 있으며, 협동 서비스(126)는 통지를 코멘트에서 언급된 그 사용자에게 전송할 수 있다. 콘텐트 아이템을 삭제하는 것, 콘텐트 아이템을 공유하는 것 등을 포함하는 다양한 다른 콘텐트 아이템 이벤트들이 통지들을 트리거할 수 있다.
협동 서비스(126)는, 이에 의해 사용자가 인스턴스 메시지들, 음성 호들, 이메일들 등을 전송하고 수신할 수 있는 메시징 플랫폼을 제공할 수 있다.
협동 콘텐트 아이템들
일부 실시예들에 있어서, 콘텐트 관리 서비스는 또한, 이에 의해 사용자가 동시에 협동 콘텐트 아이템들을 생성하고, 협동 콘텐트 아이템들에 코멘트하며, 협동 콘텐트 아이템들 내의 태스크들을 병합할 수 있는 상호작용식 콘텐트 아이템 협동 플랫폼을 제공할 수 있는 협동 문서 서비스(134)를 포함할 수 있다. 협동 콘텐트 아이템들은 사용자가 협동 콘텐트 아이템 에디터(editor)를 사용하여 생성하고 편집할 수 있는 파일들일 수 있으며, 협동 콘텐트 아이템 엘리먼트들을 포함할 수 있다. 협동 콘텐트 아이템 엘리먼트들은 협동 콘텐트 아이템 식별자, 하나 이상의 저자 식별자들, 협동 콘텐트 아이템 텍스트, 협동 콘텐트 아이템 속성들, 상호작용 정보, 코멘트들, 공유 사용자들 등을 포함할 수 있다. 협동 콘텐트 아이템 엘리먼트들은 데이터베이스 엔티티들로서 저장될 수 있으며, 이는 협동 콘텐트 아이템들을 탐색하고 검색하는 것을 가능하게 한다. 다수의 사용자들은 동시에 또는 상이한 시점들에 협동 콘텐트 아이템들을 액세스하며, 보고, 편집하며, 협동할 수 있다. 일부 실시예들에 있어서, 이는 2명의 사용자들이 웹 인터페이스를 통해 콘텐트 아이템을 액세스할 것을 요구함으로써 관리될 수 있으며, 여기에서 이들은 동시에 콘텐트 아이템의 동일한 카피 상에서 작업할 수 있다.
협동 컴패니언(Companion) 인터페이스
일부 실시예들에 있어서, 클라이언트 협동 서비스(160)는, 클라이언트 디바이스(150) 상에 제시되고 있는 콘텐트 아이템과 관련된 정보를 디스플레이하기 위한 목적을 위한 네이티브 애플리케이션 컴패니언 인터페이스를 제공할 수 있다. 콘텐트 아이템이 클라이언트 디바이스(150) 상에 저장되고 실행되는 네이티브 애플리케이션에 의해 액세스되는 실시예들에 있어서, 여기에서 콘텐트 아이템은, 콘텐트 아이템이 콘텐트 애플리케이션(152)에 의해 관리되도록 클라이언트 디바이스(150)의 파일 시스템의 지정된 위치 내에 존재하며, 네이티브 애플리케이션은 이상에서 다루어진 협동 데이터를 디스플레이하기 위한 임의의 네이티브 방식을 제공하지 않을 수 있다. 이러한 실시예들에 있어서, 클라이언트 협동 서비스(160)는 사용자가 콘텐트 아이템을 열었다는 것을 검출할 수 있으며, 협동 데이터와 같은 콘텐트 아이템에 대한 추가적인 정보를 갖는 오버레이(overlay)를 제공할 수 있다. 예를 들어, 추가적인 정보는 콘텐트 아이템에 대한 코멘트들, 콘텐트 아이템의 상태, 이전에 또는 현재 콘텐트 아이템을 보고 있는 다른 사용자들의 활동을 포함할 수 있다. 이러한 오버레이는, 다른 사용자가 현재 콘텐트 아이템을 편집하고 있기 때문에 변화들이 상실될 수 있음을 사용자에게 경고할 수 있다.
일부 실시예들에 있어서, 이상에서 논의된 서비스들 또는 저장부들/데이터베이스들 중 하나 이상은 공중 또는 사설 애플리케이션 프로그래밍 인터페이스들을 사용하여 액세스될 수 있다.
특정 소프트웨어 애플리케이션들은 사용자를 대신하여 API를 통해 콘텐트 저장부(142)를 액세스할 수 있다. 예를 들어, 클라이언트 디바이스(150) 상에서 실행되는 애플리케이션과 같은 소프트웨어 패키지는, 사용자가, 콘텐트를 판독하거나, 기입하거나, 생성하거나, 삭제하거나, 공유하거나 또는 달리 조작하기 위하여 인증 증명서를 제공할 때, 콘텐트 관리 시스템(110)에 대하여 직접적으로 API 호출들을 프로그램적으로 만들 수 있다.
사용자는, 웹 인터페이스 서비스(124)에 의해 생성되고 서비스되는 웹 인터페이스를 통해 사용자 계정에 저장된 콘텐트를 보거나 또는 조작할 수 있다. 예를 들어, 사용자는 콘텐트 관리 시스템(110)에 의해 제공되는 웹 어드레스로 웹 브라우저 내에서 네비게이션할 수 있다. 콘텐트 아이템의 새로운 버전을 업로딩하는 것과 같은, 웹 인터페이스를 통해 이루어진 콘텐트 저장부(142) 내의 콘텐트에 대한 변화들 또는 업데이트들이 다시 사용자의 계정과 연관된 다른 클라이언트 디바이스들로 전파될 수 있다. 예를 들어, 각기 그들 자체의 클라이언트 소프트웨어를 갖는 다수의 클라이언트 디바이스들은 단일 계정과 연관될 수 있으며, 계정 내의 콘텐트 아이템들은 다수의 클라이언트 디바이스들 사이에서 동기화될 수 있다.
클라이언트 디바이스(150)는 사용자를 대신하여 콘텐트 관리 시스템(110)에 연결할 수 있다. 예를 들어, 클라이언트 디바이스(150)가 데스크탑 또는 랩탑 컴퓨터, 전화기, 텔레비전, 사물 인터넷 디바이스 등일 때, 사용자는 클라이언트 디바이스(150)와 직접적으로 상호작용할 수 있다. 대안적으로 또는 추가적으로, 클라이언트 디바이스(150)는, 예를 들어, 클라이언트 디바이스(150)가 서버일 때, 사용자가 클라이언트 디바이스(150)에 대한 물리적인 액세스를 갖지 않고, 사용자를 대신하여 행동할 수 있다.
클라이언트 디바이스(150)의 일부 특징들은 클라이언트 디바이스(150) 상에 설치된 애플리케이션에 의해 가능해진다. 일부 실시예들에 있어서, 애플리케이션은 콘텐트 관리 시스템 특정 컴포넌트를 포함할 수 있다. 예를 들어, 콘텐트 관리 시스템 특정 컴포넌트는 독립형 애플리케이션(152), 하나 이상의 애플리케이션 플러그-인(plug-in)들, 및/또는 브라우저 확장(browser extension)일 수 있다. 그러나, 사용자는 또한, 클라이언트 디바이스(150) 상에 상주하며 콘텐트 관리 시스템(110)과 통신하도록 구성된, 웹 브라우저와 같은 제 3 자 애플리케이션을 통해 콘텐트 관리 시스템(110)과 상호작용할 수 있다. 다양한 구현예들에 있어서, 클라이언트-측 애플리케이션(152)은 사용자가 콘텐트 관리 시스템(110)과 상호작용하기 위한 사용자 인터페이스(user interface; UI)를 제공할 수 있다. 예를 들어, 사용자는 파일 시스템과 통합된 파일 시스템 익스플로러를 통해 또는 웹 브라우저 애플리케이션을 사용하여 디스플레이되는 웹페이지를 통해 콘텐트 관리 시스템(110)과 상호작용할 수 있다.
일부 실시예들에 있어서, 클라이언트 애플리케이션(152)은 콘텐트 관리 시스템(110)의 2개 이상의 계정에 대하여 콘텐트를 관리하고 동기화하도록 구성될 수 있다. 이러한 실시예들에 있어서, 클라이언트 애플리케이션(152)은 다수의 계정들에 로그 인한 채로 남아 있고 다수의 계정들에 대하여 정상 서비스들을 제공할 수 있다. 일부 실시예들에 있어서, 각각의 계정은 파일 시스템 내에 폴더로서 나타날 수 있으며, 그 폴더 내의 모든 콘텐트 아이템들은 콘텐트 관리 시스템(110)과 동기화될 수 있다. 일부 실시예들에 있어서, 클라이언트 애플리케이션(152)은 다수의 계정들 중 하나를 주 계정 또는 기본 계정으로 선택하기 위한 선택기를 포함할 수 있다.
콘텐트 관리 시스템(110)이 특정 컴포넌트들을 가지고 제공되지만, 시스템(100)의 아키텍처적 구성이 단지 하나의 가능한 구성이며, 더 많거나 또는 더 적은 컴포넌트들을 갖는 다른 구성들이 가능하다는 것이 당업자에 의해 이해되어야 한다. 추가로, 서비스는, 심지어 다른 서비스와 함께 설명된 기능을 포함하여 더 많거나 또는 더 적은 기능을 가질 수 있다. 또한, 일 실시예에 대하여 본원에서 설명되는 특징들은 다른 실시예에 대하여 설명된 특징들과 결합될 수 있다.
시스템(100)이 특정 컴포넌트들을 가지고 제공되지만, 시스템(100)의 아키텍처적 구성이 단지 하나의 가능한 구성이며, 더 많거나 또는 더 적은 컴포넌트들을 갖는 다른 구성들이 가능하다는 것이 당업자에 의해 이해되어야 한다.
클라이언트 동기화 서비스
도 2는 일부 실시예들에 따른 클라이언트 동기화 서비스(156)의 일 예를 도시한다. 일부 실시예들에 따르면, 클라이언트 동기화 서비스(156)는 도 1의 클라이언트 디바이스 내에 구현될 수 있다. 그러나, 다른 실시예들에 있어서, 클라이언트 동기화 서비스(156)는 다른 컴퓨팅 디바이스 상에 구현될 수 있다. 클라이언트 동기화 서비스(156)는, 클라이언트 동기화 서비스(156)가 실행되는 클라이언트 디바이스와 콘텐트 관리 시스템 사이에서 콘텐트 아이템들에 대한 변화들을 동기화하도록 구성된다.
클라이언트 동기화 서비스(156)는 파일 시스템 인터페이스(205), 서버 인터페이스(210), 트리 저장부(220), 플래너(planner)(225), 및 스케줄러(scheduler)(230)를 포함할 수 있다. 추가적인 또는 대안적인 컴포넌트들이 또한 포함될 수 있다. 클라이언트 동기화 서비스(156)의 고 레벨 설명들 및 그것의 컴포넌트들은 이하에서 도 2와 관련하여 논의된다. 그러나, 클라이언트 동기화 서비스(156) 및 그것의 컴포넌트들의 추가적인 세부사항들 및 실시예들이 전체에 걸쳐 논의된다.
파일 시스템 인터페이스(205)는 클라이언트 디바이스의 로컬 파일시스템 상에서 콘텐트 아이템들에 대한 변화들을 프로세싱하고 로컬 트리를 업데이트하도록 구성된다. 예를 들어, 파일 시스템 인터페이스(205)는 클라이언트 디바이스의 로컬 파일시스템 상의 콘텐트 아이템들에 대한 변화들을 검출하기 위하여 도 1의 클라이언트 동기화 서비스(156)와 통신하고 있을 수 있다. 변화들은 또한 도 1의 클라이언트 애플리케이션(152)을 통해 이루어지고 검출될 수 있다. 파일 시스템 인터페이스(205)는 로컬 트리에 대한 업데이트들을 수행할 수 있다. 로컬 트리에 대한 업데이트들은 클라이언트 디바이스 상의 콘텐트 아이템들에 대한 변화들(신규, 삭제된, 수정된, 복사된, 재명명된, 또는 이동된 콘텐트 아이템들)에 기초하여 이루어질 수 있다.
서버 인터페이스(210)는 콘텐트 관리 시스템의 원격 저장부에서의 콘텐트 아이템들에 대한 원격 변화들의 프로세싱 및 원격 트리의 업데이팅을 보조하도록 구성된다. 예를 들어, 서버 인터페이스(210)는 클라이언트 디바이스(150)와 콘텐트 관리 시스템(110) 사이에 변화들을 동기화하기 위하여 도 1의 서버 동기화 서비스(112)와 통신하고 있을 수 있다. 콘텐트 관리 시스템(110)에서의 콘텐트 아이템들에 대한 변화들(신규, 삭제된, 수정된, 복사된, 재명명된, 또는 이동된 콘텐트 아이템들)이 검출될 수 있으며, 콘텐트 관리 시스템(110)에서 변화들을 반영하기 위하여 원격 트리에 대한 업데이트들이 이루어질 수 있다.
트리 저장부(220)는 클라이언트 동기화 서비스(156)에 의해 사용되는 트리 데이터 구조체들을 저장하고 유지하도록 구성된다. 예를 들어, 트리 저장부(220)는 로컬 트리, 싱크 트리, 및 원격 트리를 저장할 수 있다. 일부 실시예들에 따르면, 트리 저장부(220)는 레이턴시 및 반응 시간을 감소시키기 위하여 메인 메모리(예를 들어, RAM 또는 다른 1차 저장 디바이스)뿐만 아니라 영구 메모리(예를 들어, 하드 디스크 또는 다른 2차 저장 디바이스) 내에 트리 데이터 구조체들을 저장할 수 있다. 예를 들어, 클라이언트 디바이스 또는 클라이언트 동기화 서비스(156)의 기동 시에, 트리 데이터 구조체는 영구 메모리로부터 검색되어 메인 메모리 내로 로딩될 수 있다. 트리 저장부(220)는 메인 메모리 상에서 트리 데이터 구조체들을 액세스하고 업데이트할 수 있으며, 클라이언트 디바이스 또는 클라이언트 동기화 서비스(156)가 셧 다운(shut down)되기 이전에, 트리 저장부(220)는 영구 메모리 상에 업데이트된 트리 데이터 구조체들을 저장할 수 있다. 메인 메모리가 비용이 비싸고 흔히 대부분의 클라이언트 디바이스들 상에서 크기가 제한되기 때문에, 메인 메모리 상에서의 트리 데이터 구조체들의 풋프린트(footprint)를 감소시키기 위하여 추가적인 기술적 개선들이 구현된다. 이러한 기술적 해법들이 이하에서 추가로 설명된다.
플래너(225)는 트리 데이터 구조체들의 상태에 기초하여 클라이언트 디바이스와 연관된 파일 시스템 상태와 콘텐트 관리 시스템과 연관된 서버 상태 사이의 차이점을 검출하도록 구성된다. 예를 들어, 플래너(225)는 원격 트리와 싱크 트리 사이에 차이가 존재하는지 여부를 결정할 수 있다. 원격 트리와 싱크 트리 사이의 차이는, 콘텐트 관리 시스템에서 저장된 하나 이상의 콘텐트 아이템들에 대하여 원격적으로 수행된 액션이 서버 상태 및 파일 시스템 상태의 동기가 어긋나게끔 했다는 것을 나타낸다. 유사하게, 플래너(225)는 또한 로컬 트리와 싱크 트리 사이에 차이가 존재하는지 여부를 결정할 수 있다. 로컬 트리와 싱크 트리 사이의 차이는, 클라이언트 디바이스 상에 저장된 하나 이상의 콘텐트 아이템들에 대하여 로컬적으로 수행된 액션이 서버 상태 및 파일 시스템 상태의 동기가 어긋나게끔 했다는 것을 나타낸다. 차이가 검출되는 경우, 플래너(225)는 트리 데이터 구조체들을 동기화하는 동작들의 세트를 생성한다.
일부 시나리오들에 있어서, 원격 트리와 싱크 트리 사이의 차이에 기초하여 생성된 동작들의 세트 및 로컬 트리와 싱크 트리 사이의 차이에 기초하여 생성된 동작들의 세트가 충돌할 수 있다. 플래너(225)는 또한 동작들의 2개의 세트들을 동작들의 단일의 병합된 플랜으로 병합하도록 구성될 수 있다.
스케줄러(230)는 동작들의 생성된 플랜을 취하고 이러한 동작들의 실행을 관리하도록 구성된다. 일부 실시예들에 따르면, 스케줄러(230)는 동작들의 플랜 내의 각각의 동작을, 동작을 수행하기 위하여 실행될 필요가 있는 일련의 하나 이상의 태스크들로 변환한다. 일부 시나리오들에 있어서, 일부 태스크들은 유효 기간이 지나게 될 수 있거나 또는 더 이상 관련이 없게 될 수 있다. 스케줄러(230)는 이러한 태스크들을 식별하고 이들을 취소하도록 구성된다.
트리 데이터 구조체들
도 3은 다양한 실시예들에 따른 트리 데이터 구조체들의 일 예를 도시한다. 트리 데이터 구조체들은 클라이언트 디바이스에 저장되고 도 2에 도시된 클라이언트 동기화 서비스(156)와 같은 클라이언트 동기화 서비스에 의해 관리될 수 있다. 도 3에서, 트리 데이터 구조체는 원격 트리(310), 싱크 트리(330), 및 로컬 트리(350)를 포함하여 도시된다.
원격 트리(310)는 클라이언트 디바이스로부터 원격에 저장된(예를 들어, 콘텐트 관리 시스템의 서버 상에 저장된) 콘텐트 아이템들의 상태 또는 서버 상태를 나타낸다. 로컬 트리(350)는 클라이언트 디바이스 상에 로컬적으로 저장된 대응하는 콘텐트 아이템들의 상태 또는 파일 시스템 상태를 나타낸다. 싱크 트리(330)는 로컬 트리와 원격 트리에 대한 병합 베이스를 나타낸다. 병합 베이스는 로컬 트리와 원격 트리의 공통 조상 또는 로컬 트리와 원격 트리 사이의 마지막으로 알려진 동기화된 상태로서 여겨질 수 있다.
각각의 트리 데이터 구조체(예를 들어, 원격 트리(310), 싱크 트리(330), 또는 로컬 트리(350))는 하나 이상의 노드들을 포함할 수 있다. 각각의 노드는 하나 이상의 자식 노드들을 가질 수 있으며, 부모-자식 관계가 에지에 의해 표현된다. 예를 들어, 원격 트리(310)는 노드들(312 및 314)을 포함한다. 노드(312)는 노드(314)의 부모이며, 노드(314)는 노드(312)의 자식이다. 이러한 부모-자식 관계는 에지(316)에 의해 표현된다. 루트 노드, 예컨대 루트 노드(312)는 부모 노드를 갖지 않는다. 리프(leaf) 노드, 예컨대 노드(314)는 자식 노드를 갖지 않는다.
트리 데이터 구조체 내의 각각의 노드는 콘텐트 아이템(예를 들어, 파일, 문서, 폴더 등)을 나타낼 수 있다. 예를 들어, 루트 노드(312)는 콘텐트 관리 시스템과 연관된 루트 폴더를 나타낼 수 있으며, 노드(314)는 그 루트 폴더 내에 위치된 파일(예를 들어, "Foo.txt"라는 명칭의 텍스트 파일)을 나타낼 수 있다. 트리 데이터 구조체 내의 각각의 노드는, 예를 들어, 콘텐트 아이템의 부모 노드의 파일 식별자를 지정하는 디렉토리 파일 식별자(directory file identifier; "DirFileID"), 콘텐트 아이템에 대한 파일명, 콘텐트 아이템에 대한 파일 식별자, 및 콘텐트 아이템에 대한 메타데이터와 같은 데이터를 포함할 수 있다.
이상에서 설명된 바와 같이, 클라이언트 동기화 서비스는, 3개의 트리들(예를 들어, 원격 트리(310), 싱크 트리(330), 및 로컬 트리(350)) 모두가 동일할 때 서버 상태와 클라이언트 디바이스의 파일 시스템 상태가 동기화되었다고 결정할 수 있다. 다시 말해서, 트리들은, 그들의 트리 구조체들 및 이들이 표현하는 관계들이 동일하고 그들의 노드들 내에 포함된 데이터가 마찬가지로 동일할 때, 동기화된다. 반대로, 3개의 트리들이 동일하지 않은 경우 트리들은 동기화되지 않는다. 도 3에 예시된 예시적인 시나리오에 있어서, 원격 트리(310), 싱크 트리(330), 및 로컬 트리(350)는 동일하고 동기화된 것으로서 도시되며, 결과적으로, 서버 상태 및 파일 시스템 상태가 동기화된다.
트리 데이터 구조체들을 사용하는 변화들의 추적
도 4는 다양한 실시예들에 따른 트리 데이터 구조체의 일 예를 도시한다. 도 3에 도시된 트리 데이터 구조체들과 마찬가지로, (원격 트리(410), 싱크 트리(430), 및 로컬 트리(450)를 포함하는) 도 4에 도시된 트리 데이터 구조체들은 클라이언트 디바이스에 저장되고 도 2의 클라이언트 동기화 서비스(156)와 같은 클라이언트 동기화 서비스에 의해 관리될 수 있다. 도 4에서, 트리 데이터 구조체들이 도시된다.
도 4는 도 3에 예시된 시나리오와 같은 이전에 동기화된 상태 이후의 시나리오를 도시하며, 콘텐트 아이템들을 수정하기 위해 트리들 내에 표현된 콘텐트 아이템들에 대하여 추가적인 액션들이 수행되었으며 그 결과 트리들이 더 이상 동기가 맞지 않는다. 싱크 트리(430)는 이전에 알려진 동기화된 상태의 표현을 유지하며, 이는, 서버 상태와 파일 시스템 상태가 동기화되도록, 서버 상태와 시스템 상태 사이의 차이들을 식별하기 위하여 그리고 또한 콘텐트 관리 시스템 및/또는 클라이언트 디바이스가 수렴하기 위하여 수행하기 위한 동작들을 생성하기 위하여 클라이언트 동기화 서비스에 의해 사용될 수 있다.
예를 들어, 사용자(클라이언트 디바이스와 연관된 사용자와 동일한 사용자 또는 콘텐트 아이템에 대한 액세스를 갖는 상이한 사용자)는 콘텐트 관리 시스템에 의해 저장된 "foo.txt" 콘텐트 아이템에 대한 수정들을 수행할 수 있다. 이러한 콘텐트 아이템은 원격 트리(410) 내의 노드(414)에 의해 표현된다. 원격 트리(410) 내에 도시된 수정은 foo.txt 콘텐트 아이템의 제거(예를 들어, 콘텐트 관리 시스템에 의해 관리되는 공간으로부터의 콘텐트 아이템의 제거) 또는 삭제이다. 이러한 수정들은, 예를 들어, 다른 클라이언트 디바이스 상에서 수행될 수 있으며, 그런 다음 콘텐트 관리 시스템으로 동기화되거나 또는 콘텐트 관리 시스템에 연결된 웹 브라우저를 통해 수행될 수 있다.
콘텐트 관리 시스템 상에서 변화가 이루어질 때, 콘텐트 관리 시스템은 이루어진 변화를 명시하는 수정 데이터를 생성하고 수정 데이터를 클라이언트 디바이스 상의 클라이언트 동기화 서비스로 송신한다. 예를 들어, 콘텐트 관리 시스템이 클라이언트 디바이스로 일방적으로 변화들을 송신하거나 또는 "푸시"할 수 있는 푸시 모델을 사용하는 것. 다른 구현예들에 있어서, 클라이언트 디바이스에 의한 요청에 응답하여 서버가 변환들을 전송하는 풀링(pull) 모델. 추가적으로, 클라이언트 디바이스가 요청들을 개시하지만 시간의 일정한 기간 동안 연결을 오픈된 채로 유지하며 그에 따라서 콘텐트 관리 시스템이 연결이 살아있는 동안 필요에 따라 추가적인 변화들을 푸시할 수 있는 롱 풀링(long pull)을 수반하는 하이브리드 모델. 클라이언트 동기화 서비스는 수정 데이터에 기초하여 콘텐트 관리 시스템에 의해 저장된 콘텐트 아이템들에 대한 서버 상태를 나타내는 원격 트리를 업데이트한다. 예를 들어, 원격 트리(410) 내에서, foo.txt 콘텐트 아이템을 나타내는 노드(414)가 삭제된 것으로서 도시된다.
클라이언트 동기화 서비스는 원격 트리(410)와 싱크 트리(430) 사이의 차이를 식별하고, 결과적으로, 콘텐트 관리 시스템에서의 콘텐트 아이템들의 수정이 서버 상태 및 파일 시스템 상태의 동기가 더 이상은 맞지 않게끔 했다는 것을 결정할 수 있다. 클라이언트 동기화 서비스는 추가로, 이들이 동기가 맞춰지도록 서버 상태 및 파일 시스템 상태를 수렴시키도록 구성된 클라이언트 디바이스 상에 저장된 콘텐트 아이템들에 대한 동작들의 세트 또는 시퀀스를 생성하고 실행할 수 있다.
추가적으로 또는 대안적으로, 사용자(콘텐트 관리 시스템에서의 수정들과 연관된 사용자와 동일한 사용자 또는 콘텐트 아이템에 대한 액세스를 갖는 상이한 사용자)는, 콘텐트 관리 시스템과 연관된 클라이언트 디바이스 상에 로컬적으로 저장된 콘텐트 아이템들에 대하여 수정할 수 있다. 예를 들어, 사용자는 폴더 "/bar"를 "/root" 폴더에 추가하고, "Hi.doc" 문서를 "/bar" 폴더에 추가할 수 있다.
클라이언트 디바이스 상에서 변화가 이루어질 때, 클라이언트 디바이스(예를 들어, 도 1의 클라이언트 동기화 서비스(156) 또는 클라이언트 애플리케이션(152))는 이루어진 변화를 명시하는 수정 데이터를 생성한다. 클라이언트 동기화 서비스는 수정 데이터에 기초하여 클라이언트 디바이스 상에 저장된 콘텐트 아이템들에 대한 파일 시스템 상태를 나타내는 로컬 트리를 업데이트한다. 예를 들어, 로컬 트리(450) 내에, 노드(452) 및 노드(454)가 추가되는 것으로서 도시된다. 노드(452) 및 노드(454)는 각기 "/bar" 폴더 및 "Hi.doc" 문서를 나타낸다.
클라이언트 동기화 서비스는 로컬 트리(450)와 싱크 트리(430) 사이의 차이를 식별하고, 결과적으로, 클라이언트 디바이스에서의 콘텐트 아이템들의 수정이 서버 상태 및 파일 시스템 상태의 동기가 더 이상은 맞지 않게끔 했다는 것을 결정할 수 있다. 클라이언트 동기화 서비스는 추가로, 이들이 동기가 맞춰지도록 서버 상태 및 파일 시스템 상태를 수렴시키도록 구성된 콘텐트 관리 시스템에 의해 저장된 콘텐트 아이템들에 대한 동작들의 세트 또는 시퀀스를 생성할 수 있다. 이러한 동작들은 실행을 위하여 콘텐트 관리 시스템으로 송신될 수 있다.
도 4에서 보여지는 바와 같이, 클라이언트 디바이스 상에 저장된 콘텐트 아이템들 및 콘텐트 관리 시스템에 의해 저장된 콘텐트 아이템들에 대한 수정들은 실질적으로 동시에 또는 특정 시간 기간 이내에 발생할 수 있다. 이러한 수정들은 트리 데이터 구조체 내에 반영될 수 있으며, 병렬로 클라이언트 디바이스에 대한 그리고 콘텐트 관리 시스템에 대한 동작들을 생성하기 위하여 클라이언트 동기화 서비스에 의해 사용될 수 있다. 그러나, 다른 시나리오들에서, 수정들이 반드시 동시에 발생하지는 않을 수 있으며, 동작들은 필요에 따른 방식으로 생성될 수 있다. 추가로, 도 4가 콘텐트 아이템을 추가하고 콘텐트 아이템들을 삭제하기 위한 시나리오들을 예시하지만, 콘텐트 아이템들을 편집하는 것, 재명명하는 것, 복사하는 것, 또는 이동시키는 것과 같은 다른 유형들의 수정들이 또한 지원된다.
다양한 실시예들에 따르면, 2개의 트리 데이터 구조체들 사이의 차이를 식별하는 것 및 동작들을 생성하는 것은, 트리 데이터 구조들 둘 모두 내의 각각의 노드를 체크하는 것 및 노드에 대하여 액션이 수행되었는지 여부를 결정하는 것을 수반할 수 있다. 액션들은, 예를 들어, 노드의 추가, 노드의 삭제, 노드의 편집, 또는 노드의 이동을 포함할 수 있다. 그러면, 이러한 액션들은 서버 상태 및 파일 시스템 상태를 수렴시키도록 구성된 동작들을 생성하기 위해 사용될 수 있다.
예를 들어, 2개의 트리 데이터 구조체들이 싱크 트리 및 원격 트리인 경우, 클라이언트 동기화 서비스는, 예를 들어, 싱크 트리 내의 모든 노드들에 대한 파일 식별자들을 요청함으로써 싱크 트리 내의 각각의 노드를 식별할 수 있다. 싱크 트리 내의 노드에 대한 각각의 노드 또는 파일 식별자에 대하여, 클라이언트 동기화 서비스는 노드 또는 파일 식별자가 원격 트리 내에 또한 존재하는지 여부를 결정할 수 있다. 원격 트리에서 발견되지 않는 싱크 트리 내의 노드 또는 파일 식별자는, 노드가 원격 트리에 의해 표현되는 서버 상태로부터 삭제되었다는 것을 나타낼 수 있다. 따라서, 클라이언트 동기화 서비스는, 삭제 액션이 원격 트리 상에서 발생하였다는 것을 결정할 수 있다. 노드에 대한 파일 식별자 또는 노드가 원격 트리 내에서 발견되지 않는 경우, 클라이언트 동기화 서비스는, 원격 트리 내의 노드가 편집되거나 또는 이동되었는지 여부를 체크할 수 있다.
원격 트리 내의 노드가 싱크 트리 내의 노드에 비하여 편집되었는지 여부를 결정하기 위하여, 클라이언트 동기화 서비스는 싱크 트리 내의 노드에 대한 메타데이터를 원격 트리 내의 대응하는 노드(예를 들어, 동일한 파일 식별자를 갖는 노드)에 대한 메타데이터와 비교할 수 있다. 메타데이터는, 노드에 의해 표현되는 콘텐트 아이템이 편집되었는지 여부를 결정하기 위해 사용될 수 있는 정보를 포함할 수 있다. 예를 들어, 메타데이터는, 콘텐트 아이템 내의 데이터 또는 이의 일 부분에 기초하여 생성되는 하나 이상의 해시 값들을 포함할 수 있다. 메타데이터는 추가적으로 또는 대안적으로 콘텐트 아이템에 대한 크기 값, 마지막으로 수정된 값, 또는 다른 값을 포함할 수 있다. 싱크 트리 내의 노드에 대한 메타데이터는 원격 트리 내의 노드에 대한 메타데이터와 비교될 수 있다. 메타데이터가 일치하지 않는 경우, 콘텐트 아이템의 편집이 원격 트리에 의해 표현되는 서버 상태에서 편집되었을 수 있다. 따라서, 클라이언트 동기화 서비스는, 원격 트리 상의 노드에 대하여 편집 액션이 발생하였다는 것을 결정할 수 있다. 메타데이터가 일치하는 경우, 어떠한 편집도 발생하지 않았을 수 있다.
원격 트리 내의 노드가 이동되었는지 여부를 결정하기 위하여, 클라이언트 동기화 서비스는 싱크 트리 내의 노드에 대한 위치와 원격 트리 내의 대응하는 노드(예를 들어, 동일한 파일 식별자를 갖는 노드)에 대한 위치를 비교할 수 있다. 위치는, 예를 들어, 노드가 위치되는 경로, 파일명, 및/또는 노드의 부모의 파일 식별자를 명시하는 디렉토리 파일 식별자(directory file identifier; "DirFileID")를 포함할 수 있다. 위치들이 일치하는 경우, 어떠한 이동도 발생하지 않았을 수 있다. 반면, 위치들이 일치하지 않는 경우, 콘텐트 아이템의 이동은 원격 트리에 의해 표현되는 서버 상태에서 발생하였을 수 있다. 따라서, 클라이언트 동기화 서비스는, 원격 트리 상의 노드에 대하여 이동 액션이 발생하였다는 것을 결정할 수 있다.
노드가 원격 트리에 추가되었는지 여부를 결정하기 위하여, 클라이언트 동기화 서비스는, 싱크 트리 내에서 발견되지 않는 원격 트리 내의 임의의 노드들 또는 파일 식별자들을 식별할 수 있다. 노드 또는 파일 식별자가 원격 트리 내에서 발견되고 싱크 트리 내에서는 발견되지 않는 경우, 클라이언트 동기화 서비스는, 이러한 노드의 추가 액션이 서버 상태를 나타내는 원격 트리 상에서 발생하였다는 것을 결정할 수 있다.
이상의 예가 싱크 트리 및 원격 트리에 대하여 설명되었지만, 다른 실시예들에 있어서, 싱크 트리와 로컬 트리 사이의 차이를 식별하고 파일 시스템 상태를 나타내는 로컬 트리 상에서 어떠한 액션들이 발생하였는지를 결정하기 위하여 유사한 프로세스가 싱크 트리 및 로컬 트리를 가지고 발생할 수 있다.
트리 데이터 구조체들을 사용하는 동기화
도 5는 본 기술의 다양한 실시예들에 따른 트리 데이터 구조체들을 사용하여 서버 상태 및 파일 시스템 상태를 동기화하기 위한 예시적인 방법을 도시한다. 본원에서 설명되는 방법들 및 프로세스들이 특정 순서의 특정 단계들 및 동작들을 가지고 도시될 수 있지만, 달리 언급되지 않는 한, 유사하거나 또는 대안적인 순서들로, 또는 병렬로 수행되는, 추가적이거나, 더 적거나, 또는 대안적인 단계들 및 동작들이 다양한 실시예들의 범위 내에 속한다. 방법(500)은, 예를 들어, 클라이언트 디바이스 상에서 실행 중인 도 2의 클라이언트 동기화 서비스(156)와 같은 시스템에 의해 구현될 수 있다.
시스템은, 콘텐트 관리 시스템에 의해 저장된 콘텐트 아이템들에 대한 서버 상태를 나타내는 원격 트리, 클라이언트 디바이스 상에 저장된 대응하는 콘텐트 아이템들에 대한 파일 시스템 상태를 나타내는 로컬 트리, 및 서버 상태와 파일 시스템 상태 사이의 알려진 싱크된 상태를 나타내는 싱크 트리 사이의 차이를 식별하도록 구성된다. 이러한 차이들에 기초하여, 실행되는 경우, 3개의 트리 데이터 구조체들이 동일하게 될 동기화된 상태를 향해 서버 상태 및 시스템 상태를 수렴시키도록 구성되는 동작들의 세트가 생성될 수 있다.
예를 들어, 동작(505)에서, 시스템은 클라이언트 디바이스 상에 또는 콘텐트 관리 시스템에 의해 저장된 콘텐트 아이템들에 대한 수정 데이터를 수신할 수 있다. 수정 데이터는 동작(510)에서 원격 트리 또는 로컬 트리를 업데이트하기 위해 사용될 수 있다.
수정 데이터는, 콘텐트 관리 서비스와 연관된 하나 이상의 콘텐트 아이템들에 대하여 어떠한 변화들이 발생하였는지를 명시한다. 따라서, 수정 데이터는 클라이언트 관리 시스템으로부터 또는 클라이언트 디바이스로부터(예를 들어, 도 1의 클라이언트 디바이스(150) 상에서 실행 중인 클라이언트 애플리케이션(152)으로부터) 수신될 수 있다. 콘텐트 관리 시스템으로부터 수신된 수정 데이터는 서버 수정 데이터로서 지칭될 수 있다. 서버 수정 데이터는 콘텐트 관리 시스템에 의해 하나 이상의 콘텐트 아이템들에 대하여 어떠한 변화들이 이루어졌는지를 명시하며, 동작(510)에서 원격 트리를 업데이트하기 위해 사용될 수 있다. 클라이언트 디바이스로부터 수신된 수정 데이터는 클라이언트 수정 데이터로서 지칭될 수 있다. 클라이언트 수정 데이터는 클라이언트 디바이스에 의해 하나 이상의 콘텐트 아이템들에 대하여 어떠한 변화들이 이루어졌는지를 명시하며, 동작(510)에서 로컬 트리를 업데이트하기 위해 사용될 수 있다.
동작(515)에서, 시스템은, 콘텐트 관리 시스템에 의해 저장된 콘텐트 아이템들에 대한 서버 상태 및 클라이언트 디바이스 상에 저장된 콘텐트 아이템들에 대한 파일 시스템 상태가 동기가 맞는지 여부를 결정할 수 있다. 로컬 트리 및 원격 트리가 파일 시스템 상태 및 서버 상태를 나타내며, 이들이 콘텐트 관리 시스템 및 클라이언트 디바이스에서 발생하는 변화들을 추적하기 위하여 계속적으로 업데이트되기 때문에, 서버 상태 및 시스템 상태가 동기가 맞는지 여부를 결정하는 것은, 트리들 사이의 차이들을 찾기 위하여 싱크 트리에 대하여 로컬 트리 및/또는 원격 트리를 비교함으로써 이루어질 수 있다. 트리들 사이의 차이들을 찾는 이러한 프로세스는 때때로 트리들을 "디핑(diffing)"하는 것"으로서 지칭될 수 있다.
일부 실시예들 및 시나리오들에 따르면, 서버 상태와 파일 시스템 상태가 동기가 맞는지 여부를 결정하는 것은, 원격 트리와 싱크 트리 사이의 차이들을 식별하는 것 및/또는 로컬 트리와 싱크 트리 사이의 차이들을 식별하는 것 중 하나 이상을 포함할 수 있다. 원격 트리와 싱크 트리 사이의 차이는, 클라이언트 디바이스에서 반영되지 않았을 수 있는 콘텐트 관리 시스템에 의해 저장된 콘텐트 아이템들에 대한 변화들의 발생을 나타낼 수 있다. 유사하게, 로컬 트리와 싱크 트리 사이의 차이는, 콘텐트 관리 시스템에서 반영되지 않았을 수 있는 클라이언트 디바이스 상에 저장된 콘텐트 아이템들에 대한 변화들의 발생을 나타낼 수 있다.
트리들 사이에 차이들이 존재하지 않는 경우, 서버 상태 및 파일 시스템 상태가 동기가 맞으며, 어떠한 동기화 액션들도 필요하지 않다. 따라서, 방법은 동작(505)으로 복귀하고 새로운 수정 데이터를 기다릴 수 있다. 반면, 차이들이 검출되는 경우, 시스템은 동작(520)에서 서버 상태와 파일 시스템 상태를 수렴시키도록 구성된 동작들의 세트를 생성할 수 있다.
생성되는 동작들의 세트는 검출된 하나 이상의 차이들에 의존한다. 예를 들어, 2개의 트리들 사이의 차이가 추가된 콘텐트 아이템인 경우, 생성된 동작들의 세트는 추가된 콘텐트 아이템을 검색하고 이를 추가하는 것을 포함할 수 있다. 2개의 트리들 사이의 차이가 콘텐트 아이템의 삭제인 경우, 생성된 동작들의 세트는 콘텐트 아이템을 삭제하는 것을 포함할 수 있다. 일부 실시예들에 따르면, 동작들의 세트는 또한 트리 제약들이 유지된다는 것을 보장하기 위한 복수의 체크들을 포함할 수 있다. 이하에서 추가로 설명될 바와 같이, 동작들의 세트는, 실행 계류 중인 다른 동작들, 서버 상태, 또는 파일 시스템 상태의 현재 상태와 충돌할 수 있다. 따라서, 시스템은 또한 진행하기 이전에 이러한 충돌들을 해결할 수 있다.
이상에서 언급된 바와 같이, 원격 트리와 싱크 트리 사이에 차이들이 존재하는 경우, 클라이언트 디바이스에서 반영되지 않았을 수 있는 콘텐트 관리 시스템에 의해 저장된 콘텐트 아이템들에 대한 변화들이 발생하였을 수 있다. 추가적으로, 이러한 시나리오에 있어서, 시스템은, 서버 상태 및 파일 시스템 상태를 수렴시키도록 구성된 클라이언트 디바이스 상에 저장된 콘텐트 아이템들에 대하여 동작하도록 구성된 동작들의 클라이언트 세트를 생성할 수 있으며, 이러한 동작들의 클라이언트 세트는 동작(525)에서 실행을 위하여 클라이언트 디바이스에 제공될 수 있다.
유사하게, 로컬 트리와 싱크 트리 사이에 차이가 존재하는 경우, 콘텐트 관리 시스템에서 반영되지 않았을 수 있는 클라이언트 디바이스에 저장된 콘텐트 아이템들에 대한 변화들이 발생하였을 수 있다. 따라서, 이러한 시나리오에서, 시스템은, 서버 상태 및 파일 시스템 상태를 수렴시키기 위해 콘텐트 관리 시스템에 의해 저장된 콘텐트 아이템들에 대하여 동작하도록 구성된 동작들의 서버 세트를 생성할 수 있으며, 이러한 동작들의 서버 세트는 동작(525)에서 실행을 위하여 콘텐트 관리 시스템에 제공될 수 있다. 일부 경우들에 있어서, 경우들 둘 모두는 참일 수 있으며, 동작들의 클라이언트 세트 및 동작들의 서버 세트가 생성되고 동작(525)에서 그들의 의도된 수신자들에게 제공될 수 있다.
일단 동작들의 세트(들)가 의도된 수신자(들)에게 제공되면, 방법은 동작(505)으로 복귀하고 새로운 수정 데이터를 기다릴 수 있다. 동작들의 세트(들)는 서버 상태 및 파일 시스템 상태의 수렴을 향해 하나 이상의 단계들을 제공할 수 있거나, 또는 서버 상태와 파일 시스템 상태를 동기시키기 위해 요구되는 모든 단계들을 제공할 수 있다. 예를 들어, 콘텐트 관리 시스템은 동작들의 서버 세트를 수신할 수 있으며, 콘텐트 관리 시스템에 의해 저장된 콘텐트 아이템들에 대하여 동작들의 서버 세트를 실행할 수 있다. 동작들의 서버 세트의 이러한 실행은, 다시 시스템으로 송신되는 서버 수정 데이터 내에서 검출되고 명시된 콘텐트 관리 시스템에 의해 저장된 콘텐트 아이템들에 대한 변화들을 초래한다. 그러면 시스템은 원격 트리를 업데이트하고 서버 상태 및 파일 시스템 상태가 동기가 맞는지 여부를 결정할 수 있다.
클라이언트 디바이스는 동작들의 클라이언트 세트를 수신할 수 있으며, 클라이언트 디바이스 상에 저장된 콘텐트 아이템들에 대하여 동작들의 클라이언트 세트를 실행할 수 있다. 동작들의 클라이언트 세트의 실행은, 시스템으로 전달되는 클라이언트 수정 데이터 내에서 검출되고 명시된, 클라이언트 디바이스 상에 저장된 콘텐트 아이템들에 대한 변화들을 초래한다. 그러면 시스템은 로컬 트리를 업데이트하고 서버 상태 및 파일 시스템 상태가 동기가 맞는지 여부를 결정할 수 있다. 방법(500)의 이러한 동작들은, 서버 상태 및 파일 시스템 상태가 동기가 맞을 때까지 계속될 수 있다.
방법(500)의 동작들은 클라이언트 측 및 서버 측에 대하여 설명된다(예를 들어, 로컬 트리 및 원격 트리, 파일 시스템 상태 및 서버 상태, 동작들의 클라이언트 세트 및 동작들의 서버 세트, 클라이언트 수정 데이터 및 서버 수정 데이터). 다양한 실시예들에 있어서, 2개의 측들과 연관된 동작들은 병렬로, 시퀀스로, 다른 측과 별개로, 또는 조합으로 발생할 수 있다.
더 상세하게 설명될 바와 같이, 일부 실시예들에 따르면, 동작들이 실행을 위해 제공되기 이전에, 시스템은, 이들이 불변성(invariant)들 또는 규칙들의 세트를 준수하는지 여부를 결정하기 위하여 동작들을 체크할 수 있다. 동작이 규칙을 위반하는 경우, 시스템은 규칙의 위반과 연관된 해법 프로세스를 실행한다.
추가적으로, 일부 실시예들에 따르면, 시스템(예를 들어, 도 2의 클라이언트 동기화 서비스(156)의 스케줄러(230))은 동작들의 세트의 실행을 관리할 수 있다. 예를 들어, 동작들의 세트 내의 각각의 동작은, 태스크, 실행 스레드(thread), 일련의 단계들, 또는 명령어들과 연관될 수 있다. 시스템은, 동작들의 세트를 실행하여 서버 상태와 파일 시스템 상태를 수렴시키기 위하여, 태스크, 스레드, 단계 또는 명령어들 및 클라이언트 디바이스 및/또는 콘텐트 관리 시스템과의 인터페이스를 실행하도록 구성될 수 있다.
충돌 핸들링
도 5에 대하여 이상에서 설명된 바와 같이, 싱크 트리와 원격 트리 사이의 차이들이 식별되며, 이는 서버 상태와 파일 시스템 상태를 수렴시키도록 구성된 동작들의 클라이언트 세트를 생성하기 위하여 사용된다. 그러나, 일부 경우들에 있어서, 동작들의 클라이언트 세트는 로컬 트리의 현재 상태와 충돌할 수 있다. 유사하게, 싱크 트리와 로컬 트리 사이의 차이들이 식별되며, 이는 서버 상태와 파일 시스템 상태를 수렴시키도록 구성된 동작들의 서버 세트를 생성하기 위하여 사용된다. 그러나, 동작들의 서버 세트는 원격 트리의 현재 상태와 충돌할 수 있다. 추가적으로 또는 대안적으로, 동작들의 클라이언트 세트 및 동작들의 서버 상태는 서로 충돌하거나 또는 시스템에 의해 유지되는 다른 규칙 또는 불변성을 위반할 수 있다. 따라서, 본 기술의 다양한 실시예들은 이러한 충돌들을 해결함으로써 추가적인 기술적 개선들을 제공한다.
예를 들어, 도 2의 클라이언트 동기화 서비스(156) 내의 플래너(225)는 규칙과 충돌하는 동작들의 세트(예를 들어, 동작들의 클라이언트 세트 또는 동작들의 서버 세트) 내의 동작을 식별할 수 있다. 충돌을 식별하기 위해 사용되는 각각의 규칙은 충들에 대한 해법과 연관될 수 있다. 클라이언트 동기화 서비스는, 실행을 위해 동작들의 세트를 제공하기 이전에 충돌에 대한 해법들과 연관된 동작들을 수행함으로써 충돌을 해결하거나 또는 충돌에 대한 해법에 기초하여 동작들의 세트를 업데이트할 수 있다.
도 6은 본 기술의 다양한 실시예들에 따른 트리 데이터 구조체들을 사용하여 서버 상태 및 파일 시스템 상태를 동기화할 때의 충돌들을 해결하기 위한 예시적인 방법(600)을 도시한다. 본원에서 설명되는 방법들 및 프로세스들이 특정 순서의 특정 단계들 및 동작들을 가지고 도시될 수 있지만, 달리 언급되지 않는 한, 유사하거나 또는 대안적인 순서들로, 또는 병렬로 수행되는, 추가적이거나, 더 적거나, 또는 대안적인 단계들 및 동작들이 다양한 실시예들의 범위 내에 속한다. 방법(600)은, 예를 들어, 클라이언트 디바이스 상에서 실행 중인 도 2의 클라이언트 동기화 서비스(156)와 같은 시스템에 의해 구현될 수 있다.
시스템은 동작(620)에서 서버 상태와 파일 시스템 상태를 수렴시키도록 구성된 동작들의 세트를 수신할 수 있다. 동작들의 세트는, 예를 들어, 도 5의 방법(500)에 대하여 생성되고 설명된 동작들의 클라이언트 세트, 동작들의 서버 세트, 또는 동작들의 결합된 세트일 수 있다.
동작(650)에서, 시스템은 규칙들의 세트에 기초하여 동작들의 세트 내의 하나 이상의 위반들을 식별한다. 규칙들의 세트는 도 2의 클라이언트 동기화 서비스(156)에 의해 저장될 수 있으며, 해결될 동작들에 대한 다수의 충돌들, 제약들, 또는 불변성들을 지정할 수 있다. 규칙들의 세트는 트리 데이터 구조체에 적용되고 동기화 거동을 제어하는 것을 도울 수 있다. 규칙들의 세트 내의 각각의 규칙은 또한 그 규칙의 위반에 대한 해법과 연관되거나 또는 달리 이에 링크될 수 있다. 예를 들어, 해법은 동작들의 세트 내의 하나 이상의 동작들의 변경, 하나 이상의 동작들의 제거, 하나 이상의 동작들의 추가, 서버 상태 또는 파일 시스템 상태에 대한 하나 이상의 추가적인 액션들, 또는 액션들의 조합을 포함할 수 있다.
동작들의 세트 내의 각각의 동작에 대하여, 시스템은, 규칙들의 세트 내의 임의의 규칙이 위반되는지 여부를 결정할 수 있다. 규칙이 위반되는 경우, 시스템은, 동작(655)에서, 위반의 해법들 식별하고, 해법을 수행한다. 해법은, 동작들의 세트 내의 하나 이상의 동작들을 수정하는 것, 하나 이상의 동작들을 제거하거나 또는 추가하는 것, 또는 서버 상태 또는 파일 상태에 대한 추가적인 액션들과 같은 액션들을 포함할 수 있다.
일단 해법 액션들이 수행되면, 시스템은, 동작(660)에서, 동작들의 세트 및 해법에 기초하여 동작들의 해결되거나 또는 리베이스된(rebased) 세트를 생성할 수 있으며, 동작(665)에서, 동작들의 해결된 세트는 실행을 위하여 적절한 엔티티로 제공할 수 있다. 예를 들어, 동작들의 해결된 세트는 관리되는 실행을 위하여 도 2의 클라이언트 동기화 서비스(156)의 스케줄러(230)에 제공될 수 있다. 대안적으로, 동작들의 세트가 동작들의 클라이언트 세트인 경우, 동작들의 해결된 세트는 클라이언트 디바이스로 제공될 수 있다. 동작들의 세트가 동작들의 서버 세트인 경우, 동작들의 해결된 세트는 콘텐트 관리 서비스로 제공될 수 있다. 추가적으로, 도 6의 방법(600)은 시퀀스로, 병렬로, 또는 다양하고 상이한 순서들로 동작들의 클라이언트 세트 및 동작들의 서버 세트에 대하여 수행될 수 있다.
일부 실시예들에 따르면, 각각의 유형의 동작은 규칙들의 동일하거나 또는 상이한 세트와 연관될 수 있다. 예를 들어, 동작 유형들은, 예를 들어, 콘텐트 아이템을 추가하는 것, 콘텐트 아이템을 삭제하는 것, 콘텐트 아이템을 편집하는 것, 콘텐트 아이템을 이동시키는 것, 콘텐트 아이템을 재명명하는 것 등을 포함할 수 있다. 동작들의 세트는, 각기 이상의 동작 유형들 중 하나에 속하는 동작들로 구성될 수 있다. 각각의 동작 유형은 규칙들의 특정 세트와 연관될 수 있다.
예시적인 목적들을 위하여, "추가" 동작 유형에 대한 규칙들의 세트는, 콘텐트 아이템들에 대한 파일 식별자들은 반드시 트리 내에 고유해야만 하는 것(예를 들어, 트리 내의 어떠한 2개의 노드들도 동일한 파일 식별자를 갖지 않을 수 있는 것), 콘텐트 아이템의 부모 노드의 파일 식별자를 지정하는 디렉토리 파일 식별자(directory file identifier; "DirFileID")는 반드시 반대편의 트리 데이터 구조체 내에 존재해야만 하는 것, 및 콘텐트 아이템에 대한 DirFileID 및 파일명 조합은 반대편의 트리 내에서 사용되는 않는 것과 같은 규칙들을 포함할 수 있다.
본원에서 사용되는 바와 같은 반대편의 트리는 반대편의 엔티티의 상태를 나타내는 트리 데이터 구조체를 지칭한다. 예를 들어, 클라이언트 디바이스 상에서 동작하도록 구성된 동작들의 클라이언트 세트 및 클라이언트 디바이스 상의 파일 시스템에 대한 결과적인 변화들이 로컬 트리 내에 반영될 것이다. 따라서, 동작들의 클라이언트 세트에 대한 반대편의 트리는 원격 트리이다. 유사하게, 동작들의 서버 세트는 실행된 콘텐트 관리 시스템으로 송신되도록 구성되며, 서버 상태에 대한 결과적인 변화들이 원격 트리 내에 반영될 것이다. 따라서, 동작들의 서버 세트에 대한 반대편의 트리는 로컬 트리이다.
도 7은 다양한 실시예들에 따른 추가 동작에 대한 규칙의 위반을 예시하는 트리 데이터 구조체의 일 예를 도시한다. 트리 데이터 구조체는 원격 트리(710), 싱크 트리(750), 및 로컬 트리(770)를 포함한다. 로컬 트리(770)를 언급할 때, 원격 트리(710)는 반대편의 트리로서 간주될 수 있다. 반면, 원격 트리(710)를 언급할 때, 로컬 트리(770)가 반대편의 트리로서 간주될 수 있다. 도 7은 원격 트리(710) 내의 노드(712)에 의해 표현되는 콘텐트 아이템을 추가하는 동작들의 세트를 예시한다. 예를 들어, 클라이언트 동기화 서비스는 원격 트리(710)를 싱크 트리(750)를 비교하고, 차이들을 식별하며, 노드(712)의 추가를 포함하는 동작들의 세트를 생성할 수 있다. 노드(712)는 4의 FileID, 3의 DirFileID(이는 노드(712)의 부모인 부모 노드(714)를 언급함), 및 "Hi"의 파일명과 연관된다. 노드(714)는 3의 FileID, 1의 DirFileID(이는 노드(714)의 부모인 루트 노드(716)를 언급함), 및 "Foo"의 파일명과 연관된다.
클라이언트 동기화 서비스는 도 6의 방법(600)을 수행할 수 있으며, 노드(712)에 대한 추가 동작이, "추가" 동작 유형에 대하여 콘텐트 아이템의 "디렉토리 파일 식별자(directory file identifier; "DirFileID")가 반드시 반대편의 트리 데이터 구조체 내에 존재해야만 한다"는 규칙을 위반한다는 것을 결정할 수 있다. 이는, 노드(712)의 부모 노드(714)를 언급하는, 3의 파일 ID를 갖는 노드를 갖지 않는 로컬 트리(770)에 의해 도 7에 예시된다. 이는, 예를 들어, 원격 트리(710)와 싱크 트리(750) 사이의 차이들이 결정되고 동작들의 세트가 생성된 이후에, 노드(714)에 대응하는 "Foo" 노드가 반대편의 트리로부터 제거될 때, 발생할 수 있다.
이러한 규칙과 연관된 해법은, 싱크 트리(750) 및 로컬 트리(770)를 동기화하기 위하여 로컬 트리(770)로부터 빠진 노드를 싱크 트리(750)로부터 삭제하는 것, 및 원격 트리(710)와 싱트 크리(750)를 리디핑(rediffing)하는 것(예를 들어, 이들 사이의 차이를 찾는 것)을 포함할 수 있다. 도 7에 예시된 시나리오에서, 싱크 트리(750) 내의 노드(754)는 제거될 것이며(758), 디핑 동작들이 원격 트리(710)와 싱크 트리(750) 사이의 차이들을 식별하는 것을 개시할 것이다. 이는 동작들의 세트 내에 노드(714)의 추가 동작뿐만 아니라 노드(712)에 대한 추가 동작의 포함을 야기할 것이다.
유사하게, "추가" 동작 유형에 대한 "콘텐트 아이템에 대한 파일 식별자들은 반드시 트리 내에서 고유해야만 한다"라는 규칙의 위반은, 콘텐트 관리 시스템으로부터, 추가되는 노드에 대한 새로운 파일 ID를 요청하는 것 및 노드를 추가할 때 새로운 파일 ID를 사용하는 것을 포함하는 동작들에 의해 해결될 수 있다. "추가" 동작 유형들에 대한 "콘텐트 아이템에 대한 DirFileID 및 파일명 조합은 반대편의 트리 내에서 사용되는 않아야 한다"라는 규칙의 위반은, 콘텐트 아이템들이 동일한지 여부에 대하여 2개의 노드들과 연관된 메타데이터를 통해 체크하는 것을 포함하는 동작들에 의해 해결될 수 있다. 콘텐트 아이템들이 동일한 경우, 추가되는 콘텐트 아이템이 이미 다른 액션들에서 추가되었을 가능성이 있다. 콘텐트 아이템이 동일하지 않은 경우, 추가되는 콘텐트 아이템에 대한 파일명이 재명명될 수 있다. 예를 들어, 추가되는 콘텐트 아이템에 대한 파일명에는 텍스트 "(충돌 버전)"이 첨부될 수 있다.
점진적 플래너
도 3, 도 4, 및 도 7에 도시된 다양한 트리 데이터 구조체들이 상대적으로 적은 수의 노드들을 가지며 구조적으로 상대적으로 단순하지만, 본 시스템에 의해 지원되는 트리 데이터 구조체는, 다수의 레벨들 및 각각의 레벨에서의 잠재적으로 많은 수의 노드들을 갖는 상태로 훨씬 더 크고 복잡할 수 있다. 따라서, 동작 동안 트리 데이터 구조체들을 저장하기 위해 요구되는 메모리 사용량이 상당히 클 수 있으며, 트리 데이터 구조체들에 대하여 동작하기 위해 요구되는 컴퓨팅 시간 및 자원들이 상당히 클 수 있다. 예를 들어, 원격 트리와 싱크 트리 및/또는 로컬 트리와 싱크 트리 사이의 차이들을 찾는 것 및 원격 트리와 싱크 트리 및/또는 로컬 트리와 싱크 트리를 수렴시키기 위하여 요구되는 동작들을 생성하는 것은 많은 양의 메모리, 시간 및 다른 컴퓨팅 자원들을 필요로 할 수 있다.
불행히도, 이러한 컴퓨팅 자원들이 한정된다. 예를 들어, 클라이언트 디바이스는 제한된 양의 이용가능 메모리를 가질 수 있으며, 트리들을 디핑하고 동작들을 생성하기 위해 요구되는 시간의 길이는 클라이언트 디바이스, 클라이언트 애플리케이션, 또는 콘텐트 관리 시스템에 의해 제공되는 콘텐트 관리 서비스들의 유용성을 방해할 수 있다. 추가로, 서버 상태와 파일 시스템 상태를 수렴시키기 위해 필요한 시간이 많을수록 어느 하나의 상태에 대한 변화들을 조정(intervene)하는 것은 연산되거나 또는 실행될 동작들의 세트 및/또는 목표 싱크 상태가 유효 기간이 지나게 만들 수 있는 가능성이 더 높다. 따라서, 본 기술의 다양한 실시예들은, 이들을 표현하는 트리 데이터 구조체들에 따라 서버 상태와 파일 시스템 상태를 점진적으로 수렴시킴으로써 추가적인 기술적 개선들을 제공한다.
도 8은 본 기술의 다양한 실시예들에 따른 서버 상태 및 파일 시스템 상태를 점진적으로 수렴시키기 위한 예시적인 방법(800)을 도시한다. 본원에서 설명되는 방법들 및 프로세스들이 특정 순서의 특정 단계들 및 동작들을 가지고 도시될 수 있지만, 달리 언급되지 않는 한, 유사하거나 또는 대안적인 순서들로, 또는 병렬로 수행되는, 추가적이거나, 더 적거나, 또는 대안적인 단계들 및 동작들이 다양한 실시예들의 범위 내에 속한다. 방법(800)은, 예를 들어, 클라이언트 디바이스 상에서 실행 중인 도 2의 클라이언트 동기화 서비스(156)와 같은 시스템에 의해 구현될 수 있다.
동작(805)에서, 시스템은 원격 트리 또는 로컬 트리를 업데이트하기 위해 사용될 수 있는 수정 데이터를 수신할 수 있다. 예를 들어, 콘텐트 관리 시스템에 의해 저장된 하나 이상의 콘텐트 아이템들과 연관된 수정들 또는 다른 액션들(예를 들어, 편집, 추가, 삭제, 이동, 또는 재명명)을 명시하는 서버 수정 데이터가 콘텐트 관리 시스템으로부터 수신될 수 있다. 서버 수정 데이터는, 콘텐트 관리 시스템에 의해 저장된 콘텐트 아이템들의 서버 상태를 나타내는 원격 트리를 업데이트하기 위해 사용될 수 있다. 유사하게, 클라이언트 수정 데이터는 클라이언트 디바이스(예를 들어, 클라이언트 애플리케이션)으로부터 수신될 수 있으며, 클라이언트 디바이스 상에 저장된 하나 이상의 콘텐트 아이템들과 연관된 수정들 또는 다른 액션들을 명시할 수 있다. 클라이언트 수정 데이터는, 클라이언트 디바이스 상에 저장된 콘텐트 아이템들의 파일 시스템 상태를 나타내는 로컬 트리를 업데이트하기 위해 사용될 수 있다.
콘텐트 아이템들과 연관된 수정들을 명시하는 수신된 수정 데이터에 기초하여, 시스템은, 동작(810)에서, 수정된 콘텐트 아이템들에 대응하는 노드들을 식별하고 노드를 수정된 콘텐트 아이템들의 리스트에 추가(예를 들어, 노드들과 연관된 파일 식별자를 수정된 콘텐트 아이템들의 리스트에 추가)할 수 있다. 동작들(805 및 810)은, 시스템이 방법(800)의 다음 스테이지로 진행하기 이전에 소정의 시간 동안 연속적으로 발생할 수 있다. 예를 들어, 추가적인 수정 데이터가 수신될 수 있으며, 시스템에 의해 관리되는 트리들을 업데이트하고 노드들을 수정된 콘텐트 아이템들의 리스트에 추가하기 위해 사용될 수 있다.
서버 상태와 파일 시스템 상태를 점진적으로 수렴시키기 위하여, 동작(815)에서, 시스템은 수정된 콘텐트 아이템들의 리스트 내에서 각각의 노드를 취하고 노드가 어떻게 수정되었는지(예를 들어, 어떠한 액션들이 노드와 연관되는지)를 결정한다. 일부 실시예들에 있어서, 수정 데이터는 노드에 대한 수정을 명시할 수 있다. 그러나, 다른 실시예들에 있어서, 시스템은, 원격 트리와 싱크 트리의 비교 및/또는 로컬 트리와 싱크 트리의 비교에 기초하여 노드에 대한 수정들을 결정할 수 있다. 예를 들어, 수정들은, 노드의 추가, 노드의 삭제, 노드의 편집, 또는 노드의 이동을 포함할 수 있다.
수정된 콘텐트 아이템들의 리스트 내의 각각의 노드 또는 노드에 대한 파일 식별자에 대하여, 시스템은, 존재하는 경우, 노드에 대하여 어떠한 수정이 수행되었는지를 결정하기 위하여 일련의 체크들을 수행할 수 있다. 예를 들어, 시스템은 파일 식별자가 싱크 트리 내에는 존재하지만 원격 트리 내에는 존재하지 않는지 여부를 결정할 수 있다. 원격 트리에서 발견되지 않는 싱크 트리 내의 파일 식별자는, 노드가 원격 트리에 의해 표현되는 서버 상태로부터 삭제되었다는 것을 나타낼 수 있다. 따라서, 클라이언트 동기화 서비스는, 노드에 대한 삭제 수정이 원격 트리 상에서 발생하였다는 것을 결정할 수 있다. 유사하게, 시스템은 또한, 파일 식별자가 싱크 트리 내에는 존재하지만 로컬 트리 내에는 존재하지 않는지 여부를 결정할 수 있다. 로컬 트리에서 발견되지 않는 싱크 트리 내의 파일 식별자는, 노드가 로컬 트리에 의해 표현되는 파일 시스템 상태로부터 삭제되었다는 것을 나타낼 수 있다. 따라서, 클라이언트 동기화 서비스는, 노드에 대한 삭제 수정이 로컬 트리 상에서 발생하였다는 것을 결정할 수 있다.
노드에 대하여 편집 수정이 수행되었는지 여부를 결정하기 위하여, 시스템은 싱크 트리 내의 노드에 대한 메타데이터와 원격 트리 및/또는 로컬 트리 내의 대응하는 노드(예를 들어, 동일한 파일 식별자를 갖는 노드)에 대한 메타데이터를 비교할 수 있다. 메타데이터는, 노드에 의해 표현되는 콘텐트 아이템이 편집되었는지 여부를 결정하기 위해 사용될 수 있는 정보를 포함할 수 있다. 예를 들어, 메타데이터는, 콘텐트 아이템 내의 데이터 또는 이의 일 부분에 기초하여 생성되는 하나 이상의 해시 값들을 포함할 수 있다. 메타데이터는 추가적으로 또는 대안적으로 콘텐트 아이템에 대한 크기 값, 마지막으로 수정된 값, 또는 다른 값을 포함할 수 있다. 메타데이터가 일치하지 않는 경우, 콘텐트 아이템의 편집이 원격 트리에 의해 표현되는 서버 상태에서 및/또는 로컬 트리에 의해 표현되는 파일 시스템 상태에서 편집되었을 수 있다. 따라서, 시스템은, 원격 트리 및/또는 로컬 트리 상의 노드에 대하여 편집 액션이 발생하였다는 것을 결정할 수 있다.
원격 트리 내의 노드가 이동되었는지 여부를 결정하기 위하여, 시스템은 싱크 트리 내의 노드에 대한 위치와 원격 트리 및/또는 로컬 트리 내의 대응하는 노드(예를 들어, 동일한 파일 식별자를 갖는 노드)에 대한 위치를 비교할 수 있다. 위치는, 예를 들어, 노드가 위치되는 경로, 파일명, 및/또는 노드의 부모의 파일 식별자를 명시하는 디렉토리 파일 식별자(directory file identifier; "DirFileID")를 포함할 수 있다. 위치들이 일치하는 경우, 어떠한 이동도 발생하지 않았을 수 있다. 반면, 위치들이 일치하지 않는 경우, 콘텐트 아이템의 이동이 원격 트리 또는 로컬 트리 내에서 발생하였을 수 있다. 따라서, 클라이언트 동기화 서비스는, 원격 트리 및/또는 로컬 트리 상의 노드에 대하여 이동 액션이 발생하였다는 것을 결정할 수 있다.
노드가 원격 트리에 추가되었는지 여부를 결정하기 위하여, 시스템은, 수정된 콘텐트 아이템들의 리스트 내의 파일 식별자가 원격 트리 내에 또는 로컬 트리 내에 존재하지만 싱크 트리 내에는 존재하지 않는지 여부를 결정할 수 있다. 파일 식별자가 원격 트리 또는 로컬 트리 내에서 발견되고 싱크 트리 내에서는 발견되지 않는 경우, 시스템은, 이러한 노드에 대한 추가 수정이 발생하였다는 것을 결정할 수 있다.
일단 수정된 콘텐트 아이템들의 리스트 내의 노드들에 대한 하나 이상의 수정들이 결정되면, 시스템은, 동작(820)에서, 이러한 수정들 중 임의의 수정이 종속성들을 갖는지 여부를 결정할 수 있다. 도 9와 관련하여 추가로 예시될 바와 같이, 노드에 대한 수정은, 예를 들어, 수정이 다른 수정들이 먼저 발생하지 않고는 실행될 수 없을 때 종속성을 갖는다.
수정이 종속성을 갖지 않는 경우, 시스템은, 동작(825)에서, 액션들의 차단되지 않은 리스트에 수정을 추가한다. 수정이 종속성을 갖는 경우, 수정은 동작(830)에 있는 시간 동안 차단되며, 다른 수정이 먼저 프로세싱되지 않으면 실행될 수 없다. 따라서, 프로세스는 추가적인 수정들을 기다리기 위하여 동작(805)으로 복귀한다. 수정들의 각각이 프로세싱된 이후에, 시스템은 수정된 콘텐트 아이템들의 리스트로부터 수정들과 연관된 파일 식별자들을 지울 수 있다.
도 9는 다양한 실시예들에 따른 트리 데이터 구조체들의 일 예를 도시한다. 도 9에 도시된 트리 데이터 구조체들은 클라이언트 디바이스에 저장되고 도 2에 도시된 클라이언트 동기화 서비스(156)와 같은 시스템에 의해 관리될 수 있다. 예시의 목적을 위하여, 단지 원격 트리(910) 및 싱크 트리(950)만이 도 9에 도시되고 설명된다. 유사한 동작들 및 설명이 또한 로컬 트리에도 마찬가지로 적용될 수 있다.
원격 트리(910)는, 1의 파일 식별자를 갖는 루트 노드(912), 5의 파일 식별자 및 "Foo"의 파일명을 갖는 노드(914), 6의 파일 식별자 및 "Bar"의 파일명을 갖는 노드(916), 및 7의 파일 식별자 및 "Bye"의 파일 명을 갖는 노드(918)를 포함한다. 싱크 트리는 1의 파일 식별자를 갖는 루트 노드(952)를 포함한다.
도 9에 도시된 트리 데이터 구조체들에 기초하여, 시스템은, 도 9에서 참조부호(980)에 의해 예시되는 바와 같이, 5, 6, 및 7의 파일 식별자들을 갖는 노드들이 동작(810)에서 수정되었으며 수정된 콘텐트 아이템들의 리스트에 추가되었다는 것을 식별했을 수 있다. 동작(815)에서, 시스템은 수정된 콘텐트 아이템들의 리스트 내의 노드들에 대한 수정들의 리스트를 결정한다. 원격 트리(910)와 싱크 트리(950)의 비교에 의해 보여지는 바와 같이, 노드들(914, 916, 및 918)이 원격 트리(910)에 추가되었다. 보다 더 구체적으로, 도 9에서 참조부호(982)에 의해 예시되는 바와 같이, 파일 식별자 6 및 명칭 "Bar"를 갖는 노드(916)가 파일 식별자 5를 갖는 노드(914)에 자식으로서 추가되었다. 이는 참조부호(982)에서 "추가(6, 5, Bar)" 엔트리에 의해 표현된다. 파일 식별자 7 및 명칭 "Bye"를 갖는 노드(918)는 파일 식별자 5를 갖는 노드(914)에 자식으로서 추가되었다. 이는 참조부호(982)에서 "추가(7, 5, Bye)" 엔트리에 의해 표현된다. 파일 식별자 5 및 명칭 "Foo"를 갖는 노드(914)가 파일 식별자 1을 갖는 루트 노드(912)에 자식으로서 추가되었다. 이는 참조부호(982)에서 "추가(5, /root, Foo)" 엔트리에 의해 표현된다.
동작(820)에서, 시스템은, 노드(914)의 추가 수정이 종속성을 갖지 않으며, 결과적으로, 차단되지 않는다는 것을 결정한다. 따라서, 시스템은, 동작(825)에서, 노드(914)와 연관된 수정(예를 들어, 참조부호(982)에서 "추가(5, /root, Foo)"에 의해 표현되는 수정)을 액션들의 차단되지 않은 리스트에 추가한다. 이는 도 9에서 참조부호들(984)에서 보여 진다. 반면, 참조부호(982)에서 "추가(6, 5, Bar)" 및 "추가(7, 5, Bye)" 엔트리들에 의해 표현되는 노드들(916 및 918)에 대한 수정들은 먼저 발생하는 "추가(5, /root, Foo)"에 의해 표현되는 수정에 종속적이다. 다시 말해서, 노드(916) 및/또는 노드(918)는, 노드(914)가 추가될 때까지 추가될 수 없다. 따라서, 이러한 수정들은 도 9에서 참조부호(986)에 의해 예시된 액션들의 차단된 리스트 내에 포함된다.
다시 도 8의 방법(800)을 참조하면, 동작(835)에서, 시스템은 액션들의 차단되지 않은 리스트로부터 수정들의 세트를 선택하고, 선택된 수정들의 세트에 기초하여 동작들의 세트를 생성할 수 있다. 동작들의 세트는 서버 상태 및 파일 시스템 상태를 수렴시키도록 구성된다. 생성되는 동작들의 세트는 차단되지 않은 리스트로부터 선택된 수정들의 세트에 의존한다. 예를 들어, 선택된 수정들의 세트가 도 9에서 노드(914)와 연관된 추가 수정(예를 들어, 참조부호(984)에서 "추가(5, /root, Foo)"에 의해 표현되는 수정)을 포함하는 경우, 생성된 동작들의 세트는 콘텐트 관리 시스템으로부터 추가된 콘텐트 아이템을 검색하는 것 및 이를 클라이언트 디바이스의 로컬 파일 시스템에 추가하는 것을 포함할 수 있다.
일부 실시예들에 따르면, 시스템은 동작들의 하나 이상의 세트들을 생성하기 위하여 액션들의 차단되지 않은 리스트로부터 모든 수정들을 선택할 수 있다. 그러나, 일부 시나리오들에 있어서, 차단되지 않은 리스트 내의 수정들의 수가 상당히 높을 수가 있으며, 수정들 전부를 프로세싱하기 위해 요구되는 컴퓨팅 자원들(예를 들어, 메모리 및 프로세싱 시간)이 상당하다. 이러한 기술적인 부담들을 감소시키기 위하여, 시스템은 점진적으로 프로세싱하기 위하여 액션들의 차단되지 않은 리스트 내의 수정들의 더 작은 세트를 선택할 수 있다. 예를 들어, 시스템은 동작들을 생성하기 위하여 수정들의 제 1 또는 상단 X개 또는 퍼센트를 선택할 수 있다. 프로세스의 추가적인 반복들에서, 차단되지 않은 리스트들 내의 나머지 수정들이 프로세싱될 수 있다.
일부 실시예들에 있어서, 차단되지 않은 리스트 내의 수정들은 프로세싱을 위하여 랭킹이 매겨질 수 있다. 수정들은, 예를 들어, 수정 유형(예를 들어, 삭제 수정들이 추가 수정들보다 더 우선순위화된다), 수정과 연관된 메타데이터(예를 들어, 더 작은 크기의 콘텐트 아이템들의 추가 수정들이 더 큰 크기의 콘텐트 아이템들의 추가 수정들보다 더 우선순위화되며, 더 큰 크기의 콘텐트 아이템들의 삭제 수정들은 더 작은 크기의 콘텐트 아이템들의 삭제 수정보다 더 우선순위화되는 등)에 기초하여 랭킹이 매겨질 수 있다.
이러한 랭크 규칙들은 시스템에 의해 저장될 수 있으며, 콘텐트 동기화를 위한 다양한 성능 목적들을 달성하도록 설계될 수 있다. 예를 들어, 삭제 수정들은, 새로운 콘텐트 아이템들이 추가될 수 있기 이전에 사용자에 대하여 잠재적으로 제한된 저장 공간을 가능한 한 많이 비우기 위하여 추가 수정들보다 더 우선순위화될 수 있다. 더 작은 콘텐트 아이템들을 추가하는 것은, 가능한 한 빠르게 추가되는 아이템들의 수와 관련하여 가능한 한 많은 진행을 제공하기 위하여 더 큰 콘텐트 아이템들보다 더 우선순위화될 수 있다.
동작(835)에서, 시스템은 콘텐트 관리 시스템 및/또는 클라이언트 디바이스로 동작들의 세트를 제공할 수 있다. 이상에서 언급된 바와 같이, 콘텐트 관리 시스템에 의해 수행되는 액션들과 연관된 수정들은 클라이언트 디바이스에서 반영되지 않을 수 있다. 추가적으로, 이러한 시나리오에 있어서, 시스템은 서버 상태 및 파일 시스템 상태를 수렴시키도록 구성된 클라이언트 디바이스 상에 저장된 콘텐트 아이템들에 대하여 동작하도록 구성된 동작들의 클라이언트 세트를 생성할 수 있으며, 이러한 동작들의 클라이언트 세트는 동작(835)에서 실행을 위하여 클라이언트 디바이스에 제공될 수 있다.
반면, 클라이언트 디바이스에 의해 수행되는 액션들과 연관된 수정들은 콘텐트 관리 시스템에서 반영되지 않을 수 있다. 따라서, 이러한 시나리오에서, 시스템은 서버 상태 및 파일 시스템 상태를 수렴시키기 위해 콘텐트 관리 시스템에 의해 저장된 콘텐트 아이템들에 대하여 동작하도록 구성된 동작들의 서버 세트를 생성할 수 있으며, 이러한 동작들의 서버 세트는 동작(835)에서 실행을 위하여 콘텐트 관리 시스템에 제공될 수 있다.
일부 경우들에 있어서, 경우들 둘 모두는 참일 수 있으며, 동작들의 클라이언트 세트 및 동작들의 서버 세트가 생성되고 동작(835)에서 그들의 의도된 수신자들에게 제공될 수 있다. 동작들의 세트는 또한 트리 제약들이 유지된다는 것을 보장하기 위한 복수의 체크들을 포함할 수 있다. 예를 들어, 동작들의 세트는 도 6과 관련하여 논의된 바와 같은 다양한 충돌들 또는 제약들을 해결할 수 있다.
일단 동작들의 세트(들)가 의도된 수신자(들)에게 제공되면, 방법은 동작(805)으로 복귀하고 새로운 수정 데이터를 기다릴 수 있다. 예를 들어, 도 9에 예시된 시나리오에 대하여, 동작들의 세트는, 콘텐트 관리 시스템으로부터 노드(914)와 연관된 콘텐트 아이템을 검색하는 것 및 이를 클라이언트 디바이스의 로컬 파일 시스템에 추가하는 것을 포함할 수 있다. 이는, 로컬 트리(도 9에는 도시되지 않음) 및 싱크 트리(950) 내에 노드(914)에 대응하는 노드의 추가를 야기할 것이다. 도 8의 프로세스(800)의 다음 반복에서, 참조부호(982)에서 "추가(6, 5, Bar)" 및 "추가(7, 5, Bye)" 엔트리들에 의해 표현되는 노드(916) 및 노드(918)의 추가 수정은 더 이상 차단되지 않으며, 이는 그들의 부모인 노드(914)가 이미 싱크 트리에 추가되었기 때문이다. 따라서, 참조부호(982)에서 "추가(6, 5, Bar)" 및 "추가(7, 5, Bye)"에 의해 표현되는 노드(916) 및 노드(918)의 추가 수정은 액션들의 차단되지 않은 리스트에 추가될 수 있으며, 서버 상태와 파일 시스템 상태를 수렴시키도록 구성된 동작들의 하나 이상의 세트들을 생성하기 위해 사용될 수 있다.
동작들의 세트(들)는 서버 상태 및 파일 시스템 상태의 점진적인 수렴을 위한 하나 이상의 단계들을 제공할 수 있다. 점진적인 프로세스를 구현하는 것이 때때로 더 복잡할 수 있지만, 점진적인 프로세스는 요구되는 프로세싱 시간의 감소 및 메모리의 감소를 달성할 수 있다. 이러한 그리고 다른 초기의 기술적 개선들이 자연스럽게 추가적인 기술적 개선들로 이어진다. 예를 들어, 프로세싱 시간이 감소되기 때문에, 특정 수정들을 쓸모 없게 또는 유효 기간이 지나게 만드는 클라이언트 디바이스 또는 콘텐트 관리 시스템으로부터의 추가적인 변화들의 가능성이 마찬가지로 감소된다.
도 9와 관련하여, 예시의 목적을 위한 리스트로서 콘텐트 아이템들, 수정들, 액션들, 또는 파일 식별자들의 다양한 그룹화가 설명된다. 다른 유형들의 데이터 구조체들이 또한 호환가능하다. 예를 들어, 액션들의 차단되지 않은 리스트는, 대수적 시간으로 소팅(sort)된 데이터를 유지하고, 탐색, 순차적 액세스, 삽입, 및 삭제들을 가능하게 하기 위하여 B-트리 구조체로서 구현될 수 있다.
스케줄러
일부 실시예들에 있어서, 클라이언트 동기화 서비스는 서버 상태 및 파일 시스템 상태를 수렴시키도록 구성된 동작들의 세트 또는 시퀀스를 생성하고, 동작들을 실행을 위하여 콘텐트 관리 시스템 또는 클라이언트 디바이스로 제공할 수 있다. 그러나, 일부 시나리오들에 있어서, 클라이언트 디바이스의 파일 시스템 상의 또는 콘텐트 관리 시스템 상의 변화들은, 동작들의 세트가 실행 프로세스에 있는 동안 생성된 동작들의 세트가 유효 기간이 지나게 되거나 또는 쓸모 없게 되는 것을 초래할 수 있다. 다양한 실시예들은 이러한 그리고 다른 기술적 문제들에 대한 기술적 해법을 제공하는 것과 관련된다. 예를 들어, 클라이언트 동기화 서비스는 클라이언트 디바이스의 파일 시스템 상의 또는 콘텐트 관리 시스템 상의 변화들을 모니터링하고, 필요한 바와 같이 클라이언트 디바이스 및/또는 콘텐트 관리 시스템을 업데이트하도록 구성될 수 있다. 추가로, 클라이언트 동기화 서비스는, 동작들의 동시 실행을 가능하게 함으로써 성능을 개선하고 프로세싱 시간을 감소시키도록 구성될 수 있다.
일부 실시예들에 따르면, 도 2에 도시된 클라이언트 동기화 서비스(156)의 플래너(225)는 플랜 또는 동작들의 순서화되지 않은(unordered) 세트로 구성되는 동작들의 플랜을 생성할 수 있다. 플랜 내의 모든 동작들을 종속성들을 갖지 않으며, 결과적으로, 별개의 스레드들로 동시에 또는 임의의 순서로 실행될 수 있다. 일부 실시예들에 따르면, 플랜 내의 동작들은, 상태들 및 트리 데이터 구조체들을 수렴시키기 위하여 콘텐트 관리 시스템 및/또는 클라이언트 디바이스에 의해 취해질 수 있는 추상적인 명령어들이다. 예시적인 명령어들은, 콘텐트 아이템의 원격 또는 로컬 추가, 콘텐트 아이템의 원격 또는 로컬 삭제, 콘텐트 아이템의 원격 또는 로컬 편집, 또는 콘텐트 아이템의 원격 또는 로컬 이동을 포함할 수 있다.
도 2에 도시된 클라이언트 동기화 서비스(156)의 스케줄러(230)는, 플래너(225)로부터 동작들의 플랜을 수신하고, 플랜 내의 동작들의 실행을 관리하며, 플랜이 업데이트되었거나 또는 변화되었는지 여부를 결정하고, 업데이트되거나 또는 변화된 플랜의 실행을 관리하도록 구성될 수 있다. 예를 들어, 스케줄러(230)는 플랜 내의 동작들을 구현하기 위해 요구되는 태스크들 및 단계들을 실행하기 위하여 파일 시스템 인터페이스(205) 및 서버 인터페이스(210)를 조정(coordinate)할 수 있다. 이는, 파일 시스템 또는 콘텐트 관리 시스템으로부터 확인을 수신하는 것 또는 네트워크 연결이 존재하지 않을 때 또는 콘텐트 아이템이 어떤 다른 애플리케이션에 의해 잠겨 있을 때 재시도들을 핸들링하는 것과 같은 오류 핸들링 액티비티들을 포함할 수 있다.
각각의 동작은 태스크로서 지칭되는 스크립트 또는 스레드에 의해 구현될 수 있다. 태스크는 연관된 동작의 애플리케이션을 조정하며, 이는 동작을 구현하기 위해 요구되는 하나 이상의 단계들을 포함할 수 있다. 예를 들어, "로컬 추가 동작"은, 콘텐트 아이템이 클라이언트 디바이스의 로컬 파일 시스템에 추가되었으며, 결과적으로, 서버 상태와 파일 시스템 상태를 동기화하기 위하여 콘텐트 아이템이 콘텐트 관리 시스템에 추가되어야만 한다는 것을 나타낼 수 있다. 따라서, 로컬 추가 동작은, 로컬 추가 동작을 구현하기 위해 요구되는 하나 이상의 단계들을 포함하는 "로컬 추가 태스크"와 연관될 수 있다. 단계들은, 새로운 콘텐트 아이템을 콘텐트 관리 시스템에 통지하는 것, 콘텐트 아이템을 데이터의 하나 이상의 블록들로 콘텐트 관리 시스템에 업로딩하는 것, 데이터의 모든 블록들이 콘텐트 관리 시스템에 의해 수신되었음을 확인하는 것, 콘텐트 아이템이 손상되지 않았음을 확인하는 것, 콘텐트 아이템에 대한 메타데이터를 콘텐트 관리 시스템에 업로딩하는 것, 및 콘텐트 아이템의 추가를 콘텐트 관리 시스템에서 적절한 위치에 커밋하는 것 중 하나 이상을 포함할 수 있다.
태스크는 실행을 개시하고, 다른 이벤트들의 완료를 기다리면서 명확한 포인트에서 일시 중단(suspend)되며, 이벤트가 발생하였을 때 재개되고, 최종적으로 종료될 수 있다. 일부 실시예들에 따르면, 스케줄러(230)는 태스크들을 취소하거나, 재생성하거나, 또는 교체하도록 구성된다. 예를 들어, 서버 상태 또는 파일 시스템 상태에 대한 변화들에 기초하여, 태스크는 이것이 실행되기 이전에 오래된 상태가 될 수 있으며, 스케줄러(230)는 태스크가 실행되기 이전에 오래된 태스크를 취소할 수 있다.
이상에서 설명된 바와 같이, 플래너(225)는 트리 데이터 구조체들(예를 들어, 원격 트리, 싱크 트리, 및 로컬 트리)의 세트에 기초하여 동작들의 플랜을 생성할 수 있다. 시간이 경과하면서, 플래너(225)는 트리 데이터 구조체들의 상태에 기초하여 계속해서 동작들의 플랜들을 생성한다. 트리 데이터 구조체들이 서버 상태 및 파일 시스템 상태의 상태를 반영하기 위해 변화하는 경우, 플래너(225)는 또한 이전의 플랜과는 상이한 새로운 업데이트된 플랜을 생성할 수 있다. 스케줄러(230)는 플래너(225)에 의해 생성된 동작들의 각각의 플랜을 실행한다.
일부 시나리오들에 있어서, 후속 플랜의 동작들 내의 변화들은, 의도되지 않은 동기화 거동들이 실행 프로세스 중에 있는 이전 플랜 내의 동작과 충돌하는 것을 초래할 수 있다. 예를 들어, 제 1 플랜 내의 동작들이 실행되고 있을 때, 동작들 중 하나 이상이 제 2 플랜에서 취소된다(예를 들어, 존재하지 않는다). 예시하기 위하여, 도 10은, 시간 t1에서, 원격 트리에 의해 표현되는 서버 상태와 로컬 트리에 의해 표현되는 파일 시스템 상태는 모두 일치하는 원격 트리, 싱크 트리, 및 로컬 트리에 의해 도시되는 바와 같이 동기화되는, 예시적인 시나리오를 도시한다. 이러한 동기화된 상태에 기초하여, 플래너(225)는 t1에서 어떠한 동작들도 갖지 않는 플랜(예를 들어, 빈 플랜)을 생성할 수 있거나 또는 동작들의 플랜을 생성하지 않을 수 있다.
클라이언트 디바이스 상의 사용자는 로컬 파일 시스템으로부터 콘텐트 아이템 A를 삭제하거나 또는 클라이언트 동기화 서비스(156)에 의해 관리되는 폴더 밖으로 콘텐트 아이템 A를 이동시킬 수 있으며, 이는 시간 t2에서 로컬 트리로부터의 노드 A의 제거에 의해 반영된다. 플래너(225)는, 시간 t2에서 트리 데이터 구조체들의 상태에 기초하여 동작 로컬삭제(A)를 포함하는 플랜을 생성할 수 있다. 스케줄러(230)는 로컬삭제(A) 동작을 구현하기 위해 요구되는 태스크들 또는 단계들을 개시할 수 있다. 이러한 단계들은 콘텐트 아이템 A를 삭제하기 위하여 명령어들을 콘텐트 관리 시스템으로 송신하는 것을 포함할 수 있다.
콘텐트 아이템 A를 삭제하기 위한 명령어들이 콘텐트 관리 시스템으로 송신된 이후에, 클라이언트 디바이스 상의 사용자는 콘텐트 아이템 A의 삭제를 실행취소하거나 또는 콘텐트 아이템 A를 다시 이전 위치로 이동시킬 수 있다. 로컬 트리는 시간 t3에서 이러한 새로운 액션에 기초하여 업데이트되며, 플래너는 어떠한 동작들도 갖지 않는 상태로 비어 있는 새로운 플랜을 생성할 수 있다. 다시 한번, 시간 t3에서 트리 데이터 구조체들이 일치되며 시스템은 동기화된 상태이다.
그러나, 콘텐트 아이템 A를 삭제하기 위한 명령어들이 콘텐트 관리 시스템으로 송신되었기 때문에, 콘텐트 관리 시스템은 서버 상태로부터 콘텐트 아이템 A를 삭제한다. 스케줄러(230)가 콘텐트 아이템 A의 삭제를 취소하려고 시도할 수 있지만, 명령어들이 이미 송신되어 콘텐트 관리 시스템에 의해 완료되었을 수 있다. 서버에서의 이러한 변화는 클라이언트 동기화 서버(156)로 통신되며, 이는 시간 t4에서 노드 A를 삭제함으로써 원격 트리를 업데이트한다. 플래너(225)는 원격 트리에서의 변화들 및 원격 트리와 싱크 트리 사이의 차이를 알아차리고, 콘텐트 아이템 A가 서버 상태에서 제거되었음을 결정할 수 있다. 따라서, 플래너(225)는 시간 t4에서 원격삭제(A) 동작을 갖는 플랜을 생성할 것이다. 서버 상태와 파일 시스템 상태를 동기화하기 위한 노력으로, 콘텐트 아이템 A는 최종적으로 클라이언트 디바이스 및 로컬 트리로부터 삭제될 것이다.
문제는, 서버 상태로부터 콘텐트 아이템 A의 제거, 원격삭제(A) 동작의 생성, 및 파일 시스템 상태로부터의 콘텐트 아이템 A의 최종적인 제거 모두가 의도되지 않으며, 이는 사용자에 대하여 결국에는 추가적인 문제들을 초래할 수 있다. 추가로, 일부 경우들에 있어서, 애플리케이션들 또는 프로세스들이 또한 콘텐트 아이템들을 액세스할 수 있으며, 비의도적 동기화 거동이 많은 추가적인 기술적 이슈들을 초래할 수 있다. 다양한 실시예들은 서버 상태와 파일 시스템 상태 사이의 콘텐트 아이템들의 동기화에 있어서 의도되지 않은 결과들을 방지하는 것에 관한 것이다.
일부 실시예들에 따르면, 더 이상 동작들의 플랜 내에 존재하지 않는 오래된 동작에 대한 태스크를 취소할 때, 스케줄러(230)는 다른 태스크들의 실행을 개시하도록 진행하기 이전에 취소가 완료되는 것을 기다릴 수 있다. 예를 들어, 스케줄러(230)는, 다른 태스크들을 가지고 진행하기 이전에 클라이언트 디바이스 또는 콘텐트 관리 시스템으로부터 취소의 확인을 수신하기를 기다릴 수 있다. 스케줄러(230)는 태스크가 개시되었는지 여부를 결정할 수 있으며, 태스크가 개시되지 않았던 경우, 스케줄러는 태스크를 취소하고, 태스크가 더 이상 실행을 기다리지 않는다는 것을 확인할 수 있다. 태스크가 개시되었던 경우, 확인은 클라이언트 디바이스 또는 콘텐트 관리 시스템으로부터 올 수 있으며, 취소된 태스크와 연관된 단계들 전부가 실행취소되었음을 스케줄러에 통지할 수 있다. 일부 구현예들에 따르면, 스케줄러(230)는, 일단 태스크가 개시되었으면 태스크의 취소를 허용하지 않는다. 이는, 모든 태스크들 또는, 태스크들 또는 태스크 유형들(서버 상태와의 동기화를 위해 파일 시스템 상태 상의 업데이트를 콘텐트 관리 시스템으로 전송하는 커밋 태스크)의 특정 서브세트에 대한 경우일 수 있다.
성능을 개선하고 태스크들의 취소뿐만 아니라 태스크들의 동시 실행을 가능하게 하기 위하여, 스케줄러(230)는 또한, 동작들의 제 1 플랜과 동작들의 업데이트된 제 2 플랜 사이의 차이들에 기초하여 태스크들의 실행 및 취소를 관리하도록 구성될 수 있다. 도 11은 본 기술의 다양한 실시예들에 따른 동작들의 2개의 플랜들의 예시적인 벤 다이어그램(1100) 표현을 도시한다. 플래너(225)는 동작들의 제 1 세트를 가지고 플랜 1(1110)을 생성하고, 트리 데이터 구조체들에 대한 업데이트를 수신하며, 동자들의 제 2 세트를 가지고 업데이트된 플랜 2(1120)를 생성할 수 있다.
플랜 1(1110) 및 플랜 2(1120)는, 벤 다이어그램(1100)의 부분(1130)에 의해 표현되는 복수의 공통 동작들을 공유할 수 있다. 플랜 1(1110) 및 플랜 2(1120)는 또한 공통되지 않는 복수의 동작들을 포함할 수 있다. 예를 들어, 플랜 2(1120) 내에 존재하지 않는 플랜 1(1110) 내의 동작들은, 플래너(225)에 의해 검출된 트리 구조체들에 대한 업데이트들에 기초하여 오래되고 더 이상 통용되지 않는다. 플랜 1(1110)의 이러한 오래된 동작들은 벤 다이어그램(1100)의 부분(1140)에 의해 표현된다. 플랜 1(1110) 내에 존재하지 않는 플랜 2(1120) 내의 새로운 동작들은 부분(1150)에 의해 표현된다. 플랜 1(1110)과 플랜 2(1120) 사이의 차이들 및 공통점들을 나타내는 부분들(1130, 1140, 및 1150)의 각각은, 트리 데이터 구조체 내에 반영된 파일 시스템 상태와 서버 상태에 대한 업데이트들에 의존하여 어떠한 동작들도 포함하지 않거나 또는 다수의 동작들을 포함할 수 있다.
부분(1140) 내의 동작들이 더 이상 가장 최신의 플랜 내에 존재하지 않기 때문에, 스케줄러(230)는 이러한 동작들과 연관된 태스크들을 취소할 수 있다. 의도되지 않은 동기화 거동을 방지하기 위하여, 플랜 1 내에(예를 들어, 부분(1150) 내에) 존재하지 않는 플랜 2 내의 동작들과 연관된 태스크들은, 부분(1140) 내의 동작과 연관된 태스크들의 취소가 완료될 때까지 연기된다. 그러나, 각각의 플랜 내의 동작들이 동시에 실행될 수 있도록 구성되기 때문에, 부분(1130)에 의해 표현되는 플랜 1 및 플랜 2의 교차부 내의 동작들과 연관된 태스크들은, 그들의 완료를 기다릴 필요 없이 부분(1140) 내의 동작과 연관된 태스크들의 취소와 동시에 실행될 수 있다. 부분(1130)과 연관된 태스크들의 실행 및 부분(1140)과 연관된 태스크들의 동시 취소를 가능하게 함으로써, 이용가능한 컴퓨팅 자원들의 더 효율적인 사용뿐만 아니라 프로세싱 시간에서의 감소가 달성될 수 있다.
도 12는 본 기술의 다양한 실시예들에 따른 동작들의 플랜들에서의 변화들을 관리하기 위한 예시적인 방법을 도시한다. 본원에서 설명되는 방법들 및 프로세스들이 특정 순서의 특정 단계들 및 동작들을 가지고 도시될 수 있지만, 달리 언급되지 않는 한, 유사하거나 또는 대안적인 순서들로, 또는 병렬로 수행되는, 추가적이거나, 더 적거나, 또는 대안적인 단계들 및 동작들이 다양한 실시예들의 범위 내에 속한다. 방법(1200)은, 예를 들어, 클라이언트 디바이스 상에서 실행 중인 도 2의 클라이언트 동기화 서비스(156)와 같은 시스템에 의해 구현될 수 있다.
시스템은 콘텐트 관리 서비스와 연관된 콘텐트 아이템들과 관련하여 콘텐트 관리 시스템 및/또는 클라이언트 디바이스로부터 업데이트들을 수신하도록 구성될 수 있다. 예를 들어, 시스템은 콘텐트 관리 서비스에 의해 저장된 콘텐트 아이템들에 대한 서버 수정 데이터를 수신하고, 서버 수정 데이터에 기초하여 원격 트리를 업데이트할 수 있다. 원격 트리는 콘텐트 관리 시스템에 의해 저장된 콘텐트 아이템들에 대한 서버 상태를 나타낸다. 시스템은 또한 클라이언트 디바이스 상에 저장된 콘텐트 아이템들에 대한 클라이언트 수정 데이터를 수신하고, 클라이언트 수정 데이터에 기초하여 로컬 트리를 업데이트할 수 있다. 로컬 트리는 클라이언트 디바이스 상에 저장된 콘텐트 아이템들에 대한 파일 시스템 상태를 나타낸다.
동작(1205)에서, 시스템은 콘텐트 관리 시스템과 연관된 서버 상태와 클라이언트 디바이스와 연관된 파일 시스템 상태를 수렴시키도록 구성된 동작들의 제 1 세트를 수신할 수 있다. 예를 들어, 시스템은 싱크 트리와 원격 트리 또는 싱크 트리와 로컬 트리 사이의 차이들을 식별하고, 트리들 사이의 임의의 차이에 기초하여 동작들의 제 1 세트를 생성할 수 있다. 싱크 트리는 서버 상태와 파일 시스템 상태 사이의 알려진 싱크된 상태를 나타낸다.
시스템은 동작들의 제 1 세트를 구현하는 것을 시작할 수 있다. 예를 들어, 일부 경우들에 있어서, 동작들은 실행을 위해 콘텐트 관리 시스템 및/또는 클라이언트 디바이스로 송신될 준비가 된 포맷으로 존재한다. 다른 경우들에 있어서, 동작들은, 시스템에 의해 관리될 수 있는 하나 이상의 태스크들, 스크립트들, 또는 실행 스레드들로 변환될 수 있다. 시스템은, 서버 상태와 파일 시스템 상태를 수렴시키기 위하여 태스크들, 스크립트들, 또는 실행 스레드들에 따라 콘텐트 관리 시스템 및/또는 클라이언트 디바이스와 인터페이스할 수 있다.
이러한 시간 동안, 시스템은, 콘텐트 관리 서비스와 연관된 콘텐트 아이템들에 관하여 콘텐트 관리 시스템 및/또는 클라이언트 디바이스로부터 수정 데이터를 계속해서 수신할 수 있다. 수정 데이터에 기초하여, 시스템은 원격 트리 또는 로컬 트리를 업데이트하고, 트리 데이터 구조체들에 대한 업데이트들에 기초하여 동작들의 제 2 세트를 생성할 수 있다. 동작(1210)에서, 시스템은 동작들의 제 2 세트를 수신할 수 있다.
동작(1215)에서, 시스템은, 존재하는 경우, 동작들의 제 2 세트 내에 존재하지 않는 동작들의 제 1 세트 내의 제 1 동작을 식별한다. 시스템이 동작들의 제 2 세트 내에 존재하지 않는 동작들의 제 1 세트 내의 동작을 찾는 경우, 이러한 동작은 수정 데이터 내에 명시된 변화들의 결과로서 오래되고 유효 기간이 지났을 수 있다. 따라서, 시스템은, 동작(1220)에서, 제 1 동작의 취소를 개시할 수 있다. 제 1 동작의 취소는 다수의 단계들, 단계들에 대한 다수의 확인 수령(receipt)들, 및 사소한 양의 프로세싱 시간을 포함할 수 있다.
동작(1225)에서, 시스템은, 존재하는 경우, 동작들의 제 1 세트 및 동작들의 제 2 세트 둘 모두 내에 포함된 제 2 동작을 식별한다. 시스템이 동작들의 제 1 세트 및 동작들의 제 2 세트 둘 모두 내의 동작을 찾는 경우, 이러한 동작은 수정 데이터 내에 명시된 변화들에도 불구하고 여전히 유효할 수 있다. 추가로, 동작들의 세트들 둘 모두 내에 있는 동작들이 세트 내의 다른 동작들에 대하여 동시에 또는 임의의 순서로 실행될 수 있도록 구성되기 때문에, 제 2 동작은, 제 1 동작이 취소되는 동안 계속해서 실행될 수 있다. 따라서, 시스템은, 제 1 동작의 취소가 완료되는 것을 기다리지 않고 동작(1230)에서 제 2 동작의 실행을 개시할 것이다.
동작(1235)에서, 시스템은, 존재하는 경우, 동작들의 제 2 세트 내에는 존재하지만 동작들의 제 1 세트 내에는 존재하지 않는 제 3 동작을 식별한다. 시스템이 동작들의 제 1 세트 내에 존재하지 않는 동작들의 제 2 세트 내의 동작을 찾는 경우, 이러한 동작은 수정 데이터 내에 명시된 변화들의 결과로서 새로운 동작일 수 있다. 의도되지 않은 결과들을 방지하기 위하여, 시스템은 제 1 동작의 취소의 완료를 기다리는 것을 개시할 것이다. 동작(1240)에서, 시스템은 제 1 동작이 취소를 완료하였음을 결정할 수 있으며, 결과적으로, 동작(1245)에서, 제 3 동작의 실행을 개시할 수 있다.
트리 데이터 구조체 저장 - 파일명 저장 공간의 감소
클라이언트 동기화 서비스(156)는, 예를 들어, 하드 디스크, 고체 상태 메모리, 또는 다른 유형들의 컴퓨터 판독가능 매체와 같은 영구 저장 디바이스 상에 트리 데이터 구조체들(예를 들어, 원격 트리, 싱크 트리, 및 로컬 트리)을 저장할 수 있다. 성능을 개선하고, 프로세싱 시간을 감소시키며, 유효 기간이 지난 동작들을 감소시키기 위하여, 클라이언트 동기화 서비스(156)는 기동 시에 트리 데이터 구조체들을 메모리(예를 들어, 랜덤 액세스 메모리 또는 고속 메모리의 캐시) 내에 트리 데이터 구조체들을 로딩하고, 메모리 내의 트리 데이터 구조체들에 대하여 동기화 기능들을 수행할 수 있다. 영구 저장 디바이스 상의 데이터 용량이 제한되며 이러한 데이터 자원들의 보존이 중요하다. 메모리에 대하여 데이터 용량이 훨씬 더 제한되고 비싸며, 이러한 데이터 자원들의 보존이 매우 중요하다.
운영 시스템 또는 클라이언트 애플리케이션에 의존하여, 콘텐트 아이템들에 대한 파일명들은 약 1024 바이트의 크기일 수 있으며, 노드 내의 최대 데이터 컴포넌트일 수 있다. 예를 들어, 백만 개의 노드들을 가지면, 단지 노드들에 대한 파일명들의 크기만도 최소 1 기가바이트에 이를 수 있다. 이상에서 언급된 바와 같이, 클라이언트 동기화 서비스(156)는 서버 상태와 파일 시스템 상태와 로컬 트리의 동기화에 도움을 주도록 구성되며, 싱크 트리 및 원격 트리는 3개의 모든 트리들이 동등할 때의 동기화된 상태를 반영한다. 따라서, 노드들 내에 콘텐트 아이템들의 파일명들을 저장하는데 있어서 어떤 중복(redundancy)이 존재할 가능성이 있다.
본 기술의 다양한 실시예들은, 파일명들의 중복을 감소시킴으로써 트리 데이터 구조체들에 대한 파일명들을 저장하기 위해 필요한 메모리의 양을 감소시키고 노드들의 측면을 감소시키는 것을 목적으로 한다. 노드 내에 파일명을 저장하는 대신에, 클라이언트 동기화 서비스(156)는, 트리 데이터 구조체들 내의 노드들에 대한 파일명들을 파일명 어레이 내에 저장하고 노드 내에 파일명에 대한 참조를 저장하도록 구성된다. 결과적으로, 일단 파일명이 파일명 어레이 내에 저장되면, 그 파일명을 갖는 콘텐트 아이템을 갖는 임의의 노드는 노드 내에 저장된 참조를 사용하여 파일명을 액세스할 수 있다. 일부 실시예들에 있어서, 노드 내에 저장된 파일명에 대한 참조는, 파일명 어레이 내의 파일명의 오프셋, 위치(location), 또는 포지션(position)을 나타내는 정수 값일 수 있다.
도 13은 본 기술의 다양한 실시예들에 따른 파일명 어레이(1310)의 일 예시를 도시한다. 파일명들 "Pictures," "a.jpg," 및 "Documents"(전체적으로 도시되지는 않음)을 저장하는 파일명 어레이(1310)가 도시된다. 파일명 어레이(1310) 내에서 "Pictures" 파일명은 위치 0에 도시되며, "a.jpg" 파일명은 위치 9에 도시되고, "Documents" 파일명은 위치 16에 도시된다. 파일명 어레이(1310) 내에서, 구분자(separator)(1314)(예를 들어, 널 문자(null character))가 각각의 파일명을 분리한다.
따라서, 노드에 대한 파일명을 조회(lookup)하기 위하여, 클라이언트 동기화 서비스(156)는 간단하게, 파일명 어레이(1310) 내의 노드에 대한 파일명의 위치를 나타내는 노드 내에 저장된 파일면에 대한 참조를 액세스할 수 있다. 클라이언트 동기화 서비스(156)는 참조에 의해 지정된 파일명 어레이(1310) 내의 위치에서 콘텐트 아이템의 파일명을 검색할 수 있다. 예를 들어, 클라이언트 동기화 서비스(156)는 참조에 지정된 위치에서 파일명을 판독하는 것을 시작하고 구분자(1314)에 도달할 때 이를 중지할 수 있다.
일부 경우들에 있어서, 클라이언트 동기화 서비스(156)가 또한 파일명에 기초하여 참조를 조회할 필요가 있을 수 있다. 예를 들어, 새로운 노드를 추가하거나 또는 노드를 재명명할 때, 클라이언트 동기화 서비스(156)는, 노드의 파일명이 이미 파일명 어레이(1310) 내에 존재하는지 여부를 결정하기를 희망할 수 있다. 참조가 발견되는 경우, 파일명이 존재하며, 이는 참조에 기초하여 위치될 수 있다. 따라서, 클라이언트 동기화 서비스(156)는 파일명에 대한 참조를 사용할 수 있으며, 새로운 또는 재명명된 노드 내에 참조를 저장할 수 있다. 참조가 발견되지 않는 경우, 파일명 어레이(130) 내에 파일명이 존재하지 않으며, 클라이언트 동기화 서비스(156)는 파일명을 파일명 어레이(1310)에 추가할 수 있다.
파일명에 기초하는 참조의 조회는, 해시 인덱스 어레이의 사용에 의해 가능해진다. 도 13은 본 기술의 다양한 실시예들에 따른 해시 인덱스 어레이(1350)의 일 예시를 도시한다. 해시 인덱스 어레이(1350)는 다양한 위치들에 파일명들에 대한 참조들을 저장하도록 구성된다. 특히, 파일명에 대한 참조는 파일명의 해시에 기초하여 해시 인덱스 어레이(1350) 내의 포지션에 저장된다. 도 13에 예시된 일 예에 있어서, 사용되는 해시 함수에 기초하여, 파일명 "Pictures"의 해시는 4와 동일할 수 있다. 따라서, 파일명 "Pictures"에 대한 참조는 해시 인덱스 어레이(1350) 내에서 포지션 4에 저장된다. 이러한 참조 값은 0이며, 이는, 이상에서 언급된 바와 같이, 파일명 "Pictures"의 파일명 어레이(1310) 내의 위치를 지정한다. 유사하게, 파일명 "Documents"의 해시는 0과 동일할 수 있다. 따라서, 파일명 "Documents"에 대한 참조는 해시 인덱스 어레이(1350) 내에서 포지션 0에 저장된다. 이러한 참조 값은 16이며, 이는, 이상에서 언급된 바와 같이, 파일명 "Documents"의 파일명 어레이(1310) 내의 위치를 지정한다.
일부 시나리오들에 있어서, 2개의 파일명들의 해시가 동일한 해시 값을 산출할 때 충돌이 발생할 수 있다. 도 13에 예시된 예에 있어서, "a.jpg"의 해시 값이 또한 4일 수 있다. 충돌이 발생하는 경우, 클라이언트 동기화 서비스(156)는 해시 인덱스 어레이(1350) 내의 다음의 이용가능 포지션을 사용할 수 있다. 예를 들어, 파일명 "Pictures"에 대한 참조가 해시 인덱스 어레이(1350) 내에서 포지션 4에 저장되기 때문에, 클라이언트 동기화 서비스(156)는 해시 인덱스 어레이(1350) 내의 다음 이용가능 포지션을 조회하고 파일명 "a.jpg"에 대한 참조(예를 들어, 9)를 저장할 수 있다.
도 14는 본 기술의 다양한 실시예들에 따른 파일명을 저장하기 위한 예시적인 방법을 도시한다. 본원에서 설명되는 방법들 및 프로세스들이 특정 순서의 특정 단계들 및 동작들을 가지고 도시될 수 있지만, 달리 언급되지 않는 한, 유사하거나 또는 대안적인 순서들로, 또는 병렬로 수행되는, 추가적이거나, 더 적거나, 또는 대안적인 단계들 및 동작들이 다양한 실시예들의 범위 내에 속한다. 방법(1400)은, 예를 들어, 클라이언트 디바이스 상에서 실행 중인 도 2의 클라이언트 동기화 서비스(156)와 같은 시스템에 의해 구현될 수 있다.
동작(1405)에서, 시스템은 트리 데이터 구조체 내의 노드에 대한 수정을 검출할 수 있다. 수정은, 예를 들어, 트리 데이터 구조체에 대한 노드의 추가 또는 노드의 파일명의 편집일 수 있다. 그러면, 시스템은, 동작(1410)에서 파일명이 이미 파일명 어레이 내에 존재하는지 여부를 결정할 수 있다. 시스템은, 파일명 어레이 내의 파일명의 참조 위치에 대하여, 노드와 연관된 파일명을 사용하여 질의함으로써 파일명이 파일명 어레이 내에 이미 존재하는지를 확인하기 위해 체크할 수 있다. 참조 위치가 발견되는 경우, 동작(1415)에서 파일명을 파일명 어레이에 추가해야 할 필요성이 없으며, 시스템은, 동작(1420)에서, 질의에 의해 반환되는 참조이어야만 하는 파일명 어레이 내의 파일명에 대한 위치를 결정하고 파일명의 위치를 노드 내에 저장할 수 있다.
쿼리가 파일명 어레이 내의 파일명에 대한 참조를 반환하지 않거나 또는 파일명이 달리 파일명 어레이 내에 존재하지 않는 경우, 시스템은, 동작(1425)에서 파일명 및 구분자를 파일명 어레이에 첨부하고, 동작(1430)에서 파일명 어레이 내의 파일명의 위치를 결정하며, 동작(1435)에서 노드 내에 파일명의 위치를 저장할 수 있다.
파일명에 기초하여 참조 위치의 후속 질의를 가능하게 하기 위하여, 시스템은 추가로 해시 인덱스 내에 파일명의 위치를 저장할 수 있다. 파일명의 위치를 저장하기 위한 해시 인덱스 내의 포지션을 결정하기 위하여, 시스템은 파일명의 해시 값을 계산할 수 있다. 이러한 해시 값은 파일명의 위치를 저장하기 위한 해시 인덱스 내의 포지션을 찾기 위해 사용될 수 있다.
일단 파일명의 위치가 노드 내에 저장되면, 파일명을 검색하는 것은 단순히 노드 내의 파일명의 위치를 액세스하는 것 및 파일명 어레이 내에서 파일명을 조회하기 위하여 위치를 사용하는 것을 수반할 수 있다. 시스템은 노드 내에 명시된 위치로부터 시작하여 구분자에 도달할 때 중지할 수 있다.
도 15는 본 기술의 다양한 실시예들에 따른 주어진 파일명에 대하여 파일명의 위치를 검색하기 위한 예시적인 방법을 도시한다. 본원에서 설명되는 방법들 및 프로세스들이 특정 순서의 특정 단계들 및 동작들을 가지고 도시될 수 있지만, 달리 언급되지 않는 한, 유사하거나 또는 대안적인 순서들로, 또는 병렬로 수행되는, 추가적이거나, 더 적거나, 또는 대안적인 단계들 및 동작들이 다양한 실시예들의 범위 내에 속한다. 방법(1500)은, 예를 들어, 클라이언트 디바이스 상에서 실행 중인 도 2의 클라이언트 동기화 서비스(156)와 같은 시스템에 의해 구현될 수 있다. 이상에서 설명된 바와 같이, 방법은, 파일명이 이미 파일명 어레이 내에 저장되었는지 여부를 결정하기 위해 사용될 수 있다.
파일명들의 위치들은 해시 인덱스 또는 해시 인덱스 어레이 내에 저장된다. 따라서, 동작(1505)에서, 시스템은 파일명에 대하여 해시 함수를 실행함으로써 해시 인덱스 내의 포지션을 생성할 수 있다. 이는, 예를 들어, 재명명되는 노드에 대한 새로운 명칭 또는 새로운 노드의 명칭일 수 있다. 동작(1510)에서, 시스템은, 해시 인덱스 내의 포지션으로부터, 파일명의 위치 정보를 검색한다. 이러한 위치 정보는, 파일명이 저장되는 파일명 어레이 내의 위치에 대한 것이다.
일부 구현예들에 있어서, 시스템은, 동작(1515)에서, 정확한 파일명이 위치 내에 저장되었음을 확인하기 위하여 체크할 수 있다. 예를 들어, 시스템은, 위치 정보에 기초하여, 파일명 어레이로부터 스트링(string)을 검색하고, 그 스트링을 파일명과 비교할 수 있다. 스트링 및 파일명이 일치하는 경우, 동작(1520)에서, 파일명의 위치가 확인되고, 파일명의 위치가 노드 내에 저장된다.
스트링 및 파일명이 일치하지 않는 경우, 동작(1530)에서, 시스템은 해시 인덱스 내의 다음 포지션 내의 위치 정보를 검색하고, 시스템은 다음 포지션 내의 위치 정보가 정확한지 여부를 체크하기 위해 동작(1515)로 복귀할 수 있다. 시스템은 정확한 위치 정보가 발견될 때까지 이를 계속할 수 있으며, 동작(1520)에서, 노드 내에 이를 저장할 수 있다.
트리들 사이의 차이들의 효율적인 식별
이상에서 언급된 바와 같이, 클라이언트 동기화 서비스(156)는, 콘텐트 관리 시스템에 의해 저장된 콘텐트 아이템들에 대한 서버 상태를 나타내는 원격 트리, 클라이언트 디바이스 상에 저장된 대응하는 콘텐트 아이템들에 대한 파일 시스템 상태를 나타내는 로컬 트리, 및 서버 상태와 파일 시스템 상태 사이의 알려진 싱크된 상태를 나타내는 싱크 트리 내의 노드들 사이의 차이들을 식별하도록 구성된다. 이러한 차이들에 기초하여, 실행되는 경우, 3개의 트리 데이터 구조체들이 동일하게 될 동기화된 상태를 향해 서버 상태 및 시스템 상태를 수렴시키도록 구성되는 동작들의 세트가 생성될 수 있다.
다수의 노드들이 존재할 때, 트리들 사이의 차이들을 효율적으로 식별할 수 있는 것이 중요하다. 예를 들어, 트리 내에 수백만 개의 노드들이 존재할 수 있으며, 각각의 노드를 개별적으로 비교하는 것은 프로세싱 시간 및 자원 사용과 관련하여 금지될 수 있다.
본 기술의 다양한 실시예들은 트리들 사이의 차이를 식별하기 위하여 더 효율적인 수단을 제공하는 것과 관련된다. 구체적으로, 클라이언트 동기화 서비스(156)는, 노드들이 상이한지 여부를 결정하기 위해 다른 트리들 내의 노드들과 비교하기위해 사용될 수 있는 값들을 각각의 노드에 할당하도록 구성된다. 이러한 값들이 디프(diff) 값들로서 지칭될 수 있다. 트리들 사이의 차이들을 식별하는 효율을 개선하기 위하여, 각각의 리프 노드에 디프 값이 할당될 수 있으며, 부모 노드들에 대한 디프 값들은 그들의 자식 노드들의 디프 값들에 기초하여 계산될 수 있다. 루트 노드를 포함하는 트리 데이터 구조체의 매 레벨에 대한 디프 값들이 이러한 방식으로 계산될 수 있다.
도 16a 및 도 16b는 다양한 실시예들에 따른 트리 데이터 구조체의 예들을 도시한다. 예시적인 목적들을 위하여, 도 16a 및 도 16b는 싱크 트리 및 로컬 트리를 도시한다. 그러나, 원격 트리가 유사하게 수행할 수 있다. 도 16a 및 도 16b에서, 싱크 트리 및 로컬 트리에 대한 리프 노드들에 대한 디프 값들은 노드들의 해시 함수들을 사용하여 연산된다. 각각의 부모 노드(또는 자식들을 갖는 노드)는 그들의 자식 노드들의 디프 값들에 기초하여 연산된 디프 값을 갖는다.
예를 들어, 도 16a의 싱크 트리(1605) 내에서, 노드 C에 대한 디프 값은 325이고, 노드 D에 대한 디프 값은 742이며, 노드들 C 및 D의 부모인 B에 대한 디프 값은 C 및 D의 디프 값들의 함수로서 계산된다. 다시 말해서, DiffValue(B) = f(DiffValue(C), DiffValue(D)) = f(325, 742)이다. 마찬가지로, 루트 노드의 디프 값은 그것의 자식 노드들인 노드 A 및 노드 B의 디프 값들의 함수이다. 바꿔 말하면, DiffValue(/root) = f(DiffValue(A), DiffValue(B)) = f(924, 789).
트리들 사이의 차이들을 식별하기 위하여, 클라이언트 동기화 서비스(156)는, 이들이 상이한지 여부를 확인하기 위하여 대응하는 노드들의 디프 값들을 비교할 수 있다. 디프 값들이 동일한 경우, 트리들 사이에 차이가 존재하지 않는다. 디프 값들이 상이한 경우, 노드 내에 또는 노드와 연관된 경로 아래쪽에 변화가 존재한다. 결과적으로, 클라이언트 동기화 서비스(156)는, 이들이 상이한지 여부 및 자식 노드와 연관된 경로 아래쪽에 차이가 존재하는지 여부를 결정하기 위하여 자식 노드들을 자세히 살펴보고 반대편 트리 내의 대응하는 노드들을 비교할 수 있다.
예를 들어, 도 16a에서, 클라이언트 동기화 서비스(156)는 싱크 트리(1605)의 루트 노드 및 로컬 트리(1610)의 루트 노드의 디프 값들을 비교하고, 디프 값들이 일치한다는 것을 결정할 수 있다. 따라서, 루트 노드들의 자식들 내에 차이가 존재하지 않는다. 결과적으로, 클라이언트 동기화 서비스(156)는, 트리들 내의 각각의 그리고 매 노드를 반대편의 트리 내의 대응하는 노드와 비교할 필요 없이, 싱크 트리(1605) 및 로컬 트리(1610)가 일치하고 동기화되었다는 것을 결정할 수 있다.
도 16b에 예시된 예에 있어서, 클라이언트 동기화 서비스(156)는 유사하게 싱크 트리(1605)의 루트 노드 및 로컬 트리(1610)의 루트 노드의 디프 값들을 비교할 수 있다. 그러나, 클라이언트 동기화 서비스(156)는, 싱크 트리(1605)의 루트 노드와 로컬 트리(1610)의 루트 노드의 디프 값들이 상이하다는 것을 결정할 수 있으며, 이는 루트 노드들의 자손들에서 차이가 존재할 수 있음을 나타낸다.
따라서, 클라이언트 동기화 서비스(156)는 그들의 디프 값들을 비교하기 위하여 루트 노드들의 자식들의 다음 레벨로 이동할 수 있다. 노드 A에 대하여, 싱크 트리(1615) 내의 노드 A의 디프 값 및 로컬 트리(1620) 내의 노드 A의 디프 값이 일치한다. 따라서, 이들 2 사이에 차이가 존재하지 않으며, 루트 레벨에서 검출된 차이는 노드 A 또는 노드 A 아래의 임의의 경로에 의해 초래되는 것이 아니다.
노드 B로 이동하면, 클라이언트 동기화 서비스(156)는 트리들 둘 모두 내의 노드 B의 그들의 디프 값들을 비교하며, 싱크 트리(1615) 내의 노드 A의 디프 값 및 로컬 트리(1620) 내의 노드 A의 디프 값이 상이하다는 것을 발견한다. 따라서, 루트 레벨에서 검출된 차이는 노드 B 또는 노드 B 아래의 경로에 의해 초래된다. 클라이언트 동기화 서비스(156)는, 그들의 디프 값들을 비교하기 위해 노드 B의 자식들의 다음 레벨로 이동하고, 루트 레벨에서 검출된 차이가 노드 D의 삭제에 의해 초래되었음을 발견할 수 있다. 결과적으로, 클라이언트 동기화 서비스(156)는, 트리들 내의 각각의 그리고 매 노드를 반대편의 트리 내의 대응하는 노드와 비교할 필요 없이 싱크 트리(1615)와 로컬 트리(1620) 사이의 차이점을 식별할 수 있다. 예를 들어, 트리들 둘 모두 내의 노드 A의 디프 값들이 일치되기 때문에, 노드 A는 분석될 필요가 없는 다수의 자손 노드들을 가졌을 수 있다.
머클 트리(Merkle tree) 또는 해시 트리 메커니즘이 일부 경우들에서 작동할 수 있다. 예를 들어, 각각의 리프 노드에 대한 디프 값은 리프 노드의 해시에 기초하여 계산될 수 있으며, 비-리프 노드들의 디프 값은 자식 디프 값들의 합계의 해시에 기초하여 연산될 수 있다. 그러나, 여기에서 머클 트리 또는 해시 트리 메커니즘은 특정 상황들에서 바람직하지 않은 성능 메트릭들을 갖는다. 당신이 리프 노드를 추가하거나 또는 삭제할 때, 리프 노드의 조상 노드들의 전부의 디프 값들은 그들의 디프 값들이 재연산되어야 할 필요가 있으며, 조상 노드들의 각각을 재연산하는 것은 각각의 조상 노드에 대한 자식 노드들의 전부의 리스팅을 필요로 한다. 이는 연산적으로 비용이 비싸며, 특히, 트리 데이터 구조체들이, 각각의 노드가 형제(sibling) 노드 다음에 또는 그 근처에서 메모리 내에 저장되지 않는 방식으로 저장될 때 그러하다.
본 기술의 다양한 실시예들은, 다른 것들 중에서도 특히, 부모 노드들의 디프 값들을 상이하게 연산함으로써, 이러한 그리고 다른 기술적 단점들을 해결한다. 각각의 리프 노드의 디프 값은 리프 노드의 해시를 계산함으로써 결정될 수 있다. 각각의 부모 노드의 디프 값은 그것의 자식들 모두의 해시들의 배타적-논리합 연산 또는 XOR 연산을 수행함으로써 계산될 수 있다.
도 17은 다양한 실시예들에 따른 트리 데이터 구조체의 일 예를 도시한다. 도 17의 트리 데이터 구조체에서, 리프 노드들 A, C, 및 D의 디프 값들은 노드들을 해싱함으로써 계산된다. 노드 B의 디프 값은 그것의 자식 노드들인 노드 C 및 노드 D의 XOR 함수이다. 루트 노드의 디프 값은 그것의 자식 노드들인 노드 A 및 노드 B의 해시의 XOR 함수이다. XOR 함수의 중요한 특성들은 XOR이 순서에 민감하지 않다는 것을 포함하며, 이는 m XOR n이 n XOR m과 동일할 것임을 의미한다. 또한 m XOR m은 0과 동일하다.
당신이 리프 노드를 추가하거나 또는 삭제할 때, 리프 노드의 조상 노드들의 전부의 디프 값들이 재연산된 그들의 디프 값들을 가져야 할 필요가 있다. 그러나, 조상 노드들의 디프 값들을 연산하는 것은 이들 전부의 리스팅을 요구하지 않고 이루어질 수 있다. 예를 들어, 자식 노드가 삭제될 때, 부모의 새로운 디프 값은, 삭제된 자식 노드의 디프 값 및 부모의 오래된 디프 값에 대한 XOR 연산을 수행함으로써 계산될 수 있다. 자식 노드가 추가될 때, 부모의 새로운 디프 값은, 새로운 자식 노드의 디프 값 및 부모의 오래된 디프 값에 대한 XOR 연산을 수행함으로써 계산될 수 있다.
도 18은 본 기술의 다양한 실시예들에 따른 주어진 파일명에 대한 파일명의 위치를 검색하기 위한 예시적인 방법을 도시한다. 본원에서 설명되는 방법들 및 프로세스들이 특정 순서의 특정 단계들 및 동작들을 가지고 도시될 수 있지만, 달리 언급되지 않는 한, 유사하거나 또는 대안적인 순서들로, 또는 병렬로 수행되는, 추가적이거나, 더 적거나, 또는 대안적인 단계들 및 동작들이 다양한 실시예들의 범위 내에 속한다. 방법(1800)은, 예를 들어, 클라이언트 디바이스 상에서 실행 중인 도 2의 클라이언트 동기화 서비스(156)와 같은 시스템에 의해 구현될 수 있다. 이상에서 설명된 바와 같이, 방법은, 파일명이 이미 파일명 어레이 내에 저장되었는지 여부를 결정하기 위해 사용될 수 있다.
동작(1805)에서, 클라이언트 동기화 서비스(156)는, 원격 트리, 싱크 트리, 또는 로컬 트리와 같은 트리 데이터 구조체로부터 노드를 제거하거나 또는 추가할 수 있다. 노드가 삭제되는 경우, 노드는 이것과 연관된 이전에 계산된 디프 값을 가져야만 한다. 노드가 추가되는 경우, 클라이언트 동기화 서비스(156)는, 예를 들어, 노드를 해싱함으로써, 새로운 노드에 대한 디프 값을 계산할 수 있다. 트리에 대한 변화가 존재하기 때문에, 노드의 조상들의 디프 값들이 업데이트되어야만 한다.
동작(1810)에서, 클라이언트 동기화 서비스(156)는 부모 노드의 현재 디프 값 및 그 노드의 디프 값에 기초하여 노드의 부모에 대한 새로운 디프 값을 계산할 수 있다. 동작(1815)에서, 부모에 대한 새로운 디프 값이 부모 노드 내에 저장된다.
동작(1820)에서, 클라이언트 동기화 서비스(156)는, 부모 노드 자체가 부모를 갖는지 여부를 결정한다. 다시 말해서, 부모 노드가 루트 노드인지 또는 이에 대하여 디프 값들을 연산할 추가적인 조상들이 존재하는지 여부이다. 추가적인 조상이 존재하는 경우, 프로세스는 동작(1810)으로 복귀할 수 있으며, 여기에서 부모 노드의 부모는 계산되고 저장되는 새로운 디프 값을 가질 것이다. 추가적인 부모가 존재하지 않고 부모 노드가 루트 노드인 경우, 프로세스는 동작(1825)에서 중지될 수 있다.
일단 루트 노드에 도달되면, 트리 데이터 구조체는 차이들을 식별하기 위하여 다른 트리 데이터 구조체들과 비교될 준비가 된다. 이상에서 언급된 바와 같이, 클라이언트 동기화 서비스(156)는, 이러한 차이들에 기초하여, 실행되는 경우, 3개의 트리 데이터 구조체들이 동일하게 될 동기화된 상태를 향해 서버 상태 및 시스템 상태를 수렴시키도록 구성되는 동작들의 세트를 생성할 수 있다.
도 19는, 클라이언트 디바이스(150), 콘텐트 관리 시스템(110) 또는 이의 임의의 컴포넌트를 구성하는 예시적인 임의의 컴퓨팅 디바이스일 수 있는 컴퓨팅 시스템(1900)을 도시하며, 여기에서 시스템의 컴포넌트들은 연결(1905)을 사용하여 서로 통신하고 있다. 연결(1905)은 버스를 통한 물리적 연결일 수 있거나, 또는, 예컨대 칩셋 아키텍처 내의 프로세서(1910) 내로의 직접 연결일 수 있다. 연결(1905)은 또한 가상 연결, 네트워크형 연결, 또는 논리적 연결일 수도 있다.
일부 실시예들에 있어서, 컴퓨팅 시스템(1900)은 분산형 시스템이며, 여기에서 본 개시에서 설명된 기능들은 데이터센터, 다수의 데이터센터들, 피어(peer) 네트워크 등 내에 분산될 수 있다. 일부 실시예들에 있어서, 설명되는 시스템 컴포넌트 중 하나 이상은, 각기 컴포넌트가 이러한 것에 대하여 설명되는 기능 중 일부 또는 전부를 수행하는 이러한 다수의 컴포넌트들을 나타낸다. 일부 실시예들에 있어서, 컴포넌트들은 물리적인 또는 가상 디바이스들일 수 있다.
예시적인 시스템(1900)은 적어도 하나의 프로세싱 유닛(CPU 또는 프로세서)(1910), 및 판독 전용 메모리(read only memory; ROM)(1920) 및 랜덤 액세스 메모리(random access memory; RAM)(1925)와 같은 시스템 메모리(1915)를 포함하는 다양한 시스템 컴포넌트들을 프로세서(1910)에 결합하는 연결(1905)을 포함한다. 컴퓨팅 시스템(1900)은, 프로세서(1910)와 직접적으로 연결되거나, 또는 이에 인접하여 위치되거나 이의 부분으로서 통합되는 고속 메모리(1912)의 캐시를 포함할 수 있다.
프로세서(1910)는, 소프트웨어 명령어들이 실제 프로세서 설계 내로 통합되는 특수-목적 프로세서뿐만 아니라 프로세서(1910)를 제어하도록 구성되는, 저장 디바이스(1930) 내에 저장된 서비스들(1932, 1934, 및 1936)과 같은 하드웨어 서비스 또는 소프트웨어 서비스 및 임의의 범용 프로세서를 포함할 수 있다. 프로세서(1910)는, 본질적으로, 다수의 코어들 또는 프로세스들, 버스, 메모리 제어기, 캐시 등을 포함하는 완전한 자급식 컴퓨팅 시스템일 수 있다. 다중-코어 프로세서는 대칭적이거나 또는 비대칭적일 수 있다.
사용자 상호작용을 가능하게 하기 위하여, 컴퓨팅 시스템(1900)은 입력 디바이스(1945)를 포함하며, 이는 임의의 수의 입력 메커니즘들, 예컨대, 언어(speech)에 대한 마이크, 제스처 또는 그래픽 입력에 대한 터치-감지 스크린, 키보드, 마우스, 모션 입력부, 언어부 등을 나타낼 수 있다. 컴퓨팅 시스템(1900)은 또한, 당업자들에게 알려진 다수의 출력 메커니즘들 중 하나 이상일 수 있는 출력 디바이스(1935)를 포함할 수 있다. 일부 경우들에 있어서, 멀티모달(multimodal) 시스템들은 사용자가 컴퓨팅 시스템(1900)과 통신하기 위한 다수의 유형들의 입력/출력을 제공하는 것을 가능하게 할 수 있다. 컴퓨팅 시스템(1900)은, 일반적으로 사용자 입력 및 시스템 출력을 지배하고 관리할 수 있는 통신 인터페이스(1940)를 포함할 수 있다. 임의의 특정 하드웨어 배열 상에서 동작하는데 제한이 존재하지 않으며, 따라서, 본원에서 기본적인 특징부들은, 이들이 개발됨에 따라 개선된 하드웨어 또는 펌웨어 배열들로 용이하게 대체될 수 있다.
저장 디바이스(1930)는 비-휘발성 메모리 디바이스일 수 있으며, 이는, 컴퓨터에 의해 액세스가능한 데이터를 저장할 수 있는 하드 디스크 또는 다른 유형의 컴퓨터 판독가능 매체들, 예컨대, 자기 카세트들, 플래시 메모리 카드들, 고체 상태 메모리 디바이스들, 디지털 다용도 디스크들, 카트리지들, 랜덤 액세스 메모리(random access memory; RAM)들, 판독 전용 메모리(read only memory; ROM), 및/또는 이러한 디바이스들의 일부 조합일 수 있다.
저장 디바이스(1930)는, 이러한 소프트웨어를 정의하는 코드가 프로세서(1910)에 의해 실행될 때, 이것이 시스템으로 하여금 기능을 수행하게끔 하는, 소프트웨어 서비스들, 서버들, 서비스들 등을 포함할 수 있다. 일부 실시예들에 있어서, 특정 기능을 수행하는 하드웨어 서비스는, 기능을 수행하기 위한 필수 하드웨어 컴포넌트들, 예컨대 프로세서(1910), 연결(1905), 출력 디바이스(1935), 등과 관련하여 컴퓨터 판독가능 매체 내에 저장된 소프트웨어 컴포넌트를 포함할 수 있다.
설명의 명료성을 위하여, 일부 경우들에 있어서, 본 기술은, 소프트웨어로, 또는 하드웨어 또는 소프트웨어의 조합으로 구현된 방법 내의 단계들 또는 루틴들, 디바이스, 디바이스 컴포넌트들을 포함하는 기능 블록들을 포함하는 개별적인 기능 블록들을 포함하는 것으로서 제시될 수 있다.
본원에서 설명된 단계들, 동작들, 또는 프로세스들 중 임의의 것은, 단독으로 또는 다른 디바이스들과 조합되어, 하드웨어 및 소프트웨어 서비스들 또는 서비스들의 조합에 의해 수행되거나 또는 구현될 수 있다. 일부 실시예들에 있어서, 서비스는, 콘텐트 관리 시스템의 하나 이상의 서버들 및/또는 클라이언트 디바이스의 메모리 상주하고 프로세스가 서비스와 연관된 소프트웨어를 실행할 때 하나 이상의 기능들을 수행하는 소프트웨어일 수 있다. 일부 실시예들에 있어서, 서비스는 특정 기능을 수행하는 프로그램 또는 프로그램의 수집물이다. 일부 실시예들에 있어서, 서비스는 서버로서 간주될 수 있다. 메모리는 비-일시적인 컴퓨터-판독가능 매체일 수 있다.
일부 실시예들에 있어서, 컴퓨터-판독가능 저장 디바이스들, 매체들, 및 메모리들은 비트 스트림 및 유사한 것을 포함하는 무선 신호 또는 케이블을 포함할 수 있다. 그러나, 언급될 때, 비-일시적인 컴퓨터-판독가능 저장 매체는 명백히 그 자체로는 에너지, 반송 신호들, 전자기파들과 같은 매체들을 배제한다.
이상에서 설명된 예들에 따른 방법들은 컴퓨터 판독가능 매체에 저장되거나 또는 달리 이로부터 이용가능한 컴퓨터-실행가능 명령어들을 사용하여 구현될 수 있다. 이러한 명령어들은, 예를 들어, 범용 컴퓨터, 특수 목적 컴퓨터, 또는 특수 목적 프로세싱 디바이스가 특정 기능 또는 기능들의 그룹을 수행하게끔 하거나 또는 달리 수행하도록 구성되는 데이터 및 명령어들을 포함할 수 있다. 사용되는 컴퓨터 자원들의 부분들은 네트워크를 통해 액세스가능할 수 있다. 컴퓨터 실행가능 명령어들은, 예를 들어, 2진수들, 중간 포맷 명령어들 예컨대 어셈블리 언어, 펌웨어, 또는 소스 코드일 수 있다. 명령어들, 설명된 예들에 따른 방법들 동안 사용되는 정보, 및/또는 생성되는 정보를 저장하기 위해 사용되는 컴퓨터-판독가능 매체들의 예들은, 자기 또는 광 디스크들, 고체 상태 메모리 디바이스들, 플래시 메모리, 비-휘발성 메모리가 구비된 USB 디바이스들, 네트워크형 저장 디바이스들 등을 포함한다.
이러한 개시들에 따른 방법들을 구현하는 디바이스들은 하드웨어, 펌웨어 및/또는 소프트웨어를 포함할 수 있으며, 다양한 폼 팩터들 중 임의의 것을 취할 수 있다. 이러한 폼 팩터들의 전형적인 예들은, 서버들, 랩탑들, 스마트 폰들, 소형 폼 팩터 개인용 컴퓨터들, 개인용 디지털 보조기기들 등을 포함한다. 본원에서 설명되는 기능은 또한 주변기기들 또는 애드-인 카드들 내에 구현될 수 있다. 이러한 기능은 또한, 추가적인 예로서, 단일 디바이스 내에서 실행되는 상이한 칩들 또는 상이한 프로세스들 중에서 회로 보드 상에 구현될 수 있다.
명령어들, 이러한 명령어들을 운반하기 위한 매체들, 이들을 실행하기 위한 컴퓨팅 자원들, 및 이러한 컴퓨팅 자원들을 지원하기 위한 다른 구조체들은 이러한 개시들 내에서 설명되는 기능들을 제공하기 위한 수단들이다.
다양한 예들 및 다른 정보가 첨부된 청구항들의 범위 내의 측면들을 설명하기 위하여 사용되었지만, 당업자가 매우 광범위한 구현예들을 도출하기 위하여 이러한 예들을 사용할 수 있는 바와 같이, 이러한 예들에서 특정 특징부들 또는 배열들에 기초하는 청구항들의 어떠한 제한도 암시되지 않는다. 추가로 그리고 내용이 구조적 특징들 및/또는 방법 단계들에 특유한 표현으로 설명되었을 수 있지만, 첨부된 청구항들에서 정의되는 내용이 반드시 이러한 특징들 또는 행위들에 한정되는 것은 아님이 이해되어야 한다. 예를 들어, 이러한 기능은 본원에서 식별되는 것과는 다른 컴포넌트들 내에서 수행되거나 또는 다르게 분산될 수 있다. 오히려, 설명된 특징들 및 단계들은 첨부된 청구항들의 범위 내의 방법들 및 시스템들의 컴포넌트들의 예들로서 개시된다.
Claims (20)
- 적어도 하나의 프로세서에 의해 실행되는 컴퓨터-구현형 방법으로서,
원격 트리 및 로컬 트리 중 적어도 하나와 싱크(sync) 트리 사이의 적어도 하나의 차이에 기초하여 수정들의 세트를 식별하는 단계로서, 상기 싱크 트리는 서버 상태와 파일 시스템 상태 사이의 알려진 싱크된 상태를 나타내며, 상기 원격 트리는 원격 메모리 위치 상의 상기 서버 상태를 나타내고, 상기 로컬 트리는 클라이언트 디바이스 상의 상기 파일 시스템 상태를 나타내며, 상기 파일 시스템 상태의 일부는 상기 원격 트리의 일부, 상기 싱크 트리의 일부, 및 상기 로컬 트리의 일부가 동일할 때 상기 서버 상태의 일부와 동기화되어 있는, 단계;
각각의 수정이 종속성을 갖는지 여부에 기초하여 상기 수정들의 세트로부터 차단되지 않은 수정들의 세트를 선택하는 단계;
상기 차단되지 않은 수정들의 세트의 랭킹을 매기는 단계로서, 상기 차단되지 않은 수정들의 제1 서브세트는 각각의 서브세트와 연관된 상이한 수정 유형에 기초하여 수정들의 제2 서브세트보다 높게 랭킹이 매겨지는, 단계;
상기 랭킹에 기초하여 상기 차단되지 않은 수정들의 세트의 상기 제1 서브세트를 선택하는 단계;
상기 차단되지 않은 수정들의 상기 선택된 제1 서브세트에 기초하여, 상기 서버 상태와 상기 파일 시스템 상태를 수렴시키도록 구성된 동작들의 세트를 생성하는 단계; 및
실행을 위해 상기 동작들의 세트를 제공하는 단계로서, 상기 동작들의 세트를 실행하는 것은 상기 원격 트리 또는 상기 로컬 트리 중 적어도 하나를 업데이트하는, 단계
를 포함하는, 컴퓨터-구현형 방법. - 청구항 1에 있어서, 상기 차단되지 않은 수정들의 세트 내의 각각의 차단되지 않은 수정은 임의의 다른 수정에 대한 종속성을 갖지 않는, 컴퓨터-구현형 방법.
- 청구항 1 또는 청구항 2에 있어서,
콘텐트 관리 시스템에 의해 저장된 콘텐트 아이템들에 대한 서버 수정 데이터를 수신하는 단계; 및
상기 서버 수정 데이터에 기초하여 상기 원격 트리를 업데이트하는 단계를 더 포함하는, 컴퓨터-구현형 방법. - 청구항 1 또는 청구항 2에 있어서,
상기 클라이언트 디바이스에 의해 저장된 콘텐트 아이템들에 대한 클라이언트 수정 데이터를 수신하는 단계; 및
상기 클라이언트 수정 데이터에 기초하여 상기 로컬 트리를 업데이트하는 단계를 더 포함하는, 컴퓨터-구현형 방법. - 청구항 1 또는 청구항 2에 있어서,
콘텐트 관리 시스템에 의해 또는 상기 클라이언트 디바이스 상에 저장된 콘텐트 아이템들에 대한 수정 데이터를 수신하는 단계; 및
상기 수정 데이터에 기초하여 수정된 콘텐트 아이템들의 리스트를 식별하는 단계로서, 상기 수정들의 세트는 추가로 상기 수정된 콘텐트 아이템들의 리스트에 기초하여 식별되는, 단계를 더 포함하는, 컴퓨터-구현형 방법. - 삭제
- 청구항 1 또는 청구항 2에 있어서, 상기 원격 트리, 상기 로컬 트리, 및 상기 싱크 트리는 상기 클라이언트 디바이스 상에 저장되는, 컴퓨터-구현형 방법.
- 청구항 1 또는 청구항 2에 있어서, 상기 동작들의 세트는 콘텐트 관리 시스템에 의한 실행을 위해 구성되는 동작들의 서버 세트를 포함하며, 상기 방법은 상기 동작들의 서버 세트를 상기 콘텐트 관리 시스템으로 송신하는 단계를 더 포함하는, 컴퓨터-구현형 방법.
- 청구항 1 또는 청구항 2에 있어서, 상기 동작들의 세트는 상기 클라이언트 디바이스에 의한 실행을 위해 구성되는 동작들의 클라이언트 세트를 포함하는, 컴퓨터-구현형 방법.
- 청구항 1 또는 청구항 2에 있어서,
상기 동작들의 세트 내의 동작에 의한 규칙의 위반을 검출하는 단계;
상기 규칙의 위반에 대한 해결 액션들을 식별하는 단계; 및
상기 동작들의 세트에 상기 해결 액션들을 적용하는 더 단계를 포함하는, 컴퓨터-구현형 방법. - 청구항 10에 있어서, 상기 동작에 의한 상기 규칙의 위반을 검출하는 단계는,
상기 동작들의 세트 내의 상기 동작에 대한 동작 유형을 식별하는 단계;
상기 동작 유형과 연관된 규칙들의 세트를 선택하는 단계; 및
상기 규칙들의 세트 내의 규칙이 상기 동작에 의해 위반된다는 것을 결정하는 단계를 포함하는, 컴퓨터-구현형 방법. - 명령어들을 포함하는 비-일시적인 컴퓨터-판독가능 매체로서, 상기 명령어들은, 컴퓨팅 시스템에 의해 실행될 때, 상기 컴퓨팅 시스템으로 하여금:
콘텐트 관리 시스템과 연관된 콘텐트 아이템들에 대한 수정 데이터를 수신하고;
상기 수정 데이터에 기초하여 싱크 트리, 원격 트리, 및 로컬 트리를 포함하는 트리 데이터 구조체들의 세트를 업데이트하되, 상기 싱크 트리는 서버 상태와 파일 시스템 상태 사이의 알려진 싱크된 상태를 나타내며, 상기 원격 트리는 원격 메모리 위치 상의 상기 서버 상태를 나타내고, 상기 로컬 트리는 클라이언트 디바이스 상의 상기 파일 시스템 상태를 나타내며, 상기 파일 시스템 상태의 일부는 상기 원격 트리의 일부, 상기 싱크 트리의 일부, 및 상기 로컬 트리의 일부가 동일할 때 상기 서버 상태의 일부와 동기화되어 있고;
상기 트리 데이터 구조체들의 세트에 기초하여 수정들의 세트를 식별하고;
각각의 수정이 종속성을 갖는지 여부에 기초하여 상기 수정들의 세트로부터 차단되지 않은 수정들의 세트를 선택하고;
상기 차단되지 않은 수정들의 세트의 랭킹을 매기되, 상기 차단되지 않은 수정들의 제1 서브세트는 각각의 서브세트와 연관된 상이한 수정 유형에 기초하여 수정들의 제2 서브세트보다 높게 랭킹이 매겨지고;
상기 랭킹에 기초하여 상기 차단되지 않은 수정들의 세트의 상기 제1 서브세트를 선택하고;
상기 차단되지 않은 수정들의 상기 선택된 제1 서브세트에 기초하여, 상기 서버 상태와 상기 파일 시스템 상태를 수렴시키도록 구성된 동작들의 세트를 생성하고; 및
실행을 위해 상기 동작들의 세트를 제공하게끔 하되, 상기 동작들의 세트를 실행하는 것은 상기 원격 트리 또는 상기 로컬 트리 중 적어도 하나를 업데이트하는, 비-일시적인 컴퓨터-판독가능 매체. - 청구항 12에 있어서, 상기 차단되지 않은 수정들의 세트 내의 각각의 차단되지 않은 수정은 임의의 다른 수정에 대한 종속성을 갖지 않는, 비-일시적인 컴퓨터-판독가능 매체.
- 삭제
- 시스템으로서,
적어도 하나의 프로세서; 및
명령어들을 저장하는 적어도 하나의 비-일시적인 컴퓨터-판독가능 매체를 포함하며, 상기 명령어들은 상기 프로세서에 의해 실행될 때, 상기 프로세서로 하여금:
싱크 트리, 원격 트리, 및 로컬 트리를 포함하는 트리 데이터 구조체들의 세트에 기초하여 수정들의 세트를 식별하되, 상기 싱크 트리는 서버 상태와 파일 시스템 상태 사이의 알려진 싱크된 상태를 나타내며, 상기 원격 트리는 원격 메모리 위치 상의 상기 서버 상태를 나타내고, 상기 로컬 트리는 클라이언트 디바이스 상의 상기 파일 시스템 상태를 나타내며, 상기 파일 시스템 상태의 일부는 상기 원격 트리의 일부, 상기 싱크 트리의 일부, 및 상기 로컬 트리의 일부가 동일할 때 상기 서버 상태의 일부와 동기화되어 있고;
각각의 수정이 종속성을 갖는지 여부에 기초하여 상기 수정들의 세트로부터 차단되지 않은 수정들의 세트를 선택하고;
상기 차단되지 않은 수정들의 세트의 랭킹을 매기되, 상기 차단되지 않은 수정들의 제1 서브세트는 각각의 서브세트와 연관된 상이한 수정 유형에 기초하여 수정들의 제2 서브세트보다 높게 랭킹이 매겨지고;
상기 랭킹에 기초하여 상기 차단되지 않은 수정들의 세트의 상기 제1 서브세트를 선택하고; 및
상기 차단되지 않은 수정들의 상기 선택된 제1 서브세트에 기초하여, 상기 서버 상태와 상기 파일 시스템 상태를 수렴시키도록 구성된 태스크들의 세트를 실행하게끔 하되, 상기 태스크들의 세트를 실행하는 것은 상기 원격 트리 또는 상기 로컬 트리를 업데이트하는, 시스템. - 청구항 15에 있어서, 상기 차단되지 않은 수정들의 세트 내의 각각의 차단되지 않은 수정은 임의의 다른 수정에 대한 종속성을 갖지 않는, 시스템.
- 청구항 15 또는 청구항 16에 있어서, 상기 명령어들은, 상기 적어도 하나의 프로세서에 의해 실행될 때, 추가로 상기 적어도 하나의 프로세서로 하여금:
콘텐트 관리 시스템과 연관된 콘텐트 아이템들에 대한 수정 데이터를 수신하고; 및
상기 수정 데이터에 기초하여 상기 트리 데이터 구조체들의 세트를 업데이트하게끔 하는, 시스템. - 청구항 17에 있어서, 상기 명령어들은, 상기 적어도 하나의 프로세서에 의해 실행될 때, 추가로 상기 적어도 하나의 프로세서로 하여금:
상기 수정 데이터에 기초하여 수정된 콘텐트 아이템들의 리스트를 식별하게끔 하며, 상기 수정들의 세트는 추가로 상기 수정된 콘텐트 아이템들의 리스트에 기초하여 식별되는, 시스템. - 삭제
- 청구항 15 또는 청구항 16에 있어서, 상기 명령어들은, 상기 적어도 하나의 프로세서에 의해 실행될 때, 추가로 상기 적어도 하나의 프로세서로 하여금, 상기 태스크들의 세트의 실행에 응답하여, 종속성들에 대한 변화들에 기초하여 상기 차단되지 않은 수정들의 세트를 업데이트하게끔 하는, 시스템.
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201762611473P | 2017-12-28 | 2017-12-28 | |
US62/611,473 | 2017-12-28 | ||
US15/867,505 US11080297B2 (en) | 2017-12-28 | 2018-01-10 | Incremental client synchronization |
US15/867,505 | 2018-01-10 | ||
PCT/US2018/065097 WO2019133250A1 (en) | 2017-12-28 | 2018-12-12 | Incremental client synchronization |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20200093538A KR20200093538A (ko) | 2020-08-05 |
KR102432302B1 true KR102432302B1 (ko) | 2022-08-11 |
Family
ID=62949013
Family Applications (10)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020207016022A KR102444729B1 (ko) | 2017-12-28 | 2018-12-10 | 클라이언트 동기화 서비스를 위한 원격 트리 업데이트 |
KR1020207016617A KR102432304B1 (ko) | 2017-12-28 | 2018-12-10 | 클라이언트 동기화에서의 위반 해결 |
KR1020207018242A KR102450281B1 (ko) | 2017-12-28 | 2018-12-10 | 콘텐츠 아이템의 동기화를 위한 고유 식별자의 할당 및 재할당 |
KR1020207013685A KR102432302B1 (ko) | 2017-12-28 | 2018-12-12 | 점진적 클라이언트 동기화 |
KR1020207018240A KR102457063B1 (ko) | 2017-12-28 | 2018-12-12 | 콘텐츠 관리 시스템의 메타데이터 재동기화 |
KR1020207018403A KR102444033B1 (ko) | 2017-12-28 | 2018-12-12 | 콘텐츠 아이템을 동기화하기 위한 커밋 프로토콜 |
KR1020207015491A KR102459800B1 (ko) | 2017-12-28 | 2018-12-13 | 클라이언트 동기화 서비스에 대한 로컬 트리의 업데이트 |
KR1020207014986A KR102434243B1 (ko) | 2017-12-28 | 2018-12-13 | 디프 값들의 효율적인 전파 |
KR1020207018226A KR102417689B1 (ko) | 2017-12-28 | 2018-12-17 | 콘텐트 관리 클라이언트 동기화 서비스 |
KR1020207016208A KR102444036B1 (ko) | 2017-12-28 | 2018-12-18 | 클라이언트 동기화 업데이트들의 효율적인 관리 |
Family Applications Before (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020207016022A KR102444729B1 (ko) | 2017-12-28 | 2018-12-10 | 클라이언트 동기화 서비스를 위한 원격 트리 업데이트 |
KR1020207016617A KR102432304B1 (ko) | 2017-12-28 | 2018-12-10 | 클라이언트 동기화에서의 위반 해결 |
KR1020207018242A KR102450281B1 (ko) | 2017-12-28 | 2018-12-10 | 콘텐츠 아이템의 동기화를 위한 고유 식별자의 할당 및 재할당 |
Family Applications After (6)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020207018240A KR102457063B1 (ko) | 2017-12-28 | 2018-12-12 | 콘텐츠 관리 시스템의 메타데이터 재동기화 |
KR1020207018403A KR102444033B1 (ko) | 2017-12-28 | 2018-12-12 | 콘텐츠 아이템을 동기화하기 위한 커밋 프로토콜 |
KR1020207015491A KR102459800B1 (ko) | 2017-12-28 | 2018-12-13 | 클라이언트 동기화 서비스에 대한 로컬 트리의 업데이트 |
KR1020207014986A KR102434243B1 (ko) | 2017-12-28 | 2018-12-13 | 디프 값들의 효율적인 전파 |
KR1020207018226A KR102417689B1 (ko) | 2017-12-28 | 2018-12-17 | 콘텐트 관리 클라이언트 동기화 서비스 |
KR1020207016208A KR102444036B1 (ko) | 2017-12-28 | 2018-12-18 | 클라이언트 동기화 업데이트들의 효율적인 관리 |
Country Status (8)
Country | Link |
---|---|
US (58) | US10866963B2 (ko) |
EP (9) | EP3714375B1 (ko) |
JP (12) | JP7075998B2 (ko) |
KR (10) | KR102444729B1 (ko) |
CN (10) | CN111512301B (ko) |
AU (12) | AU2018395856B2 (ko) |
CA (10) | CA3084056A1 (ko) |
WO (10) | WO2019133229A1 (ko) |
Families Citing this family (176)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9898520B2 (en) | 2014-03-25 | 2018-02-20 | Open Text Sa Ulc | Systems and methods for seamless access to remotely managed documents using synchronization of locally stored documents |
US10481749B1 (en) * | 2014-12-01 | 2019-11-19 | Google Llc | Identifying and rendering content relevant to a user's current mental state and context |
US10963430B2 (en) | 2015-04-01 | 2021-03-30 | Dropbox, Inc. | Shared workspaces with selective content item synchronization |
US9922201B2 (en) * | 2015-04-01 | 2018-03-20 | Dropbox, Inc. | Nested namespaces for selective content sharing |
US10218817B2 (en) * | 2015-04-28 | 2019-02-26 | Microsoft Technology Licensing, Llc | Digital rights list for device groups |
US9571573B1 (en) | 2015-10-29 | 2017-02-14 | Dropbox, Inc. | Peer-to-peer synchronization protocol for multi-premises hosting of digital content items |
CN106657254B (zh) * | 2016-10-25 | 2019-10-25 | Oppo广东移动通信有限公司 | 一种联系人信息的同步方法、装置及系统 |
US11269888B1 (en) * | 2016-11-28 | 2022-03-08 | Amazon Technologies, Inc. | Archival data storage for structured data |
US11003632B2 (en) | 2016-11-28 | 2021-05-11 | Open Text Sa Ulc | System and method for content synchronization |
US10372830B2 (en) * | 2017-05-17 | 2019-08-06 | Adobe Inc. | Digital content translation techniques and systems |
US11157631B1 (en) * | 2017-12-19 | 2021-10-26 | Robert J. Whelton | System and method for securely indexing, storing, and retrieving data within a computer network |
US10713378B2 (en) * | 2017-12-19 | 2020-07-14 | Dropbox, Inc. | Techniques for eventually consistent inheritance propagation for nested content item namespaces |
US10866963B2 (en) | 2017-12-28 | 2020-12-15 | Dropbox, Inc. | File system authentication |
CN110007952B (zh) * | 2018-01-02 | 2022-07-12 | 斑马智行网络(香港)有限公司 | 数据处理方法、装置、设备和机器可读介质 |
US11526470B2 (en) * | 2018-01-03 | 2022-12-13 | Salesforce, Inc. | Data validation for data record migrations |
US11855971B2 (en) * | 2018-01-11 | 2023-12-26 | Visa International Service Association | Offline authorization of interactions and controlled tasks |
US11741080B2 (en) * | 2018-02-22 | 2023-08-29 | Flowfinity Wireless, Inc. | Dynamic data editor for data analysis system |
US11301419B2 (en) * | 2018-03-02 | 2022-04-12 | Salesforce.Com, Inc. | Data retention handling for data object stores |
US11397738B2 (en) * | 2018-03-07 | 2022-07-26 | Iguazio Systems Ltd. | Stateless stream handling and resharding |
SG10201803501QA (en) * | 2018-04-26 | 2019-11-28 | Mastercard International Inc | Methods and systems for facilitating sharing of digital documents between a sharing party and a relying party |
US10430606B1 (en) * | 2018-04-30 | 2019-10-01 | Aras Corporation | System and method for implementing domain based access control on queries of a self-describing data system |
US11036680B2 (en) * | 2018-05-10 | 2021-06-15 | Paypal, Inc. | System and method for scouting distributed file system metadata |
US10671370B2 (en) * | 2018-05-30 | 2020-06-02 | Red Hat, Inc. | Distributing file system states |
TWI708144B (zh) * | 2018-06-22 | 2020-10-21 | 慧榮科技股份有限公司 | 快閃記憶體的命名空間操作裝置及電腦程式產品 |
US10931640B2 (en) * | 2018-06-22 | 2021-02-23 | International Business Machines Corporation | Tunneling network traffic using object storage |
US11593315B2 (en) * | 2018-06-26 | 2023-02-28 | Hulu, LLC | Data cluster migration using an incremental synchronization |
US11226854B2 (en) * | 2018-06-28 | 2022-01-18 | Atlassian Pty Ltd. | Automatic integration of multiple graph data structures |
US11074135B2 (en) | 2018-06-29 | 2021-07-27 | Cohesity, Inc. | Large content file optimization |
US10664461B2 (en) | 2018-06-29 | 2020-05-26 | Cohesity, Inc. | Large content file optimization |
US11392649B2 (en) * | 2018-07-18 | 2022-07-19 | Microsoft Technology Licensing, Llc | Binding query scope to directory attributes |
US10776094B2 (en) * | 2018-07-29 | 2020-09-15 | ColorTokens, Inc. | Computer implemented system and method for encoding configuration information in a filename |
US11102214B2 (en) * | 2018-08-27 | 2021-08-24 | Amazon Technologies, Inc. | Directory access sharing across web services accounts |
US11042547B2 (en) * | 2018-09-10 | 2021-06-22 | Nuvolo Technologies Corporation | Mobile data synchronization framework |
US11914612B2 (en) * | 2018-09-24 | 2024-02-27 | Salesforce, Inc. | Selective synchronization of linked records |
HUE058223T2 (hu) * | 2018-10-29 | 2022-07-28 | Grieshaber Vega Kg | Eljárás és berendezés hozzáférési információ továbbítására a folyamatvezérlõ iparban egy terepi eszközhöz való hozzáféréshez |
US11093446B2 (en) * | 2018-10-31 | 2021-08-17 | Western Digital Technologies, Inc. | Duplicate request checking for file system interfaces |
US11347716B1 (en) | 2018-11-27 | 2022-05-31 | Palantir Technologies Inc. | Systems and methods for establishing and enforcing relationships between items |
JP6834060B2 (ja) * | 2018-11-30 | 2021-02-24 | 了宣 山本 | 文書整理支援システム |
US10999370B1 (en) * | 2018-12-28 | 2021-05-04 | BridgeLabs, Inc. | Syncing and sharing data across systems |
US11003630B2 (en) * | 2018-12-30 | 2021-05-11 | Microsoft Technology Licensing, Llc | Remote access of metadata for collaborative documents |
US10776009B2 (en) * | 2019-01-03 | 2020-09-15 | International Business Machines Corporation | Journaling on an appendable non-volatile memory module |
US10902146B2 (en) | 2019-03-19 | 2021-01-26 | Workiva Inc. | Method and computing device for gating data between workspaces |
US11809382B2 (en) | 2019-04-01 | 2023-11-07 | Nutanix, Inc. | System and method for supporting versioned objects |
US11232078B2 (en) * | 2019-04-05 | 2022-01-25 | Sap Se | Multitenancy using an overlay file system |
US10956140B2 (en) | 2019-04-05 | 2021-03-23 | Sap Se | Software installation through an overlay file system |
US11113249B2 (en) | 2019-04-05 | 2021-09-07 | Sap Se | Multitenant application server using a union file system |
US11573930B2 (en) * | 2019-06-03 | 2023-02-07 | Zuora, Inc. | Self-healing data synchronization |
US11226983B2 (en) * | 2019-06-18 | 2022-01-18 | Microsoft Technology Licensing, Llc | Sub-scope synchronization |
CN110474873B (zh) * | 2019-07-09 | 2021-06-29 | 杭州电子科技大学 | 一种基于知悉范围加密的电子文件访问控制方法和系统 |
US20210012025A1 (en) * | 2019-07-10 | 2021-01-14 | At&T Intellectual Property I, L.P. | System and method for session-aware datastore for the edge |
US11294877B2 (en) * | 2019-07-22 | 2022-04-05 | EMC IP Holding Company LLC | Efficient file renames using B-tree based persistence for file system name spaces |
US11301489B2 (en) * | 2019-08-06 | 2022-04-12 | Microsoft Technology Licensing, Llc | Synchronizing online and offline transfer of data to cloud storage system |
US11157462B2 (en) | 2019-08-06 | 2021-10-26 | Microsoft Technology Licensing, Llc | Namespace data object name persistence after decoupling of transportable storage device from data server |
CN110602075A (zh) * | 2019-08-15 | 2019-12-20 | 中国人民银行数字货币研究所 | 一种加密访问控制的文件流处理的方法、装置及系统 |
US11321490B2 (en) * | 2019-09-11 | 2022-05-03 | Salesforce.Com, Inc. | Protected access to metadata based on package membership |
US11481361B1 (en) * | 2019-10-18 | 2022-10-25 | Splunk Inc. | Cascading payload replication to target compute nodes |
US20210117213A1 (en) * | 2019-10-22 | 2021-04-22 | Moveworks, Inc. | Automated service agent for servicing issues described in a group communication channel |
CN112738148B (zh) * | 2019-10-28 | 2024-05-14 | 中兴通讯股份有限公司 | 缓存内容的批量删除方法、装置、设备和可读存储介质 |
US11720526B2 (en) * | 2019-11-12 | 2023-08-08 | ClearTrace Technologies, Inc. | Sustainable energy tracking system utilizing blockchain technology and Merkle tree hashing structure |
US11169864B2 (en) * | 2019-11-21 | 2021-11-09 | Spillbox Inc. | Systems, methods and computer program products for application environment synchronization between remote devices and on-premise devices |
US11290531B2 (en) | 2019-12-04 | 2022-03-29 | Dropbox, Inc. | Immediate cloud content item creation from local file system interface |
US11704334B2 (en) | 2019-12-06 | 2023-07-18 | Nutanix, Inc. | System and method for hyperconvergence at the datacenter |
US11677754B2 (en) * | 2019-12-09 | 2023-06-13 | Daniel Chien | Access control systems and methods |
US11853415B1 (en) * | 2019-12-12 | 2023-12-26 | Rapid7, Inc. | Context-based identification of anomalous log data |
US11287994B2 (en) | 2019-12-13 | 2022-03-29 | Samsung Electronics Co., Ltd. | Native key-value storage enabled distributed storage system |
US11308039B2 (en) | 2019-12-31 | 2022-04-19 | Dropbox, Inc. | Binding local device folders to a content management system for synchronization |
US11301464B2 (en) * | 2020-01-14 | 2022-04-12 | Videoamp, Inc. | Electronic multi-tenant data management system |
US11425143B2 (en) * | 2020-01-23 | 2022-08-23 | Bank Of America Corporation | Sleeper keys |
US20210240859A1 (en) * | 2020-02-04 | 2021-08-05 | Aio Me Ltd. | Immutable downloads |
CN111367855B (zh) * | 2020-02-08 | 2021-06-18 | 重庆节节高科技发展有限公司 | 下载文件的移出方法、装置、计算机设备和存储介质 |
CN111259356B (zh) * | 2020-02-17 | 2022-09-02 | 北京百度网讯科技有限公司 | 授权方法、辅助授权组件、管理服务器和计算机可读介质 |
US11640371B2 (en) | 2020-03-12 | 2023-05-02 | Western Digital Technologies, Inc. | Snapshot management in partitioned storage |
US20230122216A1 (en) * | 2020-03-28 | 2023-04-20 | Dataparency, LLC | Cloaked user-space file system implemented using an entity data store |
US11789972B2 (en) * | 2020-03-31 | 2023-10-17 | Snap Inc. | Data synchronization for content consumed via a client application |
US20210342301A1 (en) * | 2020-04-29 | 2021-11-04 | Hewlett Packard Enterprise Development Lp | Filesystem managing metadata operations corresponding to a file in another filesystem |
US11347874B2 (en) * | 2020-05-29 | 2022-05-31 | Charter Communications Operating, Llc | Enhancing security in a content management system |
US11509463B2 (en) | 2020-05-31 | 2022-11-22 | Daniel Chien | Timestamp-based shared key generation |
US11818114B2 (en) * | 2020-06-12 | 2023-11-14 | Strata Identity, Inc. | Systems, methods, and storage media for synchronizing identity information across identity domains in an identity infrastructure |
US11249715B2 (en) | 2020-06-23 | 2022-02-15 | Switchboard Visual Technologies, Inc. | Collaborative remote interactive platform |
JP2022007746A (ja) * | 2020-06-26 | 2022-01-13 | 株式会社日立製作所 | 情報処理システム及び情報処理方法 |
US11770377B1 (en) * | 2020-06-29 | 2023-09-26 | Cyral Inc. | Non-in line data monitoring and security services |
US11361026B2 (en) | 2020-06-30 | 2022-06-14 | Snowflake Inc. | Accessing files in a database stage using a user defined function |
US10997243B1 (en) * | 2020-06-30 | 2021-05-04 | Snowflake Inc. | Supporting unstructured, semi-structured, and structured files |
US11595379B2 (en) * | 2020-07-01 | 2023-02-28 | Vmware, Inc. | Mechanism of common authentication for both supervisor and guest clusters |
CN111858518B (zh) * | 2020-07-09 | 2022-10-25 | 北京字节跳动网络技术有限公司 | 一种引用文档的更新方法、装置、电子设备及存储介质 |
CN113296792B (zh) * | 2020-07-10 | 2022-04-12 | 阿里巴巴集团控股有限公司 | 存储方法、装置、设备、存储介质和系统 |
WO2022015773A1 (en) * | 2020-07-13 | 2022-01-20 | Journey Mobile, Inc. | Synchronization of source code under development in multiple concurrent instances of an integrated development environment |
US11829500B2 (en) * | 2020-09-04 | 2023-11-28 | Netflix, Inc. | File interface to dynamically manage access to remote files |
US11645266B2 (en) * | 2020-08-13 | 2023-05-09 | Red Hat, Inc. | Automated pinning of file system subtrees |
US11537670B2 (en) * | 2020-09-14 | 2022-12-27 | Open Text Holdings, Inc. | System and method for event driven generation of content |
US11861029B2 (en) * | 2020-09-14 | 2024-01-02 | Box Inc. | Workflow execution state variables |
CN112163043A (zh) * | 2020-09-27 | 2021-01-01 | 万汇互联(深圳)科技有限公司 | 一种CopyTrade信号复制系统 |
US11463446B2 (en) | 2020-09-28 | 2022-10-04 | Dropbox, Inc. | Team member transfer tool |
WO2022081475A1 (en) * | 2020-10-13 | 2022-04-21 | ASG Technologies Group, Inc. dba ASG Technologies | Secure sharing of documents created via content management repository |
US12001872B2 (en) | 2020-10-14 | 2024-06-04 | Nutanix, Inc. | Object tiering from local store to cloud store |
US11392554B2 (en) | 2020-10-19 | 2022-07-19 | Dropbox, Inc. | Synchronizing an external location |
JP7355959B2 (ja) * | 2020-10-19 | 2023-10-03 | ドロップボックス, インコーポレイテッド | 外部ロケーションの同期 |
US11256714B1 (en) * | 2020-10-26 | 2022-02-22 | Coupang Corp. | Systems and methods for managing event storage |
CN112399006B (zh) * | 2020-10-28 | 2022-09-16 | 维沃移动通信(杭州)有限公司 | 文件发送方法、装置及电子设备 |
WO2022087946A1 (en) * | 2020-10-29 | 2022-05-05 | Comcast Cable Communications, Llc | Generating unique identifiers |
US11457012B2 (en) * | 2020-11-03 | 2022-09-27 | Okta, Inc. | Device risk level based on device metadata comparison |
US12088583B2 (en) * | 2020-11-11 | 2024-09-10 | Hewlett Packard Enterprise Development Lp | Permissions for backup-related operations |
US11537786B2 (en) * | 2020-11-16 | 2022-12-27 | Dropbox, Inc. | Generating fillable documents and fillable templates in a collaborative environment |
US20220153551A1 (en) * | 2020-11-17 | 2022-05-19 | Electronics And Telecommunications Research Institute | Method and apparatus for controlling elevator |
US11900164B2 (en) | 2020-11-24 | 2024-02-13 | Nutanix, Inc. | Intelligent query planning for metric gateway |
US11822370B2 (en) * | 2020-11-26 | 2023-11-21 | Nutanix, Inc. | Concurrent multiprotocol access to an object storage system |
KR102472878B1 (ko) * | 2020-11-27 | 2022-12-01 | 이화여자대학교 산학협력단 | 가상 머신 환경에서의 블록 커밋 방법 및 그 방법을 수행하는 가상화 시스템 |
CN112650727B (zh) * | 2020-12-09 | 2022-09-16 | 湖南麒麟信安科技股份有限公司 | 一种面向网络存储系统的通用权限与配额管理系统与方法 |
US12105677B2 (en) * | 2020-12-14 | 2024-10-01 | Dropbox, Inc. | Per-node metadata for custom node behaviors across platforms |
US11366793B1 (en) | 2020-12-21 | 2022-06-21 | Dropbox, Inc. | Data model and data service for content management system |
US12001574B2 (en) | 2020-12-21 | 2024-06-04 | Dropbox, Inc. | Evaluating an access control list from permission statements |
US11789976B2 (en) * | 2020-12-21 | 2023-10-17 | Dropbox, Inc. | Data model and data service for content management system |
US11803652B2 (en) | 2020-12-21 | 2023-10-31 | Dropbox, Inc. | Determining access changes |
US20220197883A1 (en) * | 2020-12-21 | 2022-06-23 | Dropbox, Inc. | Aggregates index |
US11799958B2 (en) | 2020-12-21 | 2023-10-24 | Dropbox, Inc. | Evaluating access based on group membership |
CN112597159B (zh) * | 2020-12-22 | 2024-08-23 | 深圳集智数字科技有限公司 | 用户唯一标识信息的维护方法及装置 |
CN112866251B (zh) * | 2021-01-20 | 2022-04-19 | 哈尔滨工业大学 | 一种多域云防火墙安全策略冲突消解方法及装置 |
EP4033718A1 (en) * | 2021-01-22 | 2022-07-27 | Amadeus S.A.S. | Direct-channel data update in mediated data exchange systems |
CA3206764C (en) | 2021-01-29 | 2024-02-27 | Troy Martin | Sustainable energy physical delivery tracking and verification of actual environmental impact |
US20220247590A1 (en) * | 2021-01-29 | 2022-08-04 | Apple Inc. | Electronic conferencing |
CN112818063A (zh) * | 2021-02-04 | 2021-05-18 | 厦门安盟网络股份有限公司 | 分布式系统的数据同步方法及装置 |
US20220276985A1 (en) * | 2021-02-26 | 2022-09-01 | Intellix.AI Inc. | System and methods for massive data management and tagging |
CN113064886B (zh) * | 2021-03-04 | 2023-08-29 | 广州中国科学院计算机网络信息中心 | 一种标识资源存储和标记管理的方法 |
CN115086757B (zh) * | 2021-03-12 | 2023-12-19 | 北京字跳网络技术有限公司 | 一种历史剪辑操作的回撤方法、装置、设备及存储介质 |
US12026148B2 (en) | 2021-03-24 | 2024-07-02 | International Business Machines Corporation | Dynamic updating of digital data |
US11134119B1 (en) | 2021-03-30 | 2021-09-28 | Dropbox, Inc. | Intent tracking for asynchronous operations |
US11537634B2 (en) | 2021-03-30 | 2022-12-27 | Netapp, Inc. | Methods for hierarchical propagation in tree structures and devices thereof |
CN113132216B (zh) * | 2021-04-20 | 2023-06-27 | 北京京东振世信息技术有限公司 | 即时通信方法、装置及可读存储介质和电子设备 |
CN113126928B (zh) * | 2021-04-22 | 2024-01-23 | 北京百度网讯科技有限公司 | 文件移动方法及装置、电子设备和介质 |
CN112882920B (zh) * | 2021-04-29 | 2021-06-29 | 云账户技术(天津)有限公司 | 告警策略验证方法、装置、电子设备和可读存储介质 |
US11941465B2 (en) * | 2021-04-29 | 2024-03-26 | Michael G. Whitfield | File discovery on a data storage device based on a filesystem location of microservices |
US11882107B2 (en) * | 2021-05-11 | 2024-01-23 | Microsoft Technology Licensing, Llc | Application single sign-on determinations based on intelligent traces |
US12010080B2 (en) * | 2021-05-17 | 2024-06-11 | Apple Inc. | Syndication of links to content |
CN113282542B (zh) * | 2021-05-20 | 2022-07-12 | 支付宝(杭州)信息技术有限公司 | 具有前向安全的可验证可搜索加密方法、装置以及设备 |
US11783073B2 (en) * | 2021-06-21 | 2023-10-10 | Microsoft Technology Licensing, Llc | Configuration of default sensitivity labels for network file storage locations |
US11935006B2 (en) * | 2021-06-25 | 2024-03-19 | Atlassian Pty Ltd. | Centralized access control system for multitenant services of a collaborative work environment |
JP2023012217A (ja) * | 2021-07-13 | 2023-01-25 | 富士通株式会社 | 管理プログラム、管理方法、管理装置 |
US11934347B2 (en) | 2021-07-23 | 2024-03-19 | EMC IP Holding Company LLC | Determining a sharing relationship of a file in namespace snapshots |
CN113377437B (zh) * | 2021-08-11 | 2021-11-09 | 景网技术有限公司 | 一种智慧城市前端设备修复工作量分析方法和系统 |
CN113688109B (zh) * | 2021-08-20 | 2024-05-03 | 招商银行股份有限公司 | It系统监控指标压缩与查询方法、装置及存储介质 |
DE102021209319A1 (de) * | 2021-08-25 | 2023-03-02 | Robert Bosch Gesellschaft mit beschränkter Haftung | Verfahren zum Vermitteln von Datenanforderungen an ein oder mehrere Datenquellen und zur Verarbeitung von angeforderten Daten einer oder mehrerer Datenquellen in einer Anwendung |
US20230064221A1 (en) * | 2021-08-27 | 2023-03-02 | Weld North Education LLC | Live electronic content customization |
CN113641764B (zh) * | 2021-08-31 | 2024-03-19 | 江苏中科云墨数字科技有限公司 | 一种基于数字孪生的数据同步实现方法 |
US11899572B2 (en) | 2021-09-09 | 2024-02-13 | Nutanix, Inc. | Systems and methods for transparent swap-space virtualization |
US11586699B1 (en) * | 2021-09-14 | 2023-02-21 | Accenture Global Solutions Limited | Content processing management system and method |
US12111845B2 (en) * | 2021-09-30 | 2024-10-08 | Dropbox, Inc. | Backup feature provided by bidirectional synchronized content management system |
US12032450B1 (en) * | 2021-09-30 | 2024-07-09 | Amazon Technologies, Inc. | Resource recovery service |
US11546358B1 (en) * | 2021-10-01 | 2023-01-03 | Netskope, Inc. | Authorization token confidence system |
CN114117597A (zh) * | 2021-11-16 | 2022-03-01 | 中铁大桥勘测设计院集团有限公司 | 一种桥梁设计管理方法及装置 |
CN114063925B (zh) * | 2021-11-19 | 2024-09-17 | 研祥智慧物联科技有限公司 | 存储设备排序方法 |
US12032857B2 (en) | 2021-11-22 | 2024-07-09 | Nutanix, Inc. | System and method for shallow copy |
WO2023096134A1 (ko) * | 2021-11-25 | 2023-06-01 | 삼성전자주식회사 | 전자 장치 내에서 제스처 인식 성능 개선을 위한 러닝 방법 |
US12001393B2 (en) * | 2021-11-30 | 2024-06-04 | Dell Products L.P. | Directory snapshots based on directory level inode virtualization |
EP4441624A1 (en) | 2021-12-01 | 2024-10-09 | VideoAmp, Inc. | Symmetric data clean room |
KR20230085707A (ko) * | 2021-12-07 | 2023-06-14 | 삼성전자주식회사 | 무선 통신 시스템에서 단말 관련 정보를 송수신하는 방법 및 장치 |
US20230185670A1 (en) * | 2021-12-13 | 2023-06-15 | Scality, S.A. | Method and apparatus for monitoring storage system replication |
US20230188577A1 (en) * | 2021-12-13 | 2023-06-15 | Atlassian Pty Ltd. | Apparatuses, computer-implemented methods, and computer program products for generating content for presentation at a collaborative content interface based on a captured content source |
US11657046B1 (en) * | 2021-12-17 | 2023-05-23 | Sap Se | Performant dropping of snapshots by converter branch pruning |
CN114422533B (zh) * | 2021-12-29 | 2023-05-09 | 成都鲁易科技有限公司 | 云备份中路径冲突的处理方法、装置及电子设备 |
CN114172744B (zh) * | 2022-01-12 | 2024-10-01 | 深圳市安田数据服务有限公司 | 一种用于多个服务器间的数据传输系统及数据传输方法 |
US11706082B1 (en) | 2022-02-02 | 2023-07-18 | Microsoft Technology Licensing, Llc | Reconciliation of cloud service state |
CN114490164B (zh) * | 2022-04-02 | 2022-08-16 | 深圳市云视机器人有限公司 | 日志的收集方法、系统、设备及计算机存储介质 |
US11921812B2 (en) * | 2022-05-19 | 2024-03-05 | Dropbox, Inc. | Content creative web browser |
US11461480B1 (en) * | 2022-05-24 | 2022-10-04 | Switchboard Visual Technologies, Inc. | Synchronizing private data with reduced trust |
WO2023225763A1 (en) * | 2022-05-27 | 2023-11-30 | Shinydocs Corporation | System and method of in-place content management |
US20240045767A1 (en) * | 2022-08-03 | 2024-02-08 | Druva Inc. | Data management system for detecting changes in a data management system |
US20240045838A1 (en) * | 2022-08-08 | 2024-02-08 | Dropbox, Inc. | Enabling collaboration on an object from a backup service through integration with an object synchronization service |
US20240086320A1 (en) * | 2022-09-08 | 2024-03-14 | Tencent America LLC | Method of sharing unreal engine derived data cache files |
US20240111720A1 (en) * | 2022-10-03 | 2024-04-04 | Dell Products L.P. | Continuous namespace verification for cluster filesystems |
CN115470207A (zh) * | 2022-11-02 | 2022-12-13 | 深圳联友科技有限公司 | 一种基于消息队列和计算框架的数据接入系统及方法 |
WO2024116070A1 (en) * | 2022-12-01 | 2024-06-06 | Kandji, Inc. | User device agent event detection and recovery |
WO2024137075A1 (en) * | 2022-12-22 | 2024-06-27 | Dropbox, Inc. | A method for synchronizing a root namespace in a multi-root synchronization system |
US12093299B1 (en) | 2023-03-30 | 2024-09-17 | Dropbox, Inc. | Generating and summarizing content blocks within a virtual space interface |
US12088667B1 (en) | 2023-03-30 | 2024-09-10 | Dropbox, Inc. | Generating and managing multilocational data blocks |
CN116561089B (zh) * | 2023-07-10 | 2023-09-19 | 成都泛联智存科技有限公司 | 数据同步方法、装置、客户端和计算机可读存储介质 |
CN117041244B (zh) * | 2023-08-25 | 2024-07-09 | 广东保伦电子股份有限公司 | 一种批量上传音频文件的实现方法及处理终端 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060253501A1 (en) * | 2005-05-09 | 2006-11-09 | Microsoft Corporation | Fast and reliable synchronization of file system directories |
US20130282785A1 (en) | 2012-04-23 | 2013-10-24 | Google, Inc. | Sharing and synchronizing electronically stored files |
US20140195485A1 (en) | 2013-01-09 | 2014-07-10 | Box, Inc. | File system monitoring in a system which incrementally updates clients with events that occurred in a cloud-based collaboration platform |
US20150248383A1 (en) | 2014-03-03 | 2015-09-03 | International Business Machines Corporation | Optimized read/write access to a document object model |
US20160085769A1 (en) | 2014-09-23 | 2016-03-24 | Amazon Technologies, Inc. | Synchronization of Shared Folders and Files |
US20170220596A1 (en) * | 2013-06-13 | 2017-08-03 | Box, Inc. | Systems and methods for synchronization event building and/or collapsing by a synchronization component of a cloud-based platform |
Family Cites Families (558)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US1003733A (en) | 1907-03-18 | 1911-09-19 | Morgan Construction Co | Regenerative metal-heating furnace. |
US3180983A (en) | 1961-12-13 | 1965-04-27 | Rayflex Exploration Co | Geochemical prospecting |
DE69031191T2 (de) | 1989-05-15 | 1998-02-12 | Ibm | System zur Steuerung von Zugriffsprivilegien |
US5220665A (en) | 1990-04-30 | 1993-06-15 | International Business Machines Corporation | Method and system for supporting concurrent use during sequential batch applications utilizing persistent cursors |
US5283856A (en) | 1991-10-04 | 1994-02-01 | Beyond, Inc. | Event-driven rule-based messaging system |
FR2686900B1 (fr) | 1992-01-31 | 1995-07-21 | Rhone Poulenc Rorer Sa | Nouveaux polypeptides ayant une activite de stimulation des colonies de granulocytes, leur preparation et compositions pharmaceutiques les contenant. |
EP0615192B1 (en) | 1993-03-09 | 1997-05-28 | Kabushiki Kaisha Toshiba | Method and apparatus for object traversing suitable for structured memory formed by linked objects |
US20050149450A1 (en) | 1994-11-23 | 2005-07-07 | Contentguard Holdings, Inc. | System, method, and device for controlling distribution and use of digital works based on a usage rights grammar |
JPH08263438A (ja) | 1994-11-23 | 1996-10-11 | Xerox Corp | ディジタルワークの配給及び使用制御システム並びにディジタルワークへのアクセス制御方法 |
US5956715A (en) | 1994-12-13 | 1999-09-21 | Microsoft Corporation | Method and system for controlling user access to a resource in a networked computing environment |
US5745750A (en) | 1995-12-15 | 1998-04-28 | International Business Machines Corporation | Process and article of manufacture for constructing and optimizing transaction logs for mobile file systems |
US5778389A (en) | 1996-05-23 | 1998-07-07 | Electronic Data Systems Corporation | Method and system for synchronizing computer file directories |
US5802508A (en) | 1996-08-21 | 1998-09-01 | International Business Machines Corporation | Reasoning with rules in a multiple inheritance semantic network with exceptions |
JPH11249948A (ja) | 1998-02-27 | 1999-09-17 | Toshiba Corp | コンピュータシステム、同システムで使用されるファイルリソース切り替え方法および記録媒体 |
US6119131A (en) | 1998-06-12 | 2000-09-12 | Microsoft Corporation | Persistent volume mount points |
US6401118B1 (en) * | 1998-06-30 | 2002-06-04 | Online Monitoring Services | Method and computer program product for an online monitoring search engine |
US6658571B1 (en) | 1999-02-09 | 2003-12-02 | Secure Computing Corporation | Security framework for dynamically wrapping software applications executing in a computing system |
US6427123B1 (en) | 1999-02-18 | 2002-07-30 | Oracle Corporation | Hierarchical indexing for accessing hierarchically organized information in a relational system |
US6574665B1 (en) | 1999-02-26 | 2003-06-03 | Lucent Technologies Inc. | Hierarchical vector clock |
JP2000250799A (ja) * | 1999-03-02 | 2000-09-14 | Mitsubishi Electric Corp | 複製ファイル管理システム |
US6560655B1 (en) | 1999-06-22 | 2003-05-06 | Microsoft Corporation | Synchronization manager for standardized synchronization of separate programs |
US7506257B1 (en) | 1999-06-30 | 2009-03-17 | Microsoft Corporation | System and method for providing help contents for components of a computer system |
US6629127B1 (en) | 1999-07-26 | 2003-09-30 | Microsoft Corporation | Methods and systems for processing HTTP requests |
US6609198B1 (en) | 1999-08-05 | 2003-08-19 | Sun Microsystems, Inc. | Log-on service providing credential level change without loss of session continuity |
US6594667B2 (en) | 1999-08-23 | 2003-07-15 | International Business Machines Corporation | Method, system and program products for modifying coupling facility structures |
US6546466B1 (en) | 1999-08-23 | 2003-04-08 | International Business Machines Corporation | Method, system and program products for copying coupling facility cache structures |
US7162477B1 (en) | 1999-09-03 | 2007-01-09 | International Business Machines Corporation | System and method for web or file system asset management |
US6408298B1 (en) | 1999-12-15 | 2002-06-18 | Microsoft Corporation | Methods and systems for copying and moving across virtual namespaces |
US7152047B1 (en) | 2000-05-24 | 2006-12-19 | Esecure.Biz, Inc. | System and method for production and authentication of original documents |
US6665863B1 (en) | 2000-05-31 | 2003-12-16 | Microsoft Corporation | Data referencing within a database graph |
US8661539B2 (en) | 2000-07-10 | 2014-02-25 | Oracle International Corporation | Intrusion threat detection |
KR100425494B1 (ko) | 2000-08-21 | 2004-03-30 | 엘지전자 주식회사 | 웹 기반 전송장비의 관리 데이터 동기 방법 |
US7412605B2 (en) | 2000-08-28 | 2008-08-12 | Contentguard Holdings, Inc. | Method and apparatus for variable encryption of data |
US6978271B1 (en) * | 2000-10-31 | 2005-12-20 | Unisys Corporation | Mechanism for continuable calls to partially traverse a dynamic general tree |
US6915507B1 (en) | 2000-11-21 | 2005-07-05 | Microsoft Corporation | Extensible architecture for project-development systems |
US20040088333A1 (en) | 2002-01-25 | 2004-05-06 | David Sidman | Apparatus method and system for tracking information access |
US20100281364A1 (en) | 2005-01-11 | 2010-11-04 | David Sidman | Apparatuses, Methods and Systems For Portable Universal Profile |
US7406656B2 (en) | 2001-04-05 | 2008-07-29 | International Business Machines Corporation | Method, apparatus, and program for creating bookmark symlinks |
US7702641B2 (en) | 2001-06-04 | 2010-04-20 | Oracle America, Inc. | Method and system for comparing and updating file trees |
US7085779B2 (en) | 2001-06-04 | 2006-08-01 | Sun Microsystems, Inc. | File tree change reconciler |
US7962950B2 (en) | 2001-06-29 | 2011-06-14 | Hewlett-Packard Development Company, L.P. | System and method for file system mandatory access control |
US20030041097A1 (en) | 2001-07-11 | 2003-02-27 | Alexander Tormasov | Distributed transactional network storage system |
US7761497B1 (en) | 2001-07-13 | 2010-07-20 | Vignette Software, LLC | Storage medium having a manageable file directory structure |
AU2002313583A1 (en) | 2001-08-01 | 2003-02-17 | Actona Technologies Ltd. | Virtual file-sharing network |
US8249885B2 (en) | 2001-08-08 | 2012-08-21 | Gary Charles Berkowitz | Knowledge-based e-catalog procurement system and method |
US7761535B2 (en) | 2001-09-28 | 2010-07-20 | Siebel Systems, Inc. | Method and system for server synchronization with a computing device |
US7051039B1 (en) | 2001-09-28 | 2006-05-23 | Oracle International Corporation | Mechanism for uniform access control in a database system |
US7526575B2 (en) | 2001-09-28 | 2009-04-28 | Siebel Systems, Inc. | Method and system for client-based operations in server synchronization with a computing device |
US8015204B2 (en) | 2001-10-16 | 2011-09-06 | Microsoft Corporation | Scoped access control metadata element |
US7406473B1 (en) | 2002-01-30 | 2008-07-29 | Red Hat, Inc. | Distributed file system using disk servers, lock servers and file servers |
US7024429B2 (en) | 2002-01-31 | 2006-04-04 | Nextpage,Inc. | Data replication based upon a non-destructive data model |
US7127467B2 (en) | 2002-05-10 | 2006-10-24 | Oracle International Corporation | Managing expressions in a database system |
US7313598B1 (en) | 2002-06-13 | 2007-12-25 | Cisco Technology, Inc. | Method and apparatus for partial replication of directory information in a distributed environment |
US7505971B2 (en) | 2002-06-28 | 2009-03-17 | Hewlett-Packard Development Company, L.P. | Shared drive that provides shared access to editable files in a database |
JP3776866B2 (ja) * | 2002-10-18 | 2006-05-17 | 富士通株式会社 | 電子ドキュメント印刷プログラムおよび電子ドキュメント印刷システム |
US8676843B2 (en) | 2002-11-14 | 2014-03-18 | LexiNexis Risk Data Management Inc. | Failure recovery in a parallel-processing database system |
DE60220418T2 (de) | 2002-11-14 | 2008-01-31 | Alcatel Lucent | Verfahren und Anbieter zur Systemsynchronisation |
EP1422901A1 (en) | 2002-11-22 | 2004-05-26 | Sun Microsystems, Inc. | Client driven synchronization of file and folder content in web publishing |
JP2004234158A (ja) * | 2003-01-29 | 2004-08-19 | Sony Corp | 情報処理装置、およびコンテンツ管理方法、コンテンツ情報管理方法、並びにコンピュータ・プログラム |
US7890543B2 (en) * | 2003-03-06 | 2011-02-15 | Microsoft Corporation | Architecture for distributed computing system and automated design, deployment, and management of distributed applications |
US7072807B2 (en) | 2003-03-06 | 2006-07-04 | Microsoft Corporation | Architecture for distributed computing system and automated design, deployment, and management of distributed applications |
US7567991B2 (en) | 2003-06-25 | 2009-07-28 | Emc Corporation | Replication of snapshot using a file system copy differential |
US7275177B2 (en) | 2003-06-25 | 2007-09-25 | Emc Corporation | Data recovery with internet protocol replication with or without full resync |
US7634482B2 (en) | 2003-07-11 | 2009-12-15 | Global Ids Inc. | System and method for data integration using multi-dimensional, associative unique identifiers |
WO2005015426A1 (en) | 2003-08-08 | 2005-02-17 | Kincaid Technology Corporation | Media keying for updatable content distribution |
JP2005063124A (ja) * | 2003-08-11 | 2005-03-10 | Ntt Communications Kk | 情報同期システム、情報同期方法、情報同期プログラム及びプログラム記録媒体 |
CN100565505C (zh) | 2003-08-21 | 2009-12-02 | 微软公司 | 通过中介文件系统或设备同步计算机系统的系统和方法 |
US7734690B2 (en) | 2003-09-05 | 2010-06-08 | Microsoft Corporation | Method and apparatus for providing attributes of a collaboration system in an operating system folder-based file system |
US7203708B2 (en) * | 2003-11-06 | 2007-04-10 | Microsoft Corporation | Optimizing file replication using binary comparisons |
CN1255748C (zh) | 2003-11-24 | 2006-05-10 | 华中科技大学 | 一种存储虚拟化系统的元数据层次管理方法及其系统 |
US9075851B2 (en) | 2003-12-09 | 2015-07-07 | Emc Corporation | Method and apparatus for data retention in a storage system |
US8346803B2 (en) | 2003-12-12 | 2013-01-01 | Knapp Investment Company Limited | Dynamic generation of target files from template files and tracking of the processing of target files |
JP2005189995A (ja) | 2003-12-24 | 2005-07-14 | Hitachi Ltd | ファイル授受プロセス管理方法、および、ファイル授受プロセス可視化方法、ならびに、ファイル授受システムにおけるファイル授受プロセス管理装置、および、ユーザ端末 |
US8108483B2 (en) | 2004-01-30 | 2012-01-31 | Microsoft Corporation | System and method for generating a consistent user namespace on networked devices |
US7685206B1 (en) | 2004-02-12 | 2010-03-23 | Microsoft Corporation | Authorization and access control service for distributed network resources |
AU2005223652B2 (en) | 2004-03-18 | 2011-01-27 | Andrew Peter Liebman | A novel media file access and storage solution for multi-workstation/multi-platform non-linear video editing systems |
US20050222996A1 (en) | 2004-03-30 | 2005-10-06 | Oracle International Corporation | Managing event-condition-action rules in a database system |
US8190741B2 (en) | 2004-04-23 | 2012-05-29 | Neopath Networks, Inc. | Customizing a namespace in a decentralized storage environment |
US7523143B2 (en) | 2004-05-12 | 2009-04-21 | Oracle International Corporation | Mapping source logical clock into destination logical clock in a distributed system |
US7290205B2 (en) | 2004-06-23 | 2007-10-30 | Sas Institute Inc. | System and method for management of document cross-reference links |
US7624106B1 (en) | 2004-09-29 | 2009-11-24 | Network Appliance, Inc. | Method and apparatus for generating user-level difference information about two data sets |
US8069226B2 (en) | 2004-09-30 | 2011-11-29 | Citrix Systems, Inc. | System and method for data synchronization over a network using a presentation level protocol |
US7627574B2 (en) | 2004-12-16 | 2009-12-01 | Oracle International Corporation | Infrastructure for performing file operations by a database server |
US9020887B2 (en) | 2004-12-21 | 2015-04-28 | Proofpoint, Inc. | Managing the status of documents in a distributed storage system |
US7529931B2 (en) | 2004-12-23 | 2009-05-05 | Microsoft Corporation | Managing elevated rights on a network |
US7895158B2 (en) | 2004-12-27 | 2011-02-22 | Solace Systems Inc. | Data logging in content routed networks |
US7805469B1 (en) | 2004-12-28 | 2010-09-28 | Symantec Operating Corporation | Method and apparatus for splitting and merging file systems |
US7664788B2 (en) | 2005-01-10 | 2010-02-16 | Microsoft Corporation | Method and system for synchronizing cached files |
US7660809B2 (en) | 2005-01-31 | 2010-02-09 | Microsoft Corporation | Using a file server as a central shared database |
US7877539B2 (en) | 2005-02-16 | 2011-01-25 | Sandisk Corporation | Direct data file storage in flash memories |
US20090198719A1 (en) | 2005-02-12 | 2009-08-06 | Teresis Media Management, Inc. | Methods and appartuses for assisting the production of media works and the like |
US20070016650A1 (en) | 2005-04-01 | 2007-01-18 | Gilbert Gary J | System and methods for collaborative development of content over an electronic network |
JP4824085B2 (ja) | 2005-04-25 | 2011-11-24 | ネットアップ,インコーポレイテッド | ネットワークファイルシステムをキャッシュするシステム、及び方法 |
US8145686B2 (en) | 2005-05-06 | 2012-03-27 | Microsoft Corporation | Maintenance of link level consistency between database and file system |
US7774322B2 (en) | 2005-05-25 | 2010-08-10 | Microsoft Corporation | File transfer error handling |
US9129088B1 (en) | 2005-06-04 | 2015-09-08 | Leo Martin Baschy | User interface driven access control system and methods for multiple users as one audience |
US7447709B1 (en) | 2005-06-29 | 2008-11-04 | Emc Corporation | Methods and apparatus for synchronizing content |
US20070016771A1 (en) | 2005-07-11 | 2007-01-18 | Simdesk Technologies, Inc. | Maintaining security for file copy operations |
US20070022091A1 (en) | 2005-07-20 | 2007-01-25 | Scriptlogic Corporation | Access based file system directory enumeration |
FR2880715A1 (fr) * | 2005-07-21 | 2006-07-14 | France Telecom | Procede et systeme de codage d'un treillis representatif d'une hierarchie d'elements |
GB0516471D0 (en) * | 2005-08-10 | 2005-09-14 | Symbian Software Ltd | Protected software identifiers for improving security in a computing device |
US7930346B2 (en) | 2005-08-24 | 2011-04-19 | Microsoft Corporation | Security in peer to peer synchronization applications |
JP4836533B2 (ja) | 2005-09-27 | 2011-12-14 | 株式会社日立製作所 | ストレージシステムにおけるファイルシステムマイグレーション方法、ストレージシステム及び管理計算機 |
JP3894335B1 (ja) | 2005-10-04 | 2007-03-22 | インターナショナル・ビジネス・マシーンズ・コーポレーション | データベースの整合性を判断する装置、およびその方法 |
US20070088744A1 (en) | 2005-10-13 | 2007-04-19 | Joseph Webber | System and method for automatic directory management in server environments |
KR100678921B1 (ko) | 2005-10-18 | 2007-02-05 | 삼성전자주식회사 | 다중 서버 환경에 적합한 디바이스를 클라이언트로 하여동기화를 수행하는 방법 및 장치 |
US8015319B2 (en) | 2005-10-27 | 2011-09-06 | Huawei Technologies Co., Ltd. | Method, system, client and server for implementing data sync |
US7904941B2 (en) | 2005-11-22 | 2011-03-08 | Cisco Technology, Inc. | Adaptive system for content monitoring |
JP4795787B2 (ja) | 2005-12-09 | 2011-10-19 | 株式会社日立製作所 | ストレージシステム、nasサーバ、及びスナップショット方法 |
US8655850B2 (en) | 2005-12-19 | 2014-02-18 | Commvault Systems, Inc. | Systems and methods for resynchronizing information |
US7636743B2 (en) | 2005-12-19 | 2009-12-22 | Commvault Systems, Inc. | Pathname translation in a data replication system |
JP5016610B2 (ja) | 2005-12-21 | 2012-09-05 | ディジマーク コーポレイション | ルール駆動パンidメタデータルーティングシステム及びネットワーク |
US20070150595A1 (en) | 2005-12-23 | 2007-06-28 | Microsoft Corporation | Identifying information services and schedule times to implement load management |
US8544058B2 (en) | 2005-12-29 | 2013-09-24 | Nextlabs, Inc. | Techniques of transforming policies to enforce control in an information management system |
WO2007120360A2 (en) | 2005-12-29 | 2007-10-25 | Blue Jungle | Information management system |
US20070198540A1 (en) | 2006-02-01 | 2007-08-23 | Kohl John T | Non-bindable mount in a shared mount tree |
US7917942B2 (en) | 2006-02-24 | 2011-03-29 | Nokia Corporation | System and method for configuring security in a plug-and-play architecture |
US20070234398A1 (en) | 2006-03-02 | 2007-10-04 | Thomas Muehlbauer | Controlling Access to Digital Media Content |
US20070208715A1 (en) | 2006-03-02 | 2007-09-06 | Thomas Muehlbauer | Assigning Unique Content Identifiers to Digital Media Content |
US20070208763A1 (en) | 2006-03-02 | 2007-09-06 | Thomas Muehlbauer | Computer Database Record Architecture Based on a Unique Internet Media Identifier |
US9754119B1 (en) | 2006-03-07 | 2017-09-05 | Emc Corporation | Containerized security for managed content |
US20070245353A1 (en) | 2006-03-14 | 2007-10-18 | Amir Ben-Dor | Secure integration of a local and a remote application |
EP1997315B1 (en) | 2006-03-17 | 2016-02-10 | Sony Corporation | System and method for organizing group content presentations and group communications during the same |
US8577940B2 (en) | 2006-03-20 | 2013-11-05 | Parallels IP Holdings GmbH | Managing computer file system using file system trees |
US8561146B2 (en) | 2006-04-14 | 2013-10-15 | Varonis Systems, Inc. | Automatic folder access management |
WO2008005102A2 (en) | 2006-05-13 | 2008-01-10 | Sap Ag | Consistent set of interfaces derived from a business object model |
US7769727B2 (en) | 2006-05-31 | 2010-08-03 | Microsoft Corporation | Resolving update-delete conflicts |
US20070283050A1 (en) | 2006-06-05 | 2007-12-06 | Seagate Technology, Llc | Scheduling reporting of synchronization states |
JP2007328623A (ja) | 2006-06-08 | 2007-12-20 | Fuji Xerox Co Ltd | アクセス制御装置 |
US7805408B2 (en) | 2006-06-09 | 2010-09-28 | Microsoft Corporation | Unified mechanism for presenting and resolving grouped synchronization conflicts |
US7720892B1 (en) | 2006-06-30 | 2010-05-18 | Emc Corporation | Bulk updates and tape synchronization |
US20080005113A1 (en) * | 2006-06-30 | 2008-01-03 | Microsoft Corporation | Sender-driven incentive-based mass p2p file sharing |
US20080005195A1 (en) | 2006-06-30 | 2008-01-03 | Microsoft Corporation | Versioning synchronization for mass p2p file sharing |
US8099452B2 (en) | 2006-09-05 | 2012-01-17 | Microsoft Corporation | Event stream conditioning |
US7657769B2 (en) | 2007-01-08 | 2010-02-02 | Marcy M Scott | N-way synchronization of data |
CN101035016A (zh) * | 2007-02-08 | 2007-09-12 | 中兴通讯股份有限公司 | 终端设备配置系统及方法 |
US20080222296A1 (en) | 2007-03-07 | 2008-09-11 | Lisa Ellen Lippincott | Distributed server architecture |
JP2008250903A (ja) | 2007-03-30 | 2008-10-16 | Toshiba Corp | ファイル更新装置、プログラム及び方法 |
US7809828B2 (en) | 2007-04-11 | 2010-10-05 | International Business Machines Corporation | Method for maintaining state consistency among multiple state-driven file system entities when entities become disconnected |
US8127277B2 (en) | 2007-05-21 | 2012-02-28 | International Business Machines Corporation | Framework for conditionally executing code in an application using conditions in the framework and in the application |
US7739547B2 (en) | 2007-06-07 | 2010-06-15 | International Business Machines Corporation | Failure recovery and error correction techniques for data loading in information warehouses |
US8359467B2 (en) | 2007-07-07 | 2013-01-22 | Hewlett-Packard Development Company, L.P. | Access control system and method |
US20090024671A1 (en) | 2007-07-19 | 2009-01-22 | Microsoft Corporation | Content management system and external data storage system data synchronization |
US9298417B1 (en) | 2007-07-25 | 2016-03-29 | Emc Corporation | Systems and methods for facilitating management of data |
JP2009038416A (ja) * | 2007-07-31 | 2009-02-19 | Toshiba Corp | マルチキャスト通信システム、並びにグループ鍵管理サーバ |
US7925631B1 (en) | 2007-08-08 | 2011-04-12 | Network Appliance, Inc. | Method and system for reporting inconsistency of file system persistent point in time images and automatically thawing a file system |
US8214641B2 (en) | 2007-08-23 | 2012-07-03 | Microsoft Corporation | File access in multi-protocol environment |
US20090132400A1 (en) | 2007-09-28 | 2009-05-21 | Verizon Services Organization Inc. | Data metering |
US8438611B2 (en) | 2007-10-11 | 2013-05-07 | Varonis Systems Inc. | Visualization of access permission status |
CA2609083C (en) * | 2007-10-31 | 2016-05-31 | Caseware International Inc. | Hierarchical file synchronization method, software and devices |
US8438612B2 (en) * | 2007-11-06 | 2013-05-07 | Varonis Systems Inc. | Visualization of access permission status |
US8417676B2 (en) | 2007-11-06 | 2013-04-09 | International Business Machines Corporation | Automated method for detecting and repairing configuration conflicts in a content management system |
US8180747B2 (en) | 2007-11-12 | 2012-05-15 | F5 Networks, Inc. | Load sharing cluster file systems |
NZ563634A (en) | 2007-11-22 | 2008-06-30 | Johannes Wijninckx | Method and system for linking electronic artefacts |
US20090150569A1 (en) | 2007-12-07 | 2009-06-11 | Avi Kumar | Synchronization system and method for mobile devices |
US8667034B1 (en) | 2008-02-20 | 2014-03-04 | Emc Corporation | System and method for preserving symbolic links by a storage virtualization system |
US8180983B1 (en) | 2008-02-26 | 2012-05-15 | Network Appliance, Inc. | Caching filenames of a striped directory in predictable locations within a volume locally accessible to a storage server node |
US7747663B2 (en) | 2008-03-05 | 2010-06-29 | Nec Laboratories America, Inc. | System and method for content addressable storage |
KR101574339B1 (ko) | 2008-04-28 | 2015-12-03 | 엘지전자 주식회사 | 이동통신 단말기와 tv간 데이터 동기화 방법 및 장치 |
US8296398B2 (en) | 2008-04-29 | 2012-10-23 | Overland Storage, Inc. | Peer-to-peer redundant file server system and methods |
US9724611B2 (en) | 2008-05-21 | 2017-08-08 | Disney Enterprises, Inc. | Method and system for synchronizing an online application and a portable device |
US8346824B1 (en) | 2008-05-21 | 2013-01-01 | Translattice, Inc. | Data distribution system |
US7917494B2 (en) | 2008-07-11 | 2011-03-29 | Adobe Software Trading Company Limited | System and method for a log-based data storage |
US9081861B2 (en) | 2008-07-21 | 2015-07-14 | Google Inc. | Uniform resource locator canonicalization |
US8554800B2 (en) | 2008-07-30 | 2013-10-08 | Portool Ltd. | System, methods and applications for structured document indexing |
US8990924B2 (en) | 2008-08-27 | 2015-03-24 | Medtronic, Inc. | Multiple user accounts for managing stored information in an implantable medical device system |
US8301994B1 (en) | 2008-09-12 | 2012-10-30 | Adobe Systems Incorporated | Synchronizing multiple hierarchal data structures |
CN101729442B (zh) | 2008-10-23 | 2013-03-20 | 华为技术有限公司 | 一种实现内容共享的方法和装置 |
US8312242B2 (en) | 2008-10-30 | 2012-11-13 | Hewlett-Packard Development Company, L.P. | Tracking memory space in a storage system |
US8108779B1 (en) | 2008-12-16 | 2012-01-31 | Adobe Systems Incorporated | Collaborative editing operations |
US8572036B2 (en) | 2008-12-18 | 2013-10-29 | Datalight, Incorporated | Method and apparatus for fault-tolerant memory management |
US8566362B2 (en) | 2009-01-23 | 2013-10-22 | Nasuni Corporation | Method and system for versioned file system using structured data representations |
US20100306180A1 (en) | 2009-01-28 | 2010-12-02 | Digitiliti, Inc. | File revision management |
US8364984B2 (en) | 2009-03-13 | 2013-01-29 | Microsoft Corporation | Portable secure data files |
US20100242037A1 (en) * | 2009-03-17 | 2010-09-23 | Microsoft Corporation | Software Deployment over a Network |
EP2410431B1 (en) | 2009-03-19 | 2014-05-07 | Murakumo Corporation | Method and system for data replication management |
US8260742B2 (en) * | 2009-04-03 | 2012-09-04 | International Business Machines Corporation | Data synchronization and consistency across distributed repositories |
US9171036B2 (en) | 2009-05-15 | 2015-10-27 | International Business Machines Corporation | Batching heterogeneous database commands |
US8527527B2 (en) | 2009-05-29 | 2013-09-03 | Clear Channel Management Services, Inc. | Content enrichment using unified system of unique identifiers |
US8326802B2 (en) | 2009-06-11 | 2012-12-04 | International Business Machines Corporation | File system location verification using a sentinel |
US8326874B2 (en) | 2009-06-17 | 2012-12-04 | Microsoft Corporation | Model-based implied authorization |
CN101930442A (zh) | 2009-06-24 | 2010-12-29 | 侯方勇 | 一种哈希树的节点更新方法 |
KR20110007419A (ko) | 2009-07-16 | 2011-01-24 | 한국전자통신연구원 | 멀티 메타버스 환경에서의 콘텐츠 전송 시스템 및 이를 이용한 콘텐츠 관리 방법 |
US20110040793A1 (en) | 2009-08-12 | 2011-02-17 | Mark Davidson | Administration Groups |
US8489654B2 (en) | 2009-08-28 | 2013-07-16 | Beijing Innovation Works Technology Company Limited | Method and system for forming a virtual file system at a computing device |
US20110072143A1 (en) * | 2009-09-18 | 2011-03-24 | Industrial Technology Research Institute | Scheduling method for peer-to-peer data transmission and node and system using the same |
US8423581B2 (en) | 2009-10-07 | 2013-04-16 | International Business Machines Corporation | Proxy support for special subtree entries in a directory information tree using attribute rules |
CN102055748B (zh) * | 2009-11-05 | 2016-08-03 | 中兴通讯股份有限公司 | 电子公告板管理方法和系统 |
US8819848B2 (en) | 2009-11-24 | 2014-08-26 | Comcast Interactive Media, Llc | Method for scalable access control decisions |
US9229970B2 (en) | 2009-12-07 | 2016-01-05 | International Business Machines Corporation | Methods to minimize communication in a cluster database system |
JP5458861B2 (ja) | 2009-12-17 | 2014-04-02 | 富士ゼロックス株式会社 | 文書検索装置、プログラム、文書登録装置、および文書検索システム |
US8204860B1 (en) | 2010-02-09 | 2012-06-19 | F5 Networks, Inc. | Methods and systems for snapshot reconstitution |
US8516487B2 (en) | 2010-02-11 | 2013-08-20 | International Business Machines Corporation | Dynamic job relocation in a high performance computing system |
US8572022B2 (en) | 2010-03-02 | 2013-10-29 | Microsoft Corporation | Automatic synchronization conflict resolution |
KR20110105982A (ko) * | 2010-03-22 | 2011-09-28 | 전석한 | 원격 사용자 인증 방법 및 시스템 |
EP2556138B1 (en) | 2010-04-06 | 2014-06-11 | Heliae Development LLC | Methods of and systems for producing biofuels |
US8362876B2 (en) | 2010-04-08 | 2013-01-29 | Merten C William | Interlock system and method |
US8700670B2 (en) | 2010-04-12 | 2014-04-15 | Symantec Corporation | Insert optimization for B+ tree data structure scalability |
JP5531760B2 (ja) | 2010-04-28 | 2014-06-25 | 富士通株式会社 | 情報処理システム及び情報処理方法 |
JP5315291B2 (ja) | 2010-04-30 | 2013-10-16 | インターナショナル・ビジネス・マシーンズ・コーポレーション | グラフにおけるノードの間の類似度を計算するための方法、プログラム、およびシステム |
US9405845B2 (en) * | 2010-05-17 | 2016-08-02 | Microsoft Technology Licensing, Llc | Adaptable layouts for social feeds |
TW201209043A (en) * | 2010-05-17 | 2012-03-01 | Glaxo Group Ltd | Novel processes |
US8589349B2 (en) | 2010-06-30 | 2013-11-19 | International Business Machines Corporation | Tracking and viewing revision history on a section-by-section basis |
US8566837B2 (en) | 2010-07-16 | 2013-10-22 | International Business Machines Corportion | Dynamic run time allocation of distributed jobs with application specific metrics |
US20120079606A1 (en) | 2010-09-24 | 2012-03-29 | Amazon Technologies, Inc. | Rights and capability-inclusive content selection and delivery |
CN102413313A (zh) | 2010-09-26 | 2012-04-11 | 索尼公司 | 数据完整性验证信息生成方法和装置、数据完整性验证方法和装置 |
US8949939B2 (en) | 2010-10-13 | 2015-02-03 | Salesforce.Com, Inc. | Methods and systems for provisioning access to customer organization data in a multi-tenant system |
US8516249B2 (en) | 2010-10-20 | 2013-08-20 | Verizon Patent And Licensing Inc. | Cloud services layer |
US8548992B2 (en) | 2010-10-28 | 2013-10-01 | Cary Scott Abramoff | User interface for a digital content management system |
US8706701B1 (en) | 2010-11-18 | 2014-04-22 | Emc Corporation | Scalable cloud file system with efficient integrity checks |
US8516149B1 (en) | 2010-12-17 | 2013-08-20 | Emc Corporation | System for operating NFSv2 and NFSv3 clients with federated namespace |
US20120179874A1 (en) | 2011-01-07 | 2012-07-12 | International Business Machines Corporation | Scalable cloud storage architecture |
US9311324B2 (en) | 2011-01-26 | 2016-04-12 | Mitre Corporation | Synchronizing data among a federation of servers with intermittent or low signal bandwidth |
US8688734B1 (en) | 2011-02-04 | 2014-04-01 | hopTo Inc. | System for and methods of controlling user access and/or visibility to directories and files of a computer |
JP5537462B2 (ja) | 2011-02-24 | 2014-07-02 | 株式会社日立製作所 | 通信ネットワークシステム及び通信ネットワーク構成方法 |
US8510267B2 (en) | 2011-03-08 | 2013-08-13 | Rackspace Us, Inc. | Synchronization of structured information repositories |
US9311229B2 (en) | 2011-03-29 | 2016-04-12 | Blackberry Limited | System and method for managing flash memory |
US20120278334A1 (en) | 2011-04-29 | 2012-11-01 | John Abjanic | Database System |
US9501490B2 (en) | 2011-06-20 | 2016-11-22 | Microsoft Technology Licensing, Llc | Automatic synchronization of most recently used document lists |
US9652741B2 (en) | 2011-07-08 | 2017-05-16 | Box, Inc. | Desktop application for access and interaction with workspaces in a cloud-based content management system and synchronization mechanisms thereof |
GB2503625A (en) | 2011-07-08 | 2014-01-01 | Box Inc | Collaboration sessions in a workspace on cloud-based content management system |
US20130268559A1 (en) | 2011-07-13 | 2013-10-10 | Z124 | Virtual file system remote search |
US8572231B2 (en) | 2011-07-14 | 2013-10-29 | Google Inc. | Variable-length nonce generation |
US8589363B2 (en) | 2011-07-19 | 2013-11-19 | Exagrid Systems, Inc. | Systems and methods for managing delta version chains |
US9710535B2 (en) | 2011-08-12 | 2017-07-18 | Nexenta Systems, Inc. | Object storage system with local transaction logs, a distributed namespace, and optimized support for user directories |
US20170123931A1 (en) | 2011-08-12 | 2017-05-04 | Nexenta Systems, Inc. | Object Storage System with a Distributed Namespace and Snapshot and Cloning Features |
US8682462B2 (en) | 2011-08-13 | 2014-03-25 | Colin M. Leonard | Systems and methods for dynamic audio processing |
US8984170B2 (en) | 2011-09-09 | 2015-03-17 | Oracle International Corporation | Idempotence for database transactions |
US20130067542A1 (en) | 2011-09-09 | 2013-03-14 | Deepak Gonsalves | Connection authorization with a privileged access |
KR101289931B1 (ko) | 2011-09-23 | 2013-07-25 | 한양대학교 산학협력단 | 다양한 블록 크기를 지원하는 주소 사상을 사용하여 플래시 메모리 내에 데이터를 저장하는 방법 및 장치 |
US9225772B2 (en) | 2011-09-26 | 2015-12-29 | Knoa Software, Inc. | Method, system and program product for allocation and/or prioritization of electronic resources |
US9578114B2 (en) | 2011-09-27 | 2017-02-21 | Microsoft Technology Licensing, Llc | External service application discovery method |
JP2013077227A (ja) | 2011-09-30 | 2013-04-25 | Fujitsu Ltd | 制御プログラム、情報処理装置および方法 |
JP2013088927A (ja) | 2011-10-14 | 2013-05-13 | Nomura Research Institute Ltd | 認証管理装置および認証管理方法 |
US9805054B2 (en) | 2011-11-14 | 2017-10-31 | Panzura, Inc. | Managing a global namespace for a distributed filesystem |
US8769648B2 (en) | 2011-11-18 | 2014-07-01 | Red Hat, Inc. | Authenticated home directory |
CA2889387C (en) | 2011-11-22 | 2020-03-24 | Solano Labs, Inc. | System of distributed software quality improvement |
GB2500152A (en) | 2011-11-29 | 2013-09-11 | Box Inc | Mobile platform file and folder selection functionalities for offline access and synchronization |
US9483491B2 (en) | 2011-11-29 | 2016-11-01 | Egnyte, Inc. | Flexible permission management framework for cloud attached file systems |
GB2492857B (en) | 2011-11-30 | 2013-07-17 | Avecto Ltd | Method and computer device to control software file downloads |
US8751800B1 (en) | 2011-12-12 | 2014-06-10 | Google Inc. | DRM provider interoperability |
CN102404338B (zh) | 2011-12-13 | 2014-08-20 | 华为技术有限公司 | 一种文件同步方法和装置 |
US9235589B2 (en) * | 2011-12-13 | 2016-01-12 | International Business Machines Corporation | Optimizing storage allocation in a virtual desktop environment |
US8818951B1 (en) | 2011-12-29 | 2014-08-26 | Emc Corporation | Distributed file system having separate data and metadata and providing a consistent snapshot thereof |
US20130179480A1 (en) | 2012-01-05 | 2013-07-11 | Stec, Inc. | System and method for operating a clustered file system using a standalone operation log |
US9164997B2 (en) | 2012-01-19 | 2015-10-20 | Microsoft Technology Licensing, Llc | Recognizing cloud content |
US10469533B2 (en) | 2012-01-24 | 2019-11-05 | Ssh Communications Security Oyj | Controlling and auditing SFTP file transfers |
US9167049B2 (en) * | 2012-02-02 | 2015-10-20 | Comcast Cable Communications, Llc | Content distribution network supporting popularity-based caching |
US9330106B2 (en) | 2012-02-15 | 2016-05-03 | Citrix Systems, Inc. | Selective synchronization of remotely stored content |
JP5929305B2 (ja) | 2012-02-24 | 2016-06-01 | 株式会社リコー | 通信システム、サーバ、端末、プログラム |
US9355120B1 (en) * | 2012-03-02 | 2016-05-31 | Netapp, Inc. | Systems and methods for managing files in a content storage system |
US9503535B2 (en) | 2012-03-06 | 2016-11-22 | Salesforce.Com, Inc. | Computer implemented methods and apparatus for automatically following entities in an online social network |
WO2013134847A1 (en) | 2012-03-16 | 2013-09-19 | Research In Motion Limited | System and method for managing data using tree structures |
US8707035B2 (en) | 2012-03-30 | 2014-04-22 | Decho Corporation | High privacy of file synchronization with sharing functionality |
US20130268480A1 (en) | 2012-04-05 | 2013-10-10 | Box, Inc. | Method and apparatus for selective subfolder synchronization in a cloud-based environment |
US9529818B2 (en) | 2012-04-23 | 2016-12-27 | Google Inc. | Sharing and synchronizing electronically stored files |
US8949179B2 (en) | 2012-04-23 | 2015-02-03 | Google, Inc. | Sharing and synchronizing electronically stored files |
US9239846B2 (en) | 2012-04-23 | 2016-01-19 | Google Inc. | Sharing and synchronizing electronically stored files |
CN104685485B (zh) | 2012-04-23 | 2018-06-15 | 谷歌有限责任公司 | 共享和同步电子保存的文件 |
US20130290323A1 (en) | 2012-04-26 | 2013-10-31 | Appsense Limited | Systems and methods for automatically associating tags with files in a computer system |
US9396216B2 (en) | 2012-05-04 | 2016-07-19 | Box, Inc. | Repository redundancy implementation of a system which incrementally updates clients with events that occurred via a cloud-enabled platform |
US9360942B2 (en) | 2012-05-21 | 2016-06-07 | Door Number 3 | Cursor driven interface for layer control |
CN102693302B (zh) | 2012-05-21 | 2015-04-22 | 浙江省公众信息产业有限公司 | 快速文件比对方法、系统及客户端 |
US20130318160A1 (en) | 2012-05-28 | 2013-11-28 | Mutaz Seleam Beraka | Device and Method for Sharing Data and Applications in Peer-to-Peer Computing Environment |
US10172774B2 (en) * | 2012-05-30 | 2019-01-08 | Clariant International Ltd. | Use of N-methyl-N-acylglucamines as thickening agents in surfactant solutions |
US8504519B1 (en) | 2012-06-27 | 2013-08-06 | Dropbox, Inc. | Determining a preferred modified version from among multiple modified versions for synchronized files |
WO2014003781A1 (en) | 2012-06-29 | 2014-01-03 | Hewlett-Packard Development Company, L.P. | Sharing of user interface objects via a shared space |
US20150172412A1 (en) | 2012-07-06 | 2015-06-18 | Cornell University | Managing dependencies between operations in a distributed system |
JP2014026331A (ja) | 2012-07-24 | 2014-02-06 | Ntt Docomo Inc | 部分木判定装置、部分木判定方法、及び部分木判定プログラム |
US9794256B2 (en) | 2012-07-30 | 2017-10-17 | Box, Inc. | System and method for advanced control tools for administrators in a cloud-based service |
US9354683B2 (en) | 2012-08-08 | 2016-05-31 | Amazon Technologies, Inc. | Data storage power management |
US9633125B1 (en) | 2012-08-10 | 2017-04-25 | Dropbox, Inc. | System, method, and computer program for enabling a user to synchronize, manage, and share folders across a plurality of client devices and a synchronization server |
GB2494047A (en) | 2012-08-22 | 2013-02-27 | Bae Systems Plc | Method and system for determining actions to be performed |
GB2513671A (en) | 2012-08-27 | 2014-11-05 | Box Inc | Server side techniques for reducing database workload in implementing selective subfolder synchronization in a cloud-based environment |
US10200350B2 (en) | 2012-09-04 | 2019-02-05 | Nokia Technologies Oy | Methods and apparatuses for location-based access management |
US9069979B2 (en) | 2012-09-07 | 2015-06-30 | Oracle International Corporation | LDAP-based multi-tenant in-cloud identity management system |
US9361473B2 (en) | 2012-09-14 | 2016-06-07 | Google Inc. | Correcting access rights of files in electronic communications |
US8769105B2 (en) | 2012-09-14 | 2014-07-01 | Peaxy, Inc. | Software-defined network attachable storage system and method |
US8635373B1 (en) | 2012-09-22 | 2014-01-21 | Nest Labs, Inc. | Subscription-Notification mechanisms for synchronization of distributed states |
US9251114B1 (en) | 2012-10-12 | 2016-02-02 | Egnyte, Inc. | Systems and methods for facilitating access to private files using a cloud storage system |
US9936020B2 (en) | 2012-10-30 | 2018-04-03 | International Business Machines Corporation | Access control of data in a dispersed storage network |
US9203838B2 (en) * | 2012-10-31 | 2015-12-01 | Google Inc. | Providing network access to a device associated with a user account |
CN103812912B (zh) | 2012-11-14 | 2018-01-19 | 北京慧点科技股份有限公司 | 一种维护组织结构信息的方法及装置 |
TWI482031B (zh) | 2012-11-14 | 2015-04-21 | Inst Information Industry | 在雲端儲存服務下提供以檔案為關聯之社群互動方法、系統以及儲存有此方法之電腦可讀取記錄媒體 |
US9209973B2 (en) | 2012-11-20 | 2015-12-08 | Google Inc. | Delegate authorization in cloud-based storage system |
US9755995B2 (en) * | 2012-11-20 | 2017-09-05 | Dropbox, Inc. | System and method for applying gesture input to digital content |
EP2736221A1 (en) | 2012-11-22 | 2014-05-28 | NEC Corporation | Improved synchronization of an application run on two distinct devices |
US9002805B1 (en) | 2012-12-14 | 2015-04-07 | Amazon Technologies, Inc. | Conditional storage object deletion |
US9323939B2 (en) | 2012-12-17 | 2016-04-26 | Ca, Inc. | Multi-tenancy governance in a cloud computing environment |
US8977596B2 (en) | 2012-12-21 | 2015-03-10 | Zetta Inc. | Back up using locally distributed change detection |
US9268797B2 (en) | 2012-12-21 | 2016-02-23 | Zetta Inc. | Systems and methods for on-line backup and disaster recovery |
US8977594B2 (en) | 2012-12-21 | 2015-03-10 | Zetta Inc. | Systems and methods for state consistent replication |
US9390109B2 (en) | 2012-12-21 | 2016-07-12 | Commvault Systems, Inc. | Systems and methods to detect deleted files |
US9128932B2 (en) | 2012-12-21 | 2015-09-08 | Dropbox, Inc. | Condensing event markers |
US8930698B2 (en) | 2012-12-27 | 2015-01-06 | Dropbox, Inc. | Encrypting globally unique identifiers at communication boundaries |
US9069879B2 (en) | 2012-12-27 | 2015-06-30 | Dropbox, Inc. | Globally unique identifiers in an online content management system |
US9071654B2 (en) | 2012-12-27 | 2015-06-30 | Dropbox, Inc. | Maintaining concurrency and consistency of globally unique identifiers |
US9083766B2 (en) | 2012-12-27 | 2015-07-14 | Dropbox, Inc. | Maintaining consistent globally unique identifiers via an asynchronous interface |
US9396245B2 (en) | 2013-01-02 | 2016-07-19 | Box, Inc. | Race condition handling in a system which incrementally updates clients with events that occurred in a cloud-based collaboration platform |
US9398090B2 (en) | 2013-01-07 | 2016-07-19 | Dropbox, Inc. | Synchronized content library |
EP2755151A3 (en) | 2013-01-11 | 2014-09-24 | Box, Inc. | Functionalities, features and user interface of a synchronization client to a cloud-based environment |
US8904503B2 (en) | 2013-01-15 | 2014-12-02 | Symantec Corporation | Systems and methods for providing access to data accounts within user profiles via cloud-based storage services |
EP2757491A1 (en) | 2013-01-17 | 2014-07-23 | Box, Inc. | Conflict resolution, retry condition management, and handling of problem files for the synchronization client to a cloud-based platform |
US9294485B2 (en) | 2013-01-27 | 2016-03-22 | Dropbox, Inc. | Controlling access to shared content in an online content management system |
GB2510178A (en) | 2013-01-28 | 2014-07-30 | 1 & 1 Internet Ag | System and method for replicating data |
US9310981B2 (en) | 2013-02-13 | 2016-04-12 | Dropbox, Inc. | Seamless editing and saving of online content items using applications |
US9613047B2 (en) * | 2013-02-13 | 2017-04-04 | Dropbox, Inc. | Automatic content item upload |
JP6033949B2 (ja) * | 2013-02-19 | 2016-11-30 | 株式会社日立製作所 | 情報処理システム |
US9418072B2 (en) | 2013-03-04 | 2016-08-16 | Vmware, Inc. | Cross-file differential content synchronization |
US9934241B2 (en) | 2013-03-05 | 2018-04-03 | Hightail, Inc. | System and method for cloud-based read-only folder synchronization |
WO2014138705A1 (en) | 2013-03-08 | 2014-09-12 | Air Computing, Inc. | Systems and methods for managing files in a cloud-based computing environment |
US9426216B2 (en) | 2013-03-10 | 2016-08-23 | Dropbox, Inc. | Content item sharing and synchronization system with team shared folders |
US9747582B2 (en) | 2013-03-12 | 2017-08-29 | Dropbox, Inc. | Implementing a consistent ordering of operations in collaborative editing of shared content items |
US10055474B1 (en) | 2013-03-13 | 2018-08-21 | Emc Corporation | Method and system for connecting a content repository to a file sharing service |
US9152466B2 (en) | 2013-03-13 | 2015-10-06 | Barracuda Networks, Inc. | Organizing file events by their hierarchical paths for multi-threaded synch and parallel access system, apparatus, and method of operation |
CA2905008C (en) | 2013-03-13 | 2021-05-25 | Synacor, Inc. | Content and service aggregation, management and presentation system |
US10628578B2 (en) * | 2013-03-15 | 2020-04-21 | Imagine Communications Corp. | Systems and methods for determining trust levels for computing components using blockchain |
US9251241B2 (en) * | 2013-03-15 | 2016-02-02 | International Business Machines Corporation | Self provisioning and applying role-based security to teamspaces in content repositories |
US9015643B2 (en) | 2013-03-15 | 2015-04-21 | Nvidia Corporation | System, method, and computer program product for applying a callback function to data values |
US9858052B2 (en) | 2013-03-21 | 2018-01-02 | Razer (Asia-Pacific) Pte. Ltd. | Decentralized operating system |
US9300611B2 (en) | 2013-03-26 | 2016-03-29 | Dropbox, Inc. | Content-item linking system for messaging services |
US20140310175A1 (en) | 2013-04-12 | 2014-10-16 | Jack Bertram Coronel | System and device for exchanging cloud-based digital privileges |
CN104113572B (zh) | 2013-04-19 | 2018-09-28 | 腾讯科技(深圳)有限公司 | 用户生成内容的发布方法、系统和前端装置 |
US9870422B2 (en) | 2013-04-19 | 2018-01-16 | Dropbox, Inc. | Natural language search |
US9552363B2 (en) | 2013-04-30 | 2017-01-24 | Microsoft Technology Licensing, Llc | File management with placeholders |
US9411966B1 (en) | 2013-05-21 | 2016-08-09 | Amazon Technologies, Inc. | Confidential data access and storage |
US9325571B2 (en) | 2013-05-28 | 2016-04-26 | Dropbox, Inc. | Access permissions for shared content |
US9430808B2 (en) | 2013-06-19 | 2016-08-30 | Microsoft Technology Licensing, Llc | Synchronization points for state information |
WO2014203023A1 (en) | 2013-06-19 | 2014-12-24 | Hitachi Data Systems Engineering UK Limited | Decentralized distributed computing system |
US9805050B2 (en) | 2013-06-21 | 2017-10-31 | Box, Inc. | Maintaining and updating file system shadows on a local device by a synchronization client of a cloud-based platform |
US10229134B2 (en) * | 2013-06-25 | 2019-03-12 | Box, Inc. | Systems and methods for managing upgrades, migration of user data and improving performance of a cloud-based platform |
US9053165B2 (en) * | 2013-07-08 | 2015-06-09 | Dropbox, Inc. | Structured content item synchronization |
US20150012616A1 (en) | 2013-07-08 | 2015-01-08 | Dropbox, Inc. | Saving Third Party Content to a Content Management System |
US9282169B1 (en) * | 2013-07-12 | 2016-03-08 | Oxygen Cloud, Inc. | Real-time user interaction-based alterations to the scope of data synchronization between client and remote devices |
US9450904B2 (en) | 2013-07-15 | 2016-09-20 | Dropbox, Inc. | Coordinated notifications across multiple channels |
US10198449B2 (en) | 2013-07-16 | 2019-02-05 | Dropbox, Inc. | Creating unique content item identifiers |
US9239841B2 (en) | 2013-07-16 | 2016-01-19 | Vmware, Inc. | Hash-based snapshots |
US20150026597A1 (en) | 2013-07-17 | 2015-01-22 | Salesforce.Com, Inc. | Enhanced content posting features for an enterprise level business information networking environment |
JP6173085B2 (ja) | 2013-07-18 | 2017-08-02 | キヤノン株式会社 | 情報処理装置及びその制御方法、プログラム、並びに記憶媒体 |
US20150032690A1 (en) | 2013-07-25 | 2015-01-29 | Microsoft Corporation | Virtual synchronization with on-demand data delivery |
CN103412897B (zh) | 2013-07-25 | 2017-03-01 | 中国科学院软件研究所 | 一种基于分布式结构的并行数据处理方法 |
US9432457B2 (en) | 2013-08-30 | 2016-08-30 | Citrix Systems, Inc. | Redirecting local storage to cloud storage |
US9251235B1 (en) | 2013-09-11 | 2016-02-02 | Amazon Technologies, Inc. | Log-based synchronization |
US9185099B2 (en) | 2013-09-23 | 2015-11-10 | Airwatch Llc | Securely authorizing access to remote resources |
US9477673B2 (en) | 2013-09-24 | 2016-10-25 | Dropbox, Inc. | Heuristics for selecting and saving content to a synced online content management system |
US9454541B2 (en) | 2013-09-24 | 2016-09-27 | Cyberlink Corp. | Systems and methods for storing compressed data in cloud storage |
US9154308B2 (en) | 2013-09-27 | 2015-10-06 | Google Inc. | Revocable platform identifiers |
US10963482B2 (en) | 2013-10-04 | 2021-03-30 | Alfresco Software, Inc. | Linking of content between installations of a content management system |
US9336227B2 (en) | 2013-10-07 | 2016-05-10 | Sap Se | Selective synchronization in a hierarchical folder structure |
US9819570B2 (en) | 2013-10-09 | 2017-11-14 | International Business Machines Corporation | Dynamic symbolic links for referencing in a file system |
US20150100482A1 (en) * | 2013-10-09 | 2015-04-09 | Ebay Inc. | Payment tree |
CN103559224A (zh) | 2013-10-18 | 2014-02-05 | 华为技术有限公司 | 一种对元数据对象进行散列的方法及装置 |
US10242045B2 (en) | 2013-10-30 | 2019-03-26 | Dropbox, Inc. | Filtering content using synchronization data |
WO2015066523A2 (en) | 2013-11-01 | 2015-05-07 | Anonos Inc. | Dynamic de-identification and anonymity |
US11336648B2 (en) | 2013-11-11 | 2022-05-17 | Amazon Technologies, Inc. | Document management and collaboration system |
JP2015095220A (ja) | 2013-11-14 | 2015-05-18 | ソニー株式会社 | 情報処理装置、情報処理方法および記録媒体 |
US9280678B2 (en) | 2013-12-02 | 2016-03-08 | Fortinet, Inc. | Secure cloud storage distribution and aggregation |
US20150163302A1 (en) | 2013-12-06 | 2015-06-11 | Asurion, Llc | Synchronizing content between devices |
AU2014361702A1 (en) | 2013-12-09 | 2016-07-07 | Business Mobile Solutions Inc. | System and method for creating and transferring media files |
CA2899996C (en) | 2013-12-11 | 2020-04-14 | Intralinks, Inc. | Customizable secure data exchange environment |
FR3015168A1 (fr) | 2013-12-12 | 2015-06-19 | Orange | Procede d'authentification par jeton |
WO2015094193A1 (en) | 2013-12-17 | 2015-06-25 | Hitachi Data Systems Corporation | Distributed disaster recovery file sync server system |
US9703974B1 (en) * | 2013-12-20 | 2017-07-11 | Amazon Technologies, Inc. | Coordinated file system security via rules |
US9817987B2 (en) * | 2013-12-23 | 2017-11-14 | Dropbox, Inc. | Restricting access to content |
US9349020B2 (en) | 2013-12-27 | 2016-05-24 | Facebook, Inc. | Aggregated actions |
US9390281B2 (en) | 2013-12-30 | 2016-07-12 | Open Invention Network, Llc | Protecting data in insecure cloud storage |
US10417196B2 (en) | 2014-01-06 | 2019-09-17 | Tuxera Inc. | Systems and methods for fail-safe operations of storage devices |
US9411814B2 (en) | 2014-01-06 | 2016-08-09 | Dropbox, Inc. | Predictive caching and fetch priority |
US10242222B2 (en) | 2014-01-14 | 2019-03-26 | Baker Hughes, A Ge Company, Llc | Compartment-based data security |
WO2015108520A1 (en) | 2014-01-16 | 2015-07-23 | Hewlett-Packard Development Company, L. P. | Node cluster synchronization |
US9509747B2 (en) | 2014-01-23 | 2016-11-29 | Dropbox, Inc. | Content item synchronization by block |
WO2015110171A1 (en) | 2014-01-24 | 2015-07-30 | Hitachi Data Systems Engineering UK Limited | Method, system and computer program product for replicating file system objects from a source file system to a target file system and for de-cloning snapshot-files in a file system |
SG11201606070QA (en) | 2014-01-24 | 2016-08-30 | Agency Science Tech & Res | Method of file system design and failure recovery with non-volatile memory |
US10212143B2 (en) | 2014-01-31 | 2019-02-19 | Dropbox, Inc. | Authorizing an untrusted client device for access on a content management system |
US9461949B2 (en) | 2014-01-31 | 2016-10-04 | Dropbox, Inc. | Managing links and invitations to shared content |
US20150220917A1 (en) | 2014-02-04 | 2015-08-06 | Christian Aabye | Token verification using limited use certificates |
US9509509B2 (en) | 2014-02-06 | 2016-11-29 | Dropbox, Inc. | Random identifier generation for offline database |
US9542404B2 (en) | 2014-02-17 | 2017-01-10 | Netapp, Inc. | Subpartitioning of a namespace region |
EP2911068B1 (en) | 2014-02-20 | 2017-08-30 | Deutsche Telekom AG | Tree-structure storage method for managing computation offloading data |
US20150244795A1 (en) | 2014-02-21 | 2015-08-27 | Solidfire, Inc. | Data syncing in a distributed system |
US20150248384A1 (en) | 2014-02-28 | 2015-09-03 | Ricoh Company, Ltd. | Document sharing and collaboration |
US9641488B2 (en) | 2014-02-28 | 2017-05-02 | Dropbox, Inc. | Advanced security protocol for broadcasting and synchronizing shared folders over local area network |
US9336219B2 (en) | 2014-03-03 | 2016-05-10 | Netapp, Inc. | Distributed file system snapshot |
US9838424B2 (en) | 2014-03-20 | 2017-12-05 | Microsoft Technology Licensing, Llc | Techniques to provide network security through just-in-time provisioned accounts |
US9648088B1 (en) | 2014-03-25 | 2017-05-09 | Amazon Technologies, Inc. | Digital content prefetch for travel |
US9703801B2 (en) | 2014-03-25 | 2017-07-11 | Alfresco Software, Inc. | Synchronization of client machines with a content management system repository |
RU2643429C2 (ru) | 2014-03-31 | 2018-02-01 | Общество С Ограниченной Ответственностью "Яндекс" | Способ управления синхронизацией файлов (варианты), электронное устройство (варианты) и машиночитаемый носитель |
US9772787B2 (en) | 2014-03-31 | 2017-09-26 | Amazon Technologies, Inc. | File storage using variable stripe sizes |
US9519510B2 (en) | 2014-03-31 | 2016-12-13 | Amazon Technologies, Inc. | Atomic writes for multiple-extent operations |
US9495478B2 (en) | 2014-03-31 | 2016-11-15 | Amazon Technologies, Inc. | Namespace management in distributed storage systems |
US10264071B2 (en) | 2014-03-31 | 2019-04-16 | Amazon Technologies, Inc. | Session management in distributed storage systems |
ES2881606T3 (es) | 2014-03-31 | 2021-11-30 | Wandisco Inc | Sistema de ficheros geográficamente distribuido que usa replicación de espacio de nombres coordinada |
US20150278024A1 (en) | 2014-04-01 | 2015-10-01 | Commvault Systems, Inc. | Bandwidth-conscious systems and methods for providing information management system services |
US20150288680A1 (en) | 2014-04-02 | 2015-10-08 | Cleversafe, Inc. | Distributing registry information in a dispersed storage network |
US9716753B2 (en) | 2014-04-09 | 2017-07-25 | Dropbox, Inc. | Migrating shared content items between accounts |
US10459892B2 (en) | 2014-04-23 | 2019-10-29 | Qumulo, Inc. | Filesystem hierarchical aggregate metrics |
US9922092B2 (en) | 2014-04-24 | 2018-03-20 | Canon Kabushiki Kaisha | Devices, systems, and methods for context management |
US9270395B2 (en) | 2014-05-05 | 2016-02-23 | Telefonaktiebolaget L M Ericsson (Publ) | Method for robust PTP synchronization with default 1588V2 profile |
US9614826B1 (en) | 2014-05-20 | 2017-04-04 | Symantec Corporation | Sensitive data protection |
US9621940B2 (en) | 2014-05-29 | 2017-04-11 | Time Warner Cable Enterprises Llc | Apparatus and methods for recording, accessing, and delivering packetized content |
US10530854B2 (en) | 2014-05-30 | 2020-01-07 | Box, Inc. | Synchronization of permissioned content in cloud-based environments |
US10140309B2 (en) | 2014-06-10 | 2018-11-27 | Alfresco Software, Inc. | File tracking on client machines synchronized with a content management system repository |
US9565227B1 (en) | 2014-06-16 | 2017-02-07 | Teradici Corporation | Composition control method for remote application delivery |
US10210171B2 (en) | 2014-06-18 | 2019-02-19 | Microsoft Technology Licensing, Llc | Scalable eventual consistency system using logical document journaling |
CN106662981B (zh) | 2014-06-27 | 2021-01-26 | 日本电气株式会社 | 存储设备、程序和信息处理方法 |
US9767106B1 (en) | 2014-06-30 | 2017-09-19 | EMC IP Holding Company LLC | Snapshot based file verification |
US10380076B2 (en) | 2014-07-21 | 2019-08-13 | Egnyte, Inc. | System and method for policy based synchronization of remote and local file systems |
US9430669B2 (en) | 2014-07-23 | 2016-08-30 | Dropbox, Inc. | Collection folders in a content management system |
EP2980726B1 (en) | 2014-07-29 | 2019-09-04 | Samsung Electronics Co., Ltd | Method and apparatus for sharing data |
US9271141B1 (en) * | 2014-07-29 | 2016-02-23 | Cellco Partnership | Method and apparatus for controlling home appliances over LTE |
US9720926B2 (en) | 2014-08-04 | 2017-08-01 | Cohesity, Inc. | Read operations in a tree-based distributed file system |
US9792309B2 (en) * | 2014-08-04 | 2017-10-17 | Cohesity, Inc. | Write operations in a tree-based distributed file system |
US9720947B2 (en) | 2014-08-04 | 2017-08-01 | Cohesity, Inc. | Backup operations in a tree-based distributed file system |
US9503402B2 (en) | 2014-08-18 | 2016-11-22 | Dropbox, Inc. | Managing drafts of electronic documents across client devices |
US9619268B2 (en) | 2014-08-23 | 2017-04-11 | Vmware, Inc. | Rapid suspend/resume for virtual machines via resource sharing |
WO2016033056A1 (en) | 2014-08-26 | 2016-03-03 | Ctera Networks, Ltd. | A method and computing device for allowing synchronized access to cloud |
US9892000B2 (en) | 2014-08-29 | 2018-02-13 | Dropbox, Inc. | Undo changes on a client device |
US9990372B2 (en) | 2014-09-10 | 2018-06-05 | Panzura, Inc. | Managing the level of consistency for a file in a distributed filesystem |
US10073902B2 (en) | 2014-09-24 | 2018-09-11 | Microsoft Technology Licensing, Llc | Snapshot and replication of a multi-stream application on multiple hosts at near-sync frequency |
US10671595B2 (en) * | 2014-09-29 | 2020-06-02 | Oracle International Corporation | Concurrent multiple hierarchical data structures with consistent data |
US9053124B1 (en) | 2014-09-30 | 2015-06-09 | Code 42 Software, Inc. | System for a distributed file system element collection |
US20160103750A1 (en) | 2014-10-10 | 2016-04-14 | Adp, Llc | Application programming interface monitoring tool notification and escalation method and system |
US20160112508A1 (en) | 2014-10-16 | 2016-04-21 | Centrallo LLC | System and method for creating, managing, sharing, and publishing a hierarchical list structure |
US10169341B2 (en) | 2014-10-17 | 2019-01-01 | Alfresco Software, Inc. | Integration of content and records management systems |
US9697227B2 (en) | 2014-10-27 | 2017-07-04 | Cohesity, Inc. | Concurrent access and transactions in a distributed file system |
US10268695B2 (en) | 2014-10-28 | 2019-04-23 | Hewlett Packard Enterprise Development Lp | Snapshot creation |
US10013440B1 (en) | 2014-10-31 | 2018-07-03 | Amazon Technologies, Inc. | Incremental out-of-place updates for index structures |
WO2016073030A1 (en) | 2014-11-03 | 2016-05-12 | Hewlett Packard Enterprise Development Lp | Policy and configuration data for a user directory |
US9471807B1 (en) | 2014-11-05 | 2016-10-18 | Emc Corporation | System and method for creating a security slices with storage system resources and related operations relevant in software defined/as-a-service models, on a purpose built backup appliance (PBBA)/protection storage appliance natively |
US10558375B2 (en) | 2014-11-13 | 2020-02-11 | Netapp, Inc. | Storage level access control for data grouping structures |
US9569515B2 (en) * | 2014-11-13 | 2017-02-14 | Dropbox, Inc. | Facilitating distributed deletes in a replicated storage system |
US20160140197A1 (en) | 2014-11-14 | 2016-05-19 | Tim Gast | Cross-system synchronization of hierarchical applications |
US20160140139A1 (en) | 2014-11-17 | 2016-05-19 | Microsoft Technology Licensing, Llc | Local representation of shared files in disparate locations |
WO2016100920A1 (en) | 2014-12-18 | 2016-06-23 | Bittorrent, Inc. | Distributed device management and directory resolution |
US9892037B2 (en) | 2014-12-29 | 2018-02-13 | International Business Machines Corporation | Efficient and secure direct storage device sharing in virtualized environments |
US9747164B1 (en) | 2015-01-01 | 2017-08-29 | EMC IP Holding Company LLC | Guide word paged hash table |
US20170308602A1 (en) | 2015-01-09 | 2017-10-26 | Landmark Graphics Corporation | Apparatus And Methods Of Data Synchronization |
US11132336B2 (en) | 2015-01-12 | 2021-09-28 | Qumulo, Inc. | Filesystem hierarchical capacity quantity and aggregate metrics |
EP3998526A1 (en) | 2015-01-20 | 2022-05-18 | Ultrata LLC | Distributed index for fault tolerant object memory fabric |
EP3584716B1 (en) | 2015-01-30 | 2021-12-01 | Dropbox, Inc. | Storage constrained synchronization of shared content items |
US9563638B2 (en) | 2015-01-30 | 2017-02-07 | Dropbox, Inc. | Selective downloading of shared content items in a constrained synchronization system |
US9183303B1 (en) | 2015-01-30 | 2015-11-10 | Dropbox, Inc. | Personal content item searching system and method |
US10831715B2 (en) | 2015-01-30 | 2020-11-10 | Dropbox, Inc. | Selective downloading of shared content items in a constrained synchronization system |
WO2016123431A1 (en) | 2015-01-30 | 2016-08-04 | Bittorrent, Inc. | Distributed license authentication and management |
CN104573127B (zh) | 2015-02-10 | 2019-05-14 | 北京嘀嘀无限科技发展有限公司 | 评估数据差异性的方法和系统 |
US10558677B2 (en) | 2015-03-23 | 2020-02-11 | Dropbox, Inc. | Viewing and editing content items in shared folder backed integrated workspaces |
US9922201B2 (en) * | 2015-04-01 | 2018-03-20 | Dropbox, Inc. | Nested namespaces for selective content sharing |
US10001913B2 (en) | 2015-04-01 | 2018-06-19 | Dropbox, Inc. | Shared workspaces with selective content item synchronization |
US9852147B2 (en) * | 2015-04-01 | 2017-12-26 | Dropbox, Inc. | Selective synchronization and distributed content item block caching for multi-premises hosting of digital content items |
US9866508B2 (en) | 2015-04-02 | 2018-01-09 | Dropbox, Inc. | Aggregating and presenting recent activities for synchronized online content management systems |
US9860322B2 (en) | 2015-04-08 | 2018-01-02 | Apple Inc. | Stateless technique for distributing data uploads |
US9824090B2 (en) | 2015-04-09 | 2017-11-21 | Sophos Limited | Emulating transparent file processing |
US10437789B2 (en) | 2015-04-10 | 2019-10-08 | Egnyte, Inc. | System and method for delete fencing during synchronization of remote and local file systems |
US10091296B2 (en) | 2015-04-17 | 2018-10-02 | Dropbox, Inc. | Collection folder for collecting file submissions |
US9727394B2 (en) | 2015-04-27 | 2017-08-08 | Microsoft Technology Licensing, Llc | Establishing causality order of computer trace records |
US20160323351A1 (en) | 2015-04-29 | 2016-11-03 | Box, Inc. | Low latency and low defect media file transcoding using optimized storage, retrieval, partitioning, and delivery techniques |
US10325014B2 (en) | 2015-04-30 | 2019-06-18 | Workiva Inc. | System and method for convergent document collaboration |
US10216744B2 (en) | 2015-05-01 | 2019-02-26 | Microsoft Technology Licensing, Llc | Data migration to a cloud computing system |
WO2016179436A1 (en) * | 2015-05-05 | 2016-11-10 | Colorado Code Craft Patent Holdco Llc | Ultra-low latency remote application access |
US20160337356A1 (en) | 2015-05-14 | 2016-11-17 | RightScale Inc. | Deployment templates with embedded permissions |
US10104065B2 (en) | 2015-05-26 | 2018-10-16 | Futurewei Technologies, Inc. | Token-based authentication and authorization information signaling and exchange for adaptive streaming |
US9922044B2 (en) | 2015-05-28 | 2018-03-20 | International Business Machines Corporation | File path modification based management |
US10075450B2 (en) | 2015-05-29 | 2018-09-11 | Rockwell Automation Technologies, Inc. | One time use password for temporary privilege escalation in a role-based access control (RBAC) system |
US9818899B2 (en) | 2015-05-29 | 2017-11-14 | Rainforest Connection | System and method for transmitting data using alternative energy sources |
US10318154B2 (en) | 2015-05-31 | 2019-06-11 | Apple Inc. | Dynamic group membership for devices |
US9886230B2 (en) | 2015-06-07 | 2018-02-06 | Apple Inc. | Device, method, and graphical user interface for collaborative editing in documents |
US11144510B2 (en) | 2015-06-11 | 2021-10-12 | Egnyte, Inc. | System and method for synchronizing file systems with large namespaces |
US10095764B2 (en) | 2015-06-19 | 2018-10-09 | Sap Se | Multi-replica asynchronous table replication |
US10009337B1 (en) | 2015-06-30 | 2018-06-26 | EMC IP Holding Company LLC | Child tenant revocation in a multiple tenant environment |
US10542008B2 (en) | 2015-07-24 | 2020-01-21 | Dropbox, Inc. | Proxy authorization of a network device |
US10152489B2 (en) | 2015-07-24 | 2018-12-11 | Salesforce.Com, Inc. | Synchronize collaboration entity files |
CN105138478B (zh) | 2015-07-28 | 2018-10-26 | 哈尔滨工程大学 | 一种非平衡哈希树的存储器完整性保护方法 |
US9881040B2 (en) | 2015-08-20 | 2018-01-30 | Vmware, Inc. | Tracking data of virtual disk snapshots using tree data structures |
US20170052007A1 (en) | 2015-08-21 | 2017-02-23 | Feradyne Outdoors Llc | Arrow or Crossbow Bolt Shafts Having a Profiled Inner Diameter |
US9448893B1 (en) | 2015-08-26 | 2016-09-20 | Zetta, Inc. | Asynchronous replication correctness validation |
US20170075920A1 (en) | 2015-09-10 | 2017-03-16 | Gary Howard Mckay | System and methods for detecting precise file system events from a large number and assortment of automatically-generated file system events during user operations |
US10198447B2 (en) | 2015-09-14 | 2019-02-05 | Komprise Inc. | Electronic file migration system and various methods of transparent data migration management |
US10019460B2 (en) | 2015-09-14 | 2018-07-10 | Microsoft Technology Licensing, Llc | Hosted file sync with direct access to hosted files |
US10440106B2 (en) * | 2015-09-14 | 2019-10-08 | Microsoft Technology Licensing, Llc | Hosted file sync with stateless sync nodes |
US10425477B2 (en) | 2015-09-15 | 2019-09-24 | Microsoft Technology Licensing, Llc | Synchronizing file data between computer systems |
US9978366B2 (en) | 2015-10-09 | 2018-05-22 | Xappmedia, Inc. | Event-based speech interactive media player |
US10102231B2 (en) | 2015-10-20 | 2018-10-16 | International Business Machines Corporation | Ordering heterogeneous operations in bulk processing of tree-based data structures |
CN106657170B (zh) | 2015-10-28 | 2021-03-30 | 斑马智行网络(香港)有限公司 | 一种数据同步方法及装置 |
US9571573B1 (en) | 2015-10-29 | 2017-02-14 | Dropbox, Inc. | Peer-to-peer synchronization protocol for multi-premises hosting of digital content items |
US10691718B2 (en) | 2015-10-29 | 2020-06-23 | Dropbox, Inc. | Synchronization protocol for multi-premises hosting of digital content items |
US11003621B2 (en) | 2015-11-11 | 2021-05-11 | International Business Machines Corporation | Scalable enterprise content management |
US10397319B2 (en) | 2015-11-24 | 2019-08-27 | Dropbox, Inc. | Server-side selective synchronization |
US20170168670A1 (en) | 2015-12-15 | 2017-06-15 | Samsung Electronics Co., Ltd. | Method and system for creating content shortcut |
US9401959B1 (en) | 2015-12-18 | 2016-07-26 | Dropbox, Inc. | Network folder resynchronization |
US20170177613A1 (en) | 2015-12-22 | 2017-06-22 | Egnyte, Inc. | Event-Based User State Synchronization in a Cloud Storage System |
US9971822B1 (en) | 2015-12-29 | 2018-05-15 | Amazon Technologies, Inc. | Replicated state management using journal-based registers |
US10248933B2 (en) | 2015-12-29 | 2019-04-02 | Dropbox, Inc. | Content item activity feed for presenting events associated with content items |
US10289693B2 (en) | 2015-12-30 | 2019-05-14 | Dropbox, Inc. | Techniques for providing user interface enhancements for online content management system version histories |
US11468053B2 (en) | 2015-12-30 | 2022-10-11 | Dropbox, Inc. | Servicing queries of a hybrid event index |
US10075557B2 (en) | 2015-12-30 | 2018-09-11 | Amazon Technologies, Inc. | Service authorization handshake |
US10620811B2 (en) | 2015-12-30 | 2020-04-14 | Dropbox, Inc. | Native application collaboration |
US9479578B1 (en) | 2015-12-31 | 2016-10-25 | Dropbox, Inc. | Randomized peer-to-peer synchronization of shared content items |
US10380551B2 (en) | 2015-12-31 | 2019-08-13 | Dropbox, Inc. | Mixed collaboration teams |
US9413708B1 (en) | 2015-12-31 | 2016-08-09 | Dropbox, Inc. | User notifications for interaction information |
US9870367B2 (en) | 2016-01-04 | 2018-01-16 | Acronis International Gmbh | System and method of using data blocks to optimize file storage |
CN105740418B (zh) | 2016-01-29 | 2019-09-24 | 杭州亿方云网络科技有限公司 | 一种基于文件监控和消息推送的实时同步系统 |
US10943036B2 (en) | 2016-03-08 | 2021-03-09 | Az, Llc | Virtualization, visualization and autonomous design and development of objects |
US10936548B2 (en) | 2016-03-15 | 2021-03-02 | Microsoft Technology Licensing, Llc | File synchronization pausing for individual files |
US10382502B2 (en) | 2016-04-04 | 2019-08-13 | Dropbox, Inc. | Change comments for synchronized content items |
US10586023B2 (en) | 2016-04-21 | 2020-03-10 | Time Warner Cable Enterprises Llc | Methods and apparatus for secondary content management and fraud prevention |
JP6570761B2 (ja) | 2016-04-25 | 2019-09-04 | ドロップボックス, インコーポレイテッド | ストレージ制約付きの同期エンジン |
US10585874B2 (en) | 2016-04-25 | 2020-03-10 | International Business Machines Corporation | Locking concurrent commands in a database management system |
US10049145B2 (en) | 2016-04-25 | 2018-08-14 | Dropbox, Inc. | Storage constrained synchronization engine |
US9934303B2 (en) | 2016-04-25 | 2018-04-03 | Dropbox, Inc. | Storage constrained synchronization engine |
US20170316222A1 (en) | 2016-04-29 | 2017-11-02 | Netapp, Inc. | Method and System for Temporarily Implementing Storage Access Policies on Behalf of External Client Agents |
US10404798B2 (en) | 2016-05-16 | 2019-09-03 | Carbonite, Inc. | Systems and methods for third-party policy-based file distribution in an aggregation of cloud storage services |
US10769116B2 (en) | 2016-06-10 | 2020-09-08 | Apple Inc. | System and method for performing operations on a hierarchy of content |
US10152255B2 (en) | 2016-06-29 | 2018-12-11 | AVAST Software s.r.o. | Accelerated loading of guest virtual machine from live snapshot |
US11314546B2 (en) | 2016-11-18 | 2022-04-26 | Data Accelerator Ltd | Method and system for executing a containerized stateful application on a stateless computing platform using machine learning |
JP2018010545A (ja) | 2016-07-15 | 2018-01-18 | 富士通株式会社 | ストレージ装置、制御装置、及び制御プログラム |
AU2017100968A4 (en) * | 2016-07-18 | 2017-09-07 | Brontech Pty Ltd | System for issuance, verification and use of digital identities on a public or private ledger. |
CN106156359B (zh) | 2016-07-28 | 2019-05-21 | 广东奥飞数据科技股份有限公司 | 一种云计算平台下的数据同步更新方法 |
US12079171B2 (en) | 2016-08-02 | 2024-09-03 | Microsoft Technology Licensing, Llc | Symbolic link based placeholders |
US10200376B2 (en) | 2016-08-24 | 2019-02-05 | Intel Corporation | Computer product, method, and system to dynamically provide discovery services for host nodes of target systems and storage resources in a network |
US11368528B2 (en) | 2016-09-20 | 2022-06-21 | Microsoft Technology Licensing, Llc | Dynamic storage management in cloud storage synchronization |
US9830345B1 (en) | 2016-09-26 | 2017-11-28 | Semmle Limited | Content-addressable data storage |
US10235378B1 (en) | 2016-09-30 | 2019-03-19 | EMC IP Holding Company LLC | Namespace performance acceleration by selective SSD caching |
US10318437B2 (en) | 2016-10-31 | 2019-06-11 | Vinod Sitaram Mukkamala | System and method for unified secure remote configuration and management of multiple applications on embedded device platform |
US11126740B2 (en) * | 2016-11-04 | 2021-09-21 | Microsoft Technology Licensing, Llc | Storage isolation for containers |
US11003632B2 (en) | 2016-11-28 | 2021-05-11 | Open Text Sa Ulc | System and method for content synchronization |
US11316744B2 (en) | 2016-12-21 | 2022-04-26 | Juniper Networks, Inc. | Organizing execution of distributed operating systems for network devices |
US10887173B2 (en) | 2016-12-21 | 2021-01-05 | Juniper Networks, Inc. | Communicating state information in distributed operating systems |
US11316775B2 (en) | 2016-12-21 | 2022-04-26 | Juniper Networks, Inc. | Maintaining coherency in distributed operating systems for network devices |
US11960525B2 (en) | 2016-12-28 | 2024-04-16 | Dropbox, Inc | Automatically formatting content items for presentation |
CN106897352B (zh) | 2016-12-29 | 2020-09-15 | 北京瑞卓喜投科技发展有限公司 | 在拓展中进行修改的区块链的生成方法及系统 |
US11526533B2 (en) | 2016-12-30 | 2022-12-13 | Dropbox, Inc. | Version history management |
US10942708B2 (en) | 2017-01-10 | 2021-03-09 | International Business Machines Corporation | Generating web API specification from online documentation |
US10452683B2 (en) | 2017-02-24 | 2019-10-22 | Adobe Inc. | Selectively synchronizing data on computing devices based on selective sync templates |
US10503427B2 (en) | 2017-03-10 | 2019-12-10 | Pure Storage, Inc. | Synchronously replicating datasets and other managed objects to cloud-based storage systems |
US10129593B2 (en) | 2017-03-14 | 2018-11-13 | Charter Communications Operating, Llc | Time-based dynamic secondary content placement calls in time-shifted content |
US10671639B1 (en) | 2017-03-30 | 2020-06-02 | Amazon Technologies, Inc. | Selectively replicating changes to hierarchial data structures |
US11494765B2 (en) * | 2017-05-11 | 2022-11-08 | Visa International Service Association | Secure remote transaction system using mobile devices |
US11113307B2 (en) | 2017-05-15 | 2021-09-07 | Oracle International Corporation | Entity identifier synchronization across data centers |
CN106941504B (zh) | 2017-05-16 | 2020-05-29 | 郑州云海信息技术有限公司 | 一种云管理权限控制方法及系统 |
CN107247749B (zh) | 2017-05-25 | 2020-08-25 | 创新先进技术有限公司 | 一种数据库状态确定方法、一致性验证方法及装置 |
US11301431B2 (en) | 2017-06-02 | 2022-04-12 | Open Text Sa Ulc | System and method for selective synchronization |
US20190005139A1 (en) | 2017-06-05 | 2019-01-03 | Ford Media, Inc. | Content aggregation, presentation and related system |
US10740039B2 (en) | 2017-06-20 | 2020-08-11 | Vmware, Inc. | Supporting file system clones in any ordered key-value store |
US11263252B2 (en) | 2017-06-20 | 2022-03-01 | Vmware, Inc. | Supporting file system clones in any ordered key-value store using inode back pointers |
US11586593B2 (en) * | 2017-06-22 | 2023-02-21 | Salesforce.Com, Inc. | Mechanism for synchronization of hierarchical data between a mobile device and multi tenant database |
US10747778B2 (en) | 2017-07-31 | 2020-08-18 | Cohesity, Inc. | Replication of data using chunk identifiers |
US20190050833A1 (en) | 2017-08-08 | 2019-02-14 | Mastercard International Incorporated | Systems and Methods for Distributing Data to Node Devices for Real Time Scoring, Based on Accounts for the Data |
JP6969237B2 (ja) * | 2017-09-06 | 2021-11-24 | セイコーエプソン株式会社 | プログラム、端末装置及び通信システム |
US10331623B2 (en) | 2017-10-16 | 2019-06-25 | Dropbox, Inc. | Workflow functions of content management system enforced by client device |
US10706152B2 (en) | 2017-10-16 | 2020-07-07 | Dell Products L.P. | Systems and methods for concealed object store in a virtualized information handling system |
US10635546B2 (en) * | 2017-12-07 | 2020-04-28 | Commvault Systems, Inc. | Synthesizing a restore image from one or more secondary copies to facilitate data restore operations to a file server |
US10866963B2 (en) | 2017-12-28 | 2020-12-15 | Dropbox, Inc. | File system authentication |
US11288138B1 (en) | 2018-03-15 | 2022-03-29 | Pure Storage, Inc. | Recovery from a system fault in a cloud-based storage system |
US11112948B2 (en) | 2018-04-27 | 2021-09-07 | Dropbox, Inc. | Dynamic preview in a file browser interface |
US11249950B2 (en) | 2018-04-27 | 2022-02-15 | Dropbox, Inc. | Aggregated details displayed within file browser interface |
US10970193B2 (en) | 2018-05-23 | 2021-04-06 | Dropbox, Inc. | Debugging a client synchronization service |
US11200004B2 (en) | 2019-02-01 | 2021-12-14 | EMC IP Holding Company LLC | Compression of data for a file system |
US11422751B2 (en) | 2019-07-18 | 2022-08-23 | Pure Storage, Inc. | Creating a virtual storage system |
-
2017
- 2017-12-28 US US15/857,588 patent/US10866963B2/en active Active
- 2017-12-29 US US15/857,715 patent/US10789268B2/en active Active
- 2017-12-29 US US15/858,146 patent/US10877993B2/en active Active
- 2017-12-29 US US15/857,784 patent/US10929426B2/en active Active
- 2017-12-29 US US15/858,207 patent/US11048720B2/en active Active
- 2017-12-29 US US15/857,712 patent/US10037339B1/en active Active
- 2017-12-29 US US15/857,789 patent/US11880384B2/en active Active
- 2017-12-29 US US15/857,779 patent/US11386116B2/en active Active
- 2017-12-29 US US15/857,713 patent/US11188559B2/en active Active
- 2017-12-29 US US15/858,430 patent/US11429634B2/en active Active
- 2017-12-29 US US15/857,725 patent/US11593394B2/en active Active
- 2017-12-29 US US15/857,772 patent/US11176164B2/en active Active
- 2017-12-29 US US15/858,110 patent/US10922333B2/en active Active
- 2017-12-29 US US15/857,732 patent/US11308118B2/en active Active
- 2017-12-29 US US15/857,766 patent/US10691719B2/en active Active
- 2017-12-29 US US15/857,708 patent/US10095879B1/en active Active
- 2017-12-29 US US15/858,125 patent/US10866964B2/en active Active
- 2017-12-29 US US15/858,357 patent/US10872098B2/en active Active
- 2017-12-29 US US15/858,192 patent/US11016991B2/en active Active
- 2017-12-29 US US15/857,729 patent/US11204938B2/en active Active
- 2017-12-29 US US15/858,410 patent/US10762104B2/en active Active
-
2018
- 2018-01-05 US US15/863,748 patent/US11120039B2/en active Active
- 2018-01-05 US US15/863,815 patent/US10929427B2/en active Active
- 2018-01-05 US US15/863,751 patent/US11010402B2/en active Active
- 2018-01-05 US US15/863,819 patent/US10691720B2/en active Active
- 2018-01-10 US US15/867,496 patent/US10733205B2/en active Active
- 2018-01-10 US US15/867,486 patent/US11836151B2/en active Active
- 2018-01-10 US US15/867,612 patent/US11003685B2/en active Active
- 2018-01-10 US US15/867,571 patent/US10936622B2/en active Active
- 2018-01-10 US US15/867,505 patent/US11080297B2/en active Active
- 2018-01-11 US US15/868,511 patent/US10949445B2/en active Active
- 2018-01-11 US US15/868,518 patent/US10324903B1/en active Active
- 2018-01-11 US US15/868,489 patent/US10599673B2/en active Active
- 2018-01-11 US US15/868,505 patent/US10776386B2/en active Active
- 2018-01-12 US US15/870,221 patent/US10671638B2/en active Active
- 2018-01-12 US US15/870,179 patent/US10789269B2/en active Active
- 2018-01-17 US US15/873,693 patent/US10726044B2/en active Active
- 2018-07-03 US US16/026,531 patent/US10997200B2/en active Active
- 2018-08-31 US US16/118,514 patent/US10691721B2/en active Active
- 2018-12-10 AU AU2018395856A patent/AU2018395856B2/en active Active
- 2018-12-10 CA CA3084056A patent/CA3084056A1/en active Pending
- 2018-12-10 CN CN201880078587.4A patent/CN111512301B/zh active Active
- 2018-12-10 JP JP2020529761A patent/JP7075998B2/ja active Active
- 2018-12-10 CN CN201880079908.2A patent/CN111465930B/zh active Active
- 2018-12-10 EP EP18839958.8A patent/EP3714375B1/en active Active
- 2018-12-10 KR KR1020207016022A patent/KR102444729B1/ko active IP Right Grant
- 2018-12-10 WO PCT/US2018/064670 patent/WO2019133229A1/en unknown
- 2018-12-10 AU AU2018395857A patent/AU2018395857B2/en active Active
- 2018-12-10 AU AU2018395858A patent/AU2018395858B2/en active Active
- 2018-12-10 JP JP2020536083A patent/JP7393334B2/ja active Active
- 2018-12-10 JP JP2020531974A patent/JP7158482B2/ja active Active
- 2018-12-10 EP EP18830580.9A patent/EP3707615B1/en active Active
- 2018-12-10 CN CN201880083719.2A patent/CN111527487B/zh active Active
- 2018-12-10 WO PCT/US2018/064659 patent/WO2019133228A1/en unknown
- 2018-12-10 KR KR1020207016617A patent/KR102432304B1/ko active IP Right Grant
- 2018-12-10 CA CA3084312A patent/CA3084312C/en active Active
- 2018-12-10 WO PCT/US2018/064675 patent/WO2019133230A1/en unknown
- 2018-12-10 KR KR1020207018242A patent/KR102450281B1/ko active IP Right Grant
- 2018-12-10 CA CA3085998A patent/CA3085998C/en active Active
- 2018-12-10 EP EP18829647.9A patent/EP3714373B1/en active Active
- 2018-12-12 CN CN201880073349.4A patent/CN111448558B/zh active Active
- 2018-12-12 WO PCT/US2018/065097 patent/WO2019133250A1/en unknown
- 2018-12-12 AU AU2018397571A patent/AU2018397571B2/en active Active
- 2018-12-12 CA CA3086004A patent/CA3086004C/en active Active
- 2018-12-12 KR KR1020207013685A patent/KR102432302B1/ko active IP Right Grant
- 2018-12-12 CN CN201880083720.5A patent/CN111566633B/zh active Active
- 2018-12-12 JP JP2020535976A patent/JP7053847B2/ja active Active
- 2018-12-12 JP JP2020535589A patent/JP6955108B2/ja active Active
- 2018-12-12 EP EP18836962.3A patent/EP3714374B1/en active Active
- 2018-12-12 KR KR1020207018240A patent/KR102457063B1/ko active IP Right Grant
- 2018-12-12 EP EP18839962.0A patent/EP3704599B1/en active Active
- 2018-12-12 JP JP2020526431A patent/JP7065958B2/ja active Active
- 2018-12-12 KR KR1020207018403A patent/KR102444033B1/ko active IP Right Grant
- 2018-12-12 AU AU2018397572A patent/AU2018397572B2/en active Active
- 2018-12-12 WO PCT/US2018/065091 patent/WO2019133249A1/en unknown
- 2018-12-12 WO PCT/US2018/065100 patent/WO2019133252A1/en unknown
- 2018-12-12 CA CA3081372A patent/CA3081372C/en active Active
- 2018-12-12 CA CA3087087A patent/CA3087087C/en active Active
- 2018-12-12 CN CN201880083815.7A patent/CN111512302B/zh active Active
- 2018-12-12 AU AU2018393933A patent/AU2018393933B2/en active Active
- 2018-12-13 CN CN201880077284.0A patent/CN111417938B/zh active Active
- 2018-12-13 CN CN201880075620.8A patent/CN111373388B/zh active Active
- 2018-12-13 EP EP18833555.8A patent/EP3701390A1/en active Pending
- 2018-12-13 EP EP18837007.6A patent/EP3704598B1/en active Active
- 2018-12-13 WO PCT/US2018/065347 patent/WO2019133269A1/en unknown
- 2018-12-13 CA CA3083530A patent/CA3083530C/en active Active
- 2018-12-13 JP JP2020529752A patent/JP7044879B2/ja active Active
- 2018-12-13 WO PCT/US2018/065352 patent/WO2019133270A1/en unknown
- 2018-12-13 KR KR1020207015491A patent/KR102459800B1/ko active IP Right Grant
- 2018-12-13 KR KR1020207014986A patent/KR102434243B1/ko active IP Right Grant
- 2018-12-13 AU AU2018395920A patent/AU2018395920B2/en active Active
- 2018-12-13 CA CA3082925A patent/CA3082925A1/en active Pending
- 2018-12-13 AU AU2018395919A patent/AU2018395919B2/en active Active
- 2018-12-13 JP JP2020529314A patent/JP7068454B2/ja active Active
- 2018-12-17 CN CN201880068962.7A patent/CN111263937B/zh active Active
- 2018-12-17 KR KR1020207018226A patent/KR102417689B1/ko active IP Right Grant
- 2018-12-17 CA CA3078982A patent/CA3078982C/en active Active
- 2018-12-17 WO PCT/US2018/065940 patent/WO2019133321A1/en unknown
- 2018-12-17 AU AU2018395933A patent/AU2018395933C1/en active Active
- 2018-12-17 JP JP2020521435A patent/JP7212040B2/ja active Active
- 2018-12-17 EP EP18834121.8A patent/EP3710953A1/en active Pending
- 2018-12-18 EP EP18836317.0A patent/EP3707613B1/en active Active
- 2018-12-18 AU AU2018397604A patent/AU2018397604B2/en active Active
- 2018-12-18 CN CN201880078715.5A patent/CN111448559B/zh active Active
- 2018-12-18 CA CA3084060A patent/CA3084060C/en active Active
- 2018-12-18 JP JP2020531088A patent/JP7050931B2/ja active Active
- 2018-12-18 WO PCT/US2018/066193 patent/WO2019133334A1/en unknown
- 2018-12-18 KR KR1020207016208A patent/KR102444036B1/ko active IP Right Grant
-
2020
- 2020-03-27 US US16/833,348 patent/US11500897B2/en active Active
- 2020-05-29 US US16/887,714 patent/US11461365B2/en active Active
- 2020-06-10 US US16/897,884 patent/US11314774B2/en active Active
- 2020-06-22 US US16/908,186 patent/US11475041B2/en active Active
- 2020-07-22 US US16/935,995 patent/US11782949B2/en active Active
- 2020-08-12 US US16/991,798 patent/US11514078B2/en active Active
- 2020-08-12 US US16/991,822 patent/US11669544B2/en active Active
- 2020-10-21 US US17/076,538 patent/US20210034642A1/en active Pending
- 2020-10-22 US US17/077,719 patent/US11423048B2/en active Active
- 2020-12-29 US US17/136,849 patent/US11500899B2/en active Active
-
2021
- 2021-01-27 US US17/159,941 patent/US11630841B2/en active Active
- 2021-02-19 US US17/179,946 patent/US12061623B2/en active Active
- 2021-03-01 US US17/187,942 patent/US20210182311A1/en active Pending
- 2021-03-17 US US17/204,208 patent/US11704336B2/en active Active
- 2021-04-14 US US17/230,249 patent/US11657067B2/en active Active
- 2021-04-22 US US17/237,267 patent/US11755616B2/en active Active
- 2021-06-07 AU AU2021203706A patent/AU2021203706B2/en active Active
- 2021-11-02 AU AU2021261855A patent/AU2021261855B2/en active Active
- 2021-11-10 US US17/523,409 patent/US20220067066A1/en active Pending
-
2022
- 2022-05-19 US US17/748,299 patent/US20220284036A1/en active Pending
- 2022-06-27 JP JP2022102834A patent/JP2022141669A/ja active Pending
- 2022-07-25 JP JP2022118107A patent/JP2022166013A/ja active Pending
- 2022-11-23 US US17/993,500 patent/US20230101958A1/en active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060253501A1 (en) * | 2005-05-09 | 2006-11-09 | Microsoft Corporation | Fast and reliable synchronization of file system directories |
US20130282785A1 (en) | 2012-04-23 | 2013-10-24 | Google, Inc. | Sharing and synchronizing electronically stored files |
US20140195485A1 (en) | 2013-01-09 | 2014-07-10 | Box, Inc. | File system monitoring in a system which incrementally updates clients with events that occurred in a cloud-based collaboration platform |
US20170220596A1 (en) * | 2013-06-13 | 2017-08-03 | Box, Inc. | Systems and methods for synchronization event building and/or collapsing by a synchronization component of a cloud-based platform |
US20150248383A1 (en) | 2014-03-03 | 2015-09-03 | International Business Machines Corporation | Optimized read/write access to a document object model |
US20160085769A1 (en) | 2014-09-23 | 2016-03-24 | Amazon Technologies, Inc. | Synchronization of Shared Folders and Files |
Also Published As
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102432302B1 (ko) | 점진적 클라이언트 동기화 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |