CN110096682B - 基于modoc数据结构来实现文档中数据的实时协作处理方法 - Google Patents

基于modoc数据结构来实现文档中数据的实时协作处理方法 Download PDF

Info

Publication number
CN110096682B
CN110096682B CN201910308577.1A CN201910308577A CN110096682B CN 110096682 B CN110096682 B CN 110096682B CN 201910308577 A CN201910308577 A CN 201910308577A CN 110096682 B CN110096682 B CN 110096682B
Authority
CN
China
Prior art keywords
document
content
user
data
needs
Prior art date
Legal status (The legal status 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 status listed.)
Active
Application number
CN201910308577.1A
Other languages
English (en)
Other versions
CN110096682A (zh
Inventor
李子骅
万明
许海浩
陈萍圆
刘怡年
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Wuhan Chuxin Technology Co ltd
Original Assignee
Wuhan Chuxin Technology Co ltd
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 Wuhan Chuxin Technology Co ltd filed Critical Wuhan Chuxin Technology Co ltd
Priority to CN201910308577.1A priority Critical patent/CN110096682B/zh
Publication of CN110096682A publication Critical patent/CN110096682A/zh
Application granted granted Critical
Publication of CN110096682B publication Critical patent/CN110096682B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/12Use of codes for handling textual entities
    • G06F40/14Tree-structured documents
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/166Editing, e.g. inserting or deleting

Abstract

本发明公开了一种基于modoc数据结构来实现文档中数据的实时协作处理方法,当多个用户同时对文档内的数据进行修改时,通过索引变换方法,实现多个用户之间的实时协作处理。避免了多个人同时编写一篇文档时产生的冲突。本发明基于的modoc数据结构抛弃了基于JSON、Messpack、BSON等现有的需要预先解析所使用的协作方案,而完全自主实现了一套支持原地读取的数据方案,同时提供了对任意数据类型(如表格和幻灯片)的表达能力。

Description

基于modoc数据结构来实现文档中数据的实时协作处理方法
技术领域
本发明涉及文档处理领域,更具体地说,涉及一种使用modoc数据结构在多用户处理同一个文档时,支持二维结构数据,比如表格的实时协作,避免所产生的冲突。
背景技术
目前市面上最主流的适用Operational Transformation的数据结构是etherpad和quill-delta。其中,etherpad数据结构是谷歌使用的方案,quill-delta数据结构是微软、领英、Salesforce和Slack使用的方案。
然而,一方面使用Etherpad数据结构处理文本时,存在的问题是不支持非文本的数据格式。如Z:5g>1|5=2p=v*4*5+1$x这个是Etherpad的数据结构,表示的是在文档中间插入一个加粗的「x」。其中的「*5」即表示加粗。但是如果想表示插入一张图片,则没有办法表示出来。
然而,另一方面使用quill-delta数据结构处理文本数据时,其在基于JSON格式的基础上,支持存储任何类型的数据。如插入一张图片为[{action:“insert”,data:{image:“https://example.com/image.png”}}]表示在文档开头插入一个网址为「https://example.com/image.png」的图片。但是quill-delta的问题在于非文本的格式数据是无法实现协作,只能在原有的基础上进行覆盖。这意味着如果使用quill-delta数据结构来实现在文档内插入一个表格时,是不支持实现多人同时编写表格的。同时因为quill-delta基于JSON实现,所以使用前需要先将整个JSON进行解析。因为在实时协作的场景中,经常会遇到只需要修改文档的某几个字节的情况,这样如果文档很大,效率就会很低。
为了实现适用于表格、幻灯片和思维导图的Operational Transformation数据结构,本发明提出了一个新型数据结构modoc。该modoc数据结构抛弃了基于JSON、Messpack、BSON等现有的需要预先解析才能使用的方案,而完全自主实现了一套支持原地读取的数据方案。同时提供了对任意数据类型(如表格和幻灯片)的表达能力。
发明内容
本发明要解决的技术问题在于,针对上述缺陷,提供一种使用modoc数据结构实现二维结构数据的实时协作处理方法。
本发明解决其技术问题所采用的技术方案是:构造一种基于modoc数据结构来实现文档中数据的实时协作处理方法,包括以下步骤:
S1、多个用户同时对一篇文档的内容进行修改;其中,每个文档对应与一个独立的modoc数据结构;
S2、在modoc数据结构基于索引变换的原理,实现多个用户之间的实时协作处理;其中:
modoc数据结构内维护的文档内容由集合Delta表示,而集合Delta包括多个有序组成的Operator操作命令;其中:
modoc数据结构内集合Delta的结构为:XN*LD;
其中,“X”表示Operator操作命令的总数;“N”表示Operator操作命令的长度;“*”表示是用户对文档的操作处理,“L”表示Operator操作命令中包括的数据内容的长度,“D”表示Operator操作命令中包括的数据内容;
当多个用户对一个文档的内容进行修改时,在modoc数据结构内基于Delta集合中所有的Operator操作命令之间的相互索引关系进行协作处理。
进一步的,所述modoc数据结构内部维护了一个数据表;所述数据表记录的是文档的内容。
进一步的,所述Operator操作命令为用户对文档修改的实际操作命令;所述用户对文档的操作处理包括插入-insert、删除-remove和保留-retain;所述Operator操作命令中包括的数据内容为用户在操作处理情况下,在文档中修改的内容。
进一步的,每个Operator操作命令由三个部分组成,分别为动作、数据和属性;其中,动作包含插入-insert、删除-remove和修改-remain,所述动作对应于用户对文档的操作处理;数据是用户在操作处理情况下,在文档中修改的相应内容;属性由两个元素组成,分别是数据类型和数据值。
进一步的,每个Operator操作命令中,其属性所支持的数据值类型为文本、数字、对象和集合Delta;当用户在文档中插入一个表格时,通过集合Delta来表示一系列的单元格,而当用户在每个单元格中基于Operator操作命令执行相应的操作处理时,由于每个Operator操作命令的数据值包括了集合Delta,则当前每个单元格均可分别作为一个独立的文档,实现了在文档中嵌套表格的操作。
进一步的,modoc数据结构内包括若干个集合Delta,当需要读取第M个Operator操作命令时,优先选择读取前M-1个Operator操作命令的数据长度N,因此避免了在使用前将每个Operator操作命令中包括的数据内容依次读取到内存中进行解析的弊端。
进一步的,在多个用户对一个文档的内容进行修改时,通过下述算法对用户的操作进行协作处理:
当用户A需要往文档的第n行插入内容,而用户B需要往文档的第n行插入、保留或移除内容时,保留文档第n行的内容;
当用户A需要保留或删除文档的第n行内容,而用户B需要在文档的第n行插入内容时,往文档的第n行插入内容;
当用户A需要删除文档的第n行内容,而用户B需要往文档的第n行插入或删除内容时,忽略用户B的操作;
当用户A需要保留文档第n行的内容,而用户B也需要保留文档第n行的内容时,保留文档第n行的内容;
当用户A需要保留文档第n行的内容,而用户B需要删除文档第n行的内容时,删除文档第n行的内容;
实施本发明的提供一种基于modoc数据结构来实现文档中数据的实时协作处理方法,具有以下有益效果:
1、可原地读取,性能优秀。支持大文件的数据实时计算;
2、表达能力强,可以表达二维表格数据。
附图说明
下面将结合附图及实施例对本发明作进一步说明,附图中:
图1是本发明提供的在文档中实现数据的实时协作处理方法流程图。
具体实施方式
为了对本发明的技术特征、目的和效果有更加清楚的理解,现对照附图详细说明本发明的具体实施方式。
请参考图1,其为本发明提供的在文档中实现数据的实时协作处理方法流程图,本发明提供的一种实时协作处理方法,包括以下步骤:
S1、多个用户同时对一篇文档的内容进行修改;其中,每个文档对应与一个独立的modoc数据结构;所述modoc数据结构内部维护了一个数据表,所述数据表记录的是文档的内容。
S2、在modoc数据结构基于索引变换的原理,实现多个用户之间的实时协作处理。
其中,modoc数据结构内维护的数据表由集合Delta表示;其中,集合Delta包括多个有序组成的Operator操作命令,Operator操作命令为用户对文档修改的实际操作命令。
当多个用户对一个文档的内容进行修改时,在modoc数据结构内是基于不同Delta集合中的所有的Operator操作命令之间的相互索引关系进行协作处理。其中每个Operator操作命令由动作、数据和属性这三个部分组成;其中,动作包含插入-insert、删除-remove和修改-remain,所述动作对应于用户对文档的操作处理;数据是用户在操作处理情况下,在文档中修改的相应内容;属性由两个元素组成,分别是数据类型和数据值。
在本实施例中,针对用户A和用户B在实际处理同一篇文档的过程中,分别总结作了以下情况,以及每种情况对应的协作结果:
1、当用户A需要往文档的第n行插入内容,而用户B需要往文档的第n行插入、保留或移除内容时,modoc数据结构内的协作结果为保留文档第n行的内容;具体的体现形式为:insert(n)+insert(n)/retain(n)/remove(n):retain(n);
2、当用户A需要保留或删除文档的第n行内容,而用户B需要在文档的第n行插入内容时,modoc数据结构内的协作结果为往文档的第n行插入内容;具体的体现形式为:retain(n)/remove(n)+insert(n):insert(n);
3、当用户A需要删除文档的第n行内容,而用户B需要往文档的第n行插入或删除内容时,modoc数据结构内的协作结果为忽略用户B的操作;具体的体现形式为:remove(n)+remove(n)/retain(n):noop;
4、当用户A需要保留文档第n行的内容,而用户B也需要保留文档第n行的内容时,此时modoc数据结构内的协作结果为保留文档第n行的内容;具体的体现形式为:retain(n)+retain(n):retain(n);
5、当用户A需要保留文档第n行的内容,而用户B需要删除文档第n行的内容时,此时的协作结果为删除文档第n行的内容;具体的体现形式为retain(n)+remove(n):remove(n);
由于每个Operator操作命令中,其属性所支持的数据值类型为文本、数字、对象和集合Delta;当用户在文档中插入一个表格时,通过集合Delta来表示一系列的单元格,而当用户在每个单元格中基于Operator操作命令执行相应的操作处理时,由于每个Operator操作命令的数据值包括了集合Delta,则当前每个单元格均可分别作为一个独立的文档,实现了在文档中嵌套表格的操作。
本实施例在序列化时,每个Operator操作命令的表示形式为:
Operator长度 Operator类型 Operator数据长度 Operator数据类型 Operator数据
表一
而Delta则由若干个Operator操作命令直接拼接起来的。modoc数据结构内集合Delta的结构为:XN*LD;
其中,“X”表示Operator操作命令的总数;“N”表示Operator操作命令的长度;“*”表示是用户对文档的操作处理,所述操作处理包括插入-insert、删除-remove和保留-retain;“L”表示Operator操作命令中包括的数据内容的长度,“D”表示Operator操作命令中包括的数据内容;所述数据内容包括用户在操作处理情况下,在文档中修改的内容。
由于modoc数据结构内包括若干个集合Delta,当需要读取第5个Operator操作命令时,优先选择读取前4个Operator操作命令的数据长度,因此避免了在使用前将每个Operator操作命令中包括的数据内容依次读取到内存中进行解析的弊端。因为不需要预先解析,所以当修改其中一个Operator时,可以直接跳过前面的内容直接原地编辑。
上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,这些均属于本发明的保护之内。

Claims (7)

1.一种基于modoc数据结构来实现文档中数据的实时协作处理方法,其特征在于,包括以下步骤:
S1、多个用户同时对一篇文档的内容进行修改;其中,每个文档对应与一个独立的modoc数据结构;
S2、在modoc数据结构基于索引变换的原理,实现多个用户之间的实时协作处理;其中:
modoc数据结构内维护的文档内容由集合Delta表示,而集合Delta包括多个有序组成的Operator操作命令;其中:
modoc数据结构内集合Delta的结构为:XN*LD;
其中,“X”表示Operator操作命令的总数;“N”表示Operator操作命令的长度;“*”表示是用户对文档的操作处理,“L”表示Operator操作命令中包括的数据内容的长度,“D”表示Operator操作命令中包括的数据内容;
当多个用户对一个文档的内容进行修改时,在modoc数据结构内基于Delta集合中所有的Operator操作命令之间的相互索引关系进行协作处理。
2.根据权利要求1所述的实时协作处理方法,其特征在于,所述modoc数据结构内部维护了一个数据表;所述数据表记录的是文档的内容。
3.根据权利要求1所述的实时协作处理方法,其特征在于,所述Operator操作命令为用户对文档修改的实际操作命令;所述用户对文档的操作处理包括插入-insert、删除-remove和保留-retain;所述Operator操作命令中包括的数据内容为用户在操作处理情况下,在文档中修改的内容。
4.根据权利要求3所述的实时协作处理方法,其特征在于,每个Operator操作命令由三个部分组成,分别为动作、数据和属性;其中,动作包含插入-insert、删除-remove和修改-remain,所述动作对应于用户对文档的操作处理;数据是用户在操作处理情况下,在文档中修改的相应内容;属性由两个元素组成,分别是数据类型和数据值。
5.根据权利要求4所述的实时协作处理方法,其特征在于,每个Operator操作命令中,其属性所支持的数据值类型为文本、数字、对象和集合Delta;当用户在文档中插入一个表格时,通过集合Delta来表示一系列的单元格,而当用户在每个单元格中基于Operator操作命令执行相应的操作处理时,由于每个Operator操作命令的数据值包括了集合Delta,则当前每个单元格均可分别作为一个独立的文档,实现了在文档中嵌套表格的操作。
6.根据权利要求5所述的实时协作处理方法,其特征在于,modoc数据结构内包括若干个集合Delta,当需要读取第M个Operator操作命令时,优先选择读取前M-1个Operator操作命令的数据长度N,因此避免了在使用前将每个Operator操作命令中包括的数据内容依次读取到内存中进行解析的弊端
7.根据权利要求1所述的实时协作处理方法,其特征在于,在多个用户对一个文档的内容进行修改时,通过下述算法对用户的操作进行协作处理:
当用户A需要往文档的第n行插入内容,而用户B需要往文档的第n行插入、保留或移除内容时,保留文档第n行的内容;
当用户A需要保留或删除文档的第n行内容,而用户B需要在文档的第n行插入内容时,往文档的第n行插入内容;
当用户A需要删除文档的第n行内容,而用户B需要往文档的第n行插入或删除内容时,忽略用户B的操作;
当用户A需要保留文档第n行的内容,而用户B也需要保留文档第n行的内容时,保留文档第n行的内容;
当用户A需要保留文档第n行的内容,而用户B需要删除文档第n行的内容时,删除文档第n行的内容;
上述算法,利用了Operator操作命令之间的相互索引关系,对用户的操作进行有效的协调。
CN201910308577.1A 2019-04-17 2019-04-17 基于modoc数据结构来实现文档中数据的实时协作处理方法 Active CN110096682B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910308577.1A CN110096682B (zh) 2019-04-17 2019-04-17 基于modoc数据结构来实现文档中数据的实时协作处理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910308577.1A CN110096682B (zh) 2019-04-17 2019-04-17 基于modoc数据结构来实现文档中数据的实时协作处理方法

Publications (2)

Publication Number Publication Date
CN110096682A CN110096682A (zh) 2019-08-06
CN110096682B true CN110096682B (zh) 2023-03-24

Family

ID=67445070

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910308577.1A Active CN110096682B (zh) 2019-04-17 2019-04-17 基于modoc数据结构来实现文档中数据的实时协作处理方法

Country Status (1)

Country Link
CN (1) CN110096682B (zh)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101976232A (zh) * 2010-09-19 2011-02-16 深圳市万兴软件有限公司 一种识别文档中数据表格的方法及装置
CN102262620A (zh) * 2011-08-04 2011-11-30 无锡永中软件有限公司 一种文档协作方法
US8434002B1 (en) * 2011-10-17 2013-04-30 Google Inc. Systems and methods for collaborative editing of elements in a presentation document

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9684646B2 (en) * 2014-08-05 2017-06-20 Apple Inc. Reference representation and transformation in collaborative documents

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101976232A (zh) * 2010-09-19 2011-02-16 深圳市万兴软件有限公司 一种识别文档中数据表格的方法及装置
CN102262620A (zh) * 2011-08-04 2011-11-30 无锡永中软件有限公司 一种文档协作方法
US8434002B1 (en) * 2011-10-17 2013-04-30 Google Inc. Systems and methods for collaborative editing of elements in a presentation document

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
文档协同处理系统的设计与实现;高瑜蔚等;《北京信息科技大学学报(自然科学版)》;20130215(第01期);全文 *
表格文档模型中实时编辑意愿维护及一致性维护研究;高丽萍等;《小型微型计算机系统》;20161015(第10期);全文 *

Also Published As

Publication number Publication date
CN110096682A (zh) 2019-08-06

Similar Documents

Publication Publication Date Title
CN102222071B (zh) 数据同步处理方法、设备及系统
CN107315533A (zh) 一种数据存储方法及装置
CN106383666B (zh) 一种数据存储方法及装置
CN106156302B (zh) 一种大字段数据的处理方法及装置
CN110096682B (zh) 基于modoc数据结构来实现文档中数据的实时协作处理方法
JP2686758B2 (ja) 図形編集装置
CN108646987A (zh) 一种文件卷的管理方法、装置、存储介质及终端
CN108846039B (zh) 数据流向确定方法及装置
CN102270179B (zh) 用于cad系统的基于片元的数据存储和处理方法及其系统
CN111356094B (zh) 一种sim短消息处理方法及装置
CN106874486A (zh) 一种文件夹名称显示的方法及移动终端
CN104268013B (zh) 一种快速的全系统模拟器确定性回放方法
CN112988866A (zh) 一种导出excel文件的方法、装置、电子设备及存储介质
CN111949613A (zh) 一种json配置文件的编辑保存方法
CN110019507B (zh) 数据同步的方法及装置
CN112732816B (zh) 一种数据导出方法和系统
CN117193750B (zh) 一种基于CraphQL的全栈低代码平台实现方法
CN115442388B (zh) 用于分布式存储集群利用率100%的扩容方法、装置及系统
CN110727888B (zh) 页面处理方法、装置、计算机存储介质及处理器
CN116954622B (zh) 抽象语法树和源代码坐标的关联方法、电子设备和介质
CN107943763A (zh) 一种大文本数据处理方法
CN109947721A (zh) 一种小文件处理方法和装置
CN115460555A (zh) 一种5g消息应答处理方法及装置
CN117787251A (zh) 多格式文件组合或合并阅读展开excel隐藏内容的方法
CN110147349A (zh) 一种文件数据库管理方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CP03 Change of name, title or address

Address after: 430000, B0701, Comprehensive Building, Wuhan Zhongdi Science and Technology Park, No. 598 Guanshan Avenue, Donghu New Technology Development Zone, Wuhan City, Hubei Province (Wuhan Area of Free Trade Zone)

Patentee after: Wuhan Chuxin Technology Co.,Ltd.

Country or region after: China

Address before: 430000 Huazhong Shuguang Software Park, No.1 Guanshan 1st Road, Donghu Development Zone, Wuhan City, Hubei Province

Patentee before: Wuhan Chuxin Technology Co.,Ltd.

Country or region before: China

CP03 Change of name, title or address