KR101219823B1 - 스냅샷 없이 아이템을 동기화하는 시스템 및 방법 - Google Patents

스냅샷 없이 아이템을 동기화하는 시스템 및 방법 Download PDF

Info

Publication number
KR101219823B1
KR101219823B1 KR1020050102919A KR20050102919A KR101219823B1 KR 101219823 B1 KR101219823 B1 KR 101219823B1 KR 1020050102919 A KR1020050102919 A KR 1020050102919A KR 20050102919 A KR20050102919 A KR 20050102919A KR 101219823 B1 KR101219823 B1 KR 101219823B1
Authority
KR
South Korea
Prior art keywords
filestream
unstructured
data element
structural data
peer
Prior art date
Application number
KR1020050102919A
Other languages
English (en)
Other versions
KR20060070410A (ko
Inventor
이레나 후디스
레브 노비크
라제시 엠. 라오
사밋 에이치. 아가왈
비베크 자와히르 즈하베리
Original Assignee
마이크로소프트 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 마이크로소프트 코포레이션 filed Critical 마이크로소프트 코포레이션
Publication of KR20060070410A publication Critical patent/KR20060070410A/ko
Application granted granted Critical
Publication of KR101219823B1 publication Critical patent/KR101219823B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • G06F16/275Synchronous replication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/25Integrating or interfacing systems involving database management systems
    • G06F16/256Integrating or interfacing systems involving database management systems in federated or virtual databases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99941Database schema or data structure
    • Y10S707/99943Generating database or data structure, e.g. via user interface

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Computing Systems (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

본 발명의 다양한 실시예들은 동기화 동안에 대규모 비구조적 ME 파일스트림의 스냅샷을 허용하지 않는 하드웨어/소프트웨어 인터페이스 시스템 환경에서 구조적 데이터 및 비구조적 파일스트림을 포함하는 혼합 요소들(MEs)을 피어 컴퓨터 시스템들 간에 동기화하는 시스템 및 방법에 관한 것이다. 이러한 여러 실시예들에 있어서, 이 방법은 두 단계로 ME를 동기화하는 것을 포함하는데, 한 단계는 ME의 구조적 데이터 요소(및 파일스트림 그 자신이 아닌 파일스트림의 cv)를 스냅샷하는 단계이고, 나머지 단계는 잠금 후에 파일스트림이 ME 데이터 요소 스냅샷시에 변하지 않은 것으로 판정되는 경우에만 파일스트림을 잠그고 수신 동기화 피어에 전송하는 단계이다.
구조적 데이터, 비구조적 파일스트림, 혼합 요소, 스냅샷, 동기화 피어

Description

스냅샷 없이 아이템을 동기화하는 시스템 및 방법{SYSTEMS AND METHODS FOR SYNCHRONIZATION OF ITEMS WITHOUT SNAPSHOTS}
도 1은 본 발명의 특징들이 결합될 수 있는 컴퓨터 시스템을 도시하는 블록도.
도 2a는 여러 특성을 갖는 구조적 요소(SE)를 도시하는 블록도.
도 2b는 구조적 데이터 요소와 비구조적 파일스트림 모두를 포함하는 혼합 요소(ME)를 도시하는 블록도.
도 3은 SE(및 본 명세서에서 후술하는 바와 같이, ME의 구조적 부분)를 동기화하기 위해 본 발명의 여러 실시예들과 결합하여 이용되는 방법을 도시하는 프로세스 순서도.
도 4는 본 발명의 여러 실시예들에 이용되는 방법론을 나타내는 ME 동기화 방법의 단계들을 도시하는 프로세스 순서도.
<도면의 주요 부분에 대한 부호의 설명>
20 : 컴퓨터 21 : 프로세싱 유닛
22 : 시스템 메모리 24 : ROM
25 : RAM 26 : BIOS
27 : 하드 디스크 드라이브 28 : 자기 디스크 드라이브
[특허문헌 1] 미국 특허 출원 제 10/403,781호(2003. 3. 31 출원)
[특허문헌 2] 미국 특허 출원 제 10/932,474호(2004. 9. 01 출원)
[특허문헌 3] 미국 가출원 제 60/558,338호(2004. 4. 01 출원)
[특허문헌 4] 미국 특허 출원 제 10/646,575호(2003. 8. 21 출원)
[특허문헌 5] 미국 특허 출원 제 10/646,646호(2003. 8. 21 출원)
[특허문헌 6] 미국 특허 출원 제 10/692,515호(2003. 10. 24 출원)
[특허문헌 7] 미국 특허 출원 제 10/692,508호(2003. 10. 24 출원)
[특허문헌 8] 미국 특허 출원 제 10/693,362호(2003. 10. 24 출원)
[특허문헌 9] 미국 특허 출원 제 10/883,621호(2004. 6. 30 출원)
본 출원은 그 내용들이 전체적으로 본 출원의 명세서에 참조 인용되는 다음의 공동 양도된 출원들, 즉 "GHOSTED SYNCHRONIZATION"란 명칭으로 2003년 3월 31일에 출원된 미국 특허 출원 제 10/403,781호와, "SYNCHRONIZATION WITH DERIVED METADATA"란 명칭으로 본 출원과 같은 날에 출원된 미국 특허 출원 제__(308672.01)호와, "SYSTEMS AND METHODS FOR THE PROPOGATION OF CONFLICT RESOLUTION TO ENFORCE ITEM CONVERGENCE(I.E., DATA CONVERGENCE)"란 명칭으로 2004년 4월 1일 출원된 미국 가출원 제 60/558,338호의 우선권을 차례로 주장하는 "SYSTEMS AND METHODS FOR THE PROPOGATION OF CONFLICT RESOLUTION TO ENFORCE ITEM CONVERGENCE(I.E., DATA CONVERGENCE)란 명칭으로 2004년 9월 1일 출원된 미국 특허 출원 제 10/932,474호와, "SYSTEMS AND METHODS FOR INTERFACING APPLICATION PROGRAMS WITH AN ITEM-BASED STORAGE PLATFORM"이란 명칭으로 2003년 8월 21일 출원된 미국 특허 출원 제 10/646,575호와, "STORAGE PLATFORM FOR ORGANIZING, SEARCHING, AND SHARING DATA"란 명칭으로 2003년 8월 21일 출원된 미국 특허 출원 제 10/646,646호와, "SYSTEMS AND METHODS FOR PROVIDING SYNCHRONIZATION SERVICES FOR UNITS OF INFORMATION MANAGEABLE BY A HARDWARE/SOFTWARE INTERFACE SYSTEM"이란 명칭으로 2003년 10월 24일 출원된 미국 특허 출원 제 10/692,515호와, "SYSTEMS AND METHODS FOR PROVIDING RELATIONAL AND HIERARCHICAL SYNCHRONIZATION SERVICES FOR UNITS OF INFORMATION MANAGEABLE BY A HARDWARE/SOFTWARE INTERFACE SYSTEM"이란 명칭으로 2003년 10월 24일 출원된 미국 특허 출원 제 10/692,508호와, "SYSTEMS AND METHODS FOR THE IMPLEMENTATION OF A SYNCHRONIZATION SCHEMAS FOR UNITS OF INFORMATION MANAGEABLE BY A HARDWARE/SOFTWARE INTERFACE SYSTEM"이란 명칭으로 2003년 10월 24일 출원된 미국 특허 출원 제 10/693,362호 및 "SYSTEMS AND METHODS FOR PROVIDING CONFLICT HANDLING FOR PEER-TO-PEER SYNCHRONIZATION OF UNITS OF INFORMATION MANAGEABLE BY A HARDWARE/SOFTWARE INTERFACE SYSTEM"이란 명칭으로 2004년 6월 30일 출원된 미국 특허 출원 제 10/883,621호, 및 본 명세서에 인용 및/또는 교차 참조되는 미국 특허 출원들(모두 본 명세서에서 "기초 특허 출원들"로서 선택적으로 인용된다) 에 개시되어 있는 발명들에 주제가 관련되어 있다.
본 발명은 전반적으로 컴퓨터 시스템들 간의 데이터 동기화에 관한 것으로, 보다 구체적으로는, 동기화 동안에 대규모 비구조적 ME 파일스트림의 스냅샷을 허용하지 않는 하드웨어/소프트웨어 인터페이스 시스템 환경에서 구조적 데이터 및 비구조적 파일스트림을 포함하는 혼합 요소들(Mixed Elements : MEs)을 피어 컴퓨터 시스템들 간에 동기화하는 것에 관한 것이다.
피어 투 피어 동기화 환경 및 그 기초 하드웨어/소프트웨어 인터페이스 시스템은 앞서 인용된 기초 특허 출원들에 상세히 개시되어 있다. 요약하면, 기초 특허 출원들은 하드웨어/소프트웨어 인터페이스 시스템(운영 시스템과 같은, 다만 이에 국한되지는 않는다), 그 중 특히 저장가능한 정보의 자율 유닛들(아이템들)이 동기화에 관한 기본 데이터 변경 요소를 구성하는 여러 요소 변경 유닛들(Change Units : CUs)을 포함하는 하드웨어/소프트웨어 인터페이스 시스템을 개시하고 있다. 각각의 CU는 다른 피어 컴퓨터 시스템으로부터 수신된 어떠한 변경이 적용되어야 하는지 뿐만 아니라 어떠한 변경이 피어 컴퓨터 시스템들에서 갱신될 필요가 있는지를 동기화 시스템이 추적하게 하는 연관 메타데이터를 갖는다.
기초 특허 출원들에 개시되어 있는 하드웨어/소프트웨어 인터페이스 시스템을 포함하는 어느 하드웨어/소프트웨어 인터페이스 시스템들에 있어서, 저장가능한 정보의 몇몇 자율 유닛들(예컨대, 아이템)은 두 종류, 즉 구조적 또는 혼합일 수 있다. 구조적 요소(SE)는 다구조적 데이터만을 포함하는 반면에, 혼합 요소(ME)는 다구조적 데이터와 비구조적 파일스트림 모두를 포함한다. 동기화에 있어서, SE는 일정한 크기 제약을 충족시키고, 필요에 따라 복사물을 생성하기에 충분할 정도로 작기 때문에 쉽게 동기화된다. 하지만, ME는 일반적으로 아이템들에 있어 정규 한계를 초과하는 데이터 구조에 이용되는데, 그 크기로 인해 쉽게 복사될 수 없다.
기초 특허 출원들에 개시되어 있는 하드웨어/소프트웨어 인터페이스 시스템을 포함하는 어느 하드웨어/소프트웨어 인터페이스 시스템들에 있어서, 아이템의 동기화는 일반적으로 목적 아이템이 동기화 동안에 복사되게 하는 TIL(Transaction Isolation Level)에서 수행된다. 구체적으로, 목적 아이템은 동기화 피어에 복사될 동안에 다른 프로세스에 의해 기록될 수 없도록 "스냅샷"된다, 대신에 목적 아이템의 복사는 다른 프로세스에 의해 행해지고 수정되며, 그 후 이 복사물은 목적 아이템의 동기화가 완료되는 경우에 원래의 것에 덧쓰여진다. 이러한 필요에 따른 복사는 본질적으로 목적 아이템이 동기화 피어에 복사되는 동안에 동기화 시스템으로 하여금 목적 아이템이 변경되는 것을 방지하고(따라서 동기화 프로세스 동작 동안에 변경되지 않는 완전한 "스냅샷"을 제공하며), 다른 프로세스로 하여금 목적 아이템의 동기화가 완료되는 경우에 이 목적 아이템을 결국 대체하는 목적 아이템의 복사물로 변경되게 한다. 이러한 특유 TIL은 스냅샷 TIL(STIL)로 지칭될 수 있다.
하지만, SE는 스냅샷 TIL을 이용하여 동기될 수 있지만, 대규모 데이터 객체의 임시 복사물조차도 생성하길 원치 않고 또한 파일스트림 자체의 크기로 인해 ME의 파일스트림에 대해 스냅샷이 이루어지지 않는 경우는 흔하다. 따라서, 본 기술분야에서 필요한 것은 ME들을 동기화하는 시스템 및 방법이며, 구체적으로는 동기 화 동안에 대규모 비구조적 ME 파일스트림의 스냅샷을 허용하지 않는 하드웨어/소프트웨어 인터페이스 시스템 환경에서 피어 컴퓨터 시스템들 간에 ME들의 파일스트림 요소를 동기화하는 시스템 및 방법이다.
본 발명의 다양한 실시예들은 동기화 동안에 대규모 비구조적 ME 파일스트림의 스냅샷을 허용하지 않는 하드웨어/소프트웨어 인터페이스 시스템 환경에서 피어 컴퓨터 시스템들 간에 ME들을 동기화(및, 구체적으로는 ME들의 파일스트림 요소를 동기화)하는 시스템 및 방법에 관한 것이다. 이러한 여러 실시예들에 있어서, 이 방법은 두 단계로 ME를 동기화하는 것을 포함하는데, 한 단계는 ME의 구조적 데이터 요소(및 파일스트림 자체가 아닌 파일스트림의 cv)를 스냅샷하는 단계이고, 나머지 단계는 잠금 후에 파일스트림이 ME 데이터 요소 스냅샷시에 변하지 않은 것으로 판정되는 경우에만 파일스트림을 잠그고 수신 동기화 피어에 전송하는 단계이다.
동기화 동안에, ME의 구조적 데이터 요소는 스냅샷 TLI를 이용하여 동기되고, 이 스냅샷이 행해졌을 때의 대응 파일스트림 현재 버전(cvF)이 제 1 값(cvF0)으로 저장된다(ME의 파일스트림은 그 자신의 변경 유닛을 포함하고 따라서 자신의 변경 버전을 갖는다). 그 후, 파일스트림이 동기화 동안에 복사될 준비가 되었을 때(필요하다면 동기화 요건에 따라), 파일스트림 그 자신은 (다른 프로세스가 파일스트림을 변경하는 것을 방지하기 위해) 잠기고, 복사되기 전에, cvF는 제 1 값(cvF0)과 비교하기 위해 제 2 값(cvF1)을 결정하도록 반복 검사된다. 이 값이 동 일(파일스트림이 변하지 않음을 나타내는)하면, 파일스트림은 동기화 피어에 복사된다. 한편, cvF1이 cvF0과 동일하지 않다면, 이것은 ME의 구조적 데이터가 스냅샷 되었기 때문에 파일스트림이 갱신되었다는 것을 나타내는데, 이 경우에 파일스트림은 복사되지 않고, 파일스트림에 관한 변경 유닛은 동기화에서 "제외됨"을 반영한다, 즉 동기화 실패가 발생하였고 이것이 수신 동기화 피어에 의해 인식되며, 순서에 따라, 두 피어들 간의 그 다음 동기화 동작 동안에 ME의 동기화를 후속 시도하게 한다.
전술한 내용 및 다음의 바람직한 실시예들의 상세한 설명은 첨부한 도면을 함께 참조하면 더욱 잘 이해될 것이다. 본 발명을 예시하기 위해, 본 발명의 실시예들이 도면에 도시되어 있지만, 본 발명은 개시된 특정한 방법 및 수단에 국한되지는 않는다.
본 주제는 법정의 요건을 충족시키도록 특정하게 설명되어 진다. 하지만, 설명 그 자체는 본 특허의 범주를 국한하려는 것이 아니다. 그보다는, 청구범위의 주제가 그 밖의 현재 또는 장래의 기술과 결합하여 본 명세서에서 설명되는 단계들에 유사한 단계들의 조합 또는 상이한 단계들을 포함하기 위해 그 외의 방식으로 또한 구현될 수 있다는 점을 본 발명자들은 고려하였었다. 더욱이, "단계"란 용어가 이용된 방법의 상이한 요소를 내포하도록 본 명세서에서 사용될 수 있지만, 그 용어는 개별 단계의 순서가 명확히 설명되는 때를 제외하면 본 명세서에 개시된 여러 단계들 중에서 임의의 특정한 순서를 암시하는 것으로 해석되어 져서는 안 된 다.
컴퓨터 환경
본 발명의 많은 실시예들은 컴퓨터상에서 실행될 수 있다. 도 1 및 다음의 설명은 본 발명이 구현될 수 있는 적합한 연산 환경의 간결하고 일반적인 설명을 제공하도록 의도되어 진다. 꼭 필요한 것은 아니지만, 본 발명은 클라이언트 워크스테이션 또는 서버와 같은 컴퓨터에 의해 실행되는 프로그램 모듈과 같은 컴퓨터 실행 명령의 일반 관계에서 설명될 것이다. 일반적으로, 프로그램 모듈은 특정한 작업을 수행하거나 또는 특정한 추상 데이터형을 구현하는 루틴, 프로그램, 객체, 구성요소, 데이터 구조 등을 포함한다. 더욱이, 본 기술 분야의 당업자들이라면 본 발명이 포켓용 장치, 멀티 프로세서 시스템, 프로그램가능 소비자 전자공학에 기반한 마이크로프로세서, 네트워크 PC, 소형 컴퓨터, 대형 컴퓨터 등을 포함하는 다른 컴퓨터 시스템 구성에 의해서도 실행될 수 있다는 것을 알 것이다. 또한, 본 발명은 통신 네트워크를 통해 링크되는 원격 프로세싱 장치에 의해 작업이 수행되는 분산 연산 환경에서도 실행될 수 있다. 분산 연산 환경에서, 프로그램 모듈은 지역 및 원격 메모리 저장 장치 모두에 배치될 수 있다.
도 1에 도시된 바와 같이, 대표적인 일반 목적의 연산 시스템은 프로세싱 유닛(21), 시스템 메모리(22) 및 이 시스템 메모리를 포함하는 여러 시스템 요소들을 프로세싱 유닛(21)에 접속하는 시스템 버스(23)를 포함하는 보통의 개인용 컴퓨터(20)를 포함한다. 시스템 버스(23)는 다양한 버스 아키텍쳐 중 임의의 아키텍쳐를 이용하는 메모리 버스 또는 메모리 제어기, 주변 버스 및 지역 버스를 포함하는 여 러 유형의 버스 구조들 중 임의의 구조일 수 있다. 시스템 메모리는 ROM(24)과 RAM(25)을 포함한다. 개인용 컴퓨터(20)내에서 구성요소 간의 정보 전송을 가동중과 같은 시기에 돕는 기본 루틴을 포함하는 기본 입력/출력 시스템(BIOS : 26)은 ROM(24)에 저장된다. 개인용 컴퓨터(20)는 도시되지 않은 하드 디스크를 읽고 쓰기 위한 하드 디스크 드라이브(27), 이동 자기 디스크(29)를 읽거나 쓰기 위한 자기 디스크 드라이브(28) 및 CD ROM 또는 그 밖의 광학 미디어와 같은 이동 광학 디스크(31)를 읽거나 쓰기 위한 광학 디스크 드라이브(30)를 더 포함할 수도 있다. 하드 디스크 드라이브(27), 자기 디스크 드라이브(28) 및 광학 디스크 드라이브(30)는 제각기 하드 디스크 드라이브 인터페이스(32), 자기 디스크 드라이브 인터페이스(33) 및 광학 드라이브 인터페이스(34)에 의해 시스템 버스(23)에 접속된다. 이러한 드라이브들 및 그들의 연관 컴퓨터 판독 미디어는 개인용 컴퓨터(20)에 관한 컴퓨터 판독 명령, 데이터 구조, 프로그램 모듈 및 그 밖의 데이터의 비휘발성 저장을 제공한다. 본 명세서에서 설명되는 예시 환경이 하드 디스크, 이동 자기 디스크(29) 및 이동 광학 디스크(31)를 이용하고 있지만, 본 기술 분야의 당업자들이라면 컴퓨터에 의해 접속가능한 데이터를 저장할 수 있고, 자기 카세트, 플래시 메모리 카드, 디지털 비디오 디스크, 베르누이 카트리지, RAM, ROM 등과 같은 다른 유형의 컴퓨터 판독 미디어가 예시 동작 환경에서 또한 이용될 수 있다는 점을 알아야 한다.
운영 시스템(35), 하나 이상의 애플리케이션 프로그램(36), 다른 프로그램 모듈(37) 및 프로그램 데이터(38)를 포함하는 다수의 프로그램 모듈들은 하드 디스 크, 자기 디스크(29), 광학 디스크(31), ROM(24) 또는 RAM(25)상에 저장될 수 있다. 사용자는 키보드(40) 및 포인팅 장치(42)와 같은 입력 장치를 통해 명령 및 정보를 개인용 컴퓨터(20)에 입력할 수 있다. 다른 입력 장치들(도시되지 않음)은 마이크로폰, 조이스틱, 게임 패드, 위성 디스크, 스캐너 등을 포함할 수 있다. 이러한 입력 장치들 및 그 밖의 입력 장치들은 흔히 시스템 버스에 접속되는 직렬 포트 인터페이스(46)를 통해 프로세싱 유닛(21)에 접속되지만, 병렬 포트, 게임 포트 또는 범용 직렬 버스(USB)와 같은 그 밖의 인터페이스에 의해 접속될 수도 있다. 또한, 모니터(47) 또는 다른 유형의 디스플레이 장치는 비디오 어댑터(48)와 같은 인터페이스를 통해 시스템 버스(23)에 접속된다. 모니터(47)에 추가하여, 개인용 컴퓨터는 일반적으로 스피커 및 프린터와 같은 그 밖의 주변 출력 장치(도시되지 않음)를 포함한다. 또한, 도 1의 예시 시스템은 호스트 어댑터(55), 소형 컴퓨터 시스템 인터페이스(SCSI) 버스(56) 및 이 SCSI 버스(56)에 접속되는 외부 저장 장치(62)를 포함한다.
개인용 컴퓨터(20)는 원격 컴퓨터(49)와 같은 하나 이상의 원격 컴퓨터로의 논리 접속을 이용하는 네트워크 환경에서 동작할 수 있다. 원격 컴퓨터(49)는 다른 개인용 컴퓨터, 서버, 라우터, 네트워크 PC, 피어 장치 또는 다른 공통 네트워크 노드일 수 있으며, 메모리 저장 장치(50)만이 도 1에 도시되어 있지만, 일반적으로 개인용 컴퓨터(20)에 관해 전술한 구성요소 전부 또는 상당수를 포함한다. 도 1에 도시되어 있는 논리 접속은 근거리 통신망(LAN : 51) 및 광역 통신망(WAN : 52)을 포함한다. 이러한 네트워킹 환경은 사무실, 기업 전체의 컴퓨터 네트워크, 인트라넷 및 인터넷에서 흔한 일이다.
개인용 컴퓨터(20)는 LAN 네트워킹 환경에서 이용되는 경우에 네트워크 인터페이스 또는 어댑터(53)를 통해 LAN(51)에 접속된다. 개인용 컴퓨터(20)는 WAN 네트워킹 환경에서 이용되는 경우에는 일반적으로 인터넷과 같은 광역 네트워크(52)상의 통신을 구현하기 위해 모뎀(54) 또는 그 밖의 수단들을 포함한다. 내부 또는 외부에 설치될 수 있는 모뎀(54)은 직렬 포트 인터페이스(46)를 통해 시스템 버스(23)에 접속된다. 네트워크 환경에서, 개인용 컴퓨터(20)에 관해 도시되어 있는 프로그램 모듈들 또는 그 일부분은 원격 메모리 저장 장치에 저장될 수 있다. 도시되어 있는 네트워크 접속은 예시적인 것으로, 컴퓨터들 간의 통신 링크를 구현하는 다른 수단들이 이용될 수 있다는 것을 알 것이다.
본 발명의 수많은 실시예들이 컴퓨터 시스템들에 특히 적합하다고 생각되지만, 본 명세서의 어떠한 것들도 본 발명을 이러한 실시예들에 국한하려는 것이 아니다. 반면에, 본 명세서에서 사용되는 "컴퓨터 시스템"이란 용어는 정보를 저장 및 프로세싱할 수 있고/있거나 이 저장된 정보를 이용하여 장치 그 자체의 동작 또는 실행을 제어할 수 있는 임의의 장치 및 모든 장치들을 포괄하도록 의도되는데, 이러한 장치는 전자, 기계, 논리 또는 사실상 가상적인 것이라도 상관없다.
기본 동기화
피어 투 피어 동기화 환경 및 그 기초 하드웨어/소프트웨어 인터페이스 시스템은 앞서 인용된 기초 특허 출원들에 상세히 개시되어 있다. 요약하면, 기초 특허 출원들은 하드웨어/소프트웨어 인터페이스 시스템(운영 시스템과 같은, 다만 이 에 국한되지는 않는다), 그 중 특히 저장가능한 정보의 자율 유닛들(아이템들)이 동기화에 관한 기본 데이터 변경 요소를 구성하는 여러 요소 변경 유닛들(CUs)을 포함하는 하드웨어/소프트웨어 인터페이스 시스템을 개시하고 있다. 각각의 CU는 다른 피어 컴퓨터 시스템으로부터 수신된 어떠한 변경이 적용되어야 하는지 뿐만 아니라 어떠한 변경이 피어 컴퓨터 시스템들에서 갱신될 필요가 있는지를 동기화 시스템이 추적하게 하는 연관 메타데이터를 갖는다.
CU는 본질적으로 언제나 하나의 유닛으로 동기화되는 한 세트의 특성체이다. 예컨대, 접촉 아이템의 이름 및 성 특성은 함께 단일의 변경 유닛을 포함할 수 있다. 더욱이, "버전"은 각각의 변경 유닛과 연관되어 갱신이 이루어진 경우에 대응하는 타임스탬프와 함께 특정한 변경이 행해질 마지막 파트너를 그 변경 유닛에 나타낸다. 따라서, 본 명세서에서 사용되는 바와 같이, 그리고 간략한 표기를 위해, 파트너(예컨대, "A")와 타임스탬프(예컨대, "1")를 간단히 짝지움으로써 각각의 변경 유닛이 특정한 시간에 각 파트너에 의해 행해진 최신 변경을 반영하는 고유한 식별 번호(예컨대 "A1")와 연관되는 식으로, 문자와 버전에 의해 표시되는 파트너들은 정수 번호를 증가시켜 표시된다.
동기화에 관해 변경 유닛 및 메타데이터를 이용하는 시스템들(또는 유사 구조)에 있어 기본 동기화의 하나의 예는 일반적으로 두 개의 피어 컴퓨터 시스템들 상에 존재하는 아이템에 관해 단일 변경 유닛의 관점에서 설명될 수 있다. 이러한 단일 변경 유닛에 있어서, 제 1 피어, 즉 파트너 A(또는 더 간단히 "A")는 변경 유닛(CUa)의 복사에 관련된 자신의 현재 메타데이터(Ma)를 파트너 B(또는 더 간단히 "B")에 전송함으로써 제 2 피어, 즉 B로부터의 변경을 요청한다. (CUa에 대응하는) Ma 수신시에, 파트너 B는 동일한 변경 유닛(CUb)의 복사를 위해 이 메타데이터를 자신의 메타데이터(Mb)와 비교한다. 그 후, Mb가 Ma에 반영되지 않은 임의의 변경을 CUb에 반영한다면, B는 CUb와 Mb 모두를 A에 전송하고, 그렇지 않다면 B는 CUa가 행해진 모든 갱신을 CUb에 이미 반영하였고 따라서 B로부터 A로 CUb를 복사하는 것이 불필요하기 때문에 자신의 Mb만을 A에 전송(또는 이와 달리 "갱신 금지" 지시기를 A에 전송)한다.
그 자신의 동기화 요청에 대한 B의 응답에 따라서, A가 어떠한 CUb 없이 B로부터 Mb(또는 이와 달리, "갱신 금지" 지시기)만을 수신한다면, A는 CUa가 CUb와 동일하거나 또는 CUb 보다 더 갱신된 것 중 하나라는 것을 알아차린다. 하지만, A가 B로부터 Mb와 CUb 모두를 수신한다면, A는 Ma를 Mb에 비교하여 CUb가 CUa 보다 더 갱신되는지 또는 CUa와 CUb가 상반되게 변경되는지를 판정해야 한다. CUb가 CUa 보다 더 갱신된다면, A는 CUa를 CUb로 갱신하고 또한 A는 Ma를 Mb로 갱신한다. 한편, CUa와 CUb가 상반되게 변경되면, A는 자신의 로컬 상반 문제 해결 프로시쥬어에 따라 그 상반 문제를 해결한다. 예컨대, 이 경우에 A의 상반 문제 해결 프로시쥬어가 원격 해결 방안 보다는 로컬 해결 방안을 선택한다면, A는 CUa를 계속 유지(CUb의 변경을 거부)하고, 기존 반영된 Ma 및 Mb의 모든 갱신(Ma 및 Mb의 결합)을 포함하도록 Ma를 갱신한다. 그 후, B가 동일한 프로시쥬어를 이용하여 (또한 어떠한 중간의 추가 변경도 없다고 가정하여) A와 동기화하는 경우에, CUa가 CUb 보다 더 갱신되었다고 결론짓고 CUb를 CUa로 갱신할 것이다.
이러한 기본 동기화 스키마에 있어서, 각각의 변경 유닛에 관한 메타데이터는 두 가지 구성요소, 즉 피어 집단의 각 파트너(또는 임의의 변경이 행해졌던 적어도 그러한 파트너들)에 관한 변경 유닛에 발생했던 갱신에 대응하는 인식 벡터(av)(별칭은 "버전 어레이") 및 변경 유닛의 현재 "갱신" 상태를 표시하는 현재 버전(cv)을 포함한다. 변경 유닛 메타데이터에 관한 전형적인 포맷은 <변경 버전, 인식 벡터> 또는 더 간단히, <cv, [av]>이다. 이러한 정보들은 예를 들어, <A13, [A13, B11]>의 메타데이터(Ma)를 갖는 파트너 A의 변경 유닛(CUa)이 <B11, [A12, B11]>의 메타데이터(Mb)를 갖는 B의 변경 유닛(CUb) 보다 더 갱신된다는 것을 쉽게 판정하는데 이용될 수 있는데, 이는 각각의 버전 번호의 타임스탬프 부분이 시간에 따라 일정 증가하는 상황에서 Ma가 Mb에 반영되지 않은 변경(즉, A13)을 포함하기 때문이다.
스냅샷 파일스트림
기초 특허 출원들에 개시되어 있는 하드웨어/소프트웨어 인터페이스 시스템을 포함하는 어느 하드웨어/소프트웨어 인터페이스 시스템들에 있어서, 저장가능한 정보의 몇몇 자율 유닛들(예컨대, 아이템)은 두 가지 유형, 즉 구조적 또는 혼합적일 수 있다. 구조적 요소(SE)는 다구조적 데이터만을 포함하는 반면에, 혼합 요소(ME)는 다구조적 데이터와 비구조적 파일스트림 모두를 포함한다. 도 2a는 다수의 특성들(204)을 갖는 SE(202)를 도시하는 블록도이다. SE는 구조적 데이터만으로 구성되고, 따라서 구조적 데이터 요소(206)를 포함한다. 도 2b는 다수의 특성들(204)을 갖는 ME(212)를 도시하는 블록도로, 그 중 한 특성이 ME의 파일스트림 (208)으로의 링크(204')이다. ME(212)의 구조적 데이터 요소(206)는 ME의 비구조적 데이터 요소를 나타내는 비구조적 파일스트림(208)과 구별된다. 동기화에 있어서, SE는 필요에 따라 복사물을 생성하기에 충분할 정도로 적기 때문에 일정한 크기 제약을 충족시키고 쉽게 동기화된다. 하지만, ME는 일반적으로 아이템의 정규 한계를 초과하는 데이터 구조에 이용되고, 당업자들이 그 이유에 대해 잘 알듯이 그 크기로 인해 쉽게 복사, 동기화 등이 될 수 없다.
기초 특허 출원들에 개시되어 있는 하드웨어/소프트웨어 인터페이스 시스템을 포함하는 어느 하드웨어/소프트웨어 인터페이스 시스템들에 있어서, 아이템의 동기화는 일반적으로 목적 아이템이 동기화 동안에 변경되는 것을 방지하면서, 대신에 목적 아이템을 변경시키길 원하는 다른 프로세스에 복사물을 제공하며 그 후 목적 아이템이 그 동기화를 완료하는 경우에 목적 아이템을 이 복사물로 갱신하는 TIL에서 수행된다. 이러한 스냅샷 TIL(STIL)은 본질적으로 목적 아이템 자체가 자신의 동기화 동안에 동기화 피어에 복사되는 중에 변경되지 않도록 다른 프로세스에 의한 변형을 위해 필요한 기준에 따라 동기화 시스템이 목적 아이템의 복사물("스냅샷")을 생성하게 한다.
도 3은 SE(및 후술하는 바와 같이, ME의 구조적 부분)를 동기화하기 위해 본 발명의 여러 실시예들과 결합하여 이용되는 방법을 도시하는 프로세스 순서도이다. 이 도면에서, 첫 번째 단계(302)는 동기화 피어로의 변경 유닛의 복사가 완료되는 임의의 시점에 임의의 다른 프로세스가 이 변경 유닛을 변경하려 하는 경우에 변경 유닛의 복사가 단계(304)에서 행해지도록 변경 유닛(이 경우에는, 목적 아이템)을 "스냅샷"하는 것이다. 복사가 완료되면, 목적 아이템의 복사물은 단계(306)에서 목적 아이템을 갱신(예컨대, 대체)하는 데 이용된다.
스냅샷 없이 동기화
SE들이 스냅샷 TIL을 이용하여 동기화될 수 있지만, 여러 이유들, 그 중 가장 분명한 이유는 파일스트림 자체의 크기 및 대규모 데이터 객체의 임시 복사물을 생성하는 바람직하지 않은 점으로 인해 ME의 파일스트림에 대해 스냅샷이 행해지지 않는 경우는 흔하다.
본 발명의 다양한 실시예들은 동기화 동안에 대규모 비구조적 ME 파일스트림의 스냅샷을 허용하지 않는 하드웨어/소프트웨어 인터페이스 시스템 환경에서 피어 컴퓨터 시스템들 간에 ME들을 동기화(및 보다 구체적으로는 ME들의 파일스트림 요소를 동기화)하는 시스템 및 방법에 관한 것이다. 이러한 여러 실시예들에 있어서, 이 방법은 두 단계, 즉 한 단계는 ME의 구조적 데이터 요소(및 파일스트림 그 자신이 아닌 파일스트림의 cv)를 스냅샷하는 단계이고, 나머지 단계는 잠금 후에 파일스트림이 ME의 데이터 요소 스냅샷시에 변경되지 않은 것으로 판정되는 경우에만 파일스트림을 잠그고 수신 동기화 피어에 전송하는 단계로 ME를 동기화하는 것을 포함한다.
도 4는 ME를 동기화하는 방법의 단계들을 도시하는 프로세스 순서도이다. 단계(402)에서, 특정한 변경 유닛(ME 아이템)의 동기화를 개시하기 위해, ME의 구조적 데이터 요소(SDC)는 스냅샷 TLI를 이용하여 스냅샷(즉, 동기화 동안에 목적 아이템이 아닌 복사물에 변경들이 행해지고, 그 후 동기화가 완료된 후에 변경들이 적용된다)되고, 단계(404)에서 이러한 스냅샷이 행해지는 시점에서의 대응 파일스트림 현재 버전(cvF)(예컨대, cvF값은 ME 구조적 데이터의 스냅샷에서의 파일스트림 특성으로부터 바로 얻어질 수 있다)은 제 1 값(cvF0)으로 저장된다. ME의 파일스트림은 자신의 변경 유닛을 포함하고, 따라서 자신의 변경 버전을 가지며, 이 값은 또한 ME의 구조적 데이터 부분에서의 파일스트림 특성의 일부로서 저장될 수 있다. 그 후, 단계(406)에서 파일스트림은 잠기고, cvF는, 단계(410)에서 제 1 값(cvF0)과 비교되는, 제 2값(cvF1)을 판정하기 위해 단계(408)에서 재검사되며, 그 값이 동일하면(즉, cvF1이 cvF0보다 크지 않아 파일스트림이 변경되지 않음을 표시함), 파일스트림은 단계(412)에서 동기화 피어에 복사되고, 그 복사가 완료되는 경우에, 파일스트림은 단계(416)에서 잠금 해제된다. 한편, cvF1이 cvF0와 동일하지 않다면(즉, cvF1이 cvF0 보다 크면), 이것은 ME의 구조적 데이터가 스냅샷되었기 때문에 파일스트림이 갱신되었다는 것을 표시하고, 이 경우에 파일스트림은 복사되지 않으며, 파일스트림에 관한 변경 유닛은 단계(414)에서 동기화에서 "제외됨"을 반영하고, 즉 동기화 실패가 발생하였고 이것이 수신 동기화 피어에 의해 인식되며, 순서에 따라, 두 피어 간의 그 다음 동기화 동작 동안에 ME의 동기화를 후속 시도하게 하고, 단계(416)에서 파일스트림은 다시 잠금 해제된다.
덧붙여, 도 4를 다시 참조하면, 파일스트림에 대한 잠금이 단계(406)에서 달성될 수 없다면, 단계(414)에서의 제외함이 다시 발생할 것이지만, 단계(416)에서는 어떠한 잠금 해제도 필요하지 않을 것이다(이러한 잠금-실패 제외 경로는 도면에 도시되어 있지 않다). 또한, 잠금은 예를 들어, 판독 목적물을 본래 잠그는 트 랜잭션 판독 동작과 같은 일련의 표준 기능 호출을 통해 달성될 수 있다는 점에 유의해야 한다.
보다 대규모의 동기화 측면 및 본 명세서에서 설명되는 몇몇 실시예들을 이용함에 있어서, 이 방법을 이용하는 동기화 알고리즘은 다음과 같이 진행할 것이다, 즉 동기화 시스템은 동기화 복사에서의 아이템(즉, 변경 유닛)이 변경되었는지를 식별하기 위해 먼저 자신의 정규 변경 나열 프로세스를 이용할 것이다. 또한, 이러한 변경 나열은 SDC(파일스트림이 아닌)의 스냅샷에 관련하여 아이템이 ME라면 파일스트림의 변경 버전을 판독한다. 그 후, ME들에 관해, 동기화 시스템은 스냅샷 트랜잭션에 서 제외된 후의 어느 시점에 파일스트림을 잠그고, 잠금이 행해지면 파일스트림의 변경 버전을 판독한다. SDC의 스냅샷이 행해졌을 때로부터 파일스트림의 변경 버전이 변경되지 않았다면, 파일스트림의 잠금으로 인해 판독/복사되는 동안에 수정될 수 없기 때문에 동기화 시스템이 파일스트림의 컨텐츠를 동기화 피어에 판독하게 하는 것은 안전하다. 한편, 파일스트림의 cv의 제 2 판독이 이 스트림에 관해 새로운 변경 유닛 버전을 인출한다면, 이것은 스냅샷 트랜잭션에서 제외된 프로세스 시간과 파일스트림을 잠그는 시간 사이에 파일스트림이 수정되었다는 것을 표시한다. 이와 같은 경우에, 이러한 요소가 동기화되지 않았지만 후속 동기화 동작에서 동기화될 필요가 있다는 것을 동기화 파트너에게 표시하는 "제외함"을 생성한다, 즉 파일스트림이 이런 특정한 동기화 경로로 전송되지 않지만, 후속 동기화 프로세스 동안에 이러한 ME를 동기화하기 위한 추가 시도가 행해질 것이라는 점이 전송되지 않았다는 사실에 관한 충분한 정보가 유지된다.
결론
본 명세서에서 설명되는 여러 시스템, 방법 및 기법은 하드웨어 또는 소프트웨어 또는 적합하다면 둘 모두를 조합하여 구현될 수 있다. 따라서, 본 발명의 방법 및 장치 또는 그 어느 측면 또는 그 일부분은 플로피 디스켓, CD-ROM, 하드 드라이브 또는 임의의 다른 기계-판독 저장 매체와 같은 실제 미디어로 구현되는 프로그램 코드(즉, 명령) 형태를 띨 수 있는데, 프로그램 코드가 컴퓨터와 같은 기계에 로드 및 실행되는 경우에, 이러한 기계는 본 발명을 수행하는 장치가 된다. 프로그램가능 컴퓨터상의 프로그램 코드 실행의 경우에, 컴퓨터는 프로세서, 이 프로세서에 의해 판독될 수 있는 저장 매체(휘발성 및 비휘발성 메모리 및/또는 저장 요소를 포함함), 적어도 하나의 입력 장치 및 적어도 하나의 출력 장치를 일반적으로 포함할 것이다. 하나 이상의 프로그램은 컴퓨터 시스템과 통신하기 위해 높은 수준의 프로시쥬어 또는 객체 지향 프로그래밍 언어로 바람직하게 구현된다. 하지만, 이러한 프로그램(들)은 원한다면 어셈블리 또는 기계 언어로 구현될 수 있다. 어느 경우에서 든지, 이 언어는 컴파일 또는 번역된 언어일 수 있으며, 하드웨어 구현과 결합될 수 있다.
또한, 본 발명의 방법 및 장치는 전기 와이어 또는 케이블, 광섬유 또는 임의의 다른 형태의 전송 매체와 같은 몇몇 전송 매체를 통해 전송되는 프로그램 코드 형태로 구현될 수 있는데, 이 프로그램 코드가 EPROM, 게이트 어레이, 프로그램가능 논리 장치(PLD), 클라이언트 컴퓨터, 비디오 레코더 등과 같은 기계에 의해 수신, 로드 및 실행되는 경우에, 이러한 기계는 본 발명을 수행하는 장치가 된다. 일반용 프로세서상에서 구현되는 경우에, 이 프로그램 코드는 프로세서와 결합하여 본 발명의 색인 기능을 수행하도록 동작하는 고유한 장치를 제공한다.
본 발명이 여러 도면들의 바람직한 실시예들과 결합하여 설명되었지만, 다른 유사한 실시예들이 이용될 수 있으며, 본 발명의 범주를 벗어나지 않고서 본 발명과 동일한 기능을 수행하기 위해 전술한 실시예들을 수정 및 추가할 수 있다는 것을 알아야 한다. 예컨대, 본 발명의 예시적인 실시예들이 개인용 컴퓨터의 기능을 모방하는 디지털 장치와 관련하여 설명되었지만, 본 기술 분야의 당업자들이라면 본 발명이 이러한 디지털 장치들에 국한되지 않고, 본 명세서에서 설명되는 바와 같이 유선 또는 무선에 상관없이 게임 콘솔, 포켓용 컴퓨터, 휴대용 컴퓨터 등과 같은 수많은 기존 또는 최신 연산 장치들 또는 환경에 적용될 수 있으며, 또한 통신 네트워크를 통해 접속 및 상호작용하는 이러한 수많은 연산 장치에 적용될 수 있다는 점을 알 것이다. 더욱이, 포켓용 장치 운영 시스템 및 다른 애플리케이션 지정 하드웨어/소프트웨어 인터페이스 시스템을 포함하는 다양한 컴퓨터 플랫폼이 특히 무선 네트워크 장치의 수가 급격히 증가함에 따라 본 명세서에서 고려되었다는 점은 강조되어 진다. 따라서, 본 발명은 임의의 단일 실시예에 국한되어서는 안 되며, 이러한 실시예들은 첨부한 청구범위의 범주에 포함되는 것으로 해석되어 진다.
본 발명은 동기화 방법 및 시스템, 그리고 컴퓨터 판독 매체에 관한 것으로 동기화 동안에 대규모 비구조적 ME 파일스트림의 스냅샷을 허용하지 않는 하드웨어 /소프트웨어 인터페이스 시스템 환경에서 피어 컴퓨터 시스템들 간에 ME들의 파일스트림 요소를 동기화하게 하는 효과가 있다. 이 경우, 파일스트림이 변하지 않았으면 파일스트림은 동기화 피어에 복사되고, ME의 구조적 데이터가 스냅샷 되었기 때문에 파일스트림이 갱신되었다면 파일스트림은 복사되지 않고 파일스트림에 관한 변경 유닛은 동기화에서 "제외됨"을 반영하고 이것이 수신 동기화 피어에 의해 인식되며, 순서에 따라, 두 피어들 간의 그 다음 동기화 동작 동안에 ME의 동기화를 후속 시도하게 한다.

Claims (20)

  1. 하드웨어 소프트웨어 인터페이스 시스템에서 피어 컴퓨터 시스템들 간에 혼합 요소(mixed element)를 동기화하는 방법에 있어서,
    제1 피어 컴퓨터 시스템 상의 혼합 요소를 식별하는 단계 - 상기 혼합 요소는 구조적 데이터 요소(structured data component) 및 비구조적 파일스트림(unstructured filestream)을 포함하고, 상기 하드웨어 소프트웨어 인터페이스 시스템은 상기 구조적 데이터 요소의 스냅샷(snapshotting)을 허용하고 상기 비구조적 파일스트림의 스냅샷을 허용하지 않음 -;
    상기 구조적 데이터 요소를 스냅샷하는 단계 - 상기 구조적 데이터 요소를 스냅샷하는 단계는 i) 상기 구조적 데이터 요소를 구조적 데이터 요소 복사물에 복사하여 상기 혼합 요소의 동기화와 관련된 기간 동안 상기 구조적 데이터 요소 복사물에 대해 타겟 구조적 데이터 요소와 관련된 변경이 행해지도록 하는 단계, ii) 동기화 피어에 복사되는 동안 상기 구조적 데이터 요소에 대한 변경을 방지하는 단계, iii) 동기화 피어에 대한 상기 구조적 데이터 요소의 상기 복사 단계 동안, 상기 구조적 데이터 요소에 대해 변경을 행하는 프로세스에 대해 상기 구조적 데이터 요소의 제1 복사물을 생성하고, 상기 프로세스가 상기 구조적 데이터 요소 대신 상기 제1 복사물에 대해 변경을 행하도록 하는 단계, iv) 상기 구조적 데이터 요소가 상기 동기화 피어에 복사되면, 상기 제1 복사물로 상기 구조적 데이터 요소를 업데이트하는 단계를 포함함 -;
    상기 스냅샷하는 단계와 동시에 상기 파일스트림과 관련된 제1 변경값을 판정하는 단계;
    상기 구조적 데이터 요소의 변경값 및 상기 파일스트림의 상기 제1 변경값에 기초하여 상기 혼합 요소가 제2 피어 컴퓨터에 복사되는지 여부를 판정하는 단계;
    상기 제2 피어 컴퓨터에 복사하기 위한 상기 비구조적 파일스트림을 준비하기 위해 상기 비구조적 파일스트림을 잠그는 단계 - 상기 잠그는 단계는 상기 파일스트림의 제2 변경값과 관련됨 -;
    상기 구조적 데이터 요소가 스냅샷되었을 때와 상기 비구조적 파일스트림이 잠겼을 때 사이의 시간 동안에 상기 비구조적 파일스트림이 변경되었는지 변경되지 않았는지 여부를 판정하기 위해, 상기 파일스트림의 상기 제1 변경값을 상기 파일스트림의 상기 제2 변경값과 비교하는 단계; 및
    상기 구조적 데이터 요소가 스냅샷되었을 때와 상기 비구조적 파일스트림이 잠겼을 때 사이의 시간 동안에 상기 비구조적 파일스트림이 변경되지 않았다는 조건에 기초하여, 상기 비구조적 파일스트림을 상기 제2 피어 컴퓨터에 복사하는 단계
    를 포함하는 혼합 요소 동기화 방법.
  2. 제1항에 있어서,
    상기 구조적 데이터 요소가 스냅샷되었을 때와 상기 비구조적 파일스트림이 잠겼을 때 사이의 시간 동안에 상기 비구조적 파일스트림이 변경되었다면, 동기화 피어에서 제외하는(raising an exception) 단계 및 상기 비구조적 파일스트림을 잠금 해제하는 단계를 더 포함하는 혼합 요소 동기화 방법.
  3. 제1항에 있어서,
    상기 비구조적 파일스트림을 잠그는 단계는 트랜잭션 판독 동작(transactional read operation)에 의해 달성되는 혼합 요소 동기화 방법.
  4. 제1항에 있어서,
    상기 비구조적 파일스트림을 잠그는 단계 동안에 상기 비구조적 파일스트림이 잠길 수 없다면, 동기화 피어에서 제외시키고, (a)상기 비구조적 파일스트림이 잠긴 후에 상기 비구조적 파일스트림의 제2 변경값을 판정하는 단계 및 (b)상기 제1 변경값에 비교되는 상기 제2 변경값이, 상기 구조적 데이터 요소가 스냅샷되었을 때와 상기 비구조적 파일스트림이 잠겼을 때 사이의 시간 동안에 상기 비구조적 파일스트림에 어떠한 변경도 발생되지 않았다는 것을 표시하는 경우에 상기 비구조적 파일스트림을 상기 동기화 피어에 복사하고, 상기 복사가 완료되면, 상기 비구조적 파일스트림을 잠금 해제하는 단계를 수행하지 않는 혼합 요소 동기화 방법.
  5. 제1항에 있어서,
    하드웨어 제어 장치에 의해 구현되며, 상기 하드웨어 제어 장치는 상기 방법의 각 단계를 구현하기 위한 수단을 포함하는 혼합 요소 동기화 방법.
  6. 하드웨어 소프트웨어 인터페이스 시스템에서 피어 컴퓨터 시스템들 간의 혼합 요소를 동기화하기 위한 컴퓨터 판독가능 기록 매체에 있어서, 상기 컴퓨터 판독가능 기록 매체는 적어도 하나의 프로세서에 의해 실행되는 경우 방법을 수행하는 컴퓨터 실행가능 명령어들을 저장하며, 상기 방법은
    제1 피어 컴퓨터 시스템 상의 혼합 요소를 식별하는 단계 - 상기 혼합 요소는 구조적 데이터 요소 및 비구조적 파일스트림을 포함하고, 상기 하드웨어 소프트웨어 인터페이스 시스템은 상기 구조적 데이터 요소의 스냅샷을 허용하고 상기 비구조적 파일스트림의 스냅샷을 허용하지 않음 -;
    상기 구조적 데이터 요소를 스냅샷하는 단계 - 상기 구조적 데이터 요소를 스냅샷하는 단계는 i) 상기 구조적 데이터 요소를 구조적 데이터 요소 복사물에 복사하여 상기 혼합 요소의 동기화와 관련된 기간 동안 상기 구조적 데이터 요소 복사물에 대해 타겟 구조적 데이터 요소와 관련된 변경이 행해지도록 하는 단계, ii) 동기화 피어에 복사되는 동안 상기 구조적 데이터 요소에 대한 변경을 방지하는 단계, iii) 동기화 피어에 대한 상기 구조적 데이터 요소의 상기 복사 단계 동안, 상기 구조적 데이터 요소에 대해 변경을 행하는 프로세스에 대해 상기 구조적 데이터 요소의 제1 복사물을 생성하고, 상기 프로세스가 상기 구조적 데이터 요소 대신 상기 제1 복사물에 대해 변경을 행하도록 하는 단계, iv) 상기 구조적 데이터 요소가 상기 동기화 피어에 복사되면, 상기 제1 복사물로 상기 구조적 데이터 요소를 업데이트하는 단계를 포함함 -;
    상기 스냅샷하는 단계와 동시에 상기 파일스트림과 관련된 제1 변경값을 판정하는 단계;
    상기 구조적 데이터 요소의 변경값 및 상기 파일스트림의 상기 제1 변경값에 기초하여 상기 혼합 요소가 제2 피어 컴퓨터에 복사되는지 여부를 판정하는 단계;
    상기 제2 피어 컴퓨터에 복사하기 위한 상기 비구조적 파일스트림을 준비하기 위해 상기 비구조적 파일스트림을 잠그는 단계 - 상기 잠그는 단계는 상기 파일스트림의 제2 변경값과 관련됨 -;
    상기 구조적 데이터 요소가 스냅샷되었을 때와 상기 비구조적 파일스트림이 잠겼을 때 사이의 시간 동안에 상기 비구조적 파일스트림이 변경되었는지 변경되지 않았는지 여부를 판정하기 위해, 상기 파일스트림의 상기 제1 변경값을 상기 파일스트림의 상기 제2 변경값과 비교하는 단계; 및
    상기 구조적 데이터 요소가 스냅샷되었을 때와 상기 비구조적 파일스트림이 잠겼을 때 사이의 시간 동안에 상기 비구조적 파일스트림이 변경되지 않았다는 조건에 기초하여, 상기 비구조적 파일스트림을 상기 제2 피어 컴퓨터에 복사하는 단계
    를 포함하는, 컴퓨터 판독가능 기록 매체.
  7. 제6항에 있어서,
    상기 방법은,
    상기 구조적 데이터 요소가 스냅샷되었을 때와 상기 비구조적 파일스트림이 잠겼을 때 사이의 시간 동안에 상기 비구조적 파일스트림이 변경되었다면, 동기화 피어에서 제외하는 단계 및 상기 비구조적 파일스트림을 잠금 해제하는 단계를 더 포함하는, 컴퓨터 판독가능 기록 매체.
  8. 제6항에 있어서,
    상기 비구조적 파일스트림을 잠그는 단계는 트랜잭션 판독 동작에 의해 달성되는, 컴퓨터 판독가능 기록 매체.
  9. 제6항에 있어서,
    상기 방법은,
    상기 비구조적 파일스트림을 잠그는 단계 동안에 상기 비구조적 파일스트림이 잠길 수 없다면, 동기화 피어에서 제외시키고, (a)상기 비구조적 파일스트림이 잠긴 후에 상기 비구조적 파일스트림의 제2 변경값을 판정하는 단계 및 (b)상기 제1 변경값에 비교되는 상기 제2 변경값이, 상기 구조적 데이터 요소가 스냅샷되었고 상기 비구조적 파일스트림이 잠겼을 시간 사이에 상기 비구조적 파일스트림에 대해 어떠한 변경도 발생되지 않았다는 것을 표시하는 경우에 상기 비구조적 파일스트림을 상기 동기화 피어에 복사하고, 상기 복사가 완료되면, 상기 비구조적 파일스트림을 잠금 해제하는 단계를 수행하지 않는, 컴퓨터 판독가능 기록 매체.
  10. 하드웨어 소프트웨어 인터페이스 시스템에서 피어 컴퓨터 시스템들 간에 혼합 요소를 동기화하기 위한 컴퓨터 장치로서,
    프로세서와,
    상기 프로세서에 의해 실행될 때, 상기 컴퓨터 장치로 하여금 상기 혼합 요소를 동기화하는 방법을 수행하게 하는 컴퓨터 실행가능 명령어들이 저장된 메모리를 포함하고,
    상기 방법은,
    제1 피어 컴퓨터 시스템 상의 혼합 요소를 식별하는 단계 - 상기 혼합 요소는 구조적 데이터 요소 및 비구조적 파일스트림을 포함하고, 상기 하드웨어 소프트웨어 인터페이스 시스템은 상기 구조적 데이터 요소의 스냅샷을 허용하고 상기 비구조적 파일스트림의 스냅샷을 허용하지 않음 -;
    상기 구조적 데이터 요소를 스냅샷하는 단계 - 상기 구조적 데이터 요소를 스냅샷하는 단계는 i) 상기 구조적 데이터 요소를 구조적 데이터 요소 복사물에 복사하여 상기 혼합 요소의 동기화와 관련된 기간 동안 상기 구조적 데이터 요소 복사물에 대해 타겟 구조적 데이터 요소와 관련된 변경이 행해지도록 하는 단계, ii) 동기화 피어에 복사되는 동안 상기 구조적 데이터 요소에 대한 변경을 방지하는 단계, iii) 동기화 피어에 상기 구조적 데이터 요소를 복사하는 동안, 상기 구조적 데이터 요소에 대해 변경을 행하는 프로세스에 대해 상기 구조적 데이터 요소의 제1 복사물을 생성하고, 상기 프로세스가 상기 구조적 데이터 요소 대신 상기 제1 복사물에 대해 변경을 행하도록 하는 단계, iv) 상기 구조적 데이터 요소가 상기 동기화 피어에 복사되면, 상기 제1 복사물로 상기 구조적 데이터 요소를 업데이트하는 단계를 포함함 -;
    상기 스냅샷하는 것과 동시에 상기 파일스트림과 관련된 제1 변경값을 판정하는 단계;
    상기 구조적 데이터 요소의 변경값 및 상기 파일스트림의 상기 제1 변경값에 기초하여 상기 혼합 요소가 제2 피어 컴퓨터에 복사되는지 여부를 판정하는 단계;
    상기 제2 피어 컴퓨터에 복사하기 위한 상기 비구조적 파일스트림을 준비하기 위해 상기 비구조적 파일스트림을 잠그는 단계 - 상기 잠그는 단계는 상기 파일스트림의 제2 변경값과 관련됨 -;
    상기 구조적 데이터 요소가 스냅샷되었을 때와 상기 비구조적 파일스트림이 잠겼을 때 사이의 시간 동안에 상기 비구조적 파일스트림이 변경되었는지 변경되지 않았는지 여부를 판정하기 위해, 상기 파일스트림의 상기 제1 변경값을 상기 파일스트림의 상기 제2 변경값과 비교하는 단계;
    상기 구조적 데이터 요소가 스냅샷되었을 때와 상기 비구조적 파일스트림이 잠겼을 때 사이의 시간 동안에 상기 비구조적 파일스트림이 변경되지 않았다는 조건에 기초하여, 상기 비구조적 파일스트림을 상기 제2 피어 컴퓨터에 복사하는 단계
    를 포함하는, 혼합 요소 동기화를 위한 컴퓨터 장치.
  11. 제10항에 있어서,
    상기 방법은,
    상기 구조적 데이터 요소가 스냅샷되었을 때와 상기 비구조적 파일스트림이 잠겼을 때 사이의 시간 동안에 상기 비구조적 파일스트림이 변경되었다면, 동기화 피어에서 제외하고 상기 비구조적 파일스트림을 잠금 해제하는 단계를 더 포함하는, 혼합 요소 동기화를 위한 컴퓨터 장치.
  12. 제10항에 있어서,
    상기 비구조적 파일스트림을 잠그는 단계는 트랜잭션 판독 동작에 의해 달성되는, 혼합 요소 동기화를 위한 컴퓨터 장치.
  13. 제10항에 있어서,
    상기 방법은,
    상기 비구조적 파일스트림을 잠그는 동안에 상기 비구조적 파일스트림이 잠길 수 없다면, 동기화 피어에서 제외시키고, (a)상기 비구조적 파일스트림이 잠긴 후에 상기 비구조적 파일스트림의 제2 변경값을 판정하는 단계 및 (b)상기 제1 변경값에 비교되는 상기 제2 변경값이, 상기 구조적 데이터 요소가 스냅샷되었을 때와 상기 비구조적 파일스트림이 잠겼을 때 사이의 시간 동안에 상기 비구조적 파일스트림에 대해 어떠한 변경도 발생되지 않았다는 것을 표시하는 경우에 상기 비구조적 파일스트림을 상기 동기화 피어에 복사하고, 상기 복사가 완료되면, 상기 비구조적 파일스트림을 잠금 해제하는 단계를 수행하지 않는, 혼합 요소 동기화를 위한 컴퓨터 장치.
  14. 삭제
  15. 삭제
  16. 삭제
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
KR1020050102919A 2004-12-20 2005-10-31 스냅샷 없이 아이템을 동기화하는 시스템 및 방법 KR101219823B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/025,165 2004-12-20
US11/025,165 US7457826B2 (en) 2004-12-20 2004-12-20 Systems and methods for synchronization of items without snapshots

Publications (2)

Publication Number Publication Date
KR20060070410A KR20060070410A (ko) 2006-06-23
KR101219823B1 true KR101219823B1 (ko) 2013-01-08

Family

ID=35809796

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020050102919A KR101219823B1 (ko) 2004-12-20 2005-10-31 스냅샷 없이 아이템을 동기화하는 시스템 및 방법

Country Status (5)

Country Link
US (1) US7457826B2 (ko)
EP (1) EP1672545B1 (ko)
JP (1) JP4753693B2 (ko)
KR (1) KR101219823B1 (ko)
CN (1) CN100555279C (ko)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9134989B2 (en) 2002-01-31 2015-09-15 Qualcomm Incorporated System and method for updating dataset versions resident on a wireless device
US9092286B2 (en) 2002-12-20 2015-07-28 Qualcomm Incorporated System to automatically process components on a device
US7809693B2 (en) * 2003-02-10 2010-10-05 Netapp, Inc. System and method for restoring data on demand for instant volume restoration
US8238696B2 (en) 2003-08-21 2012-08-07 Microsoft Corporation Systems and methods for the implementation of a digital images schema for organizing units of information manageable by a hardware/software interface system
US8131739B2 (en) 2003-08-21 2012-03-06 Microsoft Corporation Systems and methods for interfacing application programs with an item-based storage platform
US8166101B2 (en) 2003-08-21 2012-04-24 Microsoft Corporation Systems and methods for the implementation of a synchronization schemas for units of information manageable by a hardware/software interface system
US7401104B2 (en) * 2003-08-21 2008-07-15 Microsoft Corporation Systems and methods for synchronizing computer systems through an intermediary file system share or device
US8626146B2 (en) 2003-10-29 2014-01-07 Qualcomm Incorporated Method, software and apparatus for performing actions on a wireless device using action lists and versioning
US7478078B2 (en) * 2004-06-14 2009-01-13 Friendster, Inc. Method for sharing relationship information stored in a social network database with third party databases
WO2006116183A1 (en) * 2005-04-25 2006-11-02 Network Appliance, Inc. Architecture for supporting sparse volumes
ATE512412T1 (de) * 2005-04-25 2011-06-15 Network Appliance Inc System und verfahren zum zwischenspeichern von netzwerkdateisystemen
US7917607B2 (en) * 2005-12-30 2011-03-29 Sap Ag Software management systems and methods, including use of such systems and methods in a provider-tenant environment
US7689593B2 (en) * 2005-12-30 2010-03-30 Sap Ag Systems and methods for accessing a shared space in a provider-tenant environment
US8069184B2 (en) 2006-12-29 2011-11-29 Sap Ag Systems and methods to implement extensibility of tenant content in a provider-tenant environment
US7933869B2 (en) 2006-12-29 2011-04-26 Sap Ag Method and system for cloning a tenant database in a multi-tenant system
BRPI0812543A2 (pt) * 2007-06-19 2015-09-29 Qualcomm Inc métodos e aparelho para sincronização de conjunto de dados em um ambiente sem fio
CN101582790B (zh) * 2008-05-15 2011-12-07 华为技术有限公司 动态数据稽核以及业务实体故障检测的方法、装置和系统
US8479166B2 (en) * 2008-08-25 2013-07-02 International Business Machines Corporation Detecting locking discipline violations on shared resources
CN101667187B (zh) * 2009-09-23 2011-09-07 南京邮电大学 一种基于对等计算技术的复合知识云方法
US8990263B2 (en) * 2012-03-15 2015-03-24 International Business Machines Corporation Policy-based management of storage functions in data replication environments
US11153281B2 (en) 2018-12-06 2021-10-19 Bank Of America Corporation Deploying and utilizing a dynamic data stenciling system with a smart linking engine

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004038928A (ja) * 2002-03-19 2004-02-05 Network Appliance Inc 2つのスナップショット間の変化を判定して宛先スナップショットに送信するシステム及び方法
JP2004038977A (ja) * 2002-06-28 2004-02-05 Microsoft Corp イメージファイル管理方法及びその記録媒体

Family Cites Families (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5900870A (en) * 1989-06-30 1999-05-04 Massachusetts Institute Of Technology Object-oriented computer user interface
US5506983A (en) * 1992-07-06 1996-04-09 Microsoft Corporation Method and system for transactioning of modifications to a tree structured file
JPH06214845A (ja) * 1993-01-20 1994-08-05 Hitachi Ltd 複数ブロック一括処理方式
US5870764A (en) * 1993-05-12 1999-02-09 Apple Computer, Inc. Method of managing a data structure for concurrent serial and parallel revision of a work
US6078925A (en) * 1995-05-01 2000-06-20 International Business Machines Corporation Computer program product for database relational extenders
US6112024A (en) * 1996-10-02 2000-08-29 Sybase, Inc. Development system providing methods for managing different versions of objects with a meta model
US6085192A (en) 1997-04-11 2000-07-04 Roampage, Inc. System and method for securely synchronizing multiple copies of a workspace element in a network
US6708221B1 (en) 1996-12-13 2004-03-16 Visto Corporation System and method for globally and securely accessing unified information in a computer network
US5893106A (en) * 1997-07-11 1999-04-06 International Business Machines Corporation Object oriented server process framework with interdependent-object creation
US6108004A (en) * 1997-10-21 2000-08-22 International Business Machines Corporation GUI guide for data mining
US6151606A (en) 1998-01-16 2000-11-21 Visto Corporation System and method for using a workspace data manager to access, manipulate and synchronize network data
US6263342B1 (en) * 1998-04-01 2001-07-17 International Business Machines Corp. Federated searching of heterogeneous datastores using a federated datastore object
US6519597B1 (en) * 1998-10-08 2003-02-11 International Business Machines Corporation Method and apparatus for indexing structured documents with rich data types
US6338056B1 (en) * 1998-12-14 2002-01-08 International Business Machines Corporation Relational database extender that supports user-defined index types and user-defined search
US6298425B1 (en) * 1999-01-12 2001-10-02 Compaq Computer Corp. Computer disk management system using doublet A-B logging
US6199195B1 (en) * 1999-07-08 2001-03-06 Science Application International Corporation Automatically generated objects within extensible object frameworks and links to enterprise resources
US6370541B1 (en) * 1999-09-21 2002-04-09 International Business Machines Corporation Design and implementation of a client/server framework for federated multi-search and update across heterogeneous datastores
US6556983B1 (en) * 2000-01-12 2003-04-29 Microsoft Corporation Methods and apparatus for finding semantic information, such as usage logs, similar to a query using a pattern lattice data space
US20020103818A1 (en) * 2000-05-04 2002-08-01 Kirkfire, Inc. Information repository system and method for an internet portal system
GB0016695D0 (en) * 2000-07-08 2000-08-23 Radioscape Ltd Digital transactions for the delivery of media files
US6999956B2 (en) 2000-11-16 2006-02-14 Ward Mullins Dynamic object-driven database manipulation and mapping system
WO2002075539A2 (en) 2001-03-16 2002-09-26 Novell, Inc. Client-server model for synchronization of files
US6697818B2 (en) * 2001-06-14 2004-02-24 International Business Machines Corporation Methods and apparatus for constructing and implementing a universal extension module for processing objects in a database
US6643654B1 (en) * 2001-06-25 2003-11-04 Network Appliance, Inc. System and method for representing named data streams within an on-disk structure of a file system
AU2002313583A1 (en) * 2001-08-01 2003-02-17 Actona Technologies Ltd. Virtual file-sharing network
US6983296B1 (en) * 2002-08-12 2006-01-03 Network Appliance, Inc. System and method for tracking modified files in a file system
US7103796B1 (en) * 2002-09-03 2006-09-05 Veritas Operating Corporation Parallel data change tracking for maintaining mirrored data consistency
US7567991B2 (en) * 2003-06-25 2009-07-28 Emc Corporation Replication of snapshot using a file system copy differential
US7778962B2 (en) * 2004-04-30 2010-08-17 Microsoft Corporation Client store synchronization through intermediary store change packets
US7225307B2 (en) * 2004-05-04 2007-05-29 International Business Machines Corporation Apparatus, system, and method for synchronizing an asynchronous mirror volume using a synchronous mirror volume

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004038928A (ja) * 2002-03-19 2004-02-05 Network Appliance Inc 2つのスナップショット間の変化を判定して宛先スナップショットに送信するシステム及び方法
JP2004038977A (ja) * 2002-06-28 2004-02-05 Microsoft Corp イメージファイル管理方法及びその記録媒体

Also Published As

Publication number Publication date
US7457826B2 (en) 2008-11-25
CN100555279C (zh) 2009-10-28
JP4753693B2 (ja) 2011-08-24
JP2006178932A (ja) 2006-07-06
US20060136418A1 (en) 2006-06-22
EP1672545A1 (en) 2006-06-21
EP1672545B1 (en) 2014-01-15
KR20060070410A (ko) 2006-06-23
CN1794227A (zh) 2006-06-28

Similar Documents

Publication Publication Date Title
KR101219823B1 (ko) 스냅샷 없이 아이템을 동기화하는 시스템 및 방법
KR101109219B1 (ko) 아이템 수렴(즉, 데이터 수렴)을 강행하기 위한 충돌 해소의 전파를 위한 시스템 및 방법
US7577691B2 (en) Extending hierarchical synchronization scopes to non-hierarchical scenarios
US8046424B2 (en) Systems and methods for the utilization of metadata for synchronization optimization
CN102089760B (zh) 同步服务器处理
CN101167069B (zh) 文件对等同步的系统和方法
RU2372649C2 (ru) Гранулярное управление полномочиями дублируемой информации при помощи ограничения и снятия ограничения
US7711771B2 (en) Management and synchronization application for network file system
US7739246B2 (en) System and method of merging contacts
US8364759B2 (en) Mesh-managing data across a distributed set of devices
US7185066B2 (en) Secure data sharing system
US7590632B1 (en) Method for serializer maintenance and coalescing
US20130318207A1 (en) Systems and methods for managing mobile app data
US20040172424A1 (en) Method for managing multiple file states for replicated files
US20020029227A1 (en) Management server for synchronization system
EP1130513A2 (en) Data transfer and synchronization system
AU2002344297A1 (en) Management and synchronization application for network file system
JP7355964B2 (ja) 外部ロケーションの同期
JPH1021061A (ja) クライアントソフトウェア自動バージョンアップシステム
KR20060116140A (ko) 저장 플랫폼에서의 로킹 및 아이솔레이션을 위한 시스템 및방법
WO2009114231A1 (en) Synchronization of disconnected/offline data processing/entry
US7962600B2 (en) WAFS disconnected-mode read-write access
JP7355959B2 (ja) 外部ロケーションの同期
RU2419849C2 (ru) Механизм синхронизации комплекта приложений для продуктивной работы и бизнес-приложений

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20151217

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20161220

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20171219

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20181226

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20191217

Year of fee payment: 8