KR101975880B1 - 메모리 절약을 지원하는 실시간 협업 편집방법 - Google Patents

메모리 절약을 지원하는 실시간 협업 편집방법 Download PDF

Info

Publication number
KR101975880B1
KR101975880B1 KR1020170163366A KR20170163366A KR101975880B1 KR 101975880 B1 KR101975880 B1 KR 101975880B1 KR 1020170163366 A KR1020170163366 A KR 1020170163366A KR 20170163366 A KR20170163366 A KR 20170163366A KR 101975880 B1 KR101975880 B1 KR 101975880B1
Authority
KR
South Korea
Prior art keywords
time
client
real
history buffer
server
Prior art date
Application number
KR1020170163366A
Other languages
English (en)
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 부경대학교 산학협력단
Priority to KR1020170163366A priority Critical patent/KR101975880B1/ko
Application granted granted Critical
Publication of KR101975880B1 publication Critical patent/KR101975880B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/176Support for shared access to files; File sharing support
    • G06F16/1767Concurrency control, e.g. optimistic or pessimistic approaches
    • G06F17/24

Abstract

본 발명은 메모리 절약을 지원하는 실시간 협업 편집방법에 관한 것이다. 상기 방법은 오퍼레이션생성부가 사용자 입력을 기초로 클라이언트 오퍼레이션을 생성하여 히스토리 버퍼에 저장하는 단계, 오퍼레이션관리부가 송수신부를 통해 상기 오퍼레이션을 서버로 전송하는 단계, 상기 송수신부를 통해 상기 서버로부터 다른 클라이언트의 오퍼레이션을 수신하는 단계, 변환함수처리부가 상기 수신된 다른 클라이언트의 오퍼레이션과 상기 히스토리 버퍼에 저장된 클라이언트 오퍼레이션을 이용하여 변환함수 처리를 수행하는 단계, 텍스트업데이트부가 상기 변환함수 처리 결과를 이용하여 텍스트를 업데이트하는 단계를 포함하고, 상기 클라이언트 오퍼레이션과 상기 다른 클라이언트 오퍼레이션을 포함하는 모든 오퍼레이션은 생성 시에 유효시간이 설정되고, 상기 오퍼레이션관리부는 상기 유효시간이 만료된 오퍼레이션을 상기 히스토리 버퍼에서 제거하는 것을 특징으로 한다.

Description

메모리 절약을 지원하는 실시간 협업 편집방법{REAL TIME COLLABORATIVE EDITING METHOD FOR MEMORY SAVING}
본 발명은 메모리 절약을 지원하는 실시간 협업 편집방법에 관한 것으로, 보다 상세하게는 사용자가 생성한 오퍼레이션에 유효시간을 적용하여 오퍼레이션의 장기간의 메모리 점유를 방지하여 공간 및 시간 복잡도를 감소시킬 수 있는 메모리 절약을 지원하는 실시간 협업 편집방법에 관한 것이다.
오늘날 정보통신 기술의 발전으로, 폭발적으로 데이터가 증가하는 이른바 빅 데이터(Big Data)시대가 도래하였다. 특히 최근에는 Facebook, Instagram등 소셜 네트워크 서비스 (SNS)의 확산으로 사진 및 동영상 등 큰 사이즈의 멀티미디어 컨텐츠 또한 폭발적으로 증가되고 있는 추세이다. 그에 따라 방대한 데이터를 창의적으로 재활용하기 위해 많은 연구가 진행되고 있으며, 오늘날 발전된 인공지능 기술을 활용하기까지 그 연구 분야가 확장되고 있다. 그러나 인공지능 기술과는 반대로 인간의 협력적 작업을 통해 콘텐츠 재생성 및 재활용 등의 창의성을 필요로 하는 업무를 빠르게 처리하기 위한 기술 또한 많이 연구되고 있다.
대표적으로 고도의 창의성을 필요로 하는 에세이 및 신문기사 작성과 같은 문서 편집 작업은 다수의 전문가들의 공동 작업을 통해 빠르게 달성할 수 있다. 그러나 물리적으로 분산된 다수의 전문가 간의 실시간 협업 시스템을 위해서는 동시성, 일관성 유지 측면에서 많은 어려움을 가지고 있다. 일반적으로 지역적으로 분산된 사용자를 위한 실시간 협업 시스템은 웹 기반으로 구현된다. 그러나 웹 서비스 환경 특성상 높은 지연율과 낮은 응답률로 인해 사용자 간의 동시성 및 일관성 유지가 어려워 협업 기능을 구현하기 힘들다. 일반적으로 동시성 제어는 락킹 기법을 통해 이루어지는데, 한 사용자가 락을 설정한 동안 다른 사용자는 대기하여 협업이 원활하지 못하게 되며, 또한 무한정 대기해야 하는 상황이 발생한다. 따라서 락킹 기법 없이 동시성 제어의 어려움을 극복하기 위해 많은 연구가 진행되었으며, 대표적인 알고리즘으로 Ellis와 Gibbs가 제안한 운영변환 알고리즘이 있다.
운영변환 알고리즘은 협력적 작업환경에서 동시에 발생한 입력에 의한 문제점을 극복하기 위해 각 사용자가 생성한 입력 또는 삭제 오퍼레이션과 서버로부터 받은 오퍼레이션의 변환함수(T)를 통해 변환하여 적용함으로써, 데이터 일관성을 유지하는 방법이다. 이러한 운영변환 알고리즘은 동시성 및 일관성 유지뿐만 아니라, 동시에 발생한 오퍼레이션의 인과관계 및 사용자의 의도까지 보존하는 방향으로 그 연구분야가 확장되었다.
그러나 기존의 방법은 편집작업 시 발생한 모든 오퍼레이션을 서버로부터 수신된 새로운 오퍼레이션과의 변환연산을 위해 히스토리 버퍼에 저장하는 구조를 갖고 있다. 따라서 협업작업율이 낮은 일방적인 편집작업을 수행하는 클라이언트에서는 히스토리 버퍼가 매우 커져 메모리 낭비 및 시간 복잡도가 증가하게 되는 문제가 발생한다.
그리고 실시간 협업 시스템을 웹 기반으로 구현하기 위해서는 비동기 양방향 통신이 필요하다. 일반적인 웹 기반 통신은 HTTP 방식으로 통신하는데, 이는 클라이언트가 먼저 요청을 보내고, 서버는 응답을 보내며 응답을 보낸 후 접속을 끊는 반이중 통신방식이기 때문에 실시간 협업 시스템에서는 적합하지 않다. 따라서 표준기술인 HTML5의 웹 소켓은 양방향 통신으로 각 로컬 편집자들은 편집 오퍼레이션을 서버로 전송하고, 서버는 접속한 다른 원격 편집자들에게 전파하여 편집 오퍼레이션을 송수신하는 역할을 수행한다.
본 발명은 실시간 협업 편집 시스템에 있어서, 클라이언트의 히스토리 버퍼에 오퍼레이션의 장기간의 메모리 점유를 방지함으로써, 히스토리 버퍼의 공간 및 시간 복잡도를 감소시켜 협업작업율이 낮은 상태에서도 시스템의 성능이 최적으로 유지될 수 있는 메모리 절약을 지원하는 실시간 협업 편집방법을 제공하는 것을 목적으로 한다.
상기 과제를 해결하기 위한 본 발명의 일 양상에 따른 메모리 절약을 지원하는 실시간 협업 편집방법은 오퍼레이션생성부가 사용자 입력을 기초로 클라이언트 오퍼레이션을 생성하여 히스토리 버퍼에 저장하는 단계, 오퍼레이션관리부가 송수신부를 통해 상기 오퍼레이션을 서버로 전송하는 단계, 상기 송수신부를 통해 상기 서버로부터 다른 클라이언트의 오퍼레이션을 수신하는 단계, 변환함수처리부가 상기 수신된 다른 클라이언트의 오퍼레이션과 상기 히스토리 버퍼에 저장된 클라이언트 오퍼레이션을 이용하여 변환함수 처리를 수행하는 단계, 텍스트업데이트부가 상기 변환함수 처리 결과를 이용하여 텍스트를 업데이트하는 단계를 포함하고, 모든 오퍼레이션은 생성 시에 유효시간이 설정되고, 상기 오퍼레이션관리부는 상기 유효시간이 만료된 오퍼레이션을 상기 히스토리 버퍼에서 제거하는 것을 특징으로 한다.
상기 오퍼레이션 생성 시에, 상기 오퍼레이션은 오퍼레이션이 생성 시점의 상태벡터정보, 텍스트에 적용될 위치정보, 오퍼레이션 타입정보, 생성 시점 정보, 유효시간 정보를 포함할 수 있다.
상기 오퍼레이션 타입은 텍스트 입력 또는 텍스트 삭제 오퍼레이션일 수 있다.
상기 히스토리 버퍼에서 오퍼레이션이 소멸되면, 상기 오퍼레이션관리부는 상기 히스토리 버퍼에 저장된 오퍼레이션의 상태벡터정보를 변경할 수 있다.
상기 방법은 상기 히스토리 버퍼에서 오퍼레이션이 소멸되면, 상기 오퍼레이션관리부는 상기 송수신부를 통해 상기 서버로 상기 소멸된 오퍼레이션에 대한 정보를 전송하는 단계를 더 포함할 수 있다.
상기 서버로부터 상기 다른 클라이언트에서 유효시간 만료로 소멸된 오퍼레이션에 대한 정보를 수신하면, 상기 오퍼레이션관리부는 상기 다른 클라이언트의 상태벡터 정보를 변경할 수 있다.
본 발명의 실시예에 따른 메모리 절약을 지원하는 실시간 협업 편집방법에 의하면, 각 클라이언트에서 발생한 오퍼레이션에 유효시간이 적용되어 히스토리 버퍼의 시간 및 공간 복잡도를 감소시키고 오퍼레이션 소멸에 의한 일관성 유지를 위해 동기화가 진행됨에 따라 협업작업율이 낮은 경우에도 히스토리 버퍼의 크기를 증가시키지 않아 메모리 사용 성능 향상을 높일 수 있다.
도 1은 본 발명의 실시예에 따른 메모리 절약을 지원하는 실시간 협업 편집방법을 수행하기 위한 시스템의 구성도이다.
도 2는 본 발명의 실시예에 따른 메모리 절약을 지원하는 실시간 협업 편집방법을 수행하기 위한 클라이언트 장치의 구성도이다.
도 3은 본 발명의 실시예에 따른 메모리 절약을 지원하는 실시간 협업 편집방법의 순서도이다.
도 4는 본 발명의 실시예에 따른 메모리 절약을 지원하는 실시간 협업 편집방법에 있어서 히스토리 버퍼에서의 처리과정을 설명하는 도면이다.
도 5는 본 발명의 실시예에 따른 메모리 절약을 지원하는 실시간 협업 편집방법에 있어서, 동기화처리를 하지 않는 경우의 처리과정을 설명하는 도면이다.
도 6은 본 발명의 실시예에 따른 메모리 절약을 지원하는 실시간 협업 편집방법에 있어서, 동기화처리를 수행하는 경우의 처리과정을 설명하는 도면이다.
도 7은 본 발명의 실시예에 따른 메모리 절약을 지원하는 실시간 협업 편집방법에 있어서, 타이핑 속도에 따른 오퍼레이션의 증가율을 비교한 그래프이다.
도 8은 본 발명의 실시예에 따른 메모리 절약을 지원하는 실시간 협업 편집방법에 있어서, 시간에 따른 오퍼레이션의 증가율을 비교한 그래프이다.
도 9는 본 발명의 실시예에 따른 메모리 절약을 지원하는 실시간 협업 편집방법에 있어서, 동시에 생성된 오퍼레이션의 증가량에 따른 처리성능을 비교한 그래프이다.
도 10은 본 발명의 실시예에 따른 메모리 절약을 지원하는 실시간 협업 편집방법에 있어서, 특정 환경에서의 알고리즘간 성능을 비교한 그래프이다.
도 11은 본 발명의 실시예에 따른 메모리 절약을 지원하는 실시간 협업 편집방법에 있어서, 클라이언트에서 협업 편집방법을 구현한 예시이다.
도 12는 본 발명의 실시예에 따른 메모리 절약을 지원하는 실시간 협업 편집방법의 수행에 있어서 오퍼레이션 상태의 예시도이다.
본 발명의 목적 및 효과, 그리고 그것들을 달성하기 위한 기술적 구성들은 첨부되는 도면과 함께 상세하게 뒤에 설명이 되는 실시 예들을 참조하면 명확해질 것이다. 본 발명을 설명함에 있어서 공지 기능 또는 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략할 것이다. 그리고 뒤에 설명되는 용어들은 본 발명에서의 구조, 역할 및 기능 등을 고려하여 정의된 용어들로서 이는 사용자, 운용자의 의도 또는 관례 등에 따라 달라질 수 있다.
그러나 본 발명은 이하에서 개시되는 실시 예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있다. 단지 본 실시 예들은 본 발명의 개시가 완전하도록 하고, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 오로지 특허청구범위에 기재된 청구항의 범주에 의하여 정의될 뿐이다. 그러므로 그 정의는 본 명세서 전반에 걸친 내용을 토대로 내려져야 할 것이다.
명세서 전체에서, 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다.
이하에서는 첨부한 도면을 참조하며, 본 발명의 바람직한 실시예들을 보다 상세하게 설명하기로 한다.
한편, 본 발명의 실시 예에 있어서, 각 구성요소들, 기능 블록들 또는 수단들은 하나 또는 그 이상의 하부 구성요소로 구성될 수 있으며, 각 구성요소들이 수행하는 전기, 전자, 기계적 기능들은 전자회로, 집적회로, ASIC(Application Specific Integrated Circuit) 등 공지된 다양한 소자들 또는 기계적 요소들로 구현될 수 있으며, 각각 별개로 구현되거나 2 이상이 하나로 통합되어 구현될 수도 있다.
또한 첨부된 블록도의 각 블록과 흐름도의 각 단계의 조합들은 컴퓨터 프로그램 인스트럭션들에 의해 수행될 수도 있다. 이들 컴퓨터 프로그램 인스트럭션들은 범용 컴퓨터, 특수용 컴퓨터, 휴대용 노트북 컴퓨터, 네트워크 컴퓨터 등 기타 프로그램 가능한 데이터 프로세싱 장비의 프로세서에 탑재될 수 있으므로, 컴퓨터 장치 또는 기타 프로그램 가능한 데이터 프로세싱 장비의 프로세서를 통해 수행되는 그 인스트럭션들이 아래에서 설명할 블록도의 각 블록 또는 흐름도의 각 단계에서 설명된 기능들을 수행하는 수단을 생성하게 된다. 이들 컴퓨터 프로그램 인스트럭션들은 특정 방식으로 기능을 구현하기 위해 컴퓨터 장치 또는 기타 프로그램 가능한 데이터 프로세싱 장비를 지향할 수 있는 컴퓨터 장치에 이용 가능한 메모리 또는 컴퓨터 판독 가능 메모리에 저장되는 것도 가능하므로, 블록도의 각 블록 또는 흐름도 각 단계에서 설명된 기능을 수행하는 인스트럭션 수단을 내포하는 제조물을 생산하는 것도 가능하다. 컴퓨터 프로그램 인스트럭션들은 컴퓨터 장치 또는 기타 프로그램 가능한 데이터 프로세싱 장비 상에 탑재되는 것도 가능하므로, 컴퓨터 장치 또는 기타 프로그램 가능한 데이터 프로세싱 장비 상에서 일련의 동작 단계들이 수행되기 위한 프로세스를 생성하여 블록도의 각 블록 및 흐름도의 각 단계에서 설명된 기능들을 실행하기 위한 단계들을 제공하는 것도 가능하다.
또한, 각 블록 또는 각 단계는 특정된 논리적 기능(들)을 실행하기 위한 하나 이상의 실행 가능한 인스트럭션들을 포함하는 모듈, 세그먼트 또는 코드의 일부를 나타낼 수 있다. 또, 몇 가지 대체 실시예들에서는 블록들 또는 단계들에서 언급된 기능들이 순서를 벗어나서 발생하는 것도 가능함을 주목해야 한다. 예컨대, 잇달아 도시되어 있는 두 개의 블록들 또는 단계들은 사실 실질적으로 동시에 수행되는 것도 가능하고 또는 그 블록들 또는 단계들이 때때로 해당하는 기능에 따라 역순으로 수행되는 것도 가능하다.
이하에서는 첨부된 도면을 참조하여 본 발명의 실시예에 따른 메모리 절약을 지원하는 실시간 협업 편집방법을 설명하기로 한다.
도 1은 본 발명의 실시예에 따른 메모리 절약을 지원하는 실시간 협업 편집방법을 수행하기 위한 시스템의 구성도이다.
상기 도 1에 도시된 바와 같이, 상기 시스템은 사용자의 클라이언트 장치(100)와 서버(200) 및 다른 클라이언트장치(300)을 포함한다. 상기 도 1에서는 상기 다른 클라이언트 장치(300)는 하나가 도시되었지만, 이는 설명의 편의를 위한 것으로 상기 다른 클라이언트장치(300)는 하나 이상 포함될 수 있다.
상기 사용자의 클라이언트 장치(100), 서버(200) 및 다른 클라이언트 장치(300)는 네트워크를 통해 연결된다.
클라이언트 장치(100)와 서버(200)는 웹 소켓으로 통신하며, 서버(200)는 클라이언트 장치(100, 300)에서 발생한 오퍼레이션을 시간 순으로 직렬화한 후 다른 클라이언트 장치로 전파하는 역할을 수행한다.
도 2는 본 발명의 실시예에 따른 메모리 절약을 지원하는 실시간 협업 편집방법을 수행하기 위한 클라이언트 장치의 구성도이다.
상기 도 2에 도시된 바와 같이 상기 사용자의 클라이언트 장치(100)는 오퍼레이션생성부(110), 송수신부(120), 오퍼레이션관리부(130), 변환함수처리부(140), 텍스트업데이트부(150) 및 히스토리버퍼(160)를 포함한다. 다른 클라이언트 장치(300)도 상기 사용자의 클라이언트 장치(100)와 동일한 구성을 포함한다.
상기 오퍼레이션생성부(110)는 텍스트의 입력 또는 삭제와 같은 오퍼레이션이 발생하였을 때 해당 오퍼레이션의 생성을 수행하며, 상기 송수신부(120) 데이터 송수신을 수행하며, 오퍼레이션관리부(130)는 생성된 오퍼레이션의 관리를 수행하며, 상기 변환함수처리부(140)는 클라이언트 장치(100)에서 생성된 오퍼레이션과 서버(200)를 통해 수신한 다른 클라이언트 장치(200)에서 생성된 오퍼레이션을 이용하여 변환함수 처리를 수행하고, 상기 텍스트업데이트부(150)는 상기 변환함수 처리 결과를 이용하여 텍스트를 업데이트를 수행하고, 상기 히스토리버퍼(160)는 오퍼레이션의 저장을 수행한다. 이때, 상기 히스토리버퍼(160)는 큐(queue) 구조를 가질 수 있다.
도 3은 본 발명의 실시예에 따른 메모리 절약을 지원하는 실시간 협업 편집방법의 순서도이다.
상기 도 3은 참조하면, 우선, 오퍼레이션생성부(110)는 사용자 입력을 기초로 클라이언트 오퍼레이션을 생성하여 히스토리 버퍼(160)에 저장한다(S100).
오퍼레이션생성부(110)는 상기 오퍼레이션 생성 시에, 상기 오퍼레이션이 오퍼레이션이 생성 시점의 상태벡터정보, 텍스트에 적용될 위치정보, 오퍼레이션 타입정보, 생성 시점 정보, 유효시간 정보를 포함하도록 오퍼레이션을 생성한다.
상기 상태벡터 정보는 오퍼레이션이 생성될 시점에서의 상태값으로 클라이언트 자신의 상태벡터값과 서버로부터 수신한 다른 클라이언트의 오퍼레이션의 상태벡터값을 포함한다.
위치정보는 오퍼레이션이 적용될 텍스트의 위치에 관한 정보이고, 오퍼레이션 타입 정보는 사용자에 의해 수행된 텍스트 입력 또는 텍스트 삭제 오퍼레이션을 포함한다.
또한, 생성 시점 정보는 상기 오퍼레이션이 생성된 시점의 정보이고, 유효시간정보는 상기 오퍼레이션이 존속하는 시간을 설정한 정보이다.
오퍼레이션관리부(130)는 송수신부(120)를 통해 상기 오퍼레이션을 서버(200)로 전송한다(S110). 각 오퍼레이션에는 유효시간이 설정되어 있으며, 상기 오퍼레이션관리부(130)는 상기 유효시간이 만료된 오퍼레이션을 상기 히스토리버퍼(160)에서 제거한다.
상기 히스토리버퍼(160)에 저장된 오퍼레이션 중에서 가장 첫 번째 오퍼레이션의 유효시간이 감소되도록 설정되며, 유효시간이 만료된 오퍼레이션들이 히스토리버퍼(160)에서 제거된다.
상기 서버(200)로 전송된 오퍼레이션은 상기 서버(200)에 의해 다른 클라이언트 장치(300)로 전송되어, 서버(200)를 통해 클라이언트 장치(100)와 다른 클라이언트 장치(300)간의 오퍼레이션이 서로 공유된다.
상기 송수신부(120)를 통해 상기 서버(200)로부터 다른 클라이언트 장치(300)의 오퍼레이션을 수신한다(S120).
변환함수처리부(140)는 상기 서버(200)를 통해 수신한 다른 클라이언트 장치(200)의 오퍼레이션과 상기 히스토리버퍼(160)에 저장된 클라이언트 장치(100)의 오퍼레이션을 이용하여 변환함수 처리를 수행한다(S130).
텍스트업데이트부(150)는 상기 변환함수 처리 결과를 이용하여 텍스트를 업데이트한다(S140).
도 4는 본 발명의 실시예에 따른 메모리 절약을 지원하는 실시간 협업 편집방법에 있어서 히스토리 버퍼에서의 처리과정을 설명하는 도면이다.
상기 도 4를 참조하면, 히스토리버퍼(160)는 오퍼레이션 S1, S2와의 변환연산을 수행하기 위해 사용되며, 다른 클라이언트 오퍼레이션 S2는 (0,1)의 상태에서 생성되어있기 때문에 히스토리버퍼(160)에 저장된 C1의 생성상태와는 다르기 때문에 변환함수 수행 시 올바르지 않은 결과를 반환하게 된다.
따라서, 히스토리버퍼(160)에 저장된 모든 오퍼레이션과의 변환연산을 수행하며, 히스토리버퍼(160)의 및 서버(200)의 오퍼레이션을 업데이트하여 수행되도록 한다.
상기 히스토리버퍼(160)에서 오퍼레이션이 소멸되면, 상기 오퍼레이션관리부(130)는 상기 송수신부(120)를 통해 상기 서버(200)로 상기 소멸된 오퍼레이션에 대한 정보를 전송한다.
도 5는 본 발명의 실시예에 따른 메모리 절약을 지원하는 실시간 협업 편집방법에 있어서, 동기화처리를 하지 않는 경우의 처리과정을 설명하는 도면이고, 도 6은 본 발명의 실시예에 따른 메모리 절약을 지원하는 실시간 협업 편집방법에 있어서, 동기화처리를 수행하는 경우의 처리과정을 설명하는 도면이다.
상기 도 5에 도시된 바와 같이, 오퍼레이션 C2가 소멸 되 경우, 서버(200)로부터 오퍼레이션 S2를 입력받게 되었을 때, 변환함수는 C3와 S2로 변환연산을 수행하게 된다. 그러나 두 오퍼레이션의 상태벡터의 생성위치가 일치되지 않는 문제가 발생함으로 인해서 서버(200)의 오퍼레이션 S2는 정상적으로 수행하지 못한다.
이를 해결하기 위하여, 상기 히스토리버퍼(160)에서 오퍼레이션이 소멸되면, 상기 오퍼레이션관리부(130)는 상기 히스토리버퍼(160)에 저장된 오퍼레이션의 상태벡터정보를 변경한다.
예를 들어, 도 6에 도시된 바와 같이, 오퍼레이션 Ci가 삭제될 경우 이후의 모든 오퍼레이션 Ci +1...Cn의 상태벡터 x를 x-1로 감소하여, 서버(200)로부터 입력된 오퍼레이션 S2와의 상태벡터 생성위치를 일치시킨다.
이때 매번 오퍼레이션이 소멸 될 때마다 상태벡터의 x값을 감소시키는 것이 아니라 소멸횟수를 누적하여, 차후 연산 때 사용하여 적용하여 생성위치를 보정하는데 드는 연산시간을 줄일 수 있다.
또한 오퍼레이션이 소멸되었음을 서버(200)로 통지하여 다른 클라이언트들의 상태벡터 y를 y-1로 감소시킨다. 이와 같이 유효시간이 경과해 오퍼레이션이 소멸되어도 히스토리버퍼(160)에 남아있는 오퍼레이션들을 수정함으로써 서버의 오퍼레이션과의 변환연산이 정상적으로 수행될 수 있다.
이와 마찬가지로 상기 서버(200)로부터 상기 다른 클라이언트에서 유효시간 만료로 소멸된 오퍼레이션에 대한 정보를 수신하면, 상기 오퍼레이션관리부(130)는 상기 다른 클라이언트의 상태벡터 정보를 변경할 수 있다.
표 1은 본 발명의 실시예에 따른 메모리 절약을 지원하는 실시간 협업 편집방법과 기존의 방식의 성능을 확인하기 위한 특성을 정리한 표이다.
OT algorithms(Systems) Central transformation server Operation auto removal stop and wait Time complexity Space Complexity
Jupiter yes no no O(c*s) O(Ts*t)
Wave OT yes no yes O(clogc + slogs) O(Ts*t)
Our method yes yes no O(c+s) O(Ts)
도 7은 본 발명의 실시예에 따른 메모리 절약을 지원하는 실시간 협업 편집방법에 있어서, 타이핑 속도에 따른 오퍼레이션의 증가율을 비교한 그래프이다.
상기 도 7에 도시된 바와 같이, 클라이언트의 타자속도에 따른 오퍼레이션의 증가율을 비교한 것으로 기존의 방법의 경우 선형적으로 증가하는 반면, 본 발명의 실시예에 따른 메모리 절약을 지원하는 실시간 협업 편집방법은 유효시간에 따라 오퍼레이션이 제거됨으로 오퍼레이션의 증가율이 완만함을 알 수 있다.
도 8은 본 발명의 실시예에 따른 메모리 절약을 지원하는 실시간 협업 편집방법에 있어서, 시간에 따른 오퍼레이션의 증가율을 비교한 그래프이다. 상기 도 8에 도시된 바와 같이, 본 발명의 실시예에 따른 메모리 절약을 지원하는 실시간 협업 편집방법에서는 오퍼레이션이 유효시간에 의해 소멸됨으로써 4초 이후로는 더 이상 증가하지 않는다는 것을 알 수 있다.
도 9는 본 발명의 실시예에 따른 메모리 절약을 지원하는 실시간 협업 편집방법에 있어서, 동시에 생성된 오퍼레이션의 증가량에 따른 처리성능을 비교한 그래프이다. Wave OT는 O(clogc + slogs)의 성능을 보이는 반면 본 발명의 실시예에 따른 메모리 절약을 지원하는 실시간 협업 편집방법은 O(c+s)으로 동시에 생성된 오퍼레이션이 증가하여도 안정적인 성능을 확인할 수 있다.
도 10은 본 발명의 실시예에 따른 메모리 절약을 지원하는 실시간 협업 편집방법에 있어서, 특정 환경에서의 알고리즘간 성능을 비교한 그래프이다.
도 10은 타이핑 속도는 분당 300타와 오퍼레이션의 유효시간은 3초, 동시 오퍼레이션은 5개가 발생하는 환경에서 비교한 결과이다. Wave OT와 주피터의 경우 시간이 지날수록 클라이언트의 히스토리 버퍼의 사이즈 증가하여 결과적으로 증가된 공간 복잡도로 인해 처리시간이 많이 걸리는 것을 알 수 있다.
반면, 본 발명의 실시예에 따른 메모리 절약을 지원하는 실시간 협업 편집방법은 오퍼레이션이 일정시간 이후 소멸하게 됨으로써, 공간복잡도가 시간에 독립적인 결과를 나타낸다. 그 결과 낮은 협업작업률(8초이상 타인의 작업이 발생하지 않는 상황)과 같은 환경에서 안정적인 성능 결과를 보이는 것을 확인할 수 있다.
도 11은 본 발명의 실시예에 따른 메모리 절약을 지원하는 실시간 협업 편집방법에 있어서, 클라이언트에서 협업 편집방법을 구현한 예시이고, 도 12는 본 발명의 실시예에 따른 메모리 절약을 지원하는 실시간 협업 편집방법의 수행에 있어서 오퍼레이션 상태의 예시도이다.
도 11은 5명의 편집 참여자가 공동으로 시나리오 문서를 작성하는 시스템의 결과이다. 도 12는 제안한 시스템의 오퍼레이션의 송수신에 따른 상태변화를 시각화한 결과이다.
상기 도 12의 좌우는 서로 다른 클라이언트로 아래 myMsgs, otherMsgs, History Buffer Size의 값을 통해 현재 상태를 확인할 수 있다. 또한 왼쪽 사용자가 일방적으로 편집작업을 수행하였음에도 유효시간과 소멸 동기화에 따라 히스토리버퍼가 비워져있음을 알 수 있다.
본 발명의 실시예에 따른 메모리 절약을 지원하는 실시간 협업 편집방법은 컴퓨터로 읽을 수 있는 기록매체에 컴퓨터가 읽을 수 있는 코드로서 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록장치를 포함한다. 기록매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플로피 디스크, 광데이터 저장장치 등이 있을 수 있다. 또한 컴퓨터가 읽을 수 있는 기록매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어 분산방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다.
본 명세서와 도면에는 본 발명의 바람직한 실시예에 대하여 개시하였으며, 비록 특정 용어들이 사용되었으나, 이는 단지 본 발명의 기술 내용을 쉽게 설명하고 발명의 이해를 돕기 위한 일반적인 의미에서 사용된 것이지, 본 발명의 범위를 한정하고자 하는 것은 아니다. 여기에 개시된 실시예 외에도 본 발명의 기술적 사상에 바탕을 둔 다른 변형예들이 실시 가능하다는 것은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에게 자명한 것이다.
100: 클라이언트 장치 110: 오퍼레이션 생성부
120: 송수신부 130: 오퍼레이션 관리부
140: 변환함수처리부 150: 텍스트업데이트부
160: 히스토리버퍼 200: 서버
300: 클라이언트 장치

Claims (7)

  1. 오퍼레이션생성부가 사용자 입력을 기초로 클라이언트 오퍼레이션을 생성하여 히스토리 버퍼에 저장하는 단계;
    오퍼레이션관리부가 송수신부를 통해 상기 오퍼레이션을 서버로 전송하는 단계;
    상기 송수신부를 통해 상기 서버로부터 다른 클라이언트의 오퍼레이션을 수신하는 단계;
    변환함수처리부가 상기 수신된 다른 클라이언트의 오퍼레이션과 상기 히스토리 버퍼에 저장된 클라이언트 오퍼레이션을 이용하여 변환함수 처리를 수행하는 단계;
    텍스트업데이트부가 상기 변환함수 처리 결과를 이용하여 텍스트를 업데이트하는 단계를 포함하고,
    모든 오퍼레이션은 생성 시에 유효시간이 설정되고, 상기 오퍼레이션관리부는 상기 유효시간이 만료된 오퍼레이션을 상기 히스토리 버퍼에서 제거하며,
    상기 오퍼레이션 생성 시에, 상기 오퍼레이션은 오퍼레이션이 생성 시점의 상태벡터정보, 텍스트에 적용될 위치정보, 오퍼레이션 타입정보, 생성 시점 정보, 유효시간 정보를 포함하는 것을 특징으로 하는,
    메모리 절약을 지원하는 실시간 협업 편집방법.
  2. 삭제
  3. 제1항에 있어서,
    싱기 오퍼레이션 타입은 텍스트 입력 또는 텍스트 삭제 오퍼레이션인 것을 특징으로 하는,
    메모리 절약을 지원하는 실시간 협업 편집방법.
  4. 제1항에 있어서,
    상기 히스토리 버퍼에서 오퍼레이션이 소멸되면, 상기 오퍼레이션관리부는 상기 히스토리 버퍼에 저장된 오퍼레이션의 상태벡터정보를 변경하는 것을 특징으로 하는,
    메모리 절약을 지원하는 실시간 협업 편집방법.
  5. 제1항에 있어서,
    상기 실시간 협업 편집방법은
    상기 히스토리 버퍼에서 오퍼레이션이 소멸되면, 상기 오퍼레이션관리부는 상기 송수신부를 통해 상기 서버로 상기 소멸된 오퍼레이션에 대한 정보를 전송하는 단계를 더 포함하는,
    메모리 절약을 지원하는 실시간 협업 편집방법.
  6. 제1항에 있어서,
    상기 서버로부터 상기 다른 클라이언트에서 유효시간 만료로 소멸된 오퍼레이션에 대한 정보를 수신하면,
    상기 오퍼레이션관리부는 상기 다른 클라이언트의 상태벡터 정보를 변경하는 것을 특징으로 하는,
    메모리 절약을 지원하는 실시간 협업 편집방법.
  7. 제1항, 제3항 내지 제6항 중 어느 한 항의 방법을 실행시키기 위하여 컴퓨터 판독 가능한 기록매체에 저장된 컴퓨터 프로그램.


KR1020170163366A 2017-11-30 2017-11-30 메모리 절약을 지원하는 실시간 협업 편집방법 KR101975880B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020170163366A KR101975880B1 (ko) 2017-11-30 2017-11-30 메모리 절약을 지원하는 실시간 협업 편집방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170163366A KR101975880B1 (ko) 2017-11-30 2017-11-30 메모리 절약을 지원하는 실시간 협업 편집방법

Publications (1)

Publication Number Publication Date
KR101975880B1 true KR101975880B1 (ko) 2019-08-28

Family

ID=67775213

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170163366A KR101975880B1 (ko) 2017-11-30 2017-11-30 메모리 절약을 지원하는 실시간 협업 편집방법

Country Status (1)

Country Link
KR (1) KR101975880B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20230040565A (ko) 2021-09-16 2023-03-23 샘랩 주식회사 운영변환 기반 실시간 협업 편집 서비스 제공이 가능한 맞춤형 콘텐츠 제공 시스템 및 그 방법

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20000039196A (ko) * 1998-12-11 2000-07-05 정선종 공동작업에서의 분산 동시성 제어 방법
JP2004504645A (ja) * 1997-09-05 2004-02-12 ワイルド ファイル,インコーポレイティド データを保管し、使用し及び回復する方法、ソフトウエア及び装置
JP2008529127A (ja) * 2005-01-24 2008-07-31 サイトリックス システムズ, インコーポレイテッド ネットワークにおいて動的に生成されたオブジェクトのキャッシングを実行するためのシステムおよび方法
JP2008210110A (ja) * 2007-02-26 2008-09-11 Nec Corp 業務システム及びその実行要求管理方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004504645A (ja) * 1997-09-05 2004-02-12 ワイルド ファイル,インコーポレイティド データを保管し、使用し及び回復する方法、ソフトウエア及び装置
KR20000039196A (ko) * 1998-12-11 2000-07-05 정선종 공동작업에서의 분산 동시성 제어 방법
JP2008529127A (ja) * 2005-01-24 2008-07-31 サイトリックス システムズ, インコーポレイテッド ネットワークにおいて動的に生成されたオブジェクトのキャッシングを実行するためのシステムおよび方法
JP2008210110A (ja) * 2007-02-26 2008-09-11 Nec Corp 業務システム及びその実行要求管理方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
권오석 외 6명. '계층적 운영변환을 이용한 협업형 오픈시나리오 편집 시스템'. 2017년도 한국통신학회 하계종합학술발표회 논문집, 2017.06., pp.627-628.* *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20230040565A (ko) 2021-09-16 2023-03-23 샘랩 주식회사 운영변환 기반 실시간 협업 편집 서비스 제공이 가능한 맞춤형 콘텐츠 제공 시스템 및 그 방법

Similar Documents

Publication Publication Date Title
Li et al. Exponential stabilization of chaotic systems with delay by periodically intermittent control
JP6159338B2 (ja) 汎用サービスを通してのリアル・タイムのドキュメント・プレゼンテーション・データの同期
EP3750291B1 (en) Collaborative editing of media in a mixed computing environment
US10956667B2 (en) Operational transformations proxy for thin clients
US10051020B2 (en) Real-time distributed coauthoring via vector clock translations
US10698890B2 (en) Dual overlay query processing
US11265182B2 (en) Messaging to enforce operation serialization for consistency of a distributed data structure
US11212342B2 (en) Merge trees for collaboration
EP3230893B1 (en) Method and system for concurrent collaborative undo operations in computer application software
US10616332B2 (en) Optimized synching of metadata changes using chunked response
EP3408753B1 (en) Activity notification system
KR101975880B1 (ko) 메모리 절약을 지원하는 실시간 협업 편집방법
US8327278B2 (en) Synchronizing metadata describes user content updates and an indication of user gestures being performed within the document, and across client systems using different communication channels
US20160173543A1 (en) Method and system for concurrent collaborative undo operations in computer application software
US20070214175A1 (en) Synchronization of metadata in a distributed file system
CN110659330A (zh) 数据处理方法、装置及存储介质
Shen et al. Achieving data consistency by contextualization in web-based collaborative applications
JP2021197186A (ja) 画像処理方法、装置、電子デバイス及び可読記憶媒体
KR102471319B1 (ko) 입력 방식 편집기의 외부화된 실행
CN103491161A (zh) 交互云应用中ast部分复制和同步方法
US7992091B2 (en) Message-oriented divergence and convergence of message documents
US11651030B2 (en) Delta-based conflict-free replicated data type arrays using dot stores that map dots to dot stores
US20070204221A1 (en) Order independent batched updates on a text buffer
CN114900489B (zh) 一种消息处理方法、装置、电子设备及存储介质
CN117572989A (zh) 一种内容协作的方法、装置、设备和存储介质