掌桥专利:专业的专利平台
掌桥专利
首页

数据存储方法、装置、服务器及计算机可读存储介质

文献发布时间:2023-06-19 11:16:08


数据存储方法、装置、服务器及计算机可读存储介质

技术领域

本发明实施例涉及数据存储技术领域,特别涉及一种数据存储方法、装置、服务器及计算机可读存储介质。

背景技术

本申请要求申请号为202011384157.0的专利申请的优先权,其内容通过引用结合在本发明中。

随着定位系统的发展,一些交通工具(例如,车、船等)都具备了定位导航功能,而随着交通工具数量的剧增,其产生的海量定位数据如何方便快速的存储是一个巨大难题。

在现有技术中,通常采用第三方数据进行存储,例如,选择使用关系型数据库(Oracle、MySQL),或者使用非关系型数据库(HBase、MongoDB)。无论是使用关系型数据库还是使用非关系型数据库,发明人发现现有技术中至少存在如下问题:当数据量太大时,例如超过100亿条,存储速度都比较慢。

发明内容

本发明实施方式的目的在于提供一种数据存储方法、装置、服务器及计算机可读存储介质,使得数据存储速度更为稳定。

为解决上述技术问题,本发明的实施方式提供了一种数据存储方法,包括以下步骤:

对当前接收的定位数据进行处理获取所述定位数据中包含的设备注册地址;

根据所述设备注册地址确定所述定位数据所归属的城市,及与所述城市相关联的第一存储文件的存储时长是否超过预设时长;

当所述存储时长未超过所述预设时长时,将所述定位数据存储在所述第一存储文件中。

本发明的实施方式还提供了一种数据查询方法,包括:

接收查询请求;其中,所述查询请求中包含查询的城市和时间范围;

根据所述城市和时间范围确定存储文件;其中,所述存储文件中包含同一城市的同一预设时长的定位数据;

从所述存储文件中读取定位数据。

本发明的实施方式还提供了一种数据存储装置,包括:

地理位置获取模块,用于对当前接收的定位数据进行处理获取所述定位数据中包含的设备注册地址;

城市确定模块,用于根据所述设备注册地址确定所述定位数据所归属的城市,及与所述城市相关联的第一存储文件的存储时长是否超过预设时长;

数据存储模块,用于当所述存储时长未超过所述预设时长时,将所述定位数据存储在所述第一存储文件中。

本发明的实施方式还提供了一种数据查询装置,包括:

请求接收模块,用于接收查询请求;其中,所述查询请求中包含查询的城市和时间范围;

文件确定模块,用于根据所述城市和时间范围确定存储文件;其中,所述存储文件中包含同一城市的同一预设时长的定位数据;

数据读取模块,用于从所述存储文件中读取定位数据。

本发明实施方式相对于现有技术而言,将同一城市中同一预设时长的定位数据存储在同一存储文件中,按照城市和时间独立存储,不会随着数据量的变大而导致存储速度变慢,也不会因为存储城市的增多而导致存储速度变慢,能够保证存储速度稳定。

上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。

附图说明

一个或多个实施例通过与之对应的附图中的图片进行示例性说明,这些示例性说明并不构成对实施例的限定,附图中具有相同参考数字标号的元件表示为类似的元件,除非有特别申明,附图中的图不构成比例限制。

图1是本发明实施例提供的一种数据存储方法的流程图;

图2是本发明实施例提供的一种数据查询方法的流程图;

图3是本发明实施例提供的一种数据存储装置的结构图;

图4是本发明实施例提供的一种数据查询装置的结构图;

图5是本发明实施例提供的一种服务器的结构图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的各实施方式进行详细的阐述。然而,本领域的普通技术人员可以理解,在本发明各实施方式中,为了使读者更好地理解本申请而提出了许多技术细节。但是,即使没有这些技术细节和基于以下各实施方式的种种变化和修改,也可以实现本申请所要求保护的技术方案。以下各个实施例的划分是为了描述方便,不应对本发明的具体实现方式构成任何限定,各个实施例在不矛盾的前提下可以相互结合相互引用。

本发明的第一实施方式涉及一种数据存储方法,存储介质为服务器的硬盘,不依赖第三方数据库。本发明的第一实施方式可以使用Java语言开发,可以支持不同平台(例如,Windows、linux)的数据存储服务。具体可以用于快速存储海量的定位数据,包括移动终端的定位数据、或车船等交通工具的定位数据。其流程如图1所示,具体如下:

步骤S11:对当前接收的定位数据进行处理获取所述定位数据中包含的设备注册地址。

其中,定位数据中包含设备标识和/或设备注册地址等,例如,该设备可以为移动终端、车辆、船舶等。设备注册地址具体为车辆或船舶的备案地址或者移动终端的注册地址等。其中,所述定位数据中还包含当前设备所在的地理位置信息(例如,经纬度信息)、空重状态(例如,车辆或船舶是空载状态、或承载状态、或承重量)、定位状态(例如,有效定位或无效定位)、地面速率、地面航向、日期、磁偏角度、磁偏角方向等信息。

在本实施方式中,该数据存储方法的执行主体可以为服务器,该服务器实时接收定位装置发送的定位数据,该定位装置可以为软件装置,例如GPS(Global PositioningSystem,全球定位系统)或北斗定位系统,该定位装置也可以为硬件装置,例如车载终端或移动终端。该定位装置集成在对应的设备中,用于对该设备进行定位。当设备为移动终端时,对应的设备标识可以为用户账号、或部分手机号码(例如后四位)、或者国际移动设备识别码IMEI等。当设备为车辆时,对应的设备标识可以为车牌号码或用户自定义号码。当设备为船舶时,对应的设备标识可以为船舶识别号或用户自定义号码。

步骤S12:根据所述设备注册地址确定所述定位数据所归属的城市,及与所述城市相关联的第一存储文件的存储时长是否超过预设时长。

其中,设备注册地址包含经纬度信息,例如,北纬、南纬、东经和西经,可以将该经纬度信息输入谷歌地图中,在谷歌地图中获取对应的位置,根据该位置进一步确定对应的城市。该城市包括特别行政区、直辖市、地级市和县级市。

每一个城市至少对应一个存储文件,该存储文件可以根据定位数据的接收时间实时创建。例如,实时接收一个城市的定位数据,每隔预设时长(例如1小时)创建一个存储文件。该存储文件也可以是预先创建好的,即每隔预设时长更换一个存储文件。

在本实施方式中,当接收到该城市对应的新的定位数据时,首选判断当前使用的存储文件的存储时长是否超过预设时长(例如,1小时)。当所述存储时长未超过所述预设时长时,则执行步骤S13,当所述存储时长超过所述预设时长时,则执行步骤S14。

步骤S13:当所述存储时长未超过所述预设时长时,将所述定位数据存储在所述第一存储文件中。

其中,第一存储文件可以通过预设符号(例如换行符)分割记录定位数据中的关键字,这里也可以称为字段,记录的字段通过预设分割符(例如|)分割,并且记录字段支持动态扩展。例如:定位时间|车牌号|精度|维度|速度|方向|海拔,或者,定位时间|车牌号|精度|维度|速度|方向|海拔|车辆状态|报警状态|驾驶员身份证|订单号,即不受字段个数的限制,支持动态扩展,新增的字段依次加在后面,且不能删除中间的已有字段。

定位数据的存储方式为,将定位数据进行压缩编码(例如,ASCII(AmericanStandard Code for Information Interchange,美国信息交换标准代码))后形成文本文件存储,该文本文件支持任意语言解析和迁移。并且根据接收的定位数据的特点——时间只增,将文本文件拆分为时序存储方式即形成预设时长的存储文件,可以减小每个存储文件的大小,可以提高存储和查询性能。

其中,形成的存储文件即第一存储文件可以存储在服务器中,具体可以存储在服务器的硬盘中。这样存储只占用硬盘空间,完全自主开发,无第三方软件费用和版权问题,并且存储空间相比其他数据库小很多。

另外,为了减少硬盘频繁的输入和输出,在将数据写入硬盘时,可以采用批量方式写入硬盘。

本实施方式通过将同一城市中同一预设时长的定位数据存储在同一存储文件中,按照城市和时间独立存储,不会随着数据量的变大而导致存储速度变慢,也不会因为存储城市的增多而导致存储速度变慢,能够保证存储速度稳定。即1个城市10亿数据和10城市100亿数据量,在存储性能上是一样的。

在一个可选的实施方式中,所述数据存储方法还包括:

步骤S14:当所述存储时长超过所述预设时长时,将所述定位数据存储在第二存储文件中。

在本实施方式中,当所述存储时长超过所述预设时长时,则需要重新确定存储文件。若服务器中已有该存储文件,则直接从服务器中获取,若服务器中没有该存储文件,则需要创建该存储文件。

在一个可选的实施方式中,为提高查询速度,所述数据存储方法还包括:

步骤S15:从所述定位数据中提取关键字。

其中,关键字包括时间、设备标识、经纬度信息、空重状态和所述定位数据的存储地址中的至少一个。

步骤S16:根据所述关键字建立与存储文件相关联的索引文件;其中,所述索引文件用于精确定位存储文件中的定位数据。

索引文件的大小直接影响查询性能,在本实施方式中,索引使用字节编码压缩存储为二进制文件,并按时间正序排序好,每条索引记录可以为17字节固定长度,其中一种存储方式为:

其中,索引字段能满足时间范围内车辆轨迹查询和地理位置范围查询。由于存储文件本身已经按预设时长(这里为1小时)分割,所有索引文件里存储的时间仅保存分和秒,占2个字节。

另外,为减少索引文件大小,以车辆为例,可以建立车牌号和车辆标识的对应表,车辆标识设为char类型,占2个字节。

其中,经纬度可以精确到小数点后5位,精度为1.1米,按*100000存储整数,总共占8个字节。

索引文件中还存储了车辆空重状态,满足失物查找业务模型,占1个字节。

为了提高查询速度,可以将频繁使用的索引文件缓存在内存中,提高数据存储和查询性能。

在一个可选的实施方式中,数据存储结构可以为:所述城市为根节点,年月日为所述城市所在节点的子节点,存储文件及其相关联的索引文件为所述年月日所在节点的子节点。

通过将同一城市的定位数据按预设时长分文件存储,不仅减小了文件的大小,同时实现了数据时序存储,具体存储结构如下:

根据查询需求,一般都是查询一定时间范围内的定位数据,可以通过文件存储目录和文件名直接定位到索引文件,使查询的数据量大幅减少。当定位到的文件数大于3个时,可以开启多线程同时查询。

在一个可选的实施方式中,所述数据存储方法还包括:

步骤S17:监听接收到的定位数据消息,基于所述定位数据消息触发执行所述数据存储方法;或基于预设的应用程序接口API接收到的定位数据触发执行所述数据存储方法。

在本实施方式中,可以监听基于AMQPA(Dvanced Message Queuing Protocol,高级消息队列协议)的定位数据消息,其中,将定位数据添加到定位数据消息中,通过解析该定位数据消息获取到定位数据,从而触发执行本发明实施例提供的数据存储方法。

或者,通过API接口直接接收定位数据,该API接口可以为Restful API接口或httpPOST接口。通过http方式将定位数据写入存储文件中,方便代码集成。

本发明的第二实施方式涉及一种数据查询方法,本实施方式基于本发明的第一实施方式的存储方式进行查询,该数据查询方法的执行主体与本发明的第一实施方式的数据存储方法的执行主体一致,例如为服务器。其流程如图2所示,具体如下:

步骤S21:接收查询请求;其中,所述查询请求中包含查询的城市和时间范围。

在本实施方式中,查询请求可以由对应的客户端发起,即在用户有查询需求时,可以使用该客户端向服务器发起查询请求。具体的,客户端提供查询界面,在该查询界面可以包含城市选项、时间选项和设备标识等一些相关信息,由用户根据自己的需求选择查询条件(例如,想要查询的城市和时间),在确定查询条件后,通过触发查询界面的预设按钮(例如,发送按钮或查询按钮),则查询条件则以指令的形成生成查询请求,发送到服务器。

步骤S22:根据所述城市和时间范围确定存储文件;其中,所述存储文件中包含同一城市的同一预设时长的定位数据。

由于同一城市的存储文件是按时间进行分割存储的,因此,一次查询可能会对应多份存储文件,当定位到多份存储文件时,为进一步提高查询效率,可以开启多线程同时查询。

步骤S23:从所述存储文件中读取定位数据。

在本实施方式中,从所述存储文件中读取定位数据后,可以形成一个格式的数据文件返回至客户端。

本实施方式通过将同一城市中同一预设时长的定位数据存储在同一存储文件中,在查询时可以按照城市和时间的方式进行查询,可以快速定位到存储文件,通过实验能够将查询速度提升到秒级,通常查询条件下<3秒。

在一个可选的实施方式中,步骤S22包括:

步骤S221:根据所述城市和时间范围确定索引文件;其中,所述索引文件中包含关键字,用于精确定位所述存储文件中的定位数据。

索引文件可以更为精确的定位数据的位置,在查询一个城市内一定时间范围内的数据时,可以通过文件存储目录和文件名直接定位到索引文件,使查询的数据量大幅减少。

其中,所述关键字包括设备标识、时间、经纬度信息、空重状态和存储地址中的至少一个。

步骤S222:通过查询所述索引文件中存储地址对应的关键字,获取所述定位数据在所述存储文件中的存储地址。

其中,存储地址可以为数据的起始地址。

步骤S23具体包括:根据所述存储地址从所述存储文件中读取定位数据。

在一个可选的实施方式中,所述方法还包括:

步骤S24:通过查询所述索引文件中设备标识对应的关键字,确定在所述城市和时间范围内出现的设备。

本实施方式可以用于查找丢失的设备。

在一个可选的实施方式中,所述查询请求中还包含设备标识;

步骤S23具体包括:从所述存储文件中读取所述设备标识对应的定位数据;

所述方法还包括:

步骤S25:根据所述设备标识对应的定位数据形成并回放对应设备的运动轨迹。

本实施方式可以用于确定设备的运动轨迹。例如,查询车辆或船舶的运动轨迹。

由于第一实施方式与本实施方式相互对应,因此本实施方式可与第一实施方式互相配合实施。第一实施方式中提到的相关技术细节在本实施方式中依然有效,在第一实施方式中所能达到的技术效果在本实施方式中也同样可以实现,为了减少重复,这里不再赘述。相应地,本实施方式中提到的相关技术细节也可应用在第一实施方式中。

上面各种方法的步骤划分,只是为了描述清楚,实现时可以合并为一个步骤或者对某些步骤进行拆分,分解为多个步骤,只要包括相同的逻辑关系,都在本专利的保护范围内;对算法中或者流程中添加无关紧要的修改或者引入无关紧要的设计,但不改变其算法和流程的核心设计都在该专利的保护范围内。

本发明第三实施方式涉及一种数据存储装置,如图3所示,包括:

地理位置获取模块31用于对当前接收的定位数据进行处理获取所述定位数据中包含的设备注册地址;

城市确定模块32用于根据所述设备注册地址确定所述定位数据所归属的城市,及与所述城市相关联的第一存储文件的存储时长是否超过预设时长;

数据存储模块33用于当所述存储时长未超过所述预设时长时,将所述定位数据存储在所述第一存储文件中。

进一步的,所述数据存储模块33还用于:当所述存储时长超过所述预设时长时,将所述定位数据存储在第二存储文件中。

进一步的,所述装置还包括:

关键字提取模块34用于从所述定位数据中提取关键字;

文件建立模块35用于根据所述关键字建立与存储文件相关联的索引文件;其中,所述索引文件用于精确定位存储文件中的定位数据。

进一步的,所述关键字包括时间、设备标识、经纬度信息、空重状态和所述定位数据的存储地址中的至少一个。

进一步的,数据存储结构为:所述城市为根节点,年月日为所述城市所在节点的子节点,存储文件及其相关联的索引文件为所述年月日所在节点的子节点。

进一步的,所述装置还包括:

触发模块36用于监听接收到的定位数据消息,基于所述定位数据消息触发执行所述数据存储方法;或基于预设的应用程序接口API接收到的定位数据触发执行所述数据存储方法。

值得一提的是,本实施方式中所涉及到的各模块均为逻辑模块,在实际应用中,一个逻辑单元可以是一个物理单元,也可以是一个物理单元的一部分,还可以以多个物理单元的组合实现。此外,为了突出本发明的创新部分,本实施方式中并没有将与解决本发明所提出的技术问题关系不太密切的单元引入,但这并不表明本实施方式中不存在其它的单元。

本发明第四实施方式涉及一种数据查询装置,如图4所示,包括:

请求接收模块41用于接收查询请求;其中,所述查询请求中包含查询的城市和时间范围;

文件确定模块42用于根据所述城市和时间范围确定存储文件;其中,所述存储文件中包含同一城市的同一预设时长的定位数据;

数据读取模块43用于从所述存储文件中读取定位数据。

进一步的,所述文件确定模块42具体用于:根据所述城市和时间范围确定索引文件;其中,所述索引文件中包含关键字,用于精确定位所述存储文件中的定位数据;通过查询所述索引文件中存储地址对应的关键字,获取所述定位数据在所述存储文件中的存储地址;

所述数据读取模块43具体用于:根据所述存储地址从所述存储文件中读取定位数据。

进一步的,所述装置还包括:

设备确定模块44用于通过查询所述索引文件中设备标识对应的关键字,确定在所述城市和时间范围内出现的设备。

进一步的,所述关键字还包括时间、经纬度信息和空重状态中的至少一个。

进一步的,所述查询请求中还包含设备标识;

所述数据读取模块43具体用于:从所述存储文件中读取所述设备标识对应的定位数据;

所述装置还包括:

轨迹确定模块45用于根据所述设备标识对应的定位数据形成并回放对应设备的运动轨迹。

值得一提的是,本实施方式中所涉及到的各模块均为逻辑模块,在实际应用中,一个逻辑单元可以是一个物理单元,也可以是一个物理单元的一部分,还可以以多个物理单元的组合实现。此外,为了突出本发明的创新部分,本实施方式中并没有将与解决本发明所提出的技术问题关系不太密切的单元引入,但这并不表明本实施方式中不存在其它的单元。

本发明第五实施方式涉及一种服务器,如图5所示,包括至少一个处理器51;以及,与所述至少一个处理器51通信连接的存储器52;其中,所述存储器52存储有可被所述至少一个处理器51执行的指令,所述指令被所述至少一个处理器51执行,以使所述至少一个处理器51能够执行本发明中第一实施方式所述的数据存储方法和本发明中第二实施方式所述的数据查询方法。

其中,存储器52和处理器51采用总线方式连接,总线可以包括任意数量的互联的总线和桥,总线将一个或多个处理器51和存储器52的各种电路连接在一起。总线还可以将诸如外围设备、稳压器和功率管理电路等之类的各种其他电路连接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。总线接口在总线和收发机之间提供接口。收发机可以是一个元件,也可以是多个元件,比如多个接收器和发送器,提供用于在传输介质上与各种其他装置通信的单元。经处理器处理的数据通过天线在无线介质上进行传输,进一步,天线还接收数据并将数据传送给处理器。

处理器51负责管理总线和通常的处理,还可以提供各种功能,包括定时,外围接口,电压调节、电源管理以及其他控制功能。而存储器可以被用于存储处理器在执行操作时所使用的数据。

本发明第六实施方式涉及一种计算机可读存储介质,存储有计算机程序。计算机程序被处理器执行时实现本发明中第一实施方式所述的数据存储方法和本发明中第二实施方式所述的数据查询方法。

即,本领域技术人员可以理解,实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。

本领域的普通技术人员可以理解,上述各实施方式是实现本发明的具体实施例,而在实际应用中,可以在形式上和细节上对其作各种改变,而不偏离本发明的精神和范围。

相关技术
  • 数据存储方法、装置、服务器及计算机可读存储介质
  • 一种数据存储方法、计算机可读存储介质及服务器
技术分类

06120112859576