CN105095268A - 结构化数据的存取方法以及装置 - Google Patents
结构化数据的存取方法以及装置 Download PDFInfo
- Publication number
- CN105095268A CN105095268A CN201410196312.4A CN201410196312A CN105095268A CN 105095268 A CN105095268 A CN 105095268A CN 201410196312 A CN201410196312 A CN 201410196312A CN 105095268 A CN105095268 A CN 105095268A
- Authority
- CN
- China
- Prior art keywords
- data
- value database
- structural data
- agreement
- key
- 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.)
- Pending
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种结构化数据的存取方法以及装置。其中,方法包括以下步骤:接收将结构化数据存储到key-value数据库的指令;根据预设的协议将结构化数据编码为可一次性存储于key-value数据库的数据;将经过编码后的结构化数据存储于key-value数据库中。由此可以将结构化数据一次性存储到key-value数据库中,提高了存储的效率和准确率。
Description
技术领域
本发明涉及数据库技术领域,特别是涉及一种结构化数据的存取方法以及其装置。
背景技术
key-value(键-值)数据库因其没有复杂的关系操作,并能提供高效的读写性能、可靠性和持久化,因此在数据的存储方面得到广泛应用。但是,key-value数据库中的value值只能保存有限的数据类型,例如Redis数据库是一种高性能的key-value数据库,其也只能保存string(字符串)、hash(哈希类型)、list(链表)、set(集合)及sortedset(有序集合)五种类型。并且Key-value数据库的value值必须是一个连续的内存数据块,而结构化数据无法保证是连续的内存数据块,如果要用key-value数据库保存结构化数据,要将不是连续的内存数据的结构化数据进行拆分保存,无法一次性保存。
发明内容
本发明主要解决的技术问题是提供一种结构化数据的存取方法以及其装置,能够一次性地将结构化数据保存到key-value数据库中。
为解决上述技术问题,本发明采用的一个技术方案是:提供一种结构化数据的存取方法,该方法包括以下步骤:接收将结构化数据存储到key-value数据库的指令;根据预设的协议将结构化数据编码为可一次性存储于key-value数据库的数据;将经过编码后的结构化数据存储于key-value数据库中。
其中,根据预设的协议将结构化数据编码为可一次性存储于key-value数据库的数据进一步包括:根据预设的协议将结构化数据编码为连续的内存数据;定义连续的内存数据为key-value数据库可存储的类型之一。
其中,根据预设的协议将结构化数据编码为可一次性存储于key-value数据库的数据的之后进一步包括:判断是否编码成功;若编码成功,则执行将经过编码后的结构化数据存储于key-value数据库中的步骤;若编码失败,则返回编码失败的信息,并重新接收将结构化数据存储到key-value数据库的指令。
其中,方法还包括:接收从key-value数据库获取经过编码后的结构化数据的指令;从key-value数据库中读取经过编码后的结构化数据,并根据预设的协议对经过编码后的数据进行解码。
其中,预设的协议包括二进制协议、Protobuf协议、ASN1协议、xml协议或者json协议。
为解决上述技术问题,本发明采用的又一个技术方案是:提供一种结构化数据的存取装置,装置包括:存储指令接收模块,用于接收将结构化数据存储到key-value数据库的指令;编码模块,用于根据预设的协议将结构化数据编码为可一次性存储于key-value数据库的数据;其中,key-value数据库存储经过编码后的结构化数据。
其中,编码模块将结构化数据编码为连续的内存数据,并定义连续的内存数据为key-value数据库可存储的类型之一。
其中,装置还包括判断模块,用于判断是否编码成功,key-value数据库在编码成功时存储经过编码后的结构化数据,存储指令接收模块在编码失败时接收编码失败的信息,并重新接收将结构化数据存储到key-value数据库的指令。
其中,装置还包括:获取指令接收模块,用于接收从key-value数据库获取经过编码后的结构化数据的指令;解码模块,用于从key-value数据库读取经过编码后的结构化数据并对经过编码后的数据进行解码。
其中,预设的协议包括二进制协议、Protobuf协议、ASN1协议、xml协议或者json协议。
本发明的有益效果是:区别于现有技术的情况,本发明在将结构化数据存入key-value数据库之前将其编码为可一次性存储于key-value数据库的数据,因此,可一次性地保存结构化数据,提高了存储的效率和准确率。
附图说明
图1是发明实施例提供的一种结构化数据的存取装置的结构示意图;
图2是本发明的一种结构化数据存储到key-value数据库的原理图;
图3是本发明实施例提供的一种结构化数据的存取方法的流程图。
具体实施方式
请参阅图1,图1是本发明实施例提供的一种结构化数据的存取装置的结构示意图,其中,结构化数据存储和获取的对象是key-value数据库100,其包括redis(内存键值存储)数据库或者memcache(高速缓存)数据库。如图1所示,本实施例的存取装置10包括将结构化数据存储到key-value数据库100的装置11以及从key-value数据库100获取结构化数据的装置12。
其中,将结构化数据存储到key-value数据库100的装置11包括存储指令接收模块111以及编码模块112。
存储指令接收模块111用于接收将结构化数据存储到key-value数据库100的指令。具体而言,存储指令可以是按照预设的时间自动发送,也可以是用户根据实际的需要随机发送,由此,接收模块111可以对应自动发送的操作设置按照预设的时间接收存储指令,也可以按照随机发送的操作设置为随机接收存储指令。
编码模块112用于根据预设的协议将结构化数据编码为可一次性存储于key-value数据库100的数据。具体为,编码模块112根据预设的协议将结构化数据编码为连续的内存数据,并定义连续的内存数据为key-value数据库100可存储的类型之一。
具体原理请参阅图2,图2是本发明的一种结构化数据存储到key-value数据库的原理图。结构化数据可以由一种或者两种或以上的类型的数据组成。本实施例以结构化数据由两种类型的数据组成进行举例。如图2所示,定义一结构化数据M,其由string类型的数据O和hash类型的数据P组成。而string类型的数据O存储在数据库的内存的栈中,hash类型的数据P存储在数据库的内存的堆中。本实施例将该数据O和数据P进行编码成一个连续的内存数据块,并定义为set类型,进而将数据类型为set的数据存储到key-value数据库100的数据区中,从而可以一次性完成存储,并将数据O和数据P存储在同一个连续的内存中。
可选的,预设的协议包括二进制协议、Protobuf(Protocolbuffer,协议缓冲区)协议、ASN1(AbstractSyntaxNotationOne,抽象语法记法一)协议、xml(EXtensibleMarkupLanguage,翻译为可扩展置标语言)协议或者json(JavaScriptObjectNotation,javaScript对象符号)协议。
可选的,将结构化数据存储到key-value数据库100的装置11还包括判断模块113,用于判断是否编码成功。key-value数据库100在编码成功时存储经过编码后的结构化数据,存储指令接收模块111在编码失败时接收编码失败的信息,并重新接收将结构化数据存储到key-value数据库100的指令。
以上介绍的是将结构化数据存储到key-value数据库100的装置11的结构,其通过设置编码模块112,使得结构化数据可以一次性存储于key-value数据库100中,并保证了数据的在key-value数据库100内存中的连续性。提高了存储的准确率和效率。
以下将具体介绍从key-value数据库获取结构化数据的装置12。
从key-value数据库获取结构化数据的装置12包括获取指令接收模块121和解码模块122。
其中,获取指令接收模块121用于接收从key-value数据库100获取经过编码后的结构化数据的指令。
解码模块122用于从key-value数据库100读取经过编码后的结构化数据并对经过编码后的数据进行解码。其中,解码的协议与编码的协议对应。如编码采用二进制协议时,解码也要采用二进制协议。
可选的,从key-value数据库获取结构化数据的装置12还包括判断模块123,用于判断是否解码成功。获取指令接收模块121在判断模块123判断的结果为是,停止接收指令,在判断模块123判断的结果为否,继续接收指令。
应理解,以上实施例中的存储指令接收模块111和获取指令接收模块121可以集成为一个指令接收模块,在实际应用中,指令接收模块接收到指令后进一步分析是存储指令还是获取指令。
进一步的,判断模块113和123也可以集成为一个判断模块,在实际应用中,根据状况去判断。
承前所述,本发明实施例提供的存取装置10将结构化数据根据预设的协议进行编码,进而可一次性的存储结构化数据到key-value数据库100中,提高了存储的准确率和效率。并且可以根据预设的协议读取并解码key-value数据库100中的结构化数据。
本发明实施例基于前文提供的存取装置10还提供了一种结构化数据的存取方法。
具体请参阅图3,图3是本发明实施例提供的一种结构化数据的存取方法的流程图,其中,该存取方法包括将结构化数据存储到key-value数据库的方法以及从key-value数据库获取结构化数据的方法。key-value数据包括redis数据库或者memcache数据库,如图3所示,存取方法包括以下步骤:
步骤S1:接收指令,其中该指令由用户输入或者根据预设的规则自动输入;
步骤S2:判断指令;
本步骤中,具体为判断指令是存储指令还是获取指令。存储指令即为将结构化数据存储到key-value数据库100的指令,读取指令即为从key-value数据库100获取经过编码后的结构化数据的指令。
本步骤中,若判断到指令为存储指令,则跳转到步骤S31,若判断到指令为获取指令,则跳转到步骤S32。
以下首先介绍指令为存储指令时的步骤:
步骤S31:根据预设的协议将结构化数据编码为可一次性存储于key-value数据库100的数据。
本步骤具体为,根据预设的协议将结构化数据编码为连续的内存数据,并定义连续的内存数据为key-value数据库100可存储的类型之一。具体原理如前文所述,在此不再赘述。
其中,预设的协议包括二进制协议、Protobuf协议、ASN1协议、xml协议或者json协议。
步骤S41:判断编码是否成功;
本步骤中,若判断的结果为是,则执行步骤S51;若判断的结果为否,则返回编码失败的信息,并重新执行步骤S1、S2以及S31。
步骤S51:即将经过编码后的结构化数据存储于key-value数据库100中。
因此,可一次性将结构化数据存储到key-value数据库100中,提高了存储的准确率和效率。
以上介绍的是指令为存储指令的步骤,以下将介绍指令为获取指令的步骤:
步骤S32:从key-value数据库100中读取经过编码后的结构化数据,并根据预设的协议对经过编码后的数据进行解码。
其中,解码的协议与编码的协议对应。如编码采用二进制协议时,解码也要采用二进制协议。
步骤S42:判断解码是否成功。
在本步骤中,若判断的结果为是,则返回解码成功的消息,若判断的结果为否,则返回解码失败的信息,并进行执行步骤S1、S2以及S32。
综上所述,本发明首先将结构化数据进行编码为连续的内存数据,并定义一个数据类型,使得可一次性地存储到key-value数据库100中,提高了存储的准确率和效率。
进一步的,在读取key-value数据库100中的结构化数据时,对应编码的规则对结构化数据进行解码,可获取原始的结构化数据。
以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (10)
1.一种结构化数据的存取方法,其特征在于,所述方法包括以下步骤:
接收将所述结构化数据存储到所述key-value数据库的指令;
根据预设的协议将所述结构化数据编码为可一次性存储于所述key-value数据库的数据;
将经过编码后的所述结构化数据存储于所述key-value数据库中。
2.根据权利要求1所述的方法,其特征在于,根据预设的协议将所述结构化数据编码为可一次性存储于所述key-value数据库的数据进一步包括:
根据预设的协议将所述结构化数据编码为连续的内存数据;
定义所述连续的内存数据为所述key-value数据库可存储的类型之一。
3.根据权利要求1所述的方法,其特征在于,所述根据预设的协议将所述结构化数据编码为可一次性存储于所述key-value数据库的数据的之后进一步包括:
判断是否编码成功;
若编码成功,则执行将经过编码后的所述结构化数据存储于所述key-value数据库中的步骤;
若编码失败,则返回编码失败的信息,并重新接收将所述结构化数据存储到所述key-value数据库的指令。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
接收从所述key-value数据库获取经过编码后的所述结构化数据的指令;
从所述key-value数据库中读取经过编码后的所述结构化数据,并根据预设的所述协议对经过编码后的所述数据进行解码。
5.根据权利要求4所述的方法,其特征在于,所述key-value数据包括redis数据库或者memcache数据库,所述预设的协议包括二进制协议、Protobuf协议、ASN1协议、xml协议或者json协议。
6.一种结构化数据的存取装置,其特征在于,所述装置包括:
存储指令接收模块,用于接收将所述结构化数据存储到所述key-value数据库的指令;
编码模块,用于根据预设的协议将所述结构化数据编码为可一次性存储于所述key-value数据库的数据;
其中,所述key-value数据库存储经过编码后的所述结构化数据。
7.根据权利要求6所述的装置,其特征在于,所述编码模块将所述结构化数据编码为连续的内存数据,并定义所述连续的内存数据为所述key-value数据库可存储的类型之一。
8.根据权利要求6所述的装置,其特征在于,所述装置还包括判断模块,用于判断是否编码成功,所述key-value数据库在编码成功时存储经过编码后的所述结构化数据,所述存储指令接收模块在编码失败时接收编码失败的信息,并重新接收将所述结构化数据存储到所述key-value数据库的指令。
9.根据权利要求6所述的装置,其特征在于,所述装置还包括:
获取指令接收模块,用于接收从所述key-value数据库获取经过编码后的所述结构化数据的指令;
解码模块,用于从所述key-value数据库读取经过编码后的所述结构化数据并对经过编码后的所述数据进行解码。
10.根据权利要求9所述的装置,其特征在于,所述预设的协议包括二进制协议、Protobuf协议、ASN1协议、xml协议或者json协议。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410196312.4A CN105095268A (zh) | 2014-05-12 | 2014-05-12 | 结构化数据的存取方法以及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410196312.4A CN105095268A (zh) | 2014-05-12 | 2014-05-12 | 结构化数据的存取方法以及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105095268A true CN105095268A (zh) | 2015-11-25 |
Family
ID=54575722
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410196312.4A Pending CN105095268A (zh) | 2014-05-12 | 2014-05-12 | 结构化数据的存取方法以及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105095268A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107229723A (zh) * | 2017-06-05 | 2017-10-03 | 腾讯科技(深圳)有限公司 | 指令处理方法及指令处理装置 |
CN108595209A (zh) * | 2018-03-21 | 2018-09-28 | 百度在线网络技术(北京)有限公司 | 数据存储和读取方法、装置、***及存储介质 |
CN110120945A (zh) * | 2019-04-23 | 2019-08-13 | 苏州凯迪泰医学科技有限公司 | 一种数据结构化封装的方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103389992A (zh) * | 2012-05-09 | 2013-11-13 | 北京百度网讯科技有限公司 | 一种结构化数据存储方法及装置 |
US20140067853A1 (en) * | 2012-08-29 | 2014-03-06 | Fujitsu Limited | Data search method, information system, and recording medium storing data search program |
CN103703467A (zh) * | 2013-08-29 | 2014-04-02 | 华为技术有限公司 | 存储数据的方法和装置 |
-
2014
- 2014-05-12 CN CN201410196312.4A patent/CN105095268A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103389992A (zh) * | 2012-05-09 | 2013-11-13 | 北京百度网讯科技有限公司 | 一种结构化数据存储方法及装置 |
US20140067853A1 (en) * | 2012-08-29 | 2014-03-06 | Fujitsu Limited | Data search method, information system, and recording medium storing data search program |
CN103703467A (zh) * | 2013-08-29 | 2014-04-02 | 华为技术有限公司 | 存储数据的方法和装置 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107229723A (zh) * | 2017-06-05 | 2017-10-03 | 腾讯科技(深圳)有限公司 | 指令处理方法及指令处理装置 |
CN107229723B (zh) * | 2017-06-05 | 2022-05-03 | 腾讯科技(深圳)有限公司 | 指令处理方法及指令处理装置 |
CN108595209A (zh) * | 2018-03-21 | 2018-09-28 | 百度在线网络技术(北京)有限公司 | 数据存储和读取方法、装置、***及存储介质 |
CN110120945A (zh) * | 2019-04-23 | 2019-08-13 | 苏州凯迪泰医学科技有限公司 | 一种数据结构化封装的方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107040261B (zh) | 调整延伸极化码的码长度的方法及装置 | |
US11704328B2 (en) | Columnar storage and query method and system for time series data | |
US9454552B2 (en) | Entropy coding and decoding using polar codes | |
US20200364429A1 (en) | Two-dimensional code generation and identification | |
US8255701B2 (en) | File encryption method | |
CN101562455B (zh) | 内容可适性二元算数编码的译码装置及其译码方法 | |
US9912353B1 (en) | Systems and methods for generating soft information in a flash device | |
CN110096541B (zh) | 一种数据库间的数据交换方法及装置 | |
CN110958252A (zh) | 一种网络安全设备及其网络攻击检测方法、装置和介质 | |
CN105095268A (zh) | 结构化数据的存取方法以及装置 | |
US11550756B2 (en) | System and method for error-resilient data reduction | |
CN104424010B (zh) | 一种文本文档乱码检测及修复方法和*** | |
CN112188211A (zh) | 一种转码实现方法和装置 | |
EP3065060A1 (en) | Grammar generation for simple datatypes | |
CN103312458A (zh) | 混合编码方法 | |
CN106658034A (zh) | 文件存储和读取的方法及装置 | |
CN110852098B (zh) | 一种数据修正方法及电子设备和存储介质 | |
CN108959411B (zh) | Etl任务的处理方法、装置和设备 | |
CN102799572B (zh) | 一种文本编码方式和文本编码装置 | |
US10089189B2 (en) | Devices and methods for receiving a data file in a communication system | |
CN102970048B (zh) | 一种基于bch码译码的bch码编码参数盲识别方法 | |
CN1964496A (zh) | 编码器及自适应算术编码的实现方法及装置 | |
CN103488617A (zh) | 一种数据截取的方法和装置 | |
US20160259763A1 (en) | Grammar generation for augmented datatypes | |
CN105527637A (zh) | 北斗卫星导航定位***中的bch译码方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20151125 |
|
WD01 | Invention patent application deemed withdrawn after publication |