首页 / 专利库 / 生物学 / 生物 / 哺乳动物 / 有蹄类动物 / 马科动物 / / 在基于数组和链表的集成结构中存储数据的系统和方法

在基于数组和链表的集成结构中存储数据的系统和方法

阅读:1064发布:2020-05-13

专利汇可以提供在基于数组和链表的集成结构中存储数据的系统和方法专利检索,专利查询,专利分析的服务。并且数据处理 和存储是许多应用的重要组成部分。常规的数据处理和存储系统利用全数组结构或全链表结构来存储数据,其中数组消耗大量的内存,而链表提供了缓慢的处理。因此,传统系统和方法不能同时优化内存消耗和时间效率。本公开公开了一种通过创建基于数组和链表的集成结构来存储数据的有效方式。数据通过使用基于增量的机制存储在基于数组和链表的集成结构中。基于增量的机制有助于确定应在基于数组和链表的集成结构中存储数据的 位置 。本公开结合了数组和链表结构两者的优点,从而减少内存消耗和等待时间。,下面是在基于数组和链表的集成结构中存储数据的系统和方法专利的具体信息内容。

1.一种处理器实现的方法,包括:
由处理器接收(220)多个输入数据和所述多个输入数据中的每一个的对应参考数据;
创建(240)用于存储所述多个输入数据的数据结构,其中以包括数组结构或链表的至少一种形式创建所述数据结构,并且其中创建的所述数据结构还包括为所述多个输入数据中的每一个定义的多个数据指针
从用于所述多个输入数据中的每一个的多个数据指针确定(206)唯一的数据指针集,其中所述唯一的数据指针集是通过计算围绕所述对应参考数据变化的候选数据指针的范围来确定的;
(i)在所述数组结构中定义(208)所述唯一的数据指针集,和(ii)在所述链表中定义(208)来自所述多个数据指针的剩余数据指针;
使用基于增量的机制,从以下之一为新输入数据确定(210)数据指针:(i)在所述数组结构中定义的所述唯一的数据指针集,或者(ii)在所述链表中定义的来自所述多个数据指针的剩余数据指针,其中在确定所述数据指针期间,创建与所确定的数据指针相对应的节点;以及
将所述新输入数据存储(212)在所创建的节点的地址处,所创建的节点与包括在所述数组结构或链表之一中的所确定的数据指针相对应。
2.根据权利要求1所述的处理器实现的方法,其中所述范围是可配置的并且基于所述对应参考数据来确定。
3.根据权利要求1所述的处理器实现的方法,其中所述基于增量的机制确定所述参考数据的值与所述新输入数据的值之间的差值,并且其中所述差值指示出用于确定所述数据指针的索引值。
4.根据权利要求1所述的处理器实现的方法,还包括:从与所确定的数据指针相对应的所创建的节点形成另一个链表,以用于存储后续输入数据。
5.根据权利要求1所述的处理器实现的方法,还包括:基于所述新输入数据和所述参考数据动态地更新所述数组结构和所述链表中的至少一个。
6.一种系统(100),包括:
存储器(102);
一个或多个通信接口(104);和
通过所述一个或多个通信接口耦合到所述存储器的一个或多个硬件处理器(106),其中所述一个或多个硬件处理器被配置为:
由处理器接收多个输入数据和所述多个输入数据中的每一个的对应参考数据;
创建用于存储所述多个输入数据的数据结构,其中以包括数组结构或链表的至少一种形式创建所述数据结构,并且其中创建的所述数据结构还包括为所述多个输入数据中的每一个定义的多个数据指针;
从用于所述多个输入数据中的每一个的多个数据指针确定唯一的数据指针集,其中所述唯一的数据指针集是通过计算围绕所述对应参考数据变化的候选数据指针的范围来确定的;
(i)在所述数组结构中定义所述唯一的数据指针集,和(ii)在所述链表中定义来自所述多个数据指针的剩余数据指针;
使用基于增量的机制,从以下之一为新输入数据确定数据指针:(i)在所述数组结构中定义的所述唯一的数据指针集,或者(ii)在所述链表中定义的来自所述多个数据指针的剩余数据指针,其中在确定所述数据指针期间,创建与所确定的数据指针相对应的节点;并且将所述新输入数据存储在所创建的节点的地址处,所创建的节点与包括在所述数组结构或链表之一中的所确定的数据指针相对应。
7.根据权利要求6所述的系统,其中所述范围是可配置的并且基于所述对应参考数据来确定。
8.根据权利要求6所述的系统,其中所述基于增量的机制确定所述参考数据的值与所述新输入数据的值之间的差值,并且其中所述差值指示出用于确定所述数据指针的索引值。
9.根据权利要求6所述的系统,其中所述一个或多个硬件处理器还被配置为从与所确定的数据指针相对应的所创建的节点形成另一个链表,以用于存储后续输入数据。
10.根据权利要求6所述的系统,其中所述一个或多个硬件处理器还被配置为基于所述新输入数据和所述参考数据动态地更新所述数组结构和所述链表中的至少一个。
11.一种或多种非暂时性机器可读信息存储介质,包括一个或多个指令,当所述指令由一个或多个硬件处理器执行时,所述指令致使:
接收多个输入数据和所述多个输入数据中的每一个的对应参考数据;
创建用于存储所述多个输入数据的数据结构,其中以包括数组结构或链表的至少一种形式创建所述数据结构,并且其中创建的所述数据结构还包括为所述多个输入数据中的每一个定义的多个数据指针;
从用于所述多个输入数据中的每一个的多个数据指针确定唯一的数据指针集,其中所述唯一的数据指针集是通过计算围绕所述对应参考数据变化的候选数据指针的范围来确定的;
(i)在所述数组结构中定义所述唯一的数据指针集,和(ii)在所述链表中定义来自所述多个数据指针的剩余数据指针;
使用基于增量的机制,从以下之一为新输入数据确定数据指针:(i)在所述数组结构中定义的所述唯一的数据指针集,或者(ii)在所述链表中定义的来自所述多个数据指针的所述剩余数据指针,其中在确定所述数据指针期间,创建与所确定的数据指针相对应的节点;
以及
将所述新输入数据存储在所创建的节点的地址处,所创建的节点与包括在所述数组结构或链表之一中的所确定的数据指针相对应。
12.根据权利要求11所述的一种或多种非暂时性机器可读信息,其中所述范围是可配置的,并且基于所述对应参考数据来确定。
13.根据权利要求11所述的一种或多种非暂时性机器可读信息,其中所述基于增量的机制确定所述参考数据的值与所述新输入数据的值之间的差值,并且其中所述差值指示出用于确定所述数据指针的索引值。
14.根据权利要求11所述的一种或多种非暂时性机器可读信息,其中所述一个或多个硬件处理器还被配置为从与所确定的数据指针相对应的所创建的节点形成另一个链表,以用于存储后续输入数据。
15.根据权利要求11所述的一种或多种非暂时性机器可读信息,其中所述一个或多个硬件处理器还被配置为基于所述新输入数据和所述参考数据动态地更新所述数组结构和所述链表中的至少一个。

说明书全文

在基于数组和链表的集成结构中存储数据的系统和方法

[0001] 相关申请和优先权的交叉引用
[0002] 本申请要求于2018年10月26日在印度提交的印度申请申请号为201821040565的优先权。

技术领域

[0003] 本文的公开总体上涉及数据存储和处理领域,更具体地,涉及用于在基于数组和链表的集成结构中存储数据的系统和方法。

背景技术

[0004] 数据存储是数据处理系统的关键部分。随着大数据数据挖掘在众多应用中的出现和日益受到重视,需要收集大量的数据。此外,需要执行许多操作以进行有意义地分析和呈现数据。数据存储对于对数据执行操作变得很重要,因此在适当的内存使用情况下,诸如搜索、插入、删除等操作的等待时间应该最小。
[0005] 传统系统包括用于存储数据的完全基于链表的结构或完全基于数组的数据结构。使用完全基于数组的数据结构进行存储需要尺寸非常大的数组,且导致内存的浪费。完全基于链表的结构引入了时间惩罚,这是因为每次插入都需要遍历链表以获得适当的节点
发明内容
[0006] 本公开的实施例提出了技术改进,作为发明者在传统系统中认识到的上述技术问题中的一个或多个的解决方案。例如,在一个方面,提供了一种处理器实现的方法,包括:接收多个输入数据和所述多个输入数据中的每一个的对应参考数据;创建用于存储所述多个输入数据的数据结构,其中以包括数组结构或链表的至少一种形式来创建所述数据结构,并且其中创建的数据结构还包括为所述多个输入数据中的每一个定义的多个数据指针;从用于所述多个输入数据中的每一个的多个数据指针确定唯一的数据指针集,其中所述唯一的数据指针集是通过计算围绕所述对应参考数据变化的候选数据指针的范围来确定的。在一个实施例中,所述范围是可配置的并且基于所述对应参考数据来确定。处理器实现的方法还包括:(i)在所述数组结构中定义所述唯一的数据指针集,和(ii)在所述链表中定义来自所述多个数据指针的剩余数据指针;使用基于增量(delta)的机制,从(i)在所述数组结构中定义的所述唯一的数据指针集或者(ii)在所述链表中定义的来自所述多个数据指针的剩余数据指针之一为新输入数据确定数据指针,其中在确定所述数据指针期间,创建与所确定的数据指针相对应的节点。在一个实施例中,所述基于增量的机制确定所述参考数据与所述新输入数据的值之间的差值,并且其中所述差值指示出用于确定所述数据指针的索引值。在一个实施例中,方法还包括:从与所确定的数据指针相对应的所创建的节点形成另一个链表,以用于存储后续输入数据。处理器实现的方法还包括:将所述新输入数据存储在由与所述数据指针相关联的所确定的节点所指向的所述数组结构或链表之一的地址处。在一个实施例中,方法还包括基于传入的(incoming)输入数据和所述参考数据动态地更新所述数组结构和链表中的至少一个。
[0007] 在另一方面,提供了一种系统,其包括:存储指令的存储器;一个或多个通信接口;以及通过所述一个或多个通信接口耦合到所述存储器的一个或多个硬件处理器,其中所述一个或多个硬件处理器通过所述指令被配置为:接收多个输入数据和所述多个输入数据中的每一个的对应参考数据;创建用于存储所述多个输入数据的数据结构,其中以包括数组结构或链表的至少一种形式来创建所述数据结构,并且其中创建的数据结构还包括为所述多个输入数据中的每一个定义的多个数据指针;从用于所述多个输入数据中的每一个的多个数据指针确定唯一的数据指针集,其中所述唯一的数据指针集是通过计算围绕所述对应参考数据变化的候选数据指针的范围来确定的。在一个实施例中,所述范围是可配置的并且基于所述对应参考数据来确定。在一个实施例中,所述范围是可配置的并且基于所述对应参考数据来确定。包括一个或多个硬件处理器的所述系统还通过所述指令被配置为:(i)在所述数组结构中定义所述唯一的数据指针集,和(ii)在所述链表中定义来自所述多个数据指针的剩余数据指针;使用基于增量的机制,从(i)在所述数组结构中定义的所述唯一的数据指针集或者(ii)在所述链表中定义的来自所述多个数据指针的剩余数据指针之一为新输入数据确定数据指针,其中在确定所述数据指针期间,创建与所确定的数据指针相对应的节点。在一个实施例中,所述基于增量的机制确定所述参考数据与所述新输入数据的值之间的差值,并且其中所述差值指示出用于确定所述数据指针的索引值。在一个实施例中,所述一个或多个硬件处理器还通过所述指令被配置为从与所确定的数据指针相对应的所创建的节点形成另一个链表,以用于存储后续输入数据。包括一个或多个硬件处理器的所述系统还通过所述指令被配置为:将所述新输入数据存储在由与所述数据指针相关联的所确定的节点所指向的所述数组结构或链表之一的地址处。在一个实施例中,所述一个或多个硬件处理器还通过所述指令被配置为基于传入的输入数据和所述参考数据动态地更新所述数组结构和链表中的至少一个。
[0008] 在又一方面,提供了一种或多种非暂时性机器可读信息存储介质,其包括一个或多个指令,所述指令在由一个或多个硬件处理器执行时致使:接收多个输入数据和所述多个输入数据中的每一个的对应参考数据;创建用于存储所述多个输入数据的数据结构,其中以包括数组结构或链表的至少一种形式来创建所述数据结构,并且其中创建的数据结构还包括为所述多个输入数据中的每一个定义的多个数据指针;从用于所述多个输入数据中的每一个的多个数据指针确定唯一的数据指针集,其中所述唯一的数据指针集是通过计算围绕所述对应参考数据变化的候选数据指针的范围来确定的。在一个实施例中,所述范围是可配置的并且基于所述对应参考数据来确定。方法还包括:(i)在所述数组结构中定义所述唯一的数据指针集,和(ii)在所述链表中定义来自所述多个数据指针的剩余数据指针;使用基于增量的机制,从(i)在所述数组结构中定义的所述唯一的数据指针集或者(ii)所述链表中定义的来自所述多个数据指针的剩余数据指针之一为新输入数据确定数据指针,其中在确定所述数据指针期间,创建与所确定的数据指针相对应的节点。在一个实施例中,所述基于增量的机制确定所述参考数据与所述新输入数据的值之间的差值,并且其中所述差值指示出用于确定所述数据指针的索引值。在一个实施例中,方法还包括:从与所确定的数据指针相对应的所创建的节点形成另一个链表,以用于存储后续输入数据。方法还包括:
将所述新输入数据存储在由与所述数据指针相关联的所确定的节点所指向的所述数组结构或链表之一的地址处。在一个实施例中,方法还包括基于传入的输入数据和所述参考数据动态地更新所述数组结构和链表中的至少一个。
[0009] 要理解的是,前面的一般性描述和下面的详细描述两者都只是示例性和说明性的,并不是对所要求保护的本发明的限制。附图说明
[0010] 并入本公开中并构成本公开的一部分的附图示出了示例性实施例,并且与说明书一起用于解释所公开的原理:
[0011] 图1示出了根据本公开的一些实施例的用于在基于数组和链表的集成结构中存储数据的系统(设备)的功能框图
[0012] 图2示出了根据本公开的一些实施例的用于在基于数组和链表的集成结构中存储数据的处理器实现的方法的示例性流程图
[0013] 图3示出了根据本公开的一些实施例的用于在基于数组和链表的集成结构中存储数据的处理器实现的方法的示例。
[0014] 图4示出了根据本公开的一些实施例的用于在基于数组和链表的集成结构中存储数据的处理器实现的方法的示例。
[0015] 图5示出了根据本公开的一些实施例的用于在基于数组和链表的集成结构中存储数据的处理器实现的方法的示例。
[0016] 本领域技术人员应当理解的是,本文的任何框图表示体现本主题的原理的说明性系统和设备的概念视图。同样,将理解的是,任何流程图表、流程图等表示各个过程,其可以基本上在计算机可读介质中表示,并因此由计算机或处理器执行,而不管该计算机或处理器是否被明确地示出。

具体实施方式

[0017] 参考附图来描述示例性实施例。在附图中,附图标记的最左边的一个或多个数字标识其中首次出现附图标记的图。在任何方便的地方,在整个附图中使用相同的附图标记来表示相同或相似的部分。虽然本文描述了所公开原理的示例和特征,但是在不脱离所公开实施例的精神和范围的情况下,修改、改编和其他实施方式是可能的。所意图的是,以下详细描述仅被考虑为示例性的,其中真正的范围和精神由所附权利要求指示。
[0018] 本文的实施例提供了用于在基于数组和链表的集成结构中存储数据的系统和方法。通过使用完全链表结构或完全数组结构,在传统数据处理系统中存储数据的典型方式已被修改,以提供改进的内存利用率和时间效率。本公开提供了一种在数据处理系统中有效地存储数据的方法。该方法提供了一种基于数组和链表的集成结构,用于使用基于增量的机制来存储数据。数组结构存储多个唯一的数据指针。多个唯一的数据指针包括由参考数据周围的可配置范围分隔的所有可能的数据指针。数据指针的可配置范围是基于参考数据确定的,参考数据是基于系统要求、市场状况、用户要求等进一步确定的。链表结构存储未在可配置范围内指定的剩余数据指针。本公开使得能够更快地访问和处理存储在数组结构中的数据指针,并且能够较慢地访问和处理存储在链表结构中的数据指针。基于数组和链表的集成结构有助于减少等待时间并提高内存利用率。
[0019] 现在参考附图,并且更具体地参考图1至图5,其中类似的附图标记在整个附图中始终表示对应的特征,示出了优选实施例,并且这些实施例被描述在以下示例性系统和/或方法的上下文中。
[0020] 图1示出了根据本公开的一些实施例的用于在基于数组和链表的集成结构中存储数据的系统的功能框图。系统100包括一个或多个硬件处理器(诸如处理器106)、I/O接口104、至少一个存储器(诸如存储器102)和数据存储模108或以其它方式与之通信。在实施例中,数据存储模块108可以被实现为系统100中的独立单元。在另一个实施例中,数据存储模块108可以被实现为存储器102中的模块。处理器106、I/O接口104和存储器102可以通过系统总线耦接。
[0021] I/O接口104可以包括各种软件和硬件接口,例如,网络接口、图形用户接口等。接口104可以包括各种软件和硬件接口,例如,用于一个或多个外围设备(诸如,键盘鼠标、外部存储器、照相机设备和打印机)的接口。接口104可以促进多种网络和协议类型内的多种通信,包括有线网络(例如,局域网(LAN)、电缆等)以及无线网络(诸如,无线局域网(WLAN)、蜂窝网络、或卫星)内的多种通信。为此,接口104可以包括一个或多个端口,用于将多个计算系统彼此连接或连接至另一服务器计算机。I/O接口104可以包括一个或多个端口,用于将多个设备彼此连接或连接至另一服务器。
[0022] 硬件处理器106可以被实现为一个或多个微处理器、微型计算机、微控制器、数字信号处理器、中央处理单元、状态机、逻辑电路和/或基于操作指令来操纵信号的任何设备。除其他功能外,硬件处理器106被配置为获取并执行存储在存储器102中的计算机可读指令。
[0023] 存储器102可以包括本领域中已知的任何计算机可读介质,包括例如易失性存储器(诸如静态随机存取存储器(SRAM)和动态随机存取存储器(DRAM)),和/或非易失性存储器(诸如只读存储器(ROM)、可擦可编程ROM、闪存、硬盘、光盘和磁带)。在一实施例中,存储器102包括多个模块108和用于存储由一个或多个模块108处理、接收和生成的数据的存储库110。模块108可以包括例程、程序、对象、组件、数据结构等,它们执行特定的任务或实现特定的抽象数据类型。
[0024] 数据存储库110尤其包括系统数据库和其他数据。其他数据可以包括由于模块108中的一个或多个模块的执行而产生的数据。系统数据库存储输入数据和用于输入数据的对应参考数据,和数据指针集,其是由于模块108中一个或多个模块的执行而产生的,并存储在基于数组和链表的集成结构中。可以基于与不同应用有关的需求的变化来动态地更新存储在系统数据库中的数据。
[0025] 在实施例中,数据存储模块108可以被配置为在基于数组和链表的集成结构中存储和处理数据。可以通过使用结合图2至5和用例示例进行描述的方法来执行将数据存储在基于数组和链表的集成结构中。
[0026] 参考图1,图2是根据本公开的一些实施例的,使用图1的数据存储模块108在基于数组和链表的集成结构中存储数据的处理器实现的方法的示例性流程图。在本公开的实施例中,在图2的步骤202,一个或多个硬件处理器106接收多个输入数据和用于多个输入数据中的每一个的对应参考数据。在实施例中,输入数据可以包括但不限于关于一个或多个交易应用的在不同时间戳接收到的多个传入订单。一个或多个交易应用可以包括证券交易、零售交易、股票交易等。在实施例中,传入订单可以包括但不限于以证券、股票、期货、期权、掉期或其他衍生品、货币、债券或其他实物(如玉米、贵金属、电)和/或在交易所交易的与其他证券或物品交易相关联的其他物品的价格价值进行放置的买卖请求、出价和交易。在实施例中,多个输入数据中的每一个的对应参考数据可以包括但不限于与一个或多个交易应用相关的多个传入订单的初始价格。在实施例中,参考数据(例如,初始价格)是可配置的,并基于对前一天订单的收盘价的分析、对市场状况的分析来确定,其中市场状况是基于交易物品的需要、用户对交易物品的消费、交易物品的生产或制造,以及交易物品的可用性来确定的。例如,在股票交易场景中,公司X的股票初始价格可以是但不限于100美元。初始价格假定在特定的时间戳确定。此外,假设在一天中不同时间戳接收到的公司X的股票的传入订单价格可以但不限于1美元至1000美元,诸如80美元、120美元、280美元、320美元等。
[0027] 再次参考图2,在步骤204,创建用于使用一个或多个处理器存储多个输入数据的数据结构,其中以包括数组结构或链表的至少一种形式来创建数据结构。在实施例中,所创建的数据结构还包括为所创建的数据结构中的多个输入数据中的每一个定义的多个数据指针。在实施例中,数组结构和链表结构的大小可以基于系统存储器的大小来配置,并且可以容纳系统可用的最大可用存储器大小。在实施例中,数据指针可以包括但不限于与一个或多个交易应用有关的传入订单的价格指针。在另一个实施例中,可以将在创建的数据结构中定义的数据指针与多个时间戳相关联,其中多个时间戳被构造为另一个链表(可替代地称为时间链表)。在实施例中,数组结构和链表结构在不同的时间戳保存与一个或多个交易应用有关的传入订单的价格指针。换句话说,数组结构和链表结构包括与时间链表相关联的多个数据指针(例如,价格指针),其中在不同时间戳接收到的特定价格(例如,120美元)的传入订单将存储在与在创建的数据结构中定义的对应数据指针(例如,价格指针)相关联的时间链表中。
[0028] 返回参考图2,如步骤206所示,一个或多个处理器从用于多个输入数据中的每一个的多个数据指针确定唯一的数据指针集。在实施例中,通过计算在对应参考数据周围变化的候选(可互换地称为“可能的”)数据指针的范围来确定唯一的数据指针集。在实施例中,基于对应参考数据来确定候选(可互换地称为“可能的”)数据指针的范围。例如,假设与一个或多个交易应用有关的股票、证券、物品等的价格变动不超过初始价格的±20%至30%。在实施例中,基于该假设,可以通过找到但不限于与对应参考数据相差±20%或30%来计算候选(可互换地称为“可能的”)数据指针的范围。通过图3中所示的示例进一步说明从用于多个输入数据中的每一个的多个数据指针确定唯一的数据指针集的步骤。如图3所示,对于选择为100美元的对应参考数据(例如,初始价格),唯一的数据指针集被确定为范围在80美元至120美元之间的数据指针。通过从对应参考数据(例如,在这种情况下初始价格为100美元)中找到±20%的变化来确定范围(例如80美元至120美元),其中+20%的变化是指值120美元(在这种情况下是最高范围限制),而-20%的变化是指值80美元(在这种情况下是最低范围限制)。在实施例中,范围是可配置的。例如,可以将范围设置为与对应参考数据相差20%或30%,并且可以将其更改为不同的值,诸如与对应参考数据相差±10%、±
40%、±50%等。在实施例中,包括在唯一的数据指针集中的一个或多个数据指针被预定义步长分离。例如,如图3所示,用于分离唯一的数据指针集中包括的一个或多个数据指针的预定步长是1美元。因此,如图3所示,唯一的数据指针集指的是值80美元、81美元、82美元至
120美元。在另一个实施例中,基于系统配置和应用类型来选择预定义步长。例如,在交易系统应用中,步长表示价格变化的最小差值。假设如果步长被选择为1美元,则价格不能更改小于1美元的值。每个交易系统组织的步长保持固定,以保持所请求价格的一致性。此外,在未预先定义步长的情况下,用户可以要求例如0.0005美元的步长(例如,价格差)。由于
0.0005美元可能不再是市场上的有效货币,因此此类请求对交易系统的维护和兑现提出了挑战。
[0029] 此外,如图2的步骤208所示,一个或多个处理器(i)在数组结构中定义唯一的数据指针集,以及(ii)在链表中定义来自多个数据指针的剩余数据指针。如图3所示,在数组结构中定义了唯一的数据指针集,包括值80美元、81美元、82美元至120美元,并且在链表结构中定义了剩余数据指针,诸如25美元、40美元、60美元、150美元、170美元和200美元。
[0030] 再次参考图2,在步骤210,一个或多个处理器使用基于增量的机制,从(i)在数组结构中定义的唯一的数据指针集或者(ii)在链表中定义的来自多个数据指针的剩余数据指针之一为新输入数据确定数据指针。在实施例中,当确定数据指针时,系统创建与所确定的数据指针相对应的节点。在本公开的实施例中,系统100利用创建的节点来形成另一个链表,该链表用于随后的数据处理和存储。在另一实施例中,从所创建的节点形成的另一个链表(可替代地称为时间链表)还包括以垂直顺序布置的一个或多个节点。在实施例中,包括在另一个链表(可替代地称为时间链表)中的一个或多个节点表示接收多个传入订单所处的不同时间戳。在实施例中,利用基于增量的机制来确定参考数据与新输入数据的值之间的差值。在实施例中,该差值指示出用于确定与数据指针相关联的节点的索引值。在另一个实施例中,基于增量的机制有助于识别用于在创建的数据结构中存储新输入数据的位置。换句话说,对于新传入订单,基于增量的机制有助于确定所创建的数据结构中可以放置或存储新传入订单的位置。参考图3可以进一步理解基于增量的机制。例如,如图3所示,对于接收到的值为80美元的新输入数据,确定参考数据的值(在这种情况下为100美元)与新输入数据的值(在这种情况下为80美元)之间的差值(可互换地称为增量值)。在这种情况下,参考数据的值和新输入数据的值之间的差值(可互换地称为增量值)被计算为20美元(例如,100美元-80美元=20美元)。在实施例中,差值(可互换地称为增量值)有助于识别所确定的数据指针是否存在于数组结构或链表中。例如,如果差值(可互换地称为增量值)落在候选(可互换地称为“可能的”)数据指针(例如,价格指针)的范围内,则确定的数据指针存在于数组中,否则确定的数据指针存在在链表中。此外,差值(可互换地称为增量值)用于确定索引值,该索引值指示所创建的数据结构中用于放置或存储新传入订单的位置。在这种情况下,索引值被计算为80(例如,索引值=100–20)。在这种情况下,索引值为80,表示在数组结构中定义的数据指针。在数组结构中,在位置80处,创建了一个新节点,它对应于数据指针80美元。此外,如图3所示,从创建的节点创建包括以垂直顺序布置的一个或多个节点的另一个链表(可替代地称为时间链表),用于放置或存储后续输入数据(例如,在不同的时间戳接收到的多个传入订单)。因此,对于此步骤,参考数据和差值(可互换地称为增量值)用于标识要放置传入节点的位置。
[0031] 此外,如图2的步骤212所示,新输入数据被存储在所创建的节点的地址处,该节点与包括在数组结构或链表之一中的所确定的数据指针相对应。例如,如图3所示,假定在时间t1(例如下午5:00)接收到价格例如为120美元的传入订单。此外,使用所提出的方法,确定与价格120美元的传入订单相对应的数据指针(例如,价格指针)是否存在于数组结构中。此外,在数组结构中创建与数据指针相对应的节点,其中所创建的节点表示由相应数据指针指向的位置(在这种情况下,在数组结构中的位置120美元处创建节点)。此外,价格例如为120美元的传入订单被放置或存储在数组结构中创建的节点的地址处。此外,在时间t2(例如下午5:10)接收到价格为120美元的另一传入订单。为了存储相同价格的另一个传入订单,从创建的节点形成另一个链表(可替代地称为时间链表),其中另一个链表可以包括以垂直时间顺序布置的一个或多个节点。在t2接收到的价格120美元的传入订单以下降的时间顺序存储在另一个链表中包括的一个或多个节点中。以类似的方式,在数组结构中未标识的价格例如为200美元的传入订单被存储在与链表结构关联的另一个链表中包含的一个或多个节点中。在实施例中,如果用于新输入数据的数据指针是从唯一的数据指针集中确定的,则将新输入数据存储在数组结构中;否则,如果用于新输入数据的数据指针是从不包括在唯一的数据指针集中的数据指针确定的,则将新输入数据存储在链表中。
[0032] 在实施例中,一个或多个处理器还被配置为基于传入的输入数据来动态更新数组结构和链表中的至少一个。例如,如图3所示,所创建的数据结构最初提供在25到200的位置处存储数据的规定。因此,图3所示的数据结构无法为价格超过200美元的传入的输入数据(例如,传入订单)存储数据。然而,当传入的输入数据(例如,传入订单)的价格超过数据结构的大小时,系统通过在链表的最末端创建一个节点来动态地更新链表结构。创建的节点对应于数据指针,该数据指针指向必须放置或存储传入的输入数据(例如,传入订单)的位置。例如,如图4所示,当接收到价格为10000美元的传入的输入数据(例如,传入订单)时,通过在链表的最末端创建与数据指针10000美元相对应的节点来更新链表结构,并且价格为10000美元的传入的输入数据(例如,传入订单)被存储或放置在该位置。
[0033] 在实施例中,一个或多个处理器还被配置为基于参考数据来动态更新数组结构和链表中的至少一个。在另一个实施例中,参考数据是可配置的,并且可以随时间变化。在另一实施例中,参考数据可以在一天中保持恒定,但是可以在另一天改变为不同的值。在实施例中,随着参考数据的值的改变,数组结构的大小被动态地更新。例如,如图3所示,假定参考数据为100美元,并基于±20%的变化,数组结构中包含的候选(可互换地称为“可能的”)数据指针(例如,价格指针)的范围是80美元至120美元。如图5所示,当参考数据更改为值200美元时,基于±20%的变化而计算的数组结构中包含的候选(可互换地称为“可能的”)候选数据指针(例如,价格指针)的范围更改为160美元至240美元。因此,很明显的是,数组的大小会动态更新为其初始大小的两倍。
[0034] 实验结果:
[0035] 在实施例中,提供了对传统数据存储和处理系统与所提出的系统的比较分析。在实施例中,传统数据存储和处理系统可以提供用于存储多个输入数据的完全基于数组的实施方式。使用完全基于数组的结构的传统系统包括多个数据指针,并且将所有输入数据仅存储在由对应数据指针确定的数组结构的地址处。但是,当使用用于存储或放置传入订单的大量数据指针定义时,完全基于数组的结构可能会占用更多和不必要(或不可避免)的空间和内存。在实施例中,观察到在一个特定的时间范围(例如,一天、一年等)内,与一个或多个交易应用有关的股票、证券、物品等的价格变化不大,并被限制在初始价格附近的范围内,其中该范围可以但不限于初始价格的±20%到±30%。换句话说,观察到传入订单通常位于初始价格的20%到30%,并且超出这些值的订单数量很稀少。因此,存储指向用于存储传入订单的位置的大量数据指针的完全基于数组的实施方式可能会导致内存浪费。例如,完全基于数组的结构被设计用于具有数据指针1美元到10000美元的多个传入订单。此外,即使对于例如为200美元的参考数据(例如,初始价格),在完全基于数组的实施方式的情况下,也提供了10000个位置。但是,在参考数据选择为200的情况下,接收到的传入订单的可能价格范围可能在(但不限于)2000–3000左右。因此,要求仅提供2000–3000个位置,而完全基于数组的结构提供10000个位置。因此,存储指向用于存储传入订单的位置的大量数据指针的完全基于数组的实施方式可能会导致内存浪费。
[0036] 在实施例中,传统数据存储和处理系统可以提供用于存储多个输入数据的完全基于链表的实施方式。完全基于链表的实施方式要求到达相应数据指针所指向的任何位置,需要从描述相应数据指针指向的第一位置的第一节点遍历链表,直到描述相应数据指针指向的期望位置的期望节点为止。因此,如果链表的大小为N,则将遍历N个节点。遍历N个节点以到达期望节点可能会导致处理延迟,从而导致耗时的活动。因此,大小为N的链表的时间复杂度规定为O(N)。时间复杂度表示计算复杂度,该计算复杂度描述了系统运行算法所需的时间。通常通过对算法执行的基本运算的数量进行计数来估算时间复杂度。在实施例中,如果计算所花费的时间与输入大小(例如N)成正比,则计算的复杂度被称为O(N)。符号O(N)读作“N的阶数”,这意味着运行时间最多随输入大小线性增长。换句话说,描述了存在一个常数c,使得对于大小为n的每个输入,运行时间最多为cn。例如,如果添加时间是恒定的,或者至少受一个常数限制,则将列表的所有元素相加的过程需要的时间与列表的长度成比例。在实施例中,对于数据处理系统,搜索/插入/删除的等待时间应该是最小的。然而,在传统完全基于链表的实施方式的情况下,没有用于减少等待时间的措施。例如,创建了具有四个节点的链表,这些节点描述了由相应数据指针指向的四个位置,并且假定这四个节点的索引值为例如80、120、280和320。然后,在这种情况下,链表将形成如下:
[0037]
[0038] 在此,为每个接收到的输入数据(例如,传入订单)创建被符号化为“nd”的节点,其中接收到的输入数据可以由数据A、数据B、数据C和数据D表示。从上述链表(它是平链表)可以看出,第一节点是80。此外,接收表示为数据C的新输入数据(例如,新传入订单)。为了存储或放置新输入数据,创建描述相应数据指针指向的新位置的新节点,并将其插入到链表中。新节点的索引值为例如280。在这种情况下,为了将具有索引值280的新节点插入上述链表中,需要从具有索引值80的节点到具有索引值120的节点再到具有索引值280的节点进行遍历。可以看出,新节点是期望的节点。在到达位置280时,添加具有表示为数据C的新输入数据的新节点并将其存储在链表中。显然,在这种情况下,使用完全基于链表的实施方式,需要3个遍历步骤。因此,花费的时间为3个单位。
[0039] 在实施例中,本公开提供了对现有传统系统和方法的修改,其中该修改有助于优化内存利用率并减少等待时间以提供具有时效性的系统。本公开提供了一种用于存储输入数据的基于数组和链表的集成结构。本公开中提出的数组结构包括由多个数据指针指向的多个位置,用于存储多个输入数据,其中为特定时间范围内确定的输入数据(例如,传入订单)的候选(可互换地称为“可能的”)价格范围提供数组结构中包含的多个位置。输入数据的候选(可互换地称为“可能的”)价格的范围是通过计算输入数据的价格与参考数据(例如,初始价格)的变化而确定的。观察到,一个或多个应用(诸如交易系统应用)在一天之内接收到的所有订单的价格都被限制在初始价格附近的价格范围内,因此价格仅落在确定的候选(可互换地称为“可能的”)价格范围内的输入数据(例如,传入订单)被存储在数组结构中。由于仅针对确定的候选(可互换地称为“可能的”)价格范围提供数组结构,所以可以减小数组结构的尺寸。因此,本公开通过利用更少的存储器来帮助优化存储器。此外,该数组结构能够进行快速处理,并从而降低了时间复杂度。接收超出确定的候选(可互换地称为“可能的”)价格范围的输入数据(例如,传入订单)的概率非常小,因此,由于链表结构不占用太多空间,因此价格超出确定的候选(可互换地称为“可能的”)价格范围的输入数据(例如,传入订单)被存储在链表结构中。由于接收价格超过确定的候选(可互换地称为“可能的”)价格范围的输入数据(例如,传入订单)的机会较小,因此在链表中搜索/插入/存储输入数据的需求最小,这致使减少等待时间并具有时效性。使用所提出的公开对存储器和时间的优化可以通过非限制性示例来进一步解释。在此示例中,创建了具有四个节点的数据结构,这些节点描述了由相应数据指针指向的四个位置,并且假定这四个节点的索引值为例如80、120、280和320。另外,假定参考数据(例如,初始价格)被选择为200。然后,在这种情况下,数据结构将形成如下:
[0040]
[0041] 在此,为每个接收到的输入数据(例如,传入订单)创建节点,其中接收到的输入数据可以由数据A、数据B,数据C和数据D表示(与上述示例相同)。如上述数据结构中可以看出,在数组结构中定义了范围为100美元到300美元的多个数据指针,这是因为输入数据的初始价格附近的候选(可互换地称为“可能的”)价格范围是通过计算初始价格(具有100美元至300美元的值)的+/-50%的变化来确定的。此外,从上述数据结构可以看出,具有索引值80和320的节点分别包括在链表(LL)中。假设接收到表示为数据C的新输入数据(例如,新传入订单)(与上述示例相同)。为了存储或放置新输入数据,创建描述相应数据指针指向的新位置的新节点,并将其插入到链表中。新节点的索引值为例如280。在这种情况下,为了在上述数据结构中插入索引值为280的新节点,将计算(增量值)之间的差,其为例如(280–200)=80,并且指向相应位置的数据指针是通过在数组结构中移动+80个计数来确定的。在位置280,识别期望的节点。不是像在完全基于链表的实施方式中那样从具有索引值80的节点遍历到具有索引值120的节点再到具有索引值280的节点,针对这种情况的所提出的公开使用基于增量的机制在数组结构中直接识别具有索引值280的节点,并将新输入数据存储或放置在所识别节点的地址处。此外,数组结构使得能够进行快速处理。可以看出,新节点是期望的节点。在到达位置280时,添加具有表示为数据C的新输入数据的新节点并将其存储在数组结构中。显然,通过使用提出的数据结构,只需要一个遍历步骤。因此,所花费的时间是1个单位,而不是如传统的完全基于链表的结构所提供的3个单位。所提出的数据结构的时间复杂度是时间O(1),而不是数组中的节点和针对链表中的节点的O(M),其中M表示链表中包含的节点数。因此,所提出的数据处理和存储系统通过结合数组结构和链表结构两者的优点而提供了对存储器和时间的优化的改进,其中数组结构提供了更快的处理,而链表结构通过占用较少的存储空间来提供有效的内存利用率。
[0042] 所说明的方法200的步骤被阐述以解释所示的示例性实施例,并且应该预期正在进行的技术发展可改变执行特定功能的方式。出于说明而非限制的目的,本文提出了这些示例。
[0043] 书面描述描述了本文的主题,以使本领域技术人员能够制造和使用这些实施例。主题实施例的范围由权利要求限定,并且可以包括本领域技术人员想到的其他修改。如果这些其他修改具有与权利要求的字面语言没有不同的相似元素,或者如果它们包括与权利要求的字面语言无实质差别的等效元素,则这些其他修改旨在落入权利要求的范围内。
[0044] 应当理解,保护范围扩展到这样的程序,并且除了其中具有消息的计算机可读装置之外;当程序在服务器或移动装置或任何合适的可编程装置上运行时,这种计算机可读存储装置包含用于实施该方法的一个或多个步骤的程序代码装置。硬件装置可以是任何类型的可以编程的装置,包括例如任何类型的计算机,如服务器或个人计算机等,或其任何组合。该装置还可以包括可以是以下的装置:例如硬件装置,如,例如专用集成电路(ASIC)、现场可编程阵列(FPGA);或硬件和软件装置的组合,例如ASIC和FPGA,或至少一个微处理器和至少一个存储器,其中具有位于其中的软件模块。因此,该装置可以包括硬件装置和软件装置。这里描述的方法实施例可以用硬件和软件实现。该装置还可以包括软件装置。可替选地,实施例可以在不同的硬件装置上实现,例如使用多个CPU。
[0045] 本文的实施例可包括硬件和软件元素。以软件实施的实施例包括但不限于固件、驻留软件、微代码等。由本文描述的各种模块执行的功能可以在其他模块或其他模块的组合中实施。出于本说明书的目的,计算机可用或计算机可读介质可以是能够包括、存储、通信、传播或传输程序以供指令执行系统、设备或装置使用或与之结合使用的任何设备。
[0046] 所示出的步骤被阐述以解释所示出的示例性实施例,并且应该预期正在进行的技术开发将改变执行特定功能的方式。出于说明而非限制的目的,本文提出了这些示例。此外,为了便于描述,这里任意地定义了功能构建块的边界。可以定义替代边界,只要适当地执行指定的功能及其关系即可。基于本文包含的教导,相关领域的技术人员将清楚替代方案(包括本文描述的那些的等同物、扩展、变化、偏差等)。这些替代方案落入所公开实施例的范围和精神内。此外,词语“包含”、“具有”、“含有”和“包括”以及其他类似形式在意义上旨在是等同的并且是开放式的,在于在这些词中的任何一个之后的一个或多个条目不是意味着是这些一个或多个条目的详尽清单,或意味着仅限于列出的一个或多个条目。还必须注意,如本文和所附权利要求中所使用的,单数形式“一”、“一个”和“该”包括复数指代,除非上下文另有明确说明。
[0047] 此外,一个或多个计算机可读存储介质可用于实施与本公开一致的实施例。计算机可读存储介质指的是可以存储处理器可读的信息或数据的任何类型的物理存储器。因此,计算机可读存储介质可以存储用于由一个或多个处理器执行的指令,包括用于使一个或多个处理器执行与本文描述的实施例一致的步骤或阶段的指令。术语“计算机可读介质”应该被理解为包括有形条目并且不包括载波和瞬态信号,即,是非暂时的。示例包括随机存取存储器(RAM)、只读存储器(ROM)、易失性存储器、非易失性存储器、硬盘驱动器、CD ROM、DVD、闪存驱动器、磁盘和任何其他已知的物理存储介质。
[0048] 意图是本公开和示例仅被视为示例性的,所公开的实施例的真实范围和精神由所附权利要求指示。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈