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

数据写入、数据读取方法、装置及设备

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


数据写入、数据读取方法、装置及设备

技术领域

本申请涉及数据库领域,尤其是一种数据写入、数据读取方法、装置及设备。

背景技术

在大数据时代,数据是互联网的重要组成部分,互联网功能的实现都需要基于数据完成。数据的来源有很多,比如出行记录、消费记录、浏览的网页、发送的消息等等,数据的类型也有很多,比如文本数据、图像数据、音乐数据、声音数据、视频数据等等。针对大数据时代的大量数据,可以通过数据库来存储这些数据,从而基于这些数据实现互联网的相关功能。

数据库是一个按照数据结构来存储和管理数据的软件系统,是一个长期存储的、有组织的、有共享的、统一管理的数据集合。数据库是一个实体,是能够合理保管数据的“仓库”,用户在该“仓库”中存放要管理的数据,“数据”和“库”两个概念结合成为数据库。数据库是数据管理的方法,能够更合适的组织数据、更方便的维护数据、更严密的控制数据和更有效的利用数据。

但是,互联网每天都会产生大量数据(如上亿条数据),在采用数据库对这些数据进行存储时,需要存储的数据量巨大,因此,如果无法对这些数据进行很好的管理,那么,将会消耗大量存储资源,存储性能和查询性能都很低。

发明内容

本申请提供一种数据写入方法,所述方法包括:

获取数据写入请求,所述数据写入请求包括原始数据标识;

根据所述原始数据标识和数据表总数量确定目标数据表;

将所述数据写入请求发送给所述目标数据表所在的目标数据库,以使所述目标数据库根据所述数据写入请求在所述目标数据表中添加数据项,所述数据项的索引为所述原始数据标识对应的目标数据标识;

其中,所述目标数据标识小于所述原始数据标识。

本申请提供一种数据写入方法,所述方法包括:

获取数据写入请求,所述数据写入请求包括原始数据标识;

确定与所述数据写入请求对应的目标数据表;

根据所述数据写入请求在所述目标数据表中添加数据项,所述数据项的索引为所述原始数据标识对应的目标数据标识;

其中,所述目标数据标识小于所述原始数据标识。

本申请提供一种数据读取方法,所述方法包括:

获取数据读取请求,所述数据读取请求包括原始数据标识;

根据所述原始数据标识和数据表总数量确定目标数据表;

将所述数据读取请求发送给所述目标数据表所在的目标数据库,以使所述目标数据库根据所述原始数据标识对应的目标数据标识从所述目标数据表中读取数据;其中,所述目标数据标识小于所述原始数据标识;

从所述目标数据库获取已读取的数据。

本申请提供一种数据读取方法,所述方法包括:

获取数据读取请求,所述数据读取请求包括原始数据标识;

确定与所述数据读取请求对应的目标数据表;

根据所述原始数据标识对应的目标数据标识,从所述目标数据表中读取数据;其中,所述目标数据标识小于所述原始数据标识;

将已读取的数据发送给代理服务器。

本申请提供一种数据写入装置,所述装置包括:

获取模块,用于获取数据写入请求,所述数据写入请求包括原始数据标识;

确定模块,用于根据所述原始数据标识和数据表总数量确定目标数据表;

发送模块,用于将所述数据写入请求发送给所述目标数据表所在的目标数据库,以使所述目标数据库根据所述数据写入请求在所述目标数据表中添加数据项,所述数据项的索引为所述原始数据标识对应的目标数据标识;

其中,所述目标数据标识小于所述原始数据标识。

本申请提供一种数据读取装置,所述装置包括:

获取模块,用于获取数据读取请求,所述数据读取请求包括原始数据标识;

确定模块,用于根据所述原始数据标识和数据表总数量确定目标数据表;

发送模块,用于将所述数据读取请求发送给所述目标数据表所在的目标数据库,以使所述目标数据库根据所述原始数据标识对应的目标数据标识从所述目标数据表中读取数据;所述目标数据标识小于所述原始数据标识;

接收模块,用于从所述目标数据库获取已读取的数据。

本申请提供一种代理服务器,包括:

处理器和机器可读存储介质,所述机器可读存储介质上存储有若干计算机指令,所述处理器执行所述计算机指令时进行如下处理:

获取数据写入请求,所述数据写入请求包括原始数据标识;

根据所述原始数据标识和数据表总数量确定目标数据表;

将所述数据写入请求发送给所述目标数据表所在的目标数据库,以使所述目标数据库根据所述数据写入请求在所述目标数据表中添加数据项,所述数据项的索引为所述原始数据标识对应的目标数据标识;其中,所述目标数据标识小于所述原始数据标识;

或者,获取数据读取请求,所述数据读取请求包括原始数据标识;

根据所述原始数据标识和数据表总数量确定目标数据表;

将所述数据读取请求发送给所述目标数据表所在的目标数据库,以使所述目标数据库根据所述原始数据标识对应的目标数据标识从所述目标数据表中读取数据;其中,所述目标数据标识小于所述原始数据标识;

从所述目标数据库获取已读取的数据。

基于上述技术方案,本申请实施例中,目标数据表的数据项是以目标数据标识为索引,而不是以原始数据标识为索引,由于目标数据标识小于原始数据标识,因此减少目标数据表的数据量,充分利用路由信息(原始数据标识与目标数据表、目标数据库的关系)参与关键数据(即原始数据标识)的压缩,对整体数据的压缩率进行提高,巧妙利用了关键数据的重复率很高的特性,提高整体数据的压缩率。可以与其它压缩算法配合(同时)使用,形成叠加压缩效果。能够对数据进行有效管理,提升存储资源,存储性能和查询性能较高。

附图说明

为了更加清楚地说明本申请实施例或者现有技术中的技术方案,下面将对本申请实施例或者现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据本申请实施例的这些附图获得其它的附图。

图1是本申请一种实施方式中的数据写入方法的流程示意图;

图2是本申请一种实施方式中的数据写入方法的流程示意图;

图3是本申请一种实施方式中的数据读取方法的流程示意图;

图4是本申请一种实施方式中的数据读取方法的流程示意图;

图5A和图5B是本申请一种实施方式中的应用场景示意图;

图6A和图6B是本申请一种实施方式中的数据写入方法的流程示意图;

图7A和图7B是本申请一种实施方式中的数据读取方法的流程示意图;

图8A是本申请一种实施方式中的数据写入装置的结构示意图;

图8B是本申请一种实施方式中的数据读取装置的结构示意图;

图9是本申请一种实施方式中的代理服务器的结构示意图。

具体实施方式

在本申请实施例使用的术语仅仅是出于描述特定实施例的目的,而非限制本申请。本申请和权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其它含义。还应当理解,本文中使用的术语“和/或”是指包含一个或多个相关联的列出项目的任何或所有可能组合。

应当理解,尽管在本申请实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,此外,所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。

实施例1:本申请实施例提出一种数据写入方法,可以应用于任意类型的设备,对此不做限制,只要能够实现数据写入即可。如可以应用于代理服务器或应用服务器等。参见图1所示,为数据写入方法的流程示意图,该方法包括:

步骤101,获取数据写入请求,该数据写入请求包括原始数据标识。

步骤102,根据该原始数据标识和数据表总数量确定目标数据表。

在一种可能的实施方式中,可以利用处理函数(如hash函数等)对原始数据标识和数据表总数量进行运算,得到与原始数据标识对应的散列值;其中,所述处理函数包括:能够使运算后得到的散列值的总数量与数据表总数量相同的处理函数。然后,可以确定与该散列值对应的目标数据表。

步骤103,将数据写入请求发送给目标数据表所在的目标数据库,以使目标数据库根据数据写入请求在目标数据表中添加数据项,该数据项的索引为原始数据标识对应的目标数据标识,且目标数据标识小于原始数据标识。

示例性的,获取数据写入请求之后,还可以根据原始数据标识和数据表总数量确定原始数据标识对应的目标数据标识,并将目标数据标识发送给目标数据库。例如,可以将目标数据标识和数据写入请求一起发送给目标数据库,这样,目标数据库可以获知原始数据标识对应的目标数据标识,继而将数据项的索引记录为原始数据标识对应的目标数据标识。

在一种可能的实施方式中,为了确定目标数据表和原始数据标识对应的目标数据标识,可以采用如下方式实现:可以根据原始数据标识和数据表总数量进行取余运算;根据运算后得到的商数确定原始数据标识对应的目标数据标识;根据运算后得到的余数确定原始数据标识对应的目标数据表。

示例性的,上述目标数据库可以包括:用于存储时序数据的时序数据库。

在一个例子中,上述执行顺序只是为了方便描述给出的一个示例,在实际应用中,还可以改变步骤之间的执行顺序,对此执行顺序不做限制。而且,在其它实施例中,并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤,其方法所包括的步骤可以比本说明书所描述的更多或更少。此外,本说明书中所描述的单个步骤,在其它实施例中可能被分解为多个步骤进行描述;本说明书中所描述的多个步骤,在其它实施例也可能被合并为单个步骤进行描述。

基于上述技术方案,本申请实施例中,目标数据表的数据项是以目标数据标识为索引,而不是以原始数据标识为索引,由于目标数据标识小于原始数据标识,因此减少目标数据表的数据量,充分利用路由信息(原始数据标识与目标数据表、目标数据库的关系)参与关键数据(即原始数据标识)的压缩,对整体数据的压缩率进行提高,巧妙利用了关键数据的重复率很高的特性,提高整体数据的压缩率。可以与其它压缩算法配合(同时)使用,形成叠加压缩效果。能够对数据进行有效管理,提升存储资源,存储性能和查询性能较高。

实施例2:本申请实施例提出一种数据写入方法,可以应用于任意类型的设备,对此不做限制,只要能够实现数据写入即可。如应用于数据库(数据库也就是数据库服务器,即实现数据存储功能的服务器,数据库服务器也可以称为存储服务器)。示例性的,针对数据库来说,该数据库可以是用于存储时序数据的时序数据库。参见图2所示,为数据写入方法的流程示意图,该方法包括:

步骤201,获取数据写入请求,该数据写入请求包括原始数据标识。

步骤202,确定与该数据写入请求对应的目标数据表。

在一种可能的实施方式中,代理服务器在将数据写入请求发送给数据库时,数据写入请求还可以包括目标数据表的信息,基于此,数据库可以根据该目标数据表的信息确定与该数据写入请求对应的目标数据表。

在另一种可能的实施方式中,数据库可以根据该原始数据标识和数据表总数量确定目标数据表。例如,可以利用处理函数(如hash函数等)对原始数据标识和数据表总数量进行运算,得到与原始数据标识对应的散列值;其中,所述处理函数包括:能够使运算后得到的散列值的总数量与数据表总数量相同的处理函数。然后,可以确定与该散列值对应的目标数据表。

步骤203,根据该数据写入请求在目标数据表中添加数据项,该数据项的索引为原始数据标识对应的目标数据标识;目标数据标识小于原始数据标识。

在一种可能的实施方式中,可以从代理服务器获取原始数据标识对应的目标数据标识。例如,代理服务器在将数据写入请求发送给数据库时,数据写入请求还可以包括原始数据标识对应的目标数据标识,基于此,数据库可以确定原始数据标识对应的目标数据标识,继而将数据项的索引记录为原始数据标识对应的目标数据标识,而不是将索引记录为原始数据标识。

在另一种可能的实施方式中,可以根据原始数据标识和预先配置的数据表总数量(如所有数据库的数据表的总数量),确定原始数据标识对应的目标数据标识。例如,可以根据原始数据标识和数据表总数量进行取余运算;根据运算后得到的商数确定原始数据标识对应的目标数据标识。

在一个例子中,上述执行顺序只是为了方便描述给出的一个示例,在实际应用中,还可以改变步骤之间的执行顺序,对此执行顺序不做限制。而且,在其它实施例中,并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤,其方法所包括的步骤可以比本说明书所描述的更多或更少。此外,本说明书中所描述的单个步骤,在其它实施例中可能被分解为多个步骤进行描述;本说明书中所描述的多个步骤,在其它实施例也可能被合并为单个步骤进行描述。

基于上述技术方案,本申请实施例中,目标数据表的数据项是以目标数据标识为索引,而不是以原始数据标识为索引,由于目标数据标识小于原始数据标识,因此减少目标数据表的数据量,充分利用路由信息(原始数据标识与目标数据表、目标数据库的关系)参与关键数据(即原始数据标识)的压缩,对整体数据的压缩率进行提高,巧妙利用了关键数据的重复率很高的特性,提高整体数据的压缩率。可以与其它压缩算法配合(同时)使用,形成叠加压缩效果。能够对数据进行有效管理,提升存储资源,存储性能和查询性能较高。

实施例3:本申请实施例提出一种数据读取方法,可以应用于任意类型的设备,对此不做限制,只要能够实现数据读取即可。如可以应用于代理服务器或应用服务器等。参见图3所示,为数据读取方法的流程示意图,该方法包括:

步骤301,获取数据读取请求,该数据读取请求包括原始数据标识。

步骤302,根据该原始数据标识和数据表总数量确定目标数据表。

在一种可能的实施方式中,可以利用处理函数(如hash函数等)对原始数据标识和数据表总数量进行运算,得到与原始数据标识对应的散列值;其中,所述处理函数包括:能够使运算后得到的散列值的总数量与数据表总数量相同的处理函数。然后,可以确定与该散列值对应的目标数据表。

步骤303,将该数据读取请求发送给目标数据表所在的目标数据库,以使目标数据库根据原始数据标识对应的目标数据标识从该目标数据表中读取数据;其中,该目标数据标识小于该原始数据标识。

示例性的,获取数据读取请求之后,还可以根据原始数据标识和数据表总数量确定原始数据标识对应的目标数据标识,并将目标数据标识发送给目标数据库。例如,可以将目标数据标识和数据读取请求一起发送给目标数据库,这样,目标数据库可以获知原始数据标识对应的目标数据标识。

在一种可能的实施方式中,为了确定目标数据表和原始数据标识对应的目标数据标识,可以采用如下方式实现:可以根据原始数据标识和数据表总数量进行取余运算;根据运算后得到的商数确定原始数据标识对应的目标数据标识;根据运算后得到的余数确定原始数据标识对应的目标数据表。

步骤304,从目标数据库获取已读取的数据。

示例性的,上述目标数据库可以包括:用于存储时序数据的时序数据库。

在一个例子中,上述执行顺序只是为了方便描述给出的一个示例,在实际应用中,还可以改变步骤之间的执行顺序,对此执行顺序不做限制。而且,在其它实施例中,并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤,其方法所包括的步骤可以比本说明书所描述的更多或更少。此外,本说明书中所描述的单个步骤,在其它实施例中可能被分解为多个步骤进行描述;本说明书中所描述的多个步骤,在其它实施例也可能被合并为单个步骤进行描述。

基于上述技术方案,本申请实施例中,目标数据表的数据项是以目标数据标识为索引,而不是以原始数据标识为索引,由于目标数据标识小于原始数据标识,因此减少目标数据表的数据量,充分利用路由信息(原始数据标识与目标数据表、目标数据库的关系)参与关键数据(即原始数据标识)的压缩,对整体数据的压缩率进行提高,巧妙利用了关键数据的重复率很高的特性,提高整体数据的压缩率。可以与其它压缩算法配合(同时)使用,形成叠加压缩效果。能够对数据进行有效管理,提升存储资源,存储性能和查询性能较高。

实施例4:本申请实施例提出一种数据读取方法,可以应用于任意类型的设备,对此不做限制,只要能够实现数据读取即可。如应用于数据库(数据库也就是数据库服务器,即实现数据存储功能的服务器,数据库服务器也可以称为存储服务器)。示例性的,针对数据库来说,该数据库可以是用于存储时序数据的时序数据库。参见图4所示,为数据读取方法的流程示意图,该方法包括:

步骤401,获取数据读取请求,该数据读取请求包括原始数据标识。

步骤402,确定与该数据读取请求对应的目标数据表。

在一种可能的实施方式中,代理服务器在将数据读取请求发送给数据库时,数据读取请求还可以包括目标数据表的信息,基于此,数据库可以根据该目标数据表的信息确定与该数据读取请求对应的目标数据表。

在另一种可能的实施方式中,数据库可以根据该原始数据标识和数据表总数量确定目标数据表。例如,可以利用处理函数(如hash函数等)对原始数据标识和数据表总数量进行运算,得到与原始数据标识对应的散列值;其中,所述处理函数包括:能够使运算后得到的散列值的总数量与数据表总数量相同的处理函数。然后,可以确定与该散列值对应的目标数据表。

步骤403,根据原始数据标识对应的目标数据标识,从该目标数据表中读取数据;其中,该目标数据标识小于该原始数据标识。

在一种可能的实施方式中,可以从代理服务器获取原始数据标识对应的目标数据标识。例如,代理服务器在将数据读取请求发送给数据库时,数据读取请求还可以包括原始数据标识对应的目标数据标识,基于此,数据库可以确定原始数据标识对应的目标数据标识,继而根据目标数据标识从该目标数据表中读取数据,而不是根据原始数据标识从该目标数据表中读取数据。

在另一种可能的实施方式中,可以根据原始数据标识和预先配置的数据表总数量(如所有数据库的数据表的总数量),确定原始数据标识对应的目标数据标识。例如,可以根据原始数据标识和数据表总数量进行取余运算;根据运算后得到的商数确定原始数据标识对应的目标数据标识。

步骤404,将已读取的数据发送给代理服务器。

在一个例子中,上述执行顺序只是为了方便描述给出的一个示例,在实际应用中,还可以改变步骤之间的执行顺序,对此执行顺序不做限制。而且,在其它实施例中,并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤,其方法所包括的步骤可以比本说明书所描述的更多或更少。此外,本说明书中所描述的单个步骤,在其它实施例中可能被分解为多个步骤进行描述;本说明书中所描述的多个步骤,在其它实施例也可能被合并为单个步骤进行描述。

基于上述技术方案,本申请实施例中,目标数据表的数据项是以目标数据标识为索引,而不是以原始数据标识为索引,由于目标数据标识小于原始数据标识,因此减少目标数据表的数据量,充分利用路由信息(原始数据标识与目标数据表、目标数据库的关系)参与关键数据(即原始数据标识)的压缩,对整体数据的压缩率进行提高,巧妙利用了关键数据的重复率很高的特性,提高整体数据的压缩率。可以与其它压缩算法配合(同时)使用,形成叠加压缩效果。能够对数据进行有效管理,提升存储资源,存储性能和查询性能较高。

以下结合具体应用场景,对本申请实施例的技术方案进行说明。

参见图5A所示,为本申请实施例的应用场景示意图,客户端可以部署在用户设备(如终端设备、个人计算机,笔记本电脑,智能手机,平板电脑等,对此不做限制)。应用服务器是为客户端提供服务的设备。数据库也就是数据库服务器,也可以称为存储服务器,是实现数据存储功能和数据访问功能的设备。

示例性的,数据库可以包括多个数据表,并通过这些数据表存储数据,对此存储方式不做限制。数据库可以是用于存储时序数据的时序数据库,也可以是其它类型的数据库,对此数据库的类型不做限制。其中,时序数据库全称为时间序列数据库,时间序列数据库主要用于指处理带时间标签(按照时间的顺序变化,即时间序列化)的数据,带时间标签的数据也称为时间序列数据。

示例性的,可以部署至少一个数据库,参见图5A所示,以部署3个数据库为例,当然,数据库的数量可以更多,对此不做限制。每个数据库可以包括至少一个数据表,参见图5A所示,以数据库1包括数据表0、数据表1和数据表2,数据库2包括数据表3、数据表4和数据表5,数据库3包括数据表6和数据表7为例。当然,每个数据库包括的数据表的数量还可更多,对此不做限制。

为了实现数据压缩,本实施例中,可以额外部署具有代理功能的功能模块,通过该功能模块实现数据的写入与读取。示例性的,该功能模块可以部署在已有设备,如部署在数据库,该功能模块也可以作为独立设备,为了方便描述,后续以功能模块作为独立设备为例,将这个设备称为代理服务器。

代理(Proxy)是一种特殊的网络服务,允许一个网络终端(一般为客户端)通过这个服务与另一个网络终端(一般为服务器)进行非直接的连接。

参见图5B所示,为部署代理服务器后的应用场景示意图,基于图5A所示的应用场景,在应用服务器与数据库之间部署代理服务器。

基于上述应用场景,以下结合几个具体实施例,对上述方案进行说明。

实施例5:本实施例提出一种数据写入方法,如图6A所示,该方法包括:

步骤601,客户端向应用服务器发送数据写入请求。

步骤602,应用服务器向代理服务器发送数据写入请求。

具体的,应用服务器可以配置有代理服务器的地址,基于代理服务器的地址,应用服务器可以将数据写入请求发送给代理服务器。

步骤603,代理服务器接收数据写入请求,数据写入请求包括原始数据标识。

示例性的,为了对不同用户的数据进行区分,该数据写入请求可以包括数据标识,对此数据标识的类型不做限制,只要能够对数据进行区分即可。为了区分方便,可以将数据写入请求中的数据标识称为原始数据标识。

步骤604,代理服务器根据该原始数据标识和数据表总数量,确定该原始数据标识对应的目标数据表,以及该原始数据标识对应的目标数据标识。

在一种可能的实施方式中,可以利用处理函数(如hash函数等)对原始数据标识和数据表总数量进行运算,得到与原始数据标识对应的散列值;其中,所述处理函数包括:能够使运算后得到的散列值的总数量与数据表总数量相同的处理函数。然后,可以确定与该散列值对应的目标数据表。

其中,由于处理函数能够使运算后得到的散列值的总数量与数据表总数量相同,因此,每个散列值可以唯一对应一个数据表,也就是说,可以确定出每个散列值所对应的数据表。进一步的,针对每个散列值,只会确定出与该散列值对应的唯一一个数据表,而不会同时确定出与该散列值对应的多个数据表。

其中,处理函数可以为hash函数,hash函数能够使运算后得到的散列值的总数量与数据表总数量相同。例如,hash函数可以为取余hash函数,可以将原始数据标识除以数据表总数量的余数作为与原始数据标识对应的散列值。若散列值为0,散列值0对应的目标数据表为数据表0;若散列值为1,散列值1对应的目标数据表为数据表1,以此类推。当然,取余hash函数只是示例,对此不做限制,只要能够使运算后得到的散列值的总数量与数据表总数量相同即可。

在一种可能的实施方式中,可以利用选择函数(如hash函数等)对原始数据标识和数据表总数量进行运算,得到与该原始数据标识对应的目标数据标识;所述选择函数包括:能够使运算后得到的目标数据标识小于原始数据标识的选择函数,对此选择函数不做限制,只要目标数据标识小于原始数据标识即可。

例如,选择函数可以为hash函数,以取余hash函数为例,可以将原始数据标识除以数据表总数量的商数作为该原始数据标识对应的目标数据标识。比如说,若原始数据标识除以数据表总数量的商数为1,则该原始数据标识对应的目标数据标识为1;若原始数据标识除以数据表总数量的商数为2,则该原始数据标识对应的目标数据标识为2,以此类推。当然,取余hash函数只是示例,对此不做限制,只要能够保证目标数据标识小于原始数据标识即可。

在上述实施例中,可以将处理函数记为f1,则table(key)=f1(S,K),table(key)表示目标数据表,S表示原始数据标识,K表示数据表总数量,也就是说,将原始数据标识和数据表总数量作为输入,基于处理函数可以得到目标数据表。

在上述实施例中,可以将选择函数记为f2,则id(key)=f2(S,K),id(key)表示目标数据标识,S表示原始数据标识,K表示数据表总数量,也就是说,将原始数据标识和数据表总数量作为输入,基于选择函数得到目标数据标识。

示例性的,为了确定目标数据表和目标数据标识,以取余hash函数为例,可以根据原始数据标识和数据表总数量(即所有数据库部署的数据表的总数量)进行取余运算;根据运算后得到的商数确定原始数据标识对应的目标数据标识;根据运算后得到的余数确定原始数据标识对应的目标数据表。

例如,参见图5B所示,数据表总数量为8,原始数据标识可以为0、1、2等等。若原始数据标识为0,则对0/8进行取余运算,商数为0,余数为0,因此,目标数据标识为0,目标数据表为数据表0;若原始数据标识为1,则对1/8进行取余运算,商数为0,余数为1,因此,目标数据标识为0,目标数据表为数据表1;若原始数据标识为7,则对7/8进行取余运算,商数为0,余数为7,因此,目标数据标识为0,目标数据表为数据表7;若原始数据标识为8,则对8/8进行取余运算,商数为1,余数为0,因此,目标数据标识为1,目标数据表为数据表0;若原始数据标识为15,则对15/8进行取余运算,商数为1,余数为7,因此,目标数据标识为1,目标数据表为数据表7;若原始数据标识为16,则对16/8进行取余运算,商数为2,余数为0,因此,目标数据标识为2,目标数据表为数据表0;以此类推,对于其它原始数据标识的处理过程不再赘述。

综上所述,若原始数据标识为0、8、16、24、32等数值,则这些原始数据标识对应的目标数据表为数据表0。原始数据标识0对应目标数据标识0,原始数据标识8对应目标数据标识1,原始数据标识16对应目标数据标识2,原始数据标识24对应目标数据标识3,以此类推,显然,目标数据标识小于原始数据标识。而且,不同原始数据标识可以对应不同的目标数据标识。

此外,若原始数据标识为1、9、17、25、33等数值,则这些原始数据标识对应的目标数据表为数据表1。原始数据标识1对应目标数据标识0,原始数据标识9对应目标数据标识1,原始数据标识17对应目标数据标识2,原始数据标识25对应目标数据标识3,以此类推,显然,目标数据标识小于原始数据标识。而且,不同原始数据标识可以对应不同的目标数据标识。

此外,若原始数据标识为2、10、18、26、34等数值,则这些原始数据标识对应的目标数据表为数据表2。原始数据标识2对应目标数据标识0,原始数据标识10对应目标数据标识1,原始数据标识18对应目标数据标识2,原始数据标识26对应目标数据标识3,以此类推,显然,目标数据标识小于原始数据标识。而且,不同原始数据标识可以对应不同的目标数据标识。

以此类推,对于其它原始数据标识,其特点与上述类似,在此不再赘述。

步骤605,代理服务器确定目标数据表所在的目标数据库。

例如,参见图5B所示,数据库1包括数据表0、数据表1和数据表2,数据库2包括数据表3、数据表4和数据表5,数据库3包括数据表6和数据表7,基于上述对应关系,可以确定目标数据表所在的目标数据库。例如,若目标数据表为数据表1,则确定目标数据库为数据库1。

步骤606,代理服务器将数据写入请求发送给目标数据库。

示例性的,代理服务器与目标数据库可以建立连接(如TCP连接),基于所述连接,可以将数据写入请求发送给目标数据库。

示例性的,代理服务器在将数据写入请求发送给目标数据库时,可以将目标数据表的信息、目标数据标识和数据写入请求,一起发送给目标数据库。例如,代理服务器可以将目标数据表的信息和目标数据标识添加到数据写入请求中,将修改后的数据写入请求发送给目标数据库。

步骤607,目标数据库在接收到该数据写入请求(包括原始数据标识)后,确定与该原始数据标识对应的目标数据表和目标数据标识。

具体的,由于代理服务器将目标数据表的信息、目标数据标识发送给目标数据库,因此,目标数据库可以确定目标数据表和目标数据标识。

步骤608,目标数据库根据该数据写入请求在目标数据表中添加数据项,该数据项的索引为原始数据标识对应的目标数据标识,该数据项的索引不为原始数据标识。而且,目标数据标识可以小于原始数据标识。

示例性的,参见表1所示,为目标数据表的示例,该目标数据表的每个表项称为一个数据项,该数据项可以包括索引(即key)和属性值。在目标数据表中添加数据项时,该数据项的索引为目标数据标识,该数据项的属性值可以是用户数据,用户数据是从数据写入请求中解析的,对此用户数据不做限制。

表1

当然,表1只是数据表的一个示例,对此数据表的内容不做限制。

示例性的,由于目标数据标识小于原始数据标识,因此,在将目标数据标识作为数据项的索引时,可以减少索引的数据量,从而实现数据压缩的效果。

例如,假设数据表总数量为65536(即2^16),且数据项的索引是以二进制表示,那么,假设原始数据标识为65536,若数据项的索引是原始数据标识,则需要存储1111111111111111,即消耗16个比特来存储原始数据标识,但是,若数据项的索引是目标数据标识(65536除以65536的商数1),则只需要存储1,即消耗1个比特来存储目标数据标识,显然,可以显著节省比特数量。

示例性的,目标数据库在目标数据表中添加数据项时,还可以采用压缩算法对该数据项进行数据压缩,从而进一步节省存储资源,提高存储性能。

数据压缩是指在不丢失有用信息的前提下,缩减数据量以减少存储空间,提高其传输、存储和处理效率,或按照一定算法对数据进行重新组织,减少数据的冗余和存储空间,数据压缩包括有损数据压缩和无损数据压缩。

例如,可以采用GZIP(GNUzip)数据压缩算法对数据项进行数据压缩,或者,采用Snappy数据压缩算法对数据项进行数据压缩。当然,上述只是两个示例,对此不做限制,可以采用任意数据压缩算法对数据项进行数据压缩。

通过对数据进行压缩,可以对数据进行有效管理,提升存储性能和查询性能,并解决物联网场景下海量物联网设备联网后带来的数据存储成本问题。

实施例6:本实施例提出一种数据写入方法,如图6B所示,该方法包括:

步骤611,客户端向应用服务器发送数据写入请求。

步骤612,应用服务器向代理服务器发送数据写入请求。

步骤613,代理服务器接收数据写入请求,数据写入请求包括原始数据标识。

步骤614,代理服务器根据该原始数据标识和数据表总数量,确定该原始数据标识对应的目标数据表,并确定目标数据表所在的目标数据库。

步骤615,代理服务器将数据写入请求发送给目标数据库。

示例性的,步骤611-步骤615可以参见实施例5,与实施例5不同的是,代理服务器未确定原始数据标识对应的目标数据标识。代理服务器在将数据写入请求发送给目标数据库时,未同时发送目标数据表的信息和目标数据标识。

步骤616,目标数据库接收数据写入请求,该数据写入请求包括原始数据标识,并根据该原始数据标识和数据表总数量,确定该原始数据标识对应的目标数据表,以及该原始数据标识对应的目标数据标识。

其中,目标数据库确定目标数据表和目标数据标识的方式,可以参见实施例5,只是执行主体从代理服务器变更为目标数据库,在此不再赘述。

步骤617,目标数据库根据该数据写入请求在目标数据表中添加数据项,该数据项的索引为原始数据标识对应的目标数据标识,该数据项的索引不为原始数据标识。而且,目标数据标识可以小于原始数据标识。

实施例7:本实施例提出一种数据读取方法,如图7A所示,该方法包括:

步骤701,客户端向应用服务器发送数据读取请求。

步骤702,应用服务器向代理服务器发送数据读取请求。

步骤703,代理服务器接收数据读取请求,数据读取请求包括原始数据标识。

步骤704,代理服务器根据该原始数据标识和数据表总数量,确定该原始数据标识对应的目标数据表,以及该原始数据标识对应的目标数据标识。

步骤705,代理服务器确定目标数据表所在的目标数据库。

步骤706,代理服务器将数据读取请求发送给目标数据库。

示例性的,代理服务器在将数据读取请求发送给目标数据库时,可以将目标数据表的信息、目标数据标识和数据读取请求,一起发送给目标数据库。例如,代理服务器可以将目标数据表的信息和目标数据标识添加到数据读取请求中,将修改后的数据读取请求发送给目标数据库。

步骤707,目标数据库在接收到该数据读取请求(包括原始数据标识)后,确定与该原始数据标识对应的目标数据表和目标数据标识。

具体的,由于代理服务器将目标数据表的信息、目标数据标识发送给目标数据库,因此,目标数据库可以确定目标数据表和目标数据标识。

步骤708,目标数据库根据目标数据标识,从该目标数据表中读取数据。

具体的,目标数据库可以根据该目标数据标识查询表1所示的目标数据表,得到与该目标数据标识对应的数据,如用户数据a500等。

步骤709,目标数据库将读取的数据发送给代理服务器,代理服务器将该数据发送给应用服务器,应用服务器将该数据发送给客户端。

实施例8:本实施例提出一种数据读取方法,如图7B所示,该方法包括:

步骤711,客户端向应用服务器发送数据读取请求。

步骤712,应用服务器向代理服务器发送数据读取请求。

步骤713,代理服务器接收数据读取请求,数据读取请求包括原始数据标识。

步骤714,代理服务器根据该原始数据标识和数据表总数量,确定该原始数据标识对应的目标数据表,并确定目标数据表所在的目标数据库。

步骤715,代理服务器将数据读取请求发送给目标数据库。

示例性的,步骤711-步骤715可以参见实施例7,与实施例7不同的是,代理服务器未确定原始数据标识对应的目标数据标识。代理服务器在将数据读取请求发送给目标数据库时,未同时发送目标数据表的信息和目标数据标识。

步骤716,目标数据库接收数据读取请求,该数据读取请求包括原始数据标识,并根据该原始数据标识和数据表总数量,确定该原始数据标识对应的目标数据表,以及该原始数据标识对应的目标数据标识。

其中,目标数据库确定目标数据表和目标数据标识的方式,可以参见实施例5,只是执行主体从代理服务器变更为目标数据库,在此不再赘述。

步骤717,目标数据库根据目标数据标识,从该目标数据表中读取数据。

步骤718,目标数据库将读取的数据发送给代理服务器,代理服务器将该数据发送给应用服务器,应用服务器将该数据发送给客户端。

实施例9:基于与上述方法同样的申请构思,本申请实施例还提供一种数据写入装置,应用于代理服务器,如图8A所示,为所述装置的结构图,包括:

获取模块811,用于获取数据写入请求,所述数据写入请求包括原始数据标识;确定模块812,用于根据所述原始数据标识和数据表总数量确定目标数据表;发送模块813,用于将所述数据写入请求发送给所述目标数据表所在的目标数据库,以使所述目标数据库根据所述数据写入请求在所述目标数据表中添加数据项,所述数据项的索引为所述原始数据标识对应的目标数据标识;

其中,所述目标数据标识小于所述原始数据标识。

所述确定模块812还用于:根据所述原始数据标识和所述数据表总数量确定所述原始数据标识对应的目标数据标识;所述发送模块813还用于:将所述目标数据标识发送给所述目标数据库。

所述确定模块812根据所述原始数据标识和数据表总数量确定目标数据表时具体用于:利用处理函数对所述原始数据标识和所述数据表总数量进行运算,得到与所述原始数据标识对应的散列值;其中,所述处理函数包括:能够使运算后得到的散列值的总数量与所述数据表总数量相同的处理函数;

确定与所述散列值对应的目标数据表。

所述确定模块812具体用于:根据所述原始数据标识和所述数据表总数量进行取余运算;根据运算后得到的商数确定所述原始数据标识对应的目标数据标识;根据运算后得到的余数确定所述原始数据标识对应的目标数据表。

实施例10:基于与上述方法同样的申请构思,本申请实施例还提供一种数据读取装置,应用于代理服务器,如图8B所示,为所述装置的结构图,包括:

获取模块821,用于获取数据读取请求,所述数据读取请求包括原始数据标识;确定模块822,用于根据所述原始数据标识和数据表总数量确定目标数据表;发送模块823,用于将所述数据读取请求发送给所述目标数据表所在的目标数据库,以使所述目标数据库根据所述原始数据标识对应的目标数据标识从所述目标数据表中读取数据;所述目标数据标识小于所述原始数据标识;接收模块824,用于从所述目标数据库获取已读取的数据。

所述确定模块822还用于:根据所述原始数据标识和所述数据表总数量确定所述原始数据标识对应的目标数据标识;所述发送模块823还用于:将所述目标数据标识发送给所述目标数据库。

所述确定模块822根据所述原始数据标识和数据表总数量确定目标数据表时具体用于:利用处理函数对所述原始数据标识和所述数据表总数量进行运算,得到与所述原始数据标识对应的散列值;其中,所述处理函数包括:能够使运算后得到的散列值的总数量与所述数据表总数量相同的处理函数;

确定与所述散列值对应的目标数据表。

所述确定模块822具体用于:根据所述原始数据标识和所述数据表总数量进行取余运算;根据运算后得到的商数确定所述原始数据标识对应的目标数据标识;根据运算后得到的余数确定所述原始数据标识对应的目标数据表。

基于与上述方法同样的申请构思,本申请实施例还提供一种代理服务器,包括:处理器和机器可读存储介质,所述机器可读存储介质上存储有若干计算机指令,所述处理器执行所述计算机指令时进行如下处理:

获取数据写入请求,所述数据写入请求包括原始数据标识;

根据所述原始数据标识和数据表总数量确定目标数据表;

将所述数据写入请求发送给所述目标数据表所在的目标数据库,以使所述目标数据库根据所述数据写入请求在所述目标数据表中添加数据项,所述数据项的索引为所述原始数据标识对应的目标数据标识;其中,所述目标数据标识小于所述原始数据标识;

或者,获取数据读取请求,所述数据读取请求包括原始数据标识;

根据所述原始数据标识和数据表总数量确定目标数据表;

将所述数据读取请求发送给所述目标数据表所在的目标数据库,以使所述目标数据库根据所述原始数据标识对应的目标数据标识从所述目标数据表中读取数据;其中,所述目标数据标识小于所述原始数据标识;

从所述目标数据库获取已读取的数据。

本申请实施例还提供一种机器可读存储介质,所述机器可读存储介质上存储有若干计算机指令;所述计算机指令被执行时进行如下处理:

获取数据写入请求,所述数据写入请求包括原始数据标识;

根据所述原始数据标识和数据表总数量确定目标数据表;

将所述数据写入请求发送给所述目标数据表所在的目标数据库,以使所述目标数据库根据所述数据写入请求在所述目标数据表中添加数据项,所述数据项的索引为所述原始数据标识对应的目标数据标识;其中,所述目标数据标识小于所述原始数据标识;

或者,获取数据读取请求,所述数据读取请求包括原始数据标识;根据所述原始数据标识和数据表总数量确定目标数据表;将所述数据读取请求发送给所述目标数据表所在的目标数据库,以使所述目标数据库根据所述原始数据标识对应的目标数据标识从所述目标数据表中读取数据;其中,所述目标数据标识小于所述原始数据标识;从所述目标数据库获取已读取的数据。

参见图9所示,为本申请实施例中提出的代理服务器的结构图,所述代理服务器90可以包括:处理器91,网络接口92,总线93,存储器94。存储器94可以是任何电子、磁性、光学或其它物理存储装置,可以包含或存储信息,如可执行指令、数据等等。例如,存储器94可以是:RAM(Radom Access Memory,随机存取存储器)、易失存储器、非易失性存储器、闪存、存储驱动器(如硬盘驱动器)、固态硬盘、任何类型的存储盘(如光盘、dvd等)。

上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。

为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。

本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可以由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其它可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其它可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

而且,这些计算机程序指令也可以存储在能引导计算机或其它可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或者多个流程和/或方框图一个方框或者多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其它可编程数据处理设备上,使得在计算机或者其它可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其它可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。

相关技术
  • 数据读取、写入方法及数据读取、写入系统
  • 数据写入方法及装置、数据读取方法及装置、电子设备
技术分类

06120113098603