CN101477532A - 实现数据存储、读取的方法、装置及系统 - Google Patents
实现数据存储、读取的方法、装置及系统 Download PDFInfo
- Publication number
- CN101477532A CN101477532A CNA200810240463XA CN200810240463A CN101477532A CN 101477532 A CN101477532 A CN 101477532A CN A200810240463X A CNA200810240463X A CN A200810240463XA CN 200810240463 A CN200810240463 A CN 200810240463A CN 101477532 A CN101477532 A CN 101477532A
- Authority
- CN
- China
- Prior art keywords
- data
- serializing
- module
- database
- carried out
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 56
- 238000013500 data storage Methods 0.000 title claims abstract description 47
- 238000012545 processing Methods 0.000 claims abstract description 39
- 230000005540 biological transmission Effects 0.000 claims description 11
- 230000008569 process Effects 0.000 claims description 10
- 238000012795 verification Methods 0.000 claims description 2
- 230000008878 coupling Effects 0.000 abstract description 5
- 238000010168 coupling process Methods 0.000 abstract description 5
- 238000005859 coupling reaction Methods 0.000 abstract description 5
- 230000006870 function Effects 0.000 description 11
- 230000008859 change Effects 0.000 description 6
- 238000010586 diagram Methods 0.000 description 6
- 230000009977 dual effect Effects 0.000 description 4
- 238000011161 development Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 238000000547 structure data Methods 0.000 description 2
- 238000005194 fractionation Methods 0.000 description 1
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例公开了实现数据存储、读取的方法、装置及系统,其中,所述实现数据存储的方法包括:接收待存储的结构化数据;将所述结构化数据中的各个数据项进行序列化,并将序列化后的数据发送给数据库;数据库存储进行所述序列化后的数据。实现数据读取的方法包括:接收数据读取请求,根据所述请求,从数据库查找得到对应的序列化数据;将所述序列化数据进行反序列化处理,得到各个数据项的数据;将相应数据项的数据发送给请求读取数据的一方。采用本发明实施例,能够降低数据库与上层逻辑层的耦合度,有利于新业务的迅速推广和实现。
Description
技术领域
本发明涉及数据处理技术领域,尤其涉及实现数据存储、读取的方法、装置及系统。
背景技术
当前,数据库正在各项技术中得到广泛的使用。在需要进行数据存储时,数据库根据相应指令以一定的格式完成对数据的存储,在需要进行数据读取时,通过向数据库发送相应的读取要求,使得数据库根据该指令查找得到相应的存储数据,并将该数据返回给发送读取要求的一方。
随着技术的不断进步以及各类型业务的不断发展,数据的内容也日益复杂,往往是在一条数据中包括多个相互独立的子数据,以便通过这些子数据体现更多的信息内容。为了适应数据日益复杂的特点,当前的数据多为结构化数据,这种类型数据的特点是:将一个数据中的多个子数据组成一个数据结构,从而形成一个完整的结构化数据,在该结构化数据中,各个子数据作为该结构化数据的数据项。以游戏数据为例:在一个游戏用户的数据中,通常需要包括例如等级、性别、年龄、经验、金钱、职业等子数据,在现有技术中,这些子数据分别以一个数字表示,这些子数据分别作为结构化数据的数据项组成一个数据结构,从而形成一条包括了如上所述子数据内容的结构化数据。
在现有技术中,为了实现将上述结构化数据存储到数据库中,通常需要在数据库中建立存储表结构,该存储表结构与该数据库需要保存的结构数据的数据结构相对应,以便于将结构化数据中的各个数据项分割出来后,分别独立存储于数据库中。具体的,在该存储表结构中,需要设置多个字段,每个字段与需要存储的结构化数据中的相应数据项相对应,结构化数据在存储到数据库之前,首先进行解析,得到各个数据项,并将各个数据项存储到数据库中所设置的相应字段中。
仍以游戏数据为例,参见图1,为了实现将结构化的游戏数据存储在数据库中,现有技术包括如下步骤:
步骤101:游戏逻辑模块将需要存储的数据发送数据库中的解析模块,其中,所述数据为结构化数据;
步骤102:所述解析模块根据预先设定的解析规则,对所述结构化数据进行解析,拆分得到该结构化数据中的各个数据项;
步骤103:所述解析模块将解析得到的各个数据项分别存储到数据库中相应的字段中去;例如,在从结构化数据中拆分得到等级数据项、性别数据项、年龄数据项后,解析模块将这些数据项存储到数据库中为这些子数据所设置的相应字段中。
在采用上述方式进行结构化数据存储后,在需要进行数据读取时,数据库根据读取请求,从相应的字段获得所需数据项的数据,并将该数据返回给请求获得数据的一方。
对于其他类型、内容的结构化数据,其存储数据的方式与如上所述实施方式类似。
上述对于结构化数据的存储方式,虽然能够实现对于结构化数据的存储,但是,仍然具有如下问题:
由于在数据库中需要设置与待存储的结构化数据相对应的各个字段,且数据库中的解析模块也需要以待存储的结构化数据的数据项组成方式作为解析规则来进行结构化数据的解析,因此,一旦由于某种原因,上层应用逻辑层中的待存储结构化数据发生了改变,例如增加或减少了某个数据项,则数据库需要获知当前变化情况,相应的调整其所设置的字段,同时,解析模块也需要获知所述变化情况,相应的改变解析规则。这些扩大了底层数据库与上层逻辑应用层之间的耦合度,该耦合度使得一旦逻辑层由于进行功能扩展而需要改变结构化数据时,数据库也需要进行相应调整,从而额外增加了沟通成本、维护成本和开发成本,不利于业务的迅速推广和实现。
发明内容
本发明实施例的目的在于:提供一种实现数据存储的方法、装置及系统,以降低进行数据存储时数据库与上层逻辑层的耦合度。
本发明实施例提供以下技术方案:
一种实现数据存储的方法,该方法包括:
接收待存储的结构化数据;
将所述结构化数据中的各个数据项进行序列化,并将序列化后的数据发送给数据库;
数据库存储进行所述序列化后的数据。
一种实现数据存储的装置,该装置包括:
结构化数据接收模块,用于接收待存储的结构化数据;
序列化处理模块,用于对所述结构化数据中的各个数据项进行序列化;
序列化数据发送模块,用于将序列化后的数据发送给数据库。
一种实现数据读取的方法,该方法包括:
接收数据读取请求,根据所述请求,从数据库查找得到对应的序列化数据;
将所述序列化数据进行反序列化处理,得到各个数据项的数据;
将相应数据项的数据发送给请求读取数据的一方。
一种实现数据读取的装置,该装置包括:
序列化数据查找模块,该模块用于接收数据读取请求,根据所述请求,从数据库查找得到对应的序列化数据;
反序列化模块,该模块用于将所述序列化数据进行反序列化处理,得到相应的数据项的数据;
数据发送模块,该模块用于将相应数据项的数据发送给请求读取数据的一方。
一种实现数据存储、读取的系统,该系统包括:
数据处理装置,该装置用于:用于接收待存储的结构化数据,对所述结构化数据中的各个数据项进行序列化,并将序列化后的数据发送给数据库;和,用于接收数据读取请求,根据所述请求,从数据库查找得到对应的序列化数据,将所述序列化数据进行反序列化处理,得到相应的数据项的数据,并将相应数据项的数据发送给请求读取数据的一方;
数据库,该数据库用于:将所述数据处理装置所发送来的序列化后的数据存储在该数据库中所设置的一个字段中,以及根据所述数据读取请求,查找所存储的对应的序列化数据,并将该数据返回给所述数据处理装置。
可见,在本发明实施例中,由于对结构化数据的各个数据项进行序列化,并将序列化后的数据存储在数据库所设置的一个字段中,因此,无需数据按照结构化数据的组成方式相应的设置多个字段,也无需在进行数据存储时进行结构化数据的解析,从而使得在由于系统升级等原因而导致结构化数据发生改变时,数据库无需进行相应的修改,数据库与上层应用之间的耦合度低,从而使得进行新业务开发时,不会产生额外的沟通成本、维护成本和开发成本,有利于新业务的迅速实现和推广。
附图说明
图1为现有技术中实现结构化数据存储的流程图;
图2为本发明实施例中实现数据存储的方法的流程图;
图3为本发明一具体实例中实现数据存储的方法的流程图;
图4为本发明实施例中实现数据存储的装置的模块图;
图5为本发明实施例中实现数据读取的方法的流程图;
图6为本发明一具体实例中实现数据读取的方法的流程图;
图7为本发明实施例中实现数据读取的装置的模块图;
图8为本发明实施例中实现数据存储、读取的系统的示意图。
具体实施方式
下面,结合附图对本发明实施例进行详细描述。
参见图2,在本发明一实施例中,实现数据存储的方法包括以下步骤:
步骤201:接收待存储的结构化数据;
步骤202:将所述结构化数据中的各个数据项进行序列化,并将序列化后的数据发送给数据库;
步骤203:数据库存储进行所述序列化后的数据。
在本发明优选实施例中,为了进一步节省存储空间,步骤202可以采用如下两种方式实现:
方式一:
首先,将结构化数据中各个数据项的二进制数据进行序列化,得到一个序列化后的二进制数据;然后,对所述序列化后的二进制数据进行串行化处理,得到字符串,并以该字符串作为所述序列化后的数据发送给数据库;
方式二:
首先,对结构化数据中各个数据项的二进制数据进行串行化处理,分别得到这些二进制数据所对应的字符,然后,将这些字符进行序列化,得到字符串,并将该字符串作为所述序列化后的数据发送给数据库。
同时,在本发明另一优选实施例中,为了保证数据存储的准确性,在进行所述序列化之前,本发明所提供的方法可进一步包括预处理的步骤,其中的一种预处理可以为:
对待存储的数据进行紧缩对齐处理,从而排除在不同操作系统下,由于字节对齐方式不同所带来的问题;
此外,为了提高存储效率,在该方法中,可以预先定义为待存储的结构化数据定义版本号,以网络游戏为例,定义版本号的具体实现为:
当游戏管理器申请一块数据区(通常为“内存”)时,对该数据区的数据进行初始化,该数据区的数据的初始版本号即为0。每次数据区中的数据发生变化时,都会将版本号自动升1,以便于根据版本号确认数据是否更新。也就是说,数据库只存储(或者说“接受”)最新的数据。这是一种解决“多线程数据冲突问题”的方法。
相应的,在定义版本号的前提下,在进行所述存储之前,可以进一步数据校验的步骤,具体为:判断待存储的结构化数据的版本号是否大于数据库中当前存储数据的版本号,如果是,表明当前待存储数据为较新版本的数据,则执行所述存储数据的步骤;否则,表明当前待存储的数据为老版本的数据,无需进行数据存储,则拒绝对该数据执行所述数据存储的步骤,进一步的,还可返回数据存储失败消息,以告知上层逻辑层数据存储失败。
下面,结合具体实例,对上述方法的实现加以详细说明。
以游戏数据为例,在游戏中,需要在数据库中存储玩家的数据,每个玩家的数据包括等级、性别、年龄、经验、金钱、职业等信息,这些信息分别以一个数字表示,形成多条子数据,各个子数据分别作为一个结构化数据中的数据项,从而形成一条结构化游戏数据。为了存储如上所述的游戏数据,参见图3,需要以下步骤:
步骤301:游戏逻辑模块将所述结构化游戏数据发送至二进制数据序列化模块;
步骤302:所述二进制数据序列化模块将所述游戏数据中的各个数据项中的二进制数据进行序列化,得到一条序列化后的二进制数据;
步骤303:所述二进制数据序列化模块将所述序列化后的二进制数据发送给串行化模块,串行化模块将该二进制数据进行串行化处理后得到相应的字符串;
步骤304:将得到的字符串发送给数据库中的存储模块,存储模块根据所述游戏数据的类型以及标识,将所述字符串存储在数据库中所设置的一个字段中。
在该具体实施例中,对于游戏数据不但进行了序列化处理,同时还进一步执行了串行化处理,从而通过该串行化处理降低数据所占用的存储空间,从而提高存储效率。从本发明实施例所要解决的问题可以看出,在本发明其他实施例中,可以不执行所述串行化处理的步骤,并不影响本发明实施例的实现。
此外需要说明的是:在该实施例中,步骤302和303的顺序可以互换,也就是说,可以先对各个数据项的二进制数据进行串行化处理,得到各个数据项数据所对应的字符,然后,再对这些字符进行序列化处理,从而得到用户数据所对应的字符串。
还需说明的是,在本实施例中,采用二进制数据序列化模块以及串行化模块两个独立模块分别实现序列化功能以及串行化处理功能,在本发明其他实施例中,也可采用一个模块来实现上述功能,则相应的二进制数据序列化模块与串行化模块之间的数据交互步骤可以省略;或者,也可采用具有序列化功能以及串行化功能的数据库来实现上述方法,则数据库与所述串行化模块、二进制数据序列化模块之间的交互可以省略,并不影响本发明实施例的实现。
为了对本发明实施例的实现加以更加详细的说明,下面对所述串行化处理的具体实现加以详细介绍。以图3所对应的实施例为例,在该实施例中,在将各个数据项的二进制数据进行序列化后,所述串行化处理可以采用以下方式实现:
所述串行化模块以字符(CHAR)类型指针接收进行所述序列化后得到的二进制数据的头指针,然后,利用该指针,逐一取出二进制数据的单字节;
将取出的单字节数据转换为两个单字节,为了描述方便,这两个单字节被分别称为第一单字节和第二单字节;其中,第一单字节的形成方式为:取出原单字节中的前四位字节,对该前四位字节进行填零操作,形成一个8位的第一单字节,第二单字节的形成方式为:取出原单字节中的后四位字节,同样通过填零操作,形成一个8位的第二单字节;
对第一单字节和第二单字节分别进行加1处理,所得到的字节即为满足ASCII编码规则的字符串;在本步骤中,对第一单字节和第二单字节进行加1处理的目的在于:由于第一单字节和第二单字节都有可能为零,而在字符串类型中通常以0表示字符串结尾,因此,为了避免在非结尾的位置出现0,对第一单字节和第二单字节分别作加1处理。相应的,在获取数据时,数据库需要在获得字符串后,先对该字符串中的每个字符做减1处理,然后再将每两个字节合并成一个字节,从而保证获取数据的正确性。
与上述数据存储方法相对应,本发明实施例还提供了一种实现数据存储的装置,参见图4,该装置包括:
结构化数据接收模块401,用于接收待存储的结构化数据;
序列化处理模块402,用于对所述结构化数据中的各个数据项进行序列化;
序列化数据发送模块403,用于将序列化后的数据发送给数据库。
在本发明优选实施例中,所述序列化处理模块402可以采用如下两种方式实现:
方式一、序列化处理模块402包括:
二进制数据序列化模块,该模块用于:将结构化数据中各个数据项的二进制数据进行序列化,得到一个序列化后的二进制数据;
第一串行化模块,该模块用于:对所述序列化后的二进制数据进行串行化处理,得到作为所述序列化后的数据的字符串。
方式二、序列化处理模块402包括:
第二串行化模块,该模块用于:对结构化数据中各个数据项的二进制数据进行串行化处理,分别得到这些二进制数据所对应的字符;
字符序列化模块,该模块用于:对所述第二串行化模块得到的各个字符进行序列化处理,得到作为所述序列化后的数据的字符串。
同样,为了保证数据存储的准确性,所述装置还可进一步包括紧缩对齐模块,用于对待存储的数据进行紧缩对齐处理,从而排除在不同操作系统下,由于字节对齐方式不同所带来的问题;
和/或,所述装置还可进一步包括数据校验模块,用于:在进行所述存储之前,判断待存储的结构化数据的版本号是否大于数据库中当前存储数据的版本号,如果大于,则控制所述序列化数据发送模块403执行发送数据的步骤,否则,控制该序列化数据发送模块403不进行所述数据发送的步骤。
与上述实现数据存储的方法相对应,本发明实施例还提供了一种实现数据读取的方法,参见图5,该方法包括:
步骤501:接收数据读取请求,根据所述请求,从数据库查找得到对应的序列化数据;
步骤502:将所述序列化数据进行反序列化处理,得到各个数据项的数据;
步骤503:将相应数据项的数据发送给请求读取数据的一方。
在本发明优选实施例中,考虑到节省存储空间的需要,在进行数据存储时,将字符串作为序列化数据存储到数据库中,在此情况下,实现步骤502可以采用如下两种方式:
方式一:
首先,对作为所述序列化数据存储的所述字符串进行反串行化处理,得到二进制数据;
然后,对所述二进制数据进行反序列化处理,得到结构化数据中各个数据项所对应的二进制数据;
方式二:
首先,对作为所述序列化数据存储的所述字符串进行反序列化处理,得到各数据项所对应的字符;
然后,对各数据项所对应的字符进行反串行化处理,得到各数据项所对应的二进制数据。
此外,为了保证读取数据的准确性,可以在进行所述反序列化处理之前进一步包括校验步骤,具体为:
根据读取请求,判断所需读取的数据与数据库查找得到的序列化数据的版本号是否相同,如果相同,则执行后续反序列化处理的步骤,否则,不再执行后续步骤。
为了更加详细的说明本发明实施例,举一具体实例对本发明实施例所提供的读取数据的方法加以详细描述。
仍以游戏数据为例,在游戏中,需要在数据库中存储玩家的数据,每个玩家的数据包括等级、性别、年龄、经验、金钱、职业等信息,这些信息分别以一个数字表示,形成多条子数据,各个子数据分别作为一个结构化数据中的数据项,从而形成一条结构化游戏数据。当需要获取相应数据项所对应的数据时,参见图6,本发明实施例所提供的方法包括以下步骤:
步骤601:游戏逻辑模块向数据库发送读取数据的请求,数据库根据该请求中所携带的数据标识、类型,获取相应的序列化数据;
步骤602:游戏逻辑模块将所述序列化数据发送给反串行化模块,该反串行化处理模块对序列化数据进行反串行化处理,得到所述序列化数据所对应的二进制数据,并将该二进制数据发送给反序列化模块;
步骤603:所述反序列化模块对所述二进制数据进行反序列化处理,得到各个数据项所对应的二进制数据;
步骤604:根据游戏逻辑模块所发送的请求,将相应数据项所对应的二进制数据返回给游戏逻辑模块。
需要说明的是:在该实施例中,步骤602和603的顺序可以互换,也就是说,可以先对序列化数据进行反序列化处理,得到各个数据项数据所对应的字符,然后,再对这些字符进行反串行化处理,从而得到各数据项所对应的二进制数据。
还需说明的是,在本实施例中,采用反序列化模块以及反串行化模块两个独立模块分别实现反序列化功能以及反串行化处理功能,在本发明其他实施例中,也可采用一个模块来实现上述功能,则相应的反序列化模块与反串行化模块之间的数据交互步骤可以省略;或者,也可采用具有反序列化功能以及反串行化功能的数据库来实现上述方法,则数据库与所述反串行化模块、反序列化模块之间的交互可以省略,并不影响本发明实施例的实现。
需要说明的是,反串行化处理与串行化处理互为逆操作,在本发明一实施例中,执行反串行化处理具体可以包括:
针对需要进行反串行化处理的字符串,将该字符串中的每个字符做减1处理,然后再将每两个字节合并成一个字节,从而得到相应的二进制数据。
与上述数据读取方法相对应,本发明实施例还提供了一种实现数据读取的装置,参见图7,该装置包括:
序列化数据查找模块701,该模块用于接收数据读取请求,根据所述请求,从数据库查找得到对应的序列化数据;
反序列化模块702,该模块用于将所述序列化数据进行反序列化处理,得到相应的数据项的数据;
数据发送模块703,该模块用于将相应数据项的数据发送给请求读取数据的一方。
在本发明优选实施例中,所述反序列化模块702可以采用如下两种方式实现:
方式一、在该方式中,所述反序列化模块702包括:
第一反串行化模块,该模块用于对作为所述序列化数据存储的字符串进行反串行化处理,得到二进制数据;
二进制数据反序列化模块,该模块用于对所述二进制数据进行反序列化处理,得到结构化数据中各个数据项所对应的二进制数据。
方式二、在该方式中,所述反序列化模块702包括:
字符反序列化模块,该模块用于对作为所述序列化数据存储的所述字符串进行反序列化处理,得到各数据项所对应的字符;
第二反串行化模块,该模块用于对各数据项所对应的字符进行反串行化处理,得到各数据项所对应的二进制数据。
此外,为了保证读取数据的准确性,所述装置还可进一步包括校验模块,该模块用于:根据读取请求,判断所需读取的数据与查找得到的序列化数据的版本号是否相同,如果相同,则控制所述反序列化模块702执行所述反序列化的功能,否则,终止该反序列化模块702执行所述反序列化的功能。
本发明实施例还提供了一种实现数据存储、读取的系统,参见图8,该系统包括:
数据处理装置801,该装置用于:用于接收待存储的结构化数据,对所述结构化数据中的各个数据项进行序列化,并将序列化后的数据发送给数据库;和,用于接收数据读取请求,根据所述请求,从数据库查找得到对应的序列化数据,将所述序列化数据进行反序列化处理,得到相应的数据项的数据,并将相应数据项的数据发送给请求读取数据的一方;
数据库802,该数据库用于:将所述数据处理装置801所发送来的序列化后的数据存储在该数据库中所设置的一个字段中,以及根据所述数据读取请求,查找所存储的对应的序列化数据,并将该数据返回给所述数据处理装置801。
其中,可以采用如上各个实施例所述的实现数据存储的装置以及实现数据读取的装置作为所述数据处理装置,在具体实现过程中,所述数据存储装置以及数据读取装置可以相互独立设置,也可以集成在同一装置中,并不影响本发明实施例的实现。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (23)
1、一种实现数据存储的方法,其特征在于,该方法包括:
接收待存储的结构化数据;
将所述结构化数据中的各个数据项进行序列化,并将序列化后的数据发送给数据库;
数据库存储进行所述序列化后的数据。
2、根据权利要求1所述的方法,其特征在于,所述进行序列化并将序列化后的数据发送给数据库的具体实现为:
将结构化数据中各个数据项的二进制数据进行序列化,得到一个序列化后的二进制数据,对所述序列化后的二进制数据进行串行化处理,得到字符串,并以该字符串作为所述序列化后的数据发送给数据库。
3、根据权利要求1所述的方法,其特征在于,所述进行序列化并将序列化后的数据发送给数据库的具体实现为:
对结构化数据中各个数据项的二进制数据进行串行化处理,分别得到这些二进制数据所对应的字符,将这些字符进行序列化得到字符串,并将该字符串作为所述序列化后的数据发送给数据库。
4、根据权利要求1~3任意一项所述的方法,其特征在于,所述串行化处理的具体实现为:
以字符类型指针接收进行待处理的二进制数据的头指针,利用该指针,逐一取出所述二进制数据的单字节;
对当前取出的单字节中的前四位字节进行填零操作,形成一个8位的第一单字节,对当前取出的单字节中的后四位字节进行填零操作,形成一个8位的第二单字节;
对所述第一单字节和第二单字节分别进行加1处理,得到符合ASCII编码规则的字符串。
5、根据权利要求1~3任意一项所述的方法,其特征在于,该方法预先为待存储的结构化数据定义版本号,并在所述结构化数据发生变化时自动升级所述版本号;
在所述数据库存储进行所述序列化后的数据之前,该方法进一步包括:
判断待存储的结构化数据的版本号是否大于数据库中当前存储数据的版本号,如果是,则执行所述存储数据的步骤。
6、根据权利要求1~3任意一项所述的方法,其特征在于,在进行所述序列化之前,该方法进一步包括:
对待存储的数据进行紧缩对齐处理。
7、一种实现数据存储的装置,其特征在于,该装置包括:
结构化数据接收模块,用于接收待存储的结构化数据;
序列化处理模块,用于对所述结构化数据中的各个数据项进行序列化;
序列化数据发送模块,用于将序列化后的数据发送给数据库。
8、根据权利要求7所述的装置,其特征在于,所述序列化处理模块包括:
二进制数据序列化模块,该模块用于:将结构化数据中各个数据项的二进制数据进行序列化,得到一个序列化后的二进制数据;
第一串行化模块,该模块用于:对所述序列化后的二进制数据进行串行化处理,得到作为所述序列化后的数据的字符串。
9、根据权利要求7所述的装置,其特征在于,所述序列化处理模块包括:
第二串行化模块,该模块用于:对结构化数据中各个数据项的二进制数据进行串行化处理,分别得到这些二进制数据所对应的字符;
字符序列化模块,该模块用于:对所述第二串行化模块得到的各个字符进行序列化处理,得到作为所述序列化后的数据的字符串。
10、根据权利要求7~9任意一项所述的装置,其特征在于,该装置进一步包括:
紧缩对齐模块,用于对待存储的数据进行紧缩对齐处理。
11、根据权利要求7~9任意一项所述的装置,其特征在于,该装置进一步包括:
数据校验模块,该模块用于:在进行所述存储之前,判断待存储的结构化数据的版本号是否大于数据库中当前存储数据的版本号,如果大于,则控制所述序列化数据发送模块执行发送数据的步骤。
12、一种实现数据读取的方法,其特征在于,该方法包括:
接收数据读取请求,根据所述请求,从数据库查找得到对应的序列化数据;
将所述序列化数据进行反序列化处理,得到各个数据项的数据;
将相应数据项的数据发送给请求读取数据的一方。
13、根据权利要求12所述的方法,其特征在于,所述进行反序列化处理,得到各个数据项的数据的具体实现为:
对作为所述序列化数据存储的所述字符串进行反串行化处理,得到二进制数据;
对所述二进制数据进行反序列化处理,得到结构化数据中各个数据项所对应的二进制数据。
14、根据权利要求12所述的方法,其特征在于,所述进行反序列化处理,得到各个数据项的数据的具体实现为:
对作为所述序列化数据存储的所述字符串进行反序列化处理,得到各数据项所对应的字符;
对各数据项所对应的字符进行反串行化处理,得到各个数据项所对应的二进制数据。
15、根据权利要求12~14任意一项所述的方法,其特征在于,在进行所述反序列化处理之前进一步包括:
根据读取请求,判断所需读取的数据与数据库查找得到的序列化数据的版本号是否相同,如果相同,则执行后续反序列化处理的步骤。
16、根据权利要求12~14任意一项所述的方法,其特征在于,所述反串行化处理的具体实现为:
针对需要进行反串行化处理的字符串或字符,将该字符串中的每个字符或所述字符做减1处理,然后将每两个字节合并成一个字节,得到相应的二进制数据。
17、一种实现数据读取的装置,其特征在于,该装置包括:
序列化数据查找模块,该模块用于接收数据读取请求,根据所述请求,从数据库查找得到对应的序列化数据;
反序列化模块,该模块用于将所述序列化数据进行反序列化处理,得到相应的数据项的数据;
数据发送模块,该模块用于将相应数据项的数据发送给请求读取数据的一方。
18、根据权利要求17所述的装置,其特征在于,所述反序列化模块包括:
第一反串行化模块,该模块用于对作为所述序列化数据存储的字符串进行反串行化处理,得到二进制数据;
二进制数据反序列化模块,该模块用于对所述二进制数据进行反序列化处理,得到结构化数据中各个数据项所对应的二进制数据。
19、根据权利要求17所述的装置,其特征在于,所述反序列化模块包括:
字符反序列化模块,该模块用于对作为所述序列化数据存储的所述字符串进行反序列化处理,得到各数据项所对应的字符;
第二反串行化模块,该模块用于对各数据项所对应的字符进行反串行化处理,得到各数据项所对应的二进制数据。
20、根据权利要求17~19任意一项所述的装置,其特征在于,该装置进一步包括校验模块,该模块用于:根据读取请求,判断所需读取的数据与查找得到的序列化数据的版本号是否相同,如果相同,则控制所述反序列化模块执行所述反序列化的功能。
21、一种实现数据存储、读取的系统,其特征在于,该系统包括:
数据处理装置,该装置用于:用于接收待存储的结构化数据,对所述结构化数据中的各个数据项进行序列化,并将序列化后的数据发送给数据库;和,用于接收数据读取请求,根据所述请求,从数据库查找得到对应的序列化数据,将所述序列化数据进行反序列化处理,得到相应的数据项的数据,并将相应数据项的数据发送给请求读取数据的一方;
数据库,该数据库用于:将所述数据处理装置所发送来的序列化后的数据存储在该数据库中所设置的一个字段中,以及根据所述数据读取请求,查找所存储的对应的序列化数据,并将该数据返回给所述数据处理装置。
22、根据权利要求21所述的系统,其特征在于,所述数据处理装置包括:
权利要求7~11任意一项所述的实现数据存储的装置;和,
权利要求17~20任意一项所述的实现数据读取的装置。
23、根据权利要求22所述的系统,其特征在于,所述实现数据存储的装置和实现数据读取的装置集成在同一装置中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200810240463XA CN101477532B (zh) | 2008-12-23 | 2008-12-23 | 实现数据存储、读取的方法、装置及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200810240463XA CN101477532B (zh) | 2008-12-23 | 2008-12-23 | 实现数据存储、读取的方法、装置及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101477532A true CN101477532A (zh) | 2009-07-08 |
CN101477532B CN101477532B (zh) | 2011-09-28 |
Family
ID=40838249
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200810240463XA Expired - Fee Related CN101477532B (zh) | 2008-12-23 | 2008-12-23 | 实现数据存储、读取的方法、装置及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101477532B (zh) |
Cited By (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102663097A (zh) * | 2012-04-10 | 2012-09-12 | 农业部信息中心 | 一种基于Hadoop+Hbase的农业时序数据组织方法 |
CN102750300A (zh) * | 2011-12-27 | 2012-10-24 | 浙江大学 | 一种支持多粒度查询的高性能非结构化数据存取协议 |
CN102750268A (zh) * | 2012-06-19 | 2012-10-24 | 山东中创软件商用中间件股份有限公司 | 一种对象序列化方法、对象反序列化方法、装置及系统 |
CN103036641A (zh) * | 2011-09-29 | 2013-04-10 | 北京新媒传信科技有限公司 | 数据交换方法、系统及反序列化方法 |
CN103389992A (zh) * | 2012-05-09 | 2013-11-13 | 北京百度网讯科技有限公司 | 一种结构化数据存储方法及装置 |
CN103841143A (zh) * | 2012-11-23 | 2014-06-04 | 华为技术有限公司 | 文件发送方法、接收方法、系统及设备 |
CN104102652A (zh) * | 2013-04-08 | 2014-10-15 | 国家电网公司 | 一种非结构化数据存储系统及方法 |
WO2017059798A1 (zh) * | 2015-10-10 | 2017-04-13 | 阿里巴巴集团控股有限公司 | 序列化与反序列化的方法、装置、系统以及电子设备 |
CN106598979A (zh) * | 2015-10-15 | 2017-04-26 | 北京国双科技有限公司 | 数据写入方法和装置 |
CN106648679A (zh) * | 2016-12-29 | 2017-05-10 | 南威软件股份有限公司 | 一种结构化数据的版本管理方法 |
CN106815238A (zh) * | 2015-11-30 | 2017-06-09 | 阿里巴巴集团控股有限公司 | 一种结构化数据的序列化、反序列化方法及装置 |
CN106897259A (zh) * | 2017-02-28 | 2017-06-27 | 郑州云海信息技术有限公司 | 一种基于windows平台的ascii码和字符串的转换方法 |
CN107038202A (zh) * | 2016-12-28 | 2017-08-11 | 阿里巴巴集团控股有限公司 | 数据处理方法、装置及设备、可读介质 |
CN107908772A (zh) * | 2017-11-30 | 2018-04-13 | 中国人民解放军陆军工程大学 | WebSQL多功能序列实现方法及装置 |
CN108733744A (zh) * | 2018-04-02 | 2018-11-02 | 东方视界科技(北京)有限公司 | 数据存储、读取方法及装置 |
CN109147784A (zh) * | 2018-09-10 | 2019-01-04 | 百度在线网络技术(北京)有限公司 | 语音交互方法、设备以及存储介质 |
CN109324581A (zh) * | 2018-09-30 | 2019-02-12 | 上海蝶鱼智能科技有限公司 | 基于Python语言的数字信号通讯装置及方法 |
CN109359144A (zh) * | 2018-08-24 | 2019-02-19 | 中国建设银行股份有限公司 | 数据存储方法及系统、装置和存储介质 |
CN109525822A (zh) * | 2018-12-28 | 2019-03-26 | 北京工业大学 | 红外全景监控软件内容回放的方法 |
CN110019553A (zh) * | 2017-12-21 | 2019-07-16 | 北京奇虎科技有限公司 | 推荐商品数据的处理方法、装置和计算机可读存储介质 |
CN110377561A (zh) * | 2019-07-19 | 2019-10-25 | 深圳前海微众银行股份有限公司 | 一种文件管理方法及装置 |
CN110472971A (zh) * | 2018-05-09 | 2019-11-19 | 厦门本能管家科技有限公司 | 一种双进程打块方法及系统 |
CN114201114A (zh) * | 2021-12-14 | 2022-03-18 | 上海朝阳永续信息技术股份有限公司 | 一种基于文件的跨互联网数据传输系统 |
CN117726170A (zh) * | 2023-12-18 | 2024-03-19 | 北京罗格数据科技有限公司 | 数据存储方法及装置 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104077335B (zh) * | 2013-05-07 | 2017-05-03 | 腾讯科技(深圳)有限公司 | 一种结构化数据的序列化、反序列化方法、装置和系统 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6484175B1 (en) * | 1998-06-30 | 2002-11-19 | Cisco Technology, Inc. | Method and apparatus for providing network management data |
CN1253788C (zh) * | 2002-11-11 | 2006-04-26 | 华为技术有限公司 | 一种基于描述的界面生成方法及生成系统 |
US7441185B2 (en) * | 2005-01-25 | 2008-10-21 | Microsoft Corporation | Method and system for binary serialization of documents |
JP5121146B2 (ja) * | 2006-02-22 | 2013-01-16 | 株式会社東芝 | 構造化文書管理装置、構造化文書管理プログラムおよび構造化文書管理方法 |
CN101256561B (zh) * | 2007-03-02 | 2010-09-08 | 阿里巴巴集团控股有限公司 | 一种存储、访问数据库数据的方法、装置及系统 |
-
2008
- 2008-12-23 CN CN200810240463XA patent/CN101477532B/zh not_active Expired - Fee Related
Cited By (36)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103036641B (zh) * | 2011-09-29 | 2016-01-20 | 北京新媒传信科技有限公司 | 数据交换方法、系统及反序列化方法 |
CN103036641A (zh) * | 2011-09-29 | 2013-04-10 | 北京新媒传信科技有限公司 | 数据交换方法、系统及反序列化方法 |
CN102750300A (zh) * | 2011-12-27 | 2012-10-24 | 浙江大学 | 一种支持多粒度查询的高性能非结构化数据存取协议 |
CN102750300B (zh) * | 2011-12-27 | 2014-05-07 | 浙江大学 | 一种支持多粒度查询的高性能非结构化数据存取方法 |
CN102663097A (zh) * | 2012-04-10 | 2012-09-12 | 农业部信息中心 | 一种基于Hadoop+Hbase的农业时序数据组织方法 |
CN103389992A (zh) * | 2012-05-09 | 2013-11-13 | 北京百度网讯科技有限公司 | 一种结构化数据存储方法及装置 |
CN102750268A (zh) * | 2012-06-19 | 2012-10-24 | 山东中创软件商用中间件股份有限公司 | 一种对象序列化方法、对象反序列化方法、装置及系统 |
CN103841143A (zh) * | 2012-11-23 | 2014-06-04 | 华为技术有限公司 | 文件发送方法、接收方法、系统及设备 |
CN104102652A (zh) * | 2013-04-08 | 2014-10-15 | 国家电网公司 | 一种非结构化数据存储系统及方法 |
CN104102652B (zh) * | 2013-04-08 | 2017-05-24 | 国家电网公司 | 一种非结构化数据存储系统及方法 |
WO2017059798A1 (zh) * | 2015-10-10 | 2017-04-13 | 阿里巴巴集团控股有限公司 | 序列化与反序列化的方法、装置、系统以及电子设备 |
CN106570018A (zh) * | 2015-10-10 | 2017-04-19 | 阿里巴巴集团控股有限公司 | 序列化与反序列化的方法、装置、系统以及电子设备 |
CN106598979A (zh) * | 2015-10-15 | 2017-04-26 | 北京国双科技有限公司 | 数据写入方法和装置 |
CN106815238B (zh) * | 2015-11-30 | 2020-10-20 | 阿里巴巴集团控股有限公司 | 一种结构化数据的序列化、反序列化方法及装置 |
CN106815238A (zh) * | 2015-11-30 | 2017-06-09 | 阿里巴巴集团控股有限公司 | 一种结构化数据的序列化、反序列化方法及装置 |
CN107038202B (zh) * | 2016-12-28 | 2020-05-05 | 阿里巴巴集团控股有限公司 | 数据处理方法、装置及设备、可读介质 |
CN107038202A (zh) * | 2016-12-28 | 2017-08-11 | 阿里巴巴集团控股有限公司 | 数据处理方法、装置及设备、可读介质 |
CN106648679A (zh) * | 2016-12-29 | 2017-05-10 | 南威软件股份有限公司 | 一种结构化数据的版本管理方法 |
CN106648679B (zh) * | 2016-12-29 | 2020-04-07 | 南威软件股份有限公司 | 一种结构化数据的版本管理方法 |
CN106897259A (zh) * | 2017-02-28 | 2017-06-27 | 郑州云海信息技术有限公司 | 一种基于windows平台的ascii码和字符串的转换方法 |
CN107908772A (zh) * | 2017-11-30 | 2018-04-13 | 中国人民解放军陆军工程大学 | WebSQL多功能序列实现方法及装置 |
CN107908772B (zh) * | 2017-11-30 | 2020-10-30 | 中国人民解放军陆军工程大学 | WebSQL多功能序列实现方法及装置 |
CN110019553A (zh) * | 2017-12-21 | 2019-07-16 | 北京奇虎科技有限公司 | 推荐商品数据的处理方法、装置和计算机可读存储介质 |
CN108733744A (zh) * | 2018-04-02 | 2018-11-02 | 东方视界科技(北京)有限公司 | 数据存储、读取方法及装置 |
CN110472971A (zh) * | 2018-05-09 | 2019-11-19 | 厦门本能管家科技有限公司 | 一种双进程打块方法及系统 |
CN109359144A (zh) * | 2018-08-24 | 2019-02-19 | 中国建设银行股份有限公司 | 数据存储方法及系统、装置和存储介质 |
CN109147784A (zh) * | 2018-09-10 | 2019-01-04 | 百度在线网络技术(北京)有限公司 | 语音交互方法、设备以及存储介质 |
CN109147784B (zh) * | 2018-09-10 | 2021-06-08 | 百度在线网络技术(北京)有限公司 | 语音交互方法、设备以及存储介质 |
US11176938B2 (en) | 2018-09-10 | 2021-11-16 | Baidu Online Network Technology (Beijing) Co., Ltd. | Method, device and storage medium for controlling game execution using voice intelligent interactive system |
CN109324581A (zh) * | 2018-09-30 | 2019-02-12 | 上海蝶鱼智能科技有限公司 | 基于Python语言的数字信号通讯装置及方法 |
CN109525822A (zh) * | 2018-12-28 | 2019-03-26 | 北京工业大学 | 红外全景监控软件内容回放的方法 |
CN110377561A (zh) * | 2019-07-19 | 2019-10-25 | 深圳前海微众银行股份有限公司 | 一种文件管理方法及装置 |
WO2021013047A1 (zh) * | 2019-07-19 | 2021-01-28 | 深圳前海微众银行股份有限公司 | 一种文件管理方法及装置 |
CN114201114A (zh) * | 2021-12-14 | 2022-03-18 | 上海朝阳永续信息技术股份有限公司 | 一种基于文件的跨互联网数据传输系统 |
CN114201114B (zh) * | 2021-12-14 | 2024-05-10 | 上海朝阳永续信息技术股份有限公司 | 一种基于文件的跨互联网数据传输系统 |
CN117726170A (zh) * | 2023-12-18 | 2024-03-19 | 北京罗格数据科技有限公司 | 数据存储方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN101477532B (zh) | 2011-09-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101477532B (zh) | 实现数据存储、读取的方法、装置及系统 | |
CN102918529B (zh) | 索引生成和使用的方法和装置 | |
CN108345512A (zh) | 数据校验方法、服务器及存储介质 | |
CN102713904A (zh) | 利用可缩放的数据结构的方法和装置 | |
CN109697071A (zh) | 安装包合成方法、装置、终端及存储介质 | |
US20200081841A1 (en) | Cache architecture for column-oriented database management systems | |
CN110795697B (zh) | 逻辑表达式的获取方法、装置、存储介质以及电子装置 | |
CN106302592A (zh) | 终端应用的更新方法、服务器和终端 | |
CN109359174B (zh) | 行政区划归属识别方法、装置、存储介质及计算机设备 | |
CN110647316A (zh) | 通用业务对象的生成方法、装置、计算机设备及存储介质 | |
US20140052710A1 (en) | Device and method of mass data storage based on tree structure | |
CN101277265B (zh) | 一种无线传感网络中加速加载elf文件的方法 | |
CN114138243A (zh) | 基于开发平台的功能调用方法、装置、设备及存储介质 | |
CN102063416B (zh) | 向pdf文件内嵌双字节字体的方法及其系统 | |
CN113722533A (zh) | 信息推送方法、装置、电子设备及可读存储介质 | |
CN112364102A (zh) | 一种基于区块链的大数据交易方法、装置、介质及设备 | |
CN102855115A (zh) | 一种基于拼接墙显示文字标注的方法及系统 | |
CN101516086B (zh) | 移动通讯的业务匹配方法 | |
CN113393288B (zh) | 订单处理信息生成方法、装置、设备和计算机可读介质 | |
CN101553800B (zh) | 将主机系统sam/vsam文件转换为开放系统sam/vsam文件的转换装置和方法 | |
CN115346095A (zh) | 视觉问答方法、装置、设备及存储介质 | |
CN114840388A (zh) | 数据监控方法、装置、电子设备及存储介质 | |
CN101770368B (zh) | .net文件中命名空间的压缩方法和装置 | |
CN112506931B (zh) | 数据查询方法、装置、电子设备及存储介质 | |
CN118036045A (zh) | 标识生成方法、装置及计算机设备、存储介质、程序产品 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20110928 |
|
CF01 | Termination of patent right due to non-payment of annual fee |