帳號:guest(3.23.102.70)          離開系統
字體大小: 字級放大   字級縮小   預設字形  

詳目顯示

以作者查詢圖書館館藏以作者查詢臺灣博碩士論文系統以作者查詢全國書目
作者(中文):余俊篁
作者(外文):Yu, Chun-Huang
論文名稱(中文):協同圖形編輯的集中式演算法
論文名稱(外文):A Centralized Algorithm for Collaborative Diagram Editing
指導教授(中文):周百祥
指導教授(外文):Chou, Pai H.
口試委員(中文):韓永楷
游創文
謝孫源
口試委員(外文):Hon, Wing Kai
You, Chuang-Wen
Hsieh, Sun-Yuan
學位類別:碩士
校院名稱:國立清華大學
系所名稱:資訊工程學系
學號:109062622
出版年(民國):111
畢業學年度:110
語文別:英文
論文頁數:64
中文關鍵詞:協同編輯演算法協同圖形編輯演算法集中式協同編輯演算法協同編輯方塊圖圖形編輯器
外文關鍵詞:algorithm for collaborative editingalgorithm for collaborative diagram editingcentralized algorithm for collaborative editingcollaborative editingblock diagramdiagram editor
相關次數:
  • 推薦推薦:0
  • 點閱點閱:141
  • 評分評分:*****
  • 下載下載:0
  • 收藏收藏:0
本論文提出一個透過中心伺服器協調並且盡可能保留使用者操作意圖的圖形協作演算法。 這樣的編輯系統為至今許多網路應用程式的重要部分,然而此問題相當具有挑戰性。嚴格同步雖然簡單,但可能因為嚴重的延遲使使用者體驗相當不佳。另一方面,完全不同步意味著違反使用者意圖的風險可能發生而導致意料之外的結果。常見的協作編輯系統相當複雜而不易實作正確。
為了解決此問題,我們提出一個演算法以及相關的資料結構用來追蹤且合併被共同編輯的圖的不同版本。我們的同步-非同步混合方案在處理拓墣變動的操作時會與伺服器同步,然而執行屬性變動的操作時則是非同步地執行。雖然同步的拓墣操作可能被認為成本較昂貴,但它減輕了用戶端複雜的版本追蹤負擔,此責任只需交給伺服器實作。非同步地處理屬性僅需在用戶端進行簡單的簿記,而伺服器只需要通知用戶端有無衝突以及來自其他用戶端的更新。所有的用戶端都可以實現最終的一致性,而版本追蹤的複雜性則受到超時的限制,超時會強制刷新。分析顯示我們的整體架構在圖形協作編輯器的實作複雜度以及響應性之間達到良好的平衡。
This thesis proposes an algorithm for collaborative editing of diagrams when coordinated by a central server while preserving user intentions in a best effort. Such an editing system is a common part of many web apps today but can be challenging. Strict synchronizations may be easy but suffer poor user experience due to unnecessarily long latency. On the other hand, no synchronization necessarily means hazards that violate user intention and may even yield surprising results. Common collaborative editing algorithms are excessively complex to implement correctly.

To address this problem, we propose an algorithm and data structures for tracking and merging versions of the edited diagram. Our hybrid synchronous-asynchronous scheme handles topology-changing operations synchronously with the server but other attribute-editing operations asynchronously. Although the synchronous topology operations may be considered more expensive, it alleviates the client from complex version tracking, which needs to be implemented only on the server. Handling attributes asynchronously requires simple bookkeeping on the client while the server only needs to notify the client of either conflict or update from other clients. All clients can achieve eventual consistency while the complexity of version tracking is limited by timeout, which forces a refresh. Analysis reveals that our overall architecture strikes a good balance between low implementation complexity and responsiveness for a collaborative diagram editor.

1 Introduction 1
1.1 Motivation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2 Contributions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.3 Thesis Organization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
2 Related Work 4
2.1 Distributed Collaborative Editing . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.1.1 Operational Transformation . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.1.2 Conflict-Free Replicated Data Types . . . . . . . . . . . . . . . . . . . . . . 6
2.2 Collaborative Graphics Editing Systems . . . . . . . . . . . . . . . . . . . . . . . . 7
2.3 Distributed Simulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
3 Problem Statement 9
3.1 Terminology . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
3.1.1 Blocks and Ports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
3.1.2 Message Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
3.1.3 Causal Ordering and Conflicts . . . . . . . . . . . . . . . . . . . . . . . . . 10
3.2 Conflict Resolution Strategies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
3.2.1 Strategies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
3.2.2 Illustrative Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
3.3 Input . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
3.3.1 Port Graph . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
3.3.2 Graph Operations and Application-Dependent Operations . . . . . . . . . . 17
3.3.3 Receive Order of Request, Response, and Notification . . . . . . . . . . . . 18
3.3.4 Queues of Operations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
3.4 Output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
3.4.1 Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
3.4.2 Client . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
4 Technical Approach 21
4.1 Log Data Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
4.2 Partially Persistent Graph Data Structure . . . . . . . . . . . . . . . . . . . . . . . . 22
4.2.1 Graph Representation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
4.2.2 Conversion to Partially Persistent Graphs . . . . . . . . . . . . . . . . . . . 25
4.3 Other Data Structures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
4.3.1 Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
4.3.2 Client . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
4.4 Algorithms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
4.4.1 Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
4.4.2 Client . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
5 System Overview and Implementation 38
5.1 System Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
5.1.1 Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
5.1.2 Client . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
5.2 Implementation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
5.2.1 Graph Operations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
5.2.2 Web Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
6 Evaluation 44
6.1 Experiments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
6.1.1 Experimental Setup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
6.1.2 Metrics of Evaluation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
6.2 Results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
6.2.1 Average Number of Rollbacks . . . . . . . . . . . . . . . . . . . . . . . . . 45
6.2.2 Average Number of Failed Operations . . . . . . . . . . . . . . . . . . . . . 45
7 Conclusions and Future Work 49
7.1 Conclusions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
7.2 Future Work . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
Appendix: Pseudocode for Partially Persistent Graph 53
[1] Clarence A. Ellis and Simon J. Gibbs. Concurrency control in groupware systems. In Proceedings
of the 1989 ACM SIGMOD international conference on Management of data, pages 399–407,
1989.
[2] Matthias Ressel, Doris Nitsche-Ruhland, and Rul Gunzenhäuser. An integrating, transformationoriented
approach to concurrency control and undo in group editors. In Proceedings of the 1996
ACM conference on Computer supported cooperative work, pages 288–297, 1996.
[3] Chengzheng Sun, Xiaohua Jia, Yanchun Zhang, Yun Yang, and David Chen. Achieving convergence,
causality preservation, and intention preservation in real-time cooperative editing systems.
ACM Transactions on Computer-Human Interaction (TOCHI), 5(1):63–108, 1998.
[4] David A. Nichols, Pavel Curtis, Michael Dixon, and John Lamping. High-latency, low-bandwidth
windowing in the Jupiter collaboration system. In Proceedings of the 8th annual ACMsymposium
on User interface and software technology, pages 111–120, 1995.
[5] Chengzheng Sun and Clarence Ellis. Operational transformation in real-time group editors:
issues, algorithms, and achievements. In Proceedings of the 1998 ACM conference on Computer
supported cooperative work, pages 59–68, 1998.
[6] Marc Shapiro, Nuno Preguiça, Carlos Baquero, and Marek Zawirski. Conflict-free replicated
data types. In Xavier Défago, Franck Petit, and Vincent Villain, editors, Stabilization, Safety,
and Security of Distributed Systems, pages 386–400, Berlin, Heidelberg, 2011. Springer Berlin
Heidelberg.
[7] Nuno Preguiça, Joan Manuel Marquès, Marc Shapiro, and Mihai Letia. Acommutative replicated
data type for cooperative editing. In 2009 29th IEEE International Conference on Distributed
Computing Systems, pages 395–403. IEEE, 2009.
[8] Marc Shapiro, Nuno Preguiça, Carlos Baquero, and Marek Zawirski. A comprehensive study of
convergent and commutative replicated data types. PhD thesis, Inria–Centre Paris-Rocquencourt;
INRIA, 2011.
[9] Chengzheng Sun and David Chen. Consistency maintenance in real-time collaborative graphics
editing systems. ACM Transactions on Computer-Human Interaction (TOCHI), 9(1):1–41, 2002.
[10] Richard M. Fujimoto. Parallel and distributed simulation systems. In Proceeding of the 2001
Winter Simulation Conference (Cat. No. 01CH37304), volume 1, pages 147–157. IEEE, 2001.
[11] Kalyan S. Perumalla. Parallel and distributed simulation: traditional techniques and recent
advances. In 2006 Winter Simulation Conference, pages 84–95. IEEE Computer Society, 2006.
[12] Leslie Lamport. Time, clocks, and the ordering of events in a distributed system. In Concurrency:
the Works of Leslie Lamport, pages 179–196. 2019.
[13] James R. Driscoll, Neil Sarnak, Daniel D. Sleator, and Robert E. Tarjan. Making data structures
persistent. Journal of computer and system sciences, 38(1):86–124, 1989.
[14] Koa - next generation web framework for node.js. https://koajs.com/. Accessed: 2022-07-21.
[15] JointJS: Diagramming framework for advanced applications. https://www.jointjs.com/. Accessed:
2022-07-21.
[16] React - a JavaScript library for building user interfaces. https://reactjs.org/. Accessed: 2022-
07-21.
[17] RxJS. https://rxjs.dev/. Accessed: 2022-07-21.
 
 
 
 
第一頁 上一頁 下一頁 最後一頁 top
* *