一种增量式数据存取系统的制作方法

文档序号:19745059发布日期:2020-01-21 18:13阅读:181来源:国知局
一种增量式数据存取系统的制作方法

本发明涉及数据库技术领域,特别是一种增量式数据存取系统。



背景技术:

当前在某些技术领域,例如区块链技术领域,其数据存取系统对于内存存储的管理提出了挑战。在这类系统中,计算机系统除了按时间顺序对数据输入进行记录外,还需要构建派生于这些数据输入的系统状态或历史状态数据以提供给外界快速的查询和索引操作。按时序记录的数据存储的是输入数据的原始信息,可以按照时间顺序存储,内存管理和数据存取的性能对于验证这些数据历史的完整性以及在系统所在计算机重启时根据逻辑规则重构整个数据结构的历史状态至关重要。

例如社交应用系统中用户账户的历史操作,账户历史操作记录包含系统中每个用户的所有操作状态,如帐户余额的变化、账户行为以及行为产生的结果等。为了对海量账户的历史操作数据进行存储和快速访问,直接的做法是将账户历史操作记录数据常驻内存中。但是,由于用户的某些操作会衍生出数量众多的关联操作,比如一个社交行为可以衍生出极其庞大的社交状态结果。当这样的社交应用构建在区块链技术之上时,由于区块链系统数据历史不可修改和不可删除的特性,账户历史操作记录数据便会只增不减,随着用户活跃数量的增加,账户的历史操作记录高速增长,因此提供所有数据访问的计算机系统将需要大量的内存来支持账户历史记录的快速存储和检索。针对不断增加的用户操作情况,系统扩容的方法只能靠不断增加内存来满足整个历史操作记录数据的存储和访问,但由于计算机硬件的瓶颈,这最终是不可持续的。



技术实现要素:

本发明所要解决的技术问题是:针对在历史不可修改和删除的增量式数据存取系统中,计算机系统内存管理上不能同时满足高效率和可持续存储的问题;即为了解决大规模持续数据输入业务的数据存取系统存在数据访问效率低下和数据存储的不可持续问题,提供了一种增量式数据存取系统。

本发明采用的技术方案如下:一种增量式数据存取系统,包括缓冲层和物理层;所述缓冲层将输入数据存储到物理层,并根据缓冲层大小缓存全部或者部分数据在缓冲层,所述缓冲层还用于外部查询访问;所述物理层用于数据存储,所述物理层对已存入的数据按输入操作关系存储,保留数据输入的历史,已存入数据的历史不进行修改和删除操作,所存储的输入数据以及派生的结构化数据均为增量式数据。

进一步的,所述输入操作关系包括但不限于时间顺序。

进一步的,所述增量式数据存取系统还包括访问接口层,所述访问接口层包括业务输入api数据接口和业务查询api数据接口,所述业务输入api数据接口用于输入数据的输入操作,所述业务查询api数据接口用于查询数据的查询操作。

进一步的,所述缓冲层采用key-value形式的内存数据库结构,对整个业务应用的访问接口层表现为一致的数据输入、查询或索引方法,并且对访问接口层提供统一的包含整个业务数据的数据视图,并向访问接口层返回满足业务数据结构要求的结果。

进一步的,所述缓冲层缓存部分数据的方法为:查询数据的访问时间,如果该数据在t时间内查询过,则将该数据进行缓存在缓冲区,否则只存储在物理层。

进一步的,所述缓冲层缓存部分数据的方法中,当缓冲层缓存的业务历史数据的内存结构大小超过系统所在物理设备内存设置限制后,缓冲层将根据情况对部分存储时间较长的业务数据进行丢弃并清除该部分内存占用,缓冲层在内存中维护一个最近最常使用的小规模数据。

进一步的,所述缓冲层在内存中维护一个最近最常使用的小规模数据时,如果查询数据索引范围正好在缓冲层内存中,那么缓冲层直接返回结果;如果不在缓冲范围中,缓冲层数据库将对物理层进行寻址以返回该查询结果。

进一步的,所述物理层结构对缓冲层的任意输入数据均进行持久化存储,对任意历史数据的查询和索引操作均能返回正确的原始结果;物理层通过调用各种物理存储系统的输入输出接口来进行数据存取。

进一步的,所述物理存储系统包括但不限于纯内存、闪存、高速磁盘或分布式存储系统。

与现有技术相比,采用上述技术方案的有益效果为:本发明通过在整个数据管理技术架构中采用多级分层的存取结构设计,使得系统可根据自身业务情况选择合适的内存数据结构,在对整个输入历史数据保持高效率地索引读取的同时,对远超过内存容量的大规模增量式数据结构进行动态的持久化存储,提高了整个数据存取系统的实际可持续性。

附图说明

图1是本发明增量式数据存取系统的其中一种实施例的实施方法示意图。

具体实施方式

下面结合附图对本发明做进一步描述,但本发明并不限于这些实施例。还应当理解,此处所描述的具体实施例仅仅用于理解本发明,并不用于限定本发明。

在本申请实施例中,通过访问接口层的api逻辑来构建对业务服务器的业务查询结果数据结构,该数据结构不常驻内存,仅对当次api调用有效,这可以针对业务需求进行性能调优和格式转换。访问接口层对于本发明来说,不是必须部分,而是优选部分。缓冲层采用一种key-value形式的内存数据库结构,提供一个满足整个业务需要的完整数据视图,接口层可以随时读取或索引该数据库,且访问接口层对该缓冲层的数据存取采用统一的快速内存访问。缓冲层对接口层发来的数据输入操作,均通过物理层接口进行持久化存储;物理层支持各种配置,可以根据当前业务规模和性能需求在不同的生产环境(纯内存、闪存、高速硬盘或者分布式存储)中对底层存储机制进行调优以满足系统数据存储的可持续要求,支持不同的数据压缩算法、和生产环境debug的完善工具。物理层的主要设计点是在快存和高服务压力下性能表现优越,所以该层需要支持配置各种参数在高压力的随机读、随机写或者二者流量都很大时性能调优,具体方法这里不做赘述。

可见,本发明的技术方案采用了多级分层的存取结构设计,下面结合图1做详细说明如下:

以区块链下的大规模社交场景为例,由于用户的某些操作会衍生出数量众多的关联操作,比如设定对一个帖子点赞会影响(奖励)与该帖子交互的其他用户,那么一个帖子的点赞数为n,则衍生出的涉及其它用户的影响历史记录为n*(n+1)/2,如某个帖子点赞数为100条,则衍生的关联历史记录为5050条,如点赞数为1000条,则衍生的关联历史记录为500500条,并且由于区块链历史不可修改和删除的特性,账户历史操作记录数据具有只增不减的性质。随着用户活跃数量的增加,账户的历史操作记录为指数级别增长,因此提供所有历史内容访问的计算机系统将需要大量的设备内存来支持账户历史记录的快速存储和检索,并且每次计算机重启都需要利用区块链块历史数据输入记录在内存中重构衍生的关联账户历史操作记录和重新构建索引。

以对用户发帖点赞行为输入进行存储为例,数据在各层的写入处理逻辑如下:

在提供输入业务访问的业务输入api数据接口,点赞操作在业务输入api数据接口内存中临时构建点赞业务数据结构并填充数据内容,该内容仅针对这次行为输入操作,访问接口层通过调用缓冲层的统一数据存储接口进行数据写入。访问接口层完成输入操作返回执行结果后,访问接口层清除该操作临时分配的所有内存。

缓冲层处理写入数据操作,对该操作数据结构进行转换,以转换为缓冲层统一数据视图兼容的key-value结构,并且调用物理层存储接口以进行一次持久化存储。物理层接受本次写入立即返回结果,实际的持久化存储动作由物理层根据需要异步执行完成。

物理层对写入操作根据生产环境的内存设置和物理存储系统配置,动态异步对实际物理存储设备(纯内存、闪存、高速磁盘或者分布式数据存储)进行写入。

以对用户发帖点赞产生的奖励进行查询为例,数据在各层的读取处理逻辑如下:

在提供查询业务访问的api数据接口,该操作在内存中临时构建返回的业务数据结构并填充数据内容,该内容仅针对这次查询操作,操作结束结果返回后,接口调用内存中的数据即被清除以恢复内存空间。

上述查询操作中,访问接口层通过缓冲层提供的数据视图进行一次统一的全局数据库索引操作。

基于以下两个过程:(1)查询数据的访问时间,如果该数据在t(根据需要设定,例如30min)时间内查询过,则将该数据进行缓存在缓冲区,否则只存储在物理层;(2)当缓冲层缓存的业务历史数据的内存结构大小超过系统所在物理设备内存设置限制后,缓冲层将根据情况对部分存储时间较长的业务数据进行丢弃并清除该部分内存占用,该过程称为“缓冲层内存溢出”;缓冲层在内存中维护一个最近最常使用的小规模数据,如果查询数据索引范围正好在内存缓冲中,那么直接返回结果;如果不在缓冲范围中,缓冲层数据库将对物理层进行寻址以返回该查询结果。

物理层对缓冲层溢出的寻址操作进行分析,根据当前物理层配置,针对不同物理存储系统(纯内存、闪存、高速磁盘或者分布式数据存储)进行数据读取,将读取到的寻址结果返回给缓冲层。

随着技术的发展,产生新的物理层存储技术也可以适应于本申请的技术方案,也处于本申请保护的范围。

在本申请实施例中,所述key-value内存数据库可以为mangodb、leveldb或者rocksdb等现有内存数据库技术,这里不再赘述。

在本实施例中,通过在物理层中采用不同的可持久存储策略,将大规模数据存储和业务内存索引视图结构分离,使得各业务根据自身情况选择合适的内存逻辑数据结构,提高各业务的数据存取运行效率,进而提高整个大规模增量式数据存取系统的效率。

本发明并不局限于前述的具体实施方式。本发明扩展到任何在本说明书中披露的新特征或任何新的组合,以及披露的任一新的方法或过程的步骤或任何新的组合。如果本领域技术人员,在不脱离本发明的精神所做的非实质性改变或改进,都应该属于本发明权利要求保护的范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1