CN108628892B - 有序数据存储的方法、装置、电子设备和可读存储介质 - Google Patents

有序数据存储的方法、装置、电子设备和可读存储介质 Download PDF

Info

Publication number
CN108628892B
CN108628892B CN201710168813.5A CN201710168813A CN108628892B CN 108628892 B CN108628892 B CN 108628892B CN 201710168813 A CN201710168813 A CN 201710168813A CN 108628892 B CN108628892 B CN 108628892B
Authority
CN
China
Prior art keywords
data
sequence
bit
sequence bit
database
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
CN201710168813.5A
Other languages
English (en)
Other versions
CN108628892A (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.)
Beijing Jingdong Century Trading Co Ltd
Beijing Jingdong Shangke Information Technology Co Ltd
Original Assignee
Beijing Jingdong Century Trading Co Ltd
Beijing Jingdong Shangke Information 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 Beijing Jingdong Century Trading Co Ltd, Beijing Jingdong Shangke Information Technology Co Ltd filed Critical Beijing Jingdong Century Trading Co Ltd
Priority to CN201710168813.5A priority Critical patent/CN108628892B/zh
Publication of CN108628892A publication Critical patent/CN108628892A/zh
Application granted granted Critical
Publication of CN108628892B publication Critical patent/CN108628892B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明提供一种有序数据存储的方法、装置、电子设备和可读存储介质,既保证了数据的顺序性,又降低了数据重排的消耗,并且保持了数据存储的高效性。本发明的有序数据存储的方法包括:接收数据插入请求,所述请求包括所述数据的插入位置;根据所述插入位置确定所述数据存储的顺序位;根据所述顺序位将所述数据存储到数据库中。

Description

有序数据存储的方法、装置、电子设备和可读存储介质
技术领域
本发明涉及计算机和计算机软件技术领域,特别地涉及一种有序数据存储的方法、装置、电子设备和可读存储介质。
背景技术
数据库中的数据记录都是按照集合的方式来进行存储的,然而一个数据记录集中的数据记录往往是无序的,或者即使是按照数据记录存入数据库的先后顺序进行排序,也不能保证所有数据记录的顺序不再发生改变。然而,在实际应用的某些场合下,我们需要知道数据库中存储的数据记录的顺序,以便于更好地对数据进行管理和进一步地分析及处理。
在实际应用中,为了便于获取数据库中存储的数据记录的顺序,一般以类似于列表这种有序的数据集合进行数据记录存储。通常有以下两种方案:
(1)链表记录法:如表1所示,在表中增加一个字段“相邻位prev”来记录前一个数据的位置,为方便表示,可以使用主键来填充prev的值。
表1
主键 数据 相邻位prev
1 A 0
2 B 1
3 C 2
这种方法原理简单并且行之有效,在已有的有序数据记录之间插入一条新的数据记录时,只需要修改相邻数据记录的“相邻位prev”的值即可,其余数据记录的“相邻位prev”都保持不变。如表2所示,当需要在数据记录“B”之前插入数据记录“D”时,只需要将相邻数据记录“B”的“相邻位prev”的值由原来的“1”修改为“4”即可,其中“4”为新添加的数据记录“D”的主键。
表2
主键 数据 相邻位prev
1 A 0
4 D 1
2 B 4(新添加的记录)
3 C 2
(2)顺序记录法:如表3所示,通过在表中增加一个字段“顺序位”来表示各条数据记录的顺序,在对数据集进行存入、获取、排序等操作时,都根据“顺序位”来完成,从而保证数据应有的正确顺序。
表3
数据 顺序位
A 1
B 2
C 3
这种方法原理非常简单,也直接有效。当想要在已有的有序数据记录之间插入一条新的数据记录时,通过计算所有“顺序位”的值,即重新排序所有数据记录来保证插入后的正确顺序。如表4所示,当在数据记录“A”和数据记录“B”之间插入数据记录“D”时,需要重新排序数据集中的所有数据记录,数据记录“A”的“顺序位”的值1不变,新增的数据记录“D”的“顺序位”的值为数据记录“B”的“顺序位”的旧值2,数据记录“B”及其后面的数据记录“C”的“顺序位”的值重新计算后均增加1。
表4
数据 顺序位(旧值) 顺序位(新值)
A 1 1
D 2
B 2 3(重新计算)
C 3 4(重新计算)
在实现本发明的过程中,发明人发现现有技术存在如下技术问题:
1、对于链表记录法,当我们需要对数据进行排序的时候,就要按照链表的数据结构来依次遍历每个节点,会带来巨大的资源消耗;
2、对于顺序记录法,如果表中的数据记录很多,那么每插入一条数据记录,就会带来巨大的重排消耗。
发明内容
有鉴于此,本发明提供一种有序数据存储的方法、装置、电子设备和可读存储介质,能够既保证了数据的顺序性,又降低了数据重排的消耗,并且保持了数据存储的高效性。
为实现上述目的,根据本发明的一个方面,提供了一种有序数据存储的方法。
一种有序数据存储的方法,包括:接收数据插入请求,所述请求包括所述数据的插入位置;根据所述插入位置确定所述数据存储的顺序位;根据所述顺序位将所述数据存储到数据库中。
可选地,所述插入位置通过所述数据插入数据库之后的前一个数据和后一个数据来描述。
可选地,根据所述插入位置确定所述数据的顺序位包括:根据所述插入位置分别获取所述前一个数据的顺序位和所述后一个数据的顺序位;获取所述数据库的区间值,所述区间值表示在将有序数据存储至数据库且未插入数据的情况下,两个相邻数据的顺序位之差;根据所述前一个数据的顺序位和所述后一个数据的顺序位,以及所述区间值计算所述数据的顺序位。
可选地,若所述前一个数据和所述后一个数据都不为空,则所述数据的顺序位为所述后一个数据的顺序位与所述前一个数据的顺序位的均值;若所述后一个数据为空,则所述数据的顺序位为所述数据库当前最后一个数据的顺序位与所述区间值之和;若所述前一个数据为空,则所述数据的顺序位为所述数据库当前第一个数据的顺序位与所述区间值之差。
可选地,所述区间值根据两条数据之间的数据插入次数和限定的数据精度来估算。
可选地,还包括:若所述顺序位出现重复,则对所述顺序位进行重排。
可选地,对所述顺序位进行重排包括:根据所述顺序位,按升序依次从所述数据库中读取所有数据;对读取的所述数据重新计算顺序位,所述数据的顺序位为所述上一个数据的顺序位与区间值之和;根据重新计算后的顺序位,将所述数据存储到所述数据库中。
根据本发明的另一方面,提供了一种有序数据存储的装置。
一种有序数据存储的装置,包括:请求接收模块,用于接收数据插入请求,所述请求包括所述数据的插入位置;顺序位确定模块,用于根据所述插入位置确定所述数据存储的顺序位;数据存储模块,用于根据所述顺序位将所述数据存储到数据库中。
可选地,所述插入位置通过所述数据插入数据库之后的前一个数据和后一个数据来描述。
可选地,所述顺序位确定模块还用于:根据所述插入位置分别获取所述前一个数据的顺序位和所述后一个数据的顺序位;获取所述数据库的区间值,所述区间值表示在将有序数据存储至数据库且未插入数据的情况下,两个相邻数据的顺序位之差;根据所述前一个数据的顺序位和所述后一个数据的顺序位,以及所述区间值计算所述数据的顺序位。
可选地,若所述前一个数据和所述后一个数据都不为空,则所述数据的顺序位为所述后一个数据的顺序位与所述前一个数据的顺序位的均值;若所述后一个数据为空,则所述数据的顺序位为所述数据库当前最后一个数据的顺序位与所述区间值之和;若所述前一个数据为空,则所述数据的顺序位为所述数据库当前第一个数据的顺序位与所述区间值之差。
可选地,所述区间值根据两条数据之间的数据插入次数和限定的数据精度来估算。
可选地,还包括顺序位重排模块,用于:若所述顺序位出现重复,则对所述顺序位进行重排。
可选地,所述顺序位重排模块还用于:根据所述顺序位,按升序依次从所述数据库中读取所有数据;对读取的所述数据重新计算顺序位,所述数据的顺序位为所述上一个数据的顺序位与区间值之和;根据重新计算后的顺序位,将所述数据存储到所述数据库中。
根据本发明的又一方面,提供了一种有序数据存储的电子设备。
一种有序数据存储的电子设备,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现本发明所提供的有序数据存储的方法。
根据本发明的再一方面,提供了一种计算机可读介质。
一种计算机可读介质,其上存储有计算机程序,所述程序被处理器执行时实现本发明所提供的有序数据存储的方法。
上述发明中的一个实施例具有如下优点或有益效果:
根据数据的插入位置确定该数据存储的顺序位,并根据顺序位将插入数据存储到数据库中,可以解决数据存储的顺序性问题和每次进行数据插入时都需要进行所有数据重排的问题,从而既保证了数据的顺序性,又降低了数据重排的消耗,并且保持了数据存储的高效性。另外,通过合理估算区间值,并将相邻的有序数据的顺序位根据区间值设置为不连续的有序实数,可以保证在进行数据插入的过程中不会出现顺序位重复的情况,从而既保持了在已有的有序数据记录中新插入数据操作的高效性,又保持了排序操作的高效性。
上述的非惯用的可选方式所具有的进一步效果将在下文中结合具体实施方式加以说明。
附图说明
附图用于更好地理解本发明,不构成对本发明的不当限定。其中:
图1是根据本发明实施例的有序数据存储的方法的主要步骤示意图;
图2是根据本发明实施例的有序数据存储的装置的主要模块示意图;
图3是根据本发明实施例的有序数据存储的方法的电子设备的硬件结构示意图。
具体实施方式
以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
根据现有技术的描述可以看出,现有的技术方案虽然能够将有序数据集合存储至数据库,但是当需要在已有的有序数据记录中新插入一条数据记录时,不能同时满足数据插入操作的高效性和和对所有数据记录进行排序操作的高效性。
据此,本发明的实施例提供了一种将有序数据存储至数据库的方法,通过对现有技术方案中的“顺序记录法”进行改进,将“顺序位”设置为不连续的有序实数,即:为了满足数据插入操作的高效性和减少数据重排的消耗,根据两个数据之间进行数据插入的次数和数据精度要求估算一个区间值,并将相邻的有序数据的顺序位间隔一个区间值进行存储,如表5所示的表table。其中,该示例中的区间值设置为128。
表5
Data 顺序位
A 1
B 129
C 257
采用本发明实施例所提供的技术方案后,当需要对数据进行排序取出时,只需要执行以下SQL即可:
“SELECT[column1],[column2],…FROM[table]ORDER BY[顺序位]DESC|ASC”。从而保证了数据存储和获取的顺序性。
上述的SQL语句中,“column1”、“column2”指的是要获取的数据值,“table”为查找数据的表名。
下面详细介绍本发明实施例的技术方案的实现过程。
图1是根据本发明实施例的有序数据存储的方法的主要步骤示意图。如图1所示,本发明实施例的有序数据存储的方法主要包括如下的步骤S11至步骤S13。
步骤S11:接收数据插入请求,请求包括数据的插入位置。
其中,数据的插入位置通过该数据插入数据库之后的前一个数据和后一个数据来描述。例如:接收到的数据插入请求中包含的数据D的插入位置为:数据A之后和数据B之前,那么,数据D在插入数据库之后,其对应的前一个数据为数据A,后一个数据为数据B。本领域技术人员可以知道,此处述及的表示数据的顺序的“前”和“后”,仅为了理解和表述方便,在实际应用中,可以更换为其他说法,例如:“上一个数据”、“下一个数据”等可以表述数据位置关系的说法。
步骤S12:根据插入位置确定数据存储的顺序位。
根据本发明的实施例的技术方案,步骤S12根据插入位置确定数据的顺序位可以具体按照如下步骤执行:
步骤S121:根据插入位置分别获取前一个数据的顺序位和后一个数据的顺序位;
步骤S122:获取数据库的区间值,区间值表示在将有序数据存储至数据库且未插入数据的情况下,两个相邻数据的顺序位之差;
步骤S123:根据前一个数据的顺序位和后一个数据的顺序位,以及区间值计算该数据的顺序位。
如上所述的步骤S121和步骤S122,在具体执行时,没有固定的先后顺序,可以同时执行,也可以分别先后执行,均能达到本发明实施例的效果。
其中,区间值根据两条数据之间的数据插入次数和限定的数据精度来估算。并且,区间值的估算是在所有有序数据存储到数据库之前进行的。当数据按序存储到数据库中,且未进行任何数据的插入操作时,某一个数据的顺序位应为该数据前一个数据的顺序位与区间值之和,亦即:数据的顺序位=前一个数据的顺序位+区间值。
由于在已有的有序数据之间新增数据会导致两个数据的区间越来越小,而且通常情况下数据库对列值有精度的限制,所以在固定的两条数据之间进行大量的数据插入会导致最终计算出来的顺序位重复,因此,区间值需要根据具体的业务场景来估算一个合理的值。
在本发明的实施例中,假定数据库中存储顺序位的数据类型为整型,并且已经存在两条连续的数据记录A和B,当需要在A后面,B之面前插入新数据,并且插入数据的最大次数为n时,那么区间值的一种可取结果例如为2^n。
其中,区间值的估算原则是,在有限的插入次数以及限定的数据精度约束下,计算出来的顺序位不会发生重复。
本领域技术人员应该明白的是,存储顺序位的数据类型不局限于整型,数据库常用的数据类型,如:字节Byte、整数Integer、长整型Long、单精度浮点Single、双精度浮点Double等,均可以采用本发明实施例所描述的方法来估算区间值,只要遵循前面所述的区间值的估算原则即可。
根据本发明实施例的技术方案,步骤S123在计算该数据的顺序位时,可以根据数据的插入位置不同,具体包括以下几种情况。
情况1:若前一个数据和后一个数据都不为空,则该数据的顺序位为后一个数据的顺序位与前一个数据的顺序位的均值。其中,前一个数据和后一个数据都不为空,指的是在已有的顺序数据记录之间插入新的数据,此时,插入数据的顺序位满足:
顺序位=(后一个数据的顺序位+前一个数据的顺序位)/2。
例如:如表5所示的表table,在数据A之后、数据B之前插入数据D,那么数据D的顺序位=(129+1)/2=65。
情况2:若后一个数据为空,则该数据的顺序位为数据库当前最后一个数据的顺序位与区间值之和。其中,后一个数据为空指的是在已有的顺序数据记录的末尾插入新的数据,此时,插入数据的顺序位满足:
顺序位=当前最后一个数据的顺序位+区间值。
例如:如表5所示的表table,在数据C之后,新增数据E,那么数据E的顺序位=257+128=385。
情况3:若前一个数据为空,则该数据的顺序位为数据库当前第一个数据的顺序位与区间值之差。其中,前一个数据为空指的是在已有的顺序数据记录的第一位数据前面插入新的数据,此时,插入数据的顺序位满足:
顺序位=当前第一个数据的顺序位-区间值。
本发明的实施例中,为了理解方便,可以认为有顺序即包含了方向性。一般地,以第一个数据为起点,往右为顺序插入,顺序位递增;往左即为逆序插入,顺序位递减。
例如:如表5所示的表table,在数据A之前,新增数据F,那么数据F的顺序位=1-128=-127。
本领域技术人员可以理解的是,若数据的顺序位在存储时,限定为非负数,那么也可以认为第一个数据的顺序位为1,第一个数据之前没有数据,其对应的顺序位为0,此时,在第一个数据之前插入数据时,顺序位即为:(1+0)/2=0.5。在本发明的实施例中,以插入的数据F的顺序位为-127为例来介绍有序数据存储的方法。
步骤S13:根据顺序位将数据存储到数据库中。
根据步骤S12计算得到了新插入数据对应的顺序位后,可通过执行SQL存储语句将数据插入到数据库中。以将数据D插入到如表5所示的表table中数据A之后、数据B之前为例,根据数据D对应的顺序位65,其对应的SQL语句如下:
“INSERT INTO[table](数据,顺序位)values(D,65)”。
根据步骤S12中介绍的3种情况,在插入数据D、数据E和数据F后,得到的表table如表6所示。
表6
Data 顺序位(旧值) 顺序位(新值)
F -127
A 1 1
D 65
B 129 129
C 257 257
E 385
由表6可以看出,数据A、数据B和数据C的顺序位均没有重新计算。由此可见,本发明实施例的技术方案可以高效地将有序数据存储至数据库,并且降低了数据插入后重新排序的消耗。
另外,本发明实施例中,在将有序数据存储至数据库之后,若顺序位出现重复,则对顺序位进行重排。一般地,若区间值估算不合理,则可能导致顺序位发生重复,此时就需要对顺序位进行重排。
本发明的实施例中,是通过在固定时间段内定期去检查数据库当中的数据的顺序位是否有重复数据,当出现重复数据时触发顺序位的重排操作。
本发明实施例中,对顺序位进行重排的过程可以按照下述的步骤具体执行:
步骤S141:根据顺序位,按升序依次从数据库中读取所有数据;
步骤S142:对读取的数据重新计算顺序位,数据的顺序位为上一个数据的顺序位与区间值之和;
步骤S143:根据重新计算后的顺序位,将数据存储到数据库中。
下面举例介绍本发明实施例的顺序位重排的过程。例如,商品信息表product的数据存储内容如表7所示。
表7
商品名称 商品价格 顺序位
商品A 3200 1
商品B 3300 1.5
商品C 6600 1.5
商品D 7000 2
由于数据精度设置为保留小数点后一位,因此出现了商品B和商品C的顺序位发生了重复。此时,就需要对数据的顺序位进行重排,并且,一旦出现顺序位重复的情况,那么对所有数据都需要进行顺序位的重排。
在进行顺序位重排时,首先按升序从数据库中依次读取所有数据,对应的SQL语句为:
“select商品名称,顺序位from product order by顺序位ASC”;
然后,从第一个数据开始(第一个数据的顺序位设为1),根据公式:新顺序位=前一个数据的顺序位+区间值,依次更新所有数据的顺序位;
最后,将所有数据根据对应的更新后的顺序位,存储到数据库中。
假设本实施例中数据存储的区间值为1。那么,进行顺序位重排后的商品信息表product的数据存储内容如表8所示。
表8
商品名称 商品价格 (新)顺序位
商品A 3200 1
商品B 3300 2
商品C 6600 3
商品D 7000 4
根据以上所述的步骤S11至步骤S13,即可实现将有序数据存储至数据库,并且在进行数据插入时,无需进行顺序位的重排,从而实现了数据存储的高性能,并减少了数据重排的消耗。
图2是根据本发明实施例的有序数据存储的装置的主要模块示意图。如图2所示,本发明实施例的有序数据存储的装置20主要包括请求接收模块21、顺序位确定模块22和数据存储模块23。
请求接收模块21用于接收数据插入请求,所述请求包括所述数据的插入位置;顺序位确定模块22用于根据所述插入位置确定所述数据存储的顺序位;数据存储模块23用于根据所述顺序位将所述数据存储到数据库中。
在本发明的实施例中,所述插入位置通过所述数据插入数据库之后的前一个数据和后一个数据来描述。
另外,顺序位确定模块22还可以用于:根据所述插入位置分别获取所述前一个数据的顺序位和所述后一个数据的顺序位;获取所述数据库的区间值,所述区间值表示在将有序数据存储至数据库且未插入数据的情况下,两个相邻数据的顺序位之差;根据所述前一个数据的顺序位和所述后一个数据的顺序位,以及所述区间值计算所述数据的顺序位。
其中,若所述前一个数据和所述后一个数据都不为空,则所述数据的顺序位为所述后一个数据的顺序位与所述前一个数据的顺序位的均值;若所述后一个数据为空,则所述数据的顺序位为所述数据库当前最后一个数据的顺序位与所述区间值之和;若所述前一个数据为空,则所述数据的顺序位为所述数据库当前第一个数据的顺序位与所述区间值之差。
根据本发明的实施例,所述区间值根据两条数据之间的数据插入次数和限定的数据精度来估算。
另外,本发明实施例的有序数据存储的装置20还可以包括顺序位重排模块(图中未示出),用于:若所述顺序位出现重复,则对所述顺序位进行重排。
并且,顺序位重排模块还可以用于:根据所述顺序位,按升序依次从所述数据库中读取所有数据;对读取的所述数据重新计算顺序位,所述数据的顺序位为所述上一个数据的顺序位与区间值之和;根据重新计算后的顺序位,将所述数据存储到所述数据库中。
根据本发明的实施例,本发明还提供了一种电子设备和一种可读存储介质。
本发明的电子设备包括:至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器执行本发明所提供的有序数据存储的方法。
本发明的非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令用于使所述计算机执行本发明所提供的有序数据存储的方法。
如图3所示,是根据本发明实施例的有序数据存储的方法的电子设备的硬件结构示意图。如图3,该电子设备包括:一个或多个处理器32以及存储器31,图3中以一个处理器32为例。其中,存储器31即为本发明所提供的非暂态计算机可读存储介质。
有序数据存储的方法的电子设备还可以包括:输入装置33和输出装置34。
处理器32、存储器31、输入装置33和输出装置34可以通过总线或者其他方式连接,图3中以通过总线连接为例。
存储器31作为一种非暂态计算机可读存储介质,可用于存储非暂态软件程序、非暂态计算机可执行程序以及模块,如本发明实施例中的有序数据存储的方法对应的程序指令/模块(例如,附图2所示的请求接收模块21、顺序位确定模块22和数据存储模块23)。处理器32通过运行存储在存储器31中的非暂态软件程序、指令以及模块,从而执行服务器的各种功能应用以及数据处理,即实现上述方法实施例中的有序数据存储的方法。
存储器31可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储根据有序数据存储的装置的使用所创建的数据等。此外,存储器31可以包括高速随机存取存储器,还可以包括非暂态存储器,例如至少一个磁盘存储器件、闪存器件、或其他非暂态固态存储器件。在一些实施例中,存储器31可选包括相对于处理器32远程设置的存储器,这些远程存储器可以通过网络连接至有序数据存储的装置。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
输入装置33可接收输入的数字或字符信息,以及产生与有序数据存储的装置的用户设置以及功能控制有关的键信号输入。输出装置34可包括显示屏等显示设备。
所述一个或者多个模块存储在所述存储器31中,当被所述一个或者多个处理器32执行时,执行上述任意方法实施例中的有序数据存储的方法。
上述产品可执行本发明实施例所提供的方法,具备执行方法相应的功能模块和有益效果。未在本实施例中详尽描述的技术细节,可参见本发明实施例所提供的方法。
根据本发明实施例的技术方案,根据数据的插入位置确定该数据存储的顺序位,并根据顺序位将插入数据存储到数据库中,可以解决数据存储的顺序性问题和每次进行数据插入时都需要进行所有数据重排的问题,从而既保证了数据的顺序性,又降低了数据重排的消耗,并且保持了数据存储的高效性。另外,通过合理估算区间值,并将相邻的有序数据的顺序位根据区间值设置为不连续的有序实数,可以保证在进行数据插入的过程中不会出现顺序位重复的情况,从而既保持了在已有的有序数据记录中新插入数据操作的高效性,又保持了排序操作的高效性。
上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。

Claims (12)

1.一种有序数据存储的方法,其特征在于,包括:
接收数据插入请求,所述请求包括所述数据的插入位置,所述插入位置通过所述数据插入数据库之后的前一个数据和后一个数据来描述;
根据所述插入位置确定所述数据存储的顺序位,包括:根据所述插入位置分别获取所述前一个数据的顺序位和所述后一个数据的顺序位;获取所述数据库的区间值,所述区间值表示在将有序数据存储至数据库且未插入数据的情况下,两个相邻数据的顺序位之差;根据所述前一个数据的顺序位和所述后一个数据的顺序位,以及所述区间值计算所述数据的顺序位;
根据所述顺序位将所述数据存储到数据库中。
2.根据权利要求1所述的方法,其特征在于,
若所述前一个数据和所述后一个数据都不为空,则所述数据的顺序位为所述后一个数据的顺序位与所述前一个数据的顺序位的均值;
若所述后一个数据为空,则所述数据的顺序位为所述数据库当前最后一个数据的顺序位与所述区间值之和;
若所述前一个数据为空,则所述数据的顺序位为所述数据库当前第一个数据的顺序位与所述区间值之差。
3.根据权利要求1所述的方法,其特征在于,所述区间值根据两条数据之间的数据插入次数和限定的数据精度来估算。
4.根据权利要求1所述的方法,其特征在于,还包括:
若所述顺序位出现重复,则对所述顺序位进行重排。
5.根据权利要求4所述的方法,其特征在于,对所述顺序位进行重排包括:
根据所述顺序位,按升序依次从所述数据库中读取所有数据;
对读取的所述数据重新计算顺序位,所述数据的顺序位为所述前一个数据的顺序位与区间值之和;
根据重新计算后的顺序位,将所述数据存储到所述数据库中。
6.一种有序数据存储的装置,其特征在于,包括:
请求接收模块,用于接收数据插入请求,所述请求包括所述数据的插入位置,所述插入位置通过所述数据插入数据库之后的前一个数据和后一个数据来描述;
顺序位确定模块,用于根据所述插入位置确定所述数据存储的顺序位,包括:根据所述插入位置分别获取所述前一个数据的顺序位和所述后一个数据的顺序位;获取所述数据库的区间值,所述区间值表示在将有序数据存储至数据库且未插入数据的情况下,两个相邻数据的顺序位之差;根据所述前一个数据的顺序位和所述后一个数据的顺序位,以及所述区间值计算所述数据的顺序位;
数据存储模块,用于根据所述顺序位将所述数据存储到数据库中。
7.根据权利要求6所述的装置,其特征在于,
若所述前一个数据和所述后一个数据都不为空,则所述数据的顺序位为所述后一个数据的顺序位与所述前一个数据的顺序位的均值;
若所述后一个数据为空,则所述数据的顺序位为所述数据库当前最后一个数据的顺序位与所述区间值之和;
若所述前一个数据为空,则所述数据的顺序位为所述数据库当前第一个数据的顺序位与所述区间值之差。
8.根据权利要求6所述的装置,其特征在于,所述区间值根据两条数据之间的数据插入次数和限定的数据精度来估算。
9.根据权利要求6所述的装置,其特征在于,还包括顺序位重排模块,用于:
若所述顺序位出现重复,则对所述顺序位进行重排。
10.根据权利要求9所述的装置,其特征在于,所述顺序位重排模块还用于:
根据所述顺序位,按升序依次从所述数据库中读取所有数据;
对读取的所述数据重新计算顺序位,所述数据的顺序位为所述前一个数据的顺序位与区间值之和;
根据重新计算后的顺序位,将所述数据存储到所述数据库中。
11.一种有序数据存储的电子设备,其特征在于,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-5中任一所述的方法。
12.一种计算机可读介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1-5中任一所述的方法。
CN201710168813.5A 2017-03-21 2017-03-21 有序数据存储的方法、装置、电子设备和可读存储介质 Active CN108628892B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710168813.5A CN108628892B (zh) 2017-03-21 2017-03-21 有序数据存储的方法、装置、电子设备和可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710168813.5A CN108628892B (zh) 2017-03-21 2017-03-21 有序数据存储的方法、装置、电子设备和可读存储介质

Publications (2)

Publication Number Publication Date
CN108628892A CN108628892A (zh) 2018-10-09
CN108628892B true CN108628892B (zh) 2020-11-20

Family

ID=63686448

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710168813.5A Active CN108628892B (zh) 2017-03-21 2017-03-21 有序数据存储的方法、装置、电子设备和可读存储介质

Country Status (1)

Country Link
CN (1) CN108628892B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109241064A (zh) * 2018-10-22 2019-01-18 武汉达梦数据库有限公司 一种数据库插入排序方法
CN109408512A (zh) * 2018-10-22 2019-03-01 武汉达梦数据库有限公司 一种数据库排序位置移动方法
CN111563217A (zh) * 2020-04-02 2020-08-21 北京明略软件系统有限公司 一种网页中信息的管理方法和装置

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1373876A (zh) * 1999-07-29 2002-10-09 特博数据实验室公司 表格式数据显示方法、插入方法、删除方法和更新方法
CN101763310A (zh) * 2008-12-23 2010-06-30 康佳集团股份有限公司 数据存储控制方法
CN102117278A (zh) * 2009-12-31 2011-07-06 联想(北京)有限公司 链表的创建方法及系统、数据的查找方法及系统
CN102999581A (zh) * 2012-11-14 2013-03-27 北京北纬点易信息技术有限公司 用于业务中大用户量数据访问及实时排序系统
CN103345496A (zh) * 2013-06-28 2013-10-09 新浪网技术(中国)有限公司 多媒体信息检索方法和系统
CN103810244A (zh) * 2013-12-09 2014-05-21 北京理工大学 一种基于数据分布的分布式数据存储系统的扩容方法
WO2014149026A1 (en) * 2013-03-18 2014-09-25 Ge Intelligent Platforms, Inc. Apparatus and method for memory storage and analytic execution of time series data
CN104268280A (zh) * 2014-10-17 2015-01-07 中国人民解放军国防科学技术大学 一种基于键值数据库的层次化存储与查询方法
CN104462549A (zh) * 2014-12-25 2015-03-25 瑞斯康达科技发展股份有限公司 一种数据处理方法和装置
CN105045891A (zh) * 2015-07-31 2015-11-11 中国科学院计算技术研究所 提高顺序表性能方法、系统、架构、优化方法及存储装置

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102651008B (zh) * 2011-02-28 2015-06-17 国际商业机器公司 在关系数据库中组织数据记录的方法和设备
US10372694B2 (en) * 2014-10-08 2019-08-06 Adobe Inc. Structured information differentiation in naming

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1373876A (zh) * 1999-07-29 2002-10-09 特博数据实验室公司 表格式数据显示方法、插入方法、删除方法和更新方法
CN101763310A (zh) * 2008-12-23 2010-06-30 康佳集团股份有限公司 数据存储控制方法
CN102117278A (zh) * 2009-12-31 2011-07-06 联想(北京)有限公司 链表的创建方法及系统、数据的查找方法及系统
CN102999581A (zh) * 2012-11-14 2013-03-27 北京北纬点易信息技术有限公司 用于业务中大用户量数据访问及实时排序系统
WO2014149026A1 (en) * 2013-03-18 2014-09-25 Ge Intelligent Platforms, Inc. Apparatus and method for memory storage and analytic execution of time series data
CN103345496A (zh) * 2013-06-28 2013-10-09 新浪网技术(中国)有限公司 多媒体信息检索方法和系统
CN103810244A (zh) * 2013-12-09 2014-05-21 北京理工大学 一种基于数据分布的分布式数据存储系统的扩容方法
CN104268280A (zh) * 2014-10-17 2015-01-07 中国人民解放军国防科学技术大学 一种基于键值数据库的层次化存储与查询方法
CN104462549A (zh) * 2014-12-25 2015-03-25 瑞斯康达科技发展股份有限公司 一种数据处理方法和装置
CN105045891A (zh) * 2015-07-31 2015-11-11 中国科学院计算技术研究所 提高顺序表性能方法、系统、架构、优化方法及存储装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
将一个顺序存储的有序线性表插入到另一个有序线性表的快速算法;张济础;《计算机与信息技术》;20091231(第09期);第100-104页 *

Also Published As

Publication number Publication date
CN108628892A (zh) 2018-10-09

Similar Documents

Publication Publication Date Title
CN111046034B (zh) 管理内存数据及在内存中维护数据的方法和系统
CN106933836B (zh) 一种基于分表的数据存储方法和系统
CN108932313B (zh) 数据处理方法、装置、电子设备及存储介质
CN108628892B (zh) 有序数据存储的方法、装置、电子设备和可读存储介质
CN107977396B (zh) 一种KeyValue数据库的数据表的更新方法与表数据更新装置
CN104424314A (zh) 对列状表数据库的数据库操作
CN111061758B (zh) 数据存储方法、装置及存储介质
CN113590606B (zh) 一种基于布隆过滤器的大数据量密钥去重方法及系统
US9753983B2 (en) Data access using decompression maps
US9639566B2 (en) Method, apparatus and computer program product for improved storage of key-value pairs
US10423642B2 (en) Aggregating modifications to a database for journal replay
CN110362540B (zh) 一种数据存储、访客数获取方法及装置
US11250002B2 (en) Result set output criteria
CN105512313A (zh) 一种增量式数据处理的方法和装置
CN105930534B (zh) 一种基于云存储服务价格的数据碎片减少方法
US20140340246A1 (en) Efficient Processing of Huffman Encoded Data
EP3220290A1 (en) Processing of tabular data
CN111465929A (zh) 用于内容不可知文件标引的方法及系统
US20210082082A1 (en) Data processing method and processing circuit
CN114564501A (zh) 一种数据库数据存储、查询方法、装置、设备及介质
CN110990640A (zh) 一种数据判定方法、装置、设备及计算机可读存储介质
CN110032445B (zh) 大数据聚集计算方法及装置
US9171032B2 (en) Radix sort with read-only key
CN112783980A (zh) 数据同步处理方法、装置、电子设备以及计算机可读介质
CN109408462A (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