CN109542893A - 一种基于编程语言的复合数据结构设置方法及电子设备 - Google Patents
一种基于编程语言的复合数据结构设置方法及电子设备 Download PDFInfo
- Publication number
- CN109542893A CN109542893A CN201811224540.2A CN201811224540A CN109542893A CN 109542893 A CN109542893 A CN 109542893A CN 201811224540 A CN201811224540 A CN 201811224540A CN 109542893 A CN109542893 A CN 109542893A
- Authority
- CN
- China
- Prior art keywords
- field
- data structure
- general character
- character field
- compound data
- 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
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开一种基于编程语言的复合数据结构设置方法及电子设备,其中,方法包括步骤:创建表结构,其中,所述表结构中包含共性字段和非共性字段,并且共性字段采用基本数据结构装载,非共性字段采用复合数据结构装载;当需要新增或删减字段时,获取所要新增或删减的字段的类型;当所要新增或删减的字段的类型为非共性字段时,直接在复合数据结构中进行字段的增加或删减;在离线计算时,取出基本数据结构或复合数据机构中对应的值进行离线计算。通过本发明提供的数据结构,可以实现历史数据的迁移,做到数据高可用,同时可以实现保存最原始的底层数据,方便后续对数据的加工使用。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种基于编程语言的复合数据结构设置方法及电子设备。
背景技术
在离线计算场景中,一般都使用SQL编程。在传统创建表结构的方案中,如果涉及到已有表结构新增额外字段或删除已有字段,那将会是非常麻烦的事情,轻则导致历史数据不可用,重则可能需要删除已有表结构,那么历史数据将永远丢失。
因此,现有技术还有待于改进和发展。
发明内容
鉴于上述现有技术的不足,本发明的目的在于提供一种基于编程语言的复合数据结构设置方法及电子设备,旨在解决现有技术中数据结构可用性差、容易出现数据丢失等问题。
本发明的技术方案如下:
一种基于编程语言的复合数据结构设置方法,其中,包括步骤:
创建表结构,其中,所述表结构中包含共性字段和非共性字段,并且共性字段采用基本数据结构装载,非共性字段采用复合数据结构装载;
当需要新增或删减字段时,获取所要新增或删减的字段的类型;
当所要新增或删减的字段的类型为非共性字段时,直接在复合数据结构中进行字段的增加或删减;
在离线计算时,取出基本数据结构或复合数据机构中对应的值进行离线计算。
所述的基于编程语言的复合数据结构设置方法,其中,所述基本数据类型包括Int或String。
所述的基于编程语言的复合数据结构设置方法,其中,所述复合数据类型包括Map结构。
所述的基于编程语言的复合数据结构设置方法,其中,还包括:
当所要新增或删减的字段的类型为共性字段时,直接在表结构中进行字段的增加或删减。
所述的基于编程语言的复合数据结构设置方法,其中,所述基本数据结构和复合数据结构均按照键值对的方式存储数据。
所述的基于编程语言的复合数据结构设置方法,其中,新增或删减字段有多个。
所述的基于编程语言的复合数据结构设置方法,其中,所述共性字段设置有多个,非共性字段也设置有多个。
一种电子设备,其中,包括:
处理器,适于实现各指令,以及
存储设备,适于存储多条指令,所述指令适于由处理器加载并执行:
创建表结构,其中,所述表结构中包含共性字段和非共性字段,并且共性字段采用基本数据结构装载,非共性字段采用复合数据结构装载;
当需要新增或删减字段时,获取所要新增或删减的字段的类型;
当所要新增或删减的字段的类型为非共性字段时,直接在复合数据结构中进行字段的增加或删减;
在离线计算时,取出基本数据结构或复合数据机构中对应的值进行离线计算。
一种非易失性计算机可读存储介质,其中,所述非易失性计算机可读存储介质存储有计算机可执行指令,该计算机可执行指令被一个或多个处理器执行时,可使得所述一个或多个处理器执行所述的基于编程语言的复合数据结构设置方法。
一种计算机程序产品,其中,计算机程序产品包括存储在非易失性计算机可读存储介质上的计算机程序,计算机程序包括程序指令,当程序指令被处理器执行时,使所述处理器执行所述的基于编程语言的复合数据结构设置方法。
有益效果:通过本发明提供的数据结构,可以实现历史数据的迁移,做到数据高可用,同时可以实现保存最原始的底层数据,方便后续对数据的加工使用。
附图说明
图1为本发明一种基于编程语言的复合数据结构设置方法较佳实施例的流程图。
图2为本发明一种电子设备较佳实施例的结构框图。
具体实施方式
本发明提供一种基于编程语言的复合数据结构设置方法及电子设备,为使本发明的目的、技术方案及效果更加清楚、明确,以下对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
请参阅图1,图1为本发明一种基于编程语言的复合数据结构设置方法较佳实施例的流程图,包括步骤:
S1、创建表结构,其中,所述表结构中包含共性字段和非共性字段,并且共性字段采用基本数据结构装载,非共性字段采用复合数据结构装载;
S2、当需要新增或删减字段时,获取所要新增或删减的字段的类型;
S3、当所要新增或删减的字段的类型为非共性字段时,直接在复合数据结构中进行字段的增加或删减;
S4、在离线计算时,取出基本数据结构或复合数据机构中对应的值进行离线计算。
通过本发明提供的数据结构,可以实现历史数据的迁移,做到数据高可用,同时可以实现保存最原始的底层数据,方便后续对数据的加工使用。
具体在所述步骤S1中,创建表结构,其中,所述表结构中包含共性字段和非共性字段,并且共性字段采用基本数据结构装载,非共性字段采用复合数据结构装载。
也就是说,在表结构中预先设置了共性字段和非共性字段。
所述共性字段是指各业务均会使用到的字段。所述非共性字段是指不同业务可能使用到的字段。
对于共性字段采用基本数据类型进行装载。其中的基本数据类型包括Int或String。
对于非共性字段采用复合数据类型进行装载。其中的复合数据类型包括Map结构。
Map也是容器的一种,每一种容器,都有响应的数据结构,例如数组是一组连续的存储空间,链表是无序的,包含指针域和值域的容器。
Map结构拥有自己独特的数据结构,Map的每一个元素叫做键值对,所谓键值对其实就是“键”和“值”组成的一对。Map的每一个元素由两部分组成,分别是key(键)和value(值)。
容器是用来装东西的,那么容器取得操作中肯定就少不了取东西,也就是查找,与数组和链表一样,Map在查找Map中的元素时,也有自己的规则,这里Map通过查找key(键)的方式,来获取相应的value(值),并且key的值不可以重复,这一点与数组中的下表相似。
Map的操作方法底层实现原理
Map的底层实现基础是数组和链表,因为Map的数据结构问题,Map中的各个元素之间没有连接的关系,所以通过数组的方式存储Map的每个元素。
Map可以进行增加、删减、修改等操作,Map的新增方法叫做put,查找方法叫做get,下面主要对这两种方法的实现进行介绍。
put方法:put(Object key,Object value);
该方法中有两个参数,一个是“键”一个是“值”,在新增元素是,需要指定新元素的key值和value值,并且只能在数组最后添加元素,下面是该方法的实现代码:
那么put方法的实现也很简单,就是将新创建的map对象设置为myMap数组的最后一个,之后让数组长度加一。
get方法的实现:
get(Object key);
Map是通过key来找value值,所以在get方法中需要传入key值,实现代码如下:
通过对存储Map对象的数组的遍历,找到key值符合要求的key值,然后返回value值。
在所述步骤S2中,当需要新增或删减字段时,获取所要新增或删减的字段的类型。
例如当所要新增或删减的字段的类型为共性字段时,直接在表结构中进行字段的增加或删减。
在所述步骤S3中,当所要新增或删减的字段的类型为非共性字段时,直接在复合数据结构中进行字段的增加或删减。
一般来说,共性字段的新增或删减的操作较少,因为共性字段的类型较为固定,一般也就常用的几个。
而经常需要新增或删减的则是非共性字段,对于非共性字段,可以直接在复合数据结构中进行字段的增加或删减。使用本发明的数据结构可以轻松应对表内容的新增字段或者删除字段,做到完全不影响已存在的历史数据。
在所述步骤S4中,在离线计算时,取出基本数据结构或复合数据机构中对应的值进行离线计算。
通过本发明提供的数据结构,可以轻松实现历史数据的迁移,做到数据高可用,同时可以实现保存最原始的底层数据,方便后续对数据的加工使用。
本发明中,所述基本数据结构和复合数据结构均按照键值对的方式存储数据。
进一步,新增或删减的字段有多个。即有可能新增或删减多个非共性字段,也有可能新增或删减多个共性字段,或同时新增或删减共性字段和非共性字段。
即,本发明数据内容分为两大块,其中一块为常规内容,另一块为非常规内容。
在这里常规内容是指一些共性内容,个数一般为有限个;非常规内容是指各个业务***的非共性内容。
其中的常规内容可以用共性字段进行装载,其中的非常规内容装载入非共性字段。
而对于常规内容,其也可能有多个,所以相应的共性字段设置有多个,非常规内容也可能有多个,所以相应的非共性字段也设置有多个。
另外,本发明中,数据内容可以来自于同一业务线,也可以来自不同业务线。
本发明特别适合于针对来自不同业务线的上报内容的使用。因为对于不同业务线,其上报内容可能大不相同,即可能具有多个非常规内容,此时采用本发明的复合数据类型进行装载。因为非常规内容已经通过复合数据类型被包装为对象,这样一来不管添加或者删除部分非常规内容,表结构不会改变,还是原来的有限个,只是复合数据类型中的非共性字段内容有所变动,但是不影响已存在的历史数据。
一个具体实施例如下
创建表结构a{id:1,info:{name:ws,age:15,class:5}},a中只有两个结构,基本数据结构id和复合数据结构info,即id为共性字段,而name、age和class为非共性字段。其中共性字段和非共性字段均采用键值对类型数据结构,即均按照键值对的方式存储数据。
假如需要新增字段country:china,state:sz到表结构a中,则按照如下方式实现:
这两个字段属于非共性字段,所以把新增的字段内容放进a中的info字段里面,这样表结构a依然只有id和info两个结构,表结构并没有发生改变,改变的只是info的内容而已,譬如a{id:1,info:{name:ws,age:15,class:5,country:china,state:sz….}}。
无论新增或者删除N个非共性字段,只需要将这N个非共性字段放进info的结构中就可以实现本发明的效果。
在离线计算时如要使用info字段中的某些数据内容,只需要按照键值对的取值方法取出,譬如要取info字段中的name值,取值方式为:值=info[name]。这样做的好处是取值灵活,不受限于所取值在info字段的位置,只需知道所取值的键名即可。
本发明还提供一种电子设备10,如图2所示,其包括:
处理器110,适于实现各指令,以及
存储设备120,适于存储多条指令,所述指令适于由处理器110加载并执行:
创建表结构,其中,所述表结构中包含共性字段和非共性字段,并且共性字段采用基本数据结构装载,非共性字段采用复合数据结构装载;
当需要新增或删减字段时,获取所要新增或删减的字段的类型;
当所要新增或删减的字段的类型为非共性字段时,直接在复合数据结构中进行字段的增加或删减;
在离线计算时,取出基本数据结构或复合数据机构中对应的值进行离线计算。
所述处理器110可以为通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、单片机、ARM(Acorn RISCMachine)或其它可编程逻辑器件、分立门或晶体管逻辑、分立的硬件组件或者这些部件的任何组合。还有,处理器还可以是任何传统处理器、微处理器或状态机。处理器也可以被实现为计算设备的组合,例如,DSP和微处理器的组合、多个微处理器、一个或多个微处理器结合DSP核、任何其它这种配置。
存储设备120作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块,如本发明实施例中的基于编程语言的复合数据结构设置方法对应的程序指令。处理器通过运行存储在存储设备中的非易失性软件程序、指令以及单元,从而执行基于编程语言的复合数据结构设置方法的各种功能应用以及数据处理,即实现上述方法实施例。
关于上述电子设备10的具体技术细节在前面的方法中已有详述,故不再赘述。
本发明还提供一种非易失性计算机可读存储介质,所述非易失性计算机可读存储介质存储有计算机可执行指令,该计算机可执行指令被一个或多个处理器执行时,可使得所述一个或多个处理器执行所述的基于编程语言的复合数据结构设置方法。
本发明还提供一种计算机程序产品,计算机程序产品包括存储在非易失性计算机可读存储介质上的计算机程序,计算机程序包括程序指令,当程序指令被处理器执行时,使所述处理器执行所述的基于编程语言的复合数据结构设置方法。
应当理解的是,本发明的应用不限于上述的举例,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,所有这些改进和变换都应属于本发明所附权利要求的保护范围。
Claims (10)
1.一种基于编程语言的复合数据结构设置方法,其特征在于,包括步骤:
创建表结构,其中,所述表结构中包含共性字段和非共性字段,并且共性字段采用基本数据结构装载,非共性字段采用复合数据结构装载;
当需要新增或删减字段时,获取所要新增或删减的字段的类型;
当所要新增或删减的字段的类型为非共性字段时,直接在复合数据结构中进行字段的增加或删减;
在离线计算时,取出基本数据结构或复合数据机构中对应的值进行离线计算。
2.根据权利要求1所述的基于编程语言的复合数据结构设置方法,其特征在于,所述基本数据类型包括Int或String。
3.根据权利要求1所述的基于编程语言的复合数据结构设置方法,其特征在于,所述复合数据类型包括Map结构。
4.根据权利要求1所述的基于编程语言的复合数据结构设置方法,其特征在于,还包括:
当所要新增或删减的字段的类型为共性字段时,直接在表结构中进行字段的增加或删减。
5.根据权利要求1所述的基于编程语言的复合数据结构设置方法,其特征在于,所述基本数据结构和复合数据结构均按照键值对的方式存储数据。
6.根据权利要求1所述的基于编程语言的复合数据结构设置方法,其特征在于,新增或删减的字段有多个。
7.根据权利要求1所述的基于编程语言的复合数据结构设置方法,其特征在于,所述共性字段设置有多个,非共性字段也设置有多个。
8.一种电子设备,其特征在于,包括:
处理器,适于实现各指令,以及
存储设备,适于存储多条指令,所述指令适于由处理器加载并执行:
创建表结构,其中,所述表结构中包含共性字段和非共性字段,并且共性字段采用基本数据结构装载,非共性字段采用复合数据结构装载;
当需要新增或删减字段时,获取所要新增或删减的字段的类型;
当所要新增或删减的字段的类型为非共性字段时,直接在复合数据结构中进行字段的增加或删减;
在离线计算时,取出基本数据结构或复合数据机构中对应的值进行离线计算。
9.一种非易失性计算机可读存储介质,其特征在于,所述非易失性计算机可读存储介质存储有计算机可执行指令,该计算机可执行指令被一个或多个处理器执行时,可使得所述一个或多个处理器执行权利要求1-7任一项所述的基于编程语言的复合数据结构设置方法。
10.一种计算机程序产品,其特征在于,计算机程序产品包括存储在非易失性计算机可读存储介质上的计算机程序,计算机程序包括程序指令,当程序指令被处理器执行时,使所述处理器执行权利要求1-7任一项所述的基于编程语言的复合数据结构设置方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811224540.2A CN109542893B (zh) | 2018-10-19 | 2018-10-19 | 一种基于编程语言的复合数据结构设置方法及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811224540.2A CN109542893B (zh) | 2018-10-19 | 2018-10-19 | 一种基于编程语言的复合数据结构设置方法及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109542893A true CN109542893A (zh) | 2019-03-29 |
CN109542893B CN109542893B (zh) | 2021-05-28 |
Family
ID=65844684
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811224540.2A Active CN109542893B (zh) | 2018-10-19 | 2018-10-19 | 一种基于编程语言的复合数据结构设置方法及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109542893B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112800054A (zh) * | 2021-01-08 | 2021-05-14 | 中国石油天然气集团有限公司 | 数据模型的确定方法、装置、设备及存储介质 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103092916A (zh) * | 2012-12-14 | 2013-05-08 | 华为技术有限公司 | 修改数据结构的方法和装置 |
CN104346466A (zh) * | 2014-11-12 | 2015-02-11 | 中国建设银行股份有限公司 | 数据库中添加新属性数据的方法和装置 |
CN105718515A (zh) * | 2016-01-14 | 2016-06-29 | 神策网络科技(北京)有限公司 | 数据存储***及其方法和数据分析***及其方法 |
CN105740414A (zh) * | 2016-01-29 | 2016-07-06 | 山东鲁能智能技术有限公司 | 基于数据库的自描述数据模型结构 |
CN106255962A (zh) * | 2014-05-01 | 2016-12-21 | 斯凯孚公司 | 用于改进数据结构存储的***和方法 |
CN107273369A (zh) * | 2016-04-06 | 2017-10-20 | 阿里巴巴集团控股有限公司 | 一种表数据修改方法和装置 |
US20170351723A1 (en) * | 2016-06-03 | 2017-12-07 | Hcl Technologies Limited | Managing data format of data received from devices in an internet of things network |
US9875277B1 (en) * | 2013-01-18 | 2018-01-23 | Microstrategy Incorporated | Joining database tables |
CN108573015A (zh) * | 2017-12-25 | 2018-09-25 | 北京金山云网络技术有限公司 | 变更表格式的方法、装置、电子设备和可读存储介质 |
-
2018
- 2018-10-19 CN CN201811224540.2A patent/CN109542893B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103092916A (zh) * | 2012-12-14 | 2013-05-08 | 华为技术有限公司 | 修改数据结构的方法和装置 |
US9875277B1 (en) * | 2013-01-18 | 2018-01-23 | Microstrategy Incorporated | Joining database tables |
CN106255962A (zh) * | 2014-05-01 | 2016-12-21 | 斯凯孚公司 | 用于改进数据结构存储的***和方法 |
CN104346466A (zh) * | 2014-11-12 | 2015-02-11 | 中国建设银行股份有限公司 | 数据库中添加新属性数据的方法和装置 |
CN105718515A (zh) * | 2016-01-14 | 2016-06-29 | 神策网络科技(北京)有限公司 | 数据存储***及其方法和数据分析***及其方法 |
CN105740414A (zh) * | 2016-01-29 | 2016-07-06 | 山东鲁能智能技术有限公司 | 基于数据库的自描述数据模型结构 |
CN107273369A (zh) * | 2016-04-06 | 2017-10-20 | 阿里巴巴集团控股有限公司 | 一种表数据修改方法和装置 |
US20170351723A1 (en) * | 2016-06-03 | 2017-12-07 | Hcl Technologies Limited | Managing data format of data received from devices in an internet of things network |
CN108573015A (zh) * | 2017-12-25 | 2018-09-25 | 北京金山云网络技术有限公司 | 变更表格式的方法、装置、电子设备和可读存储介质 |
Non-Patent Citations (1)
Title |
---|
小生艺术: "《hive 学习系列三(表格的创建create-table)》", 《HTTPS://WWW.CNBLOGS.COM/UNNUNIQUE/P/9362094.HTML》 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112800054A (zh) * | 2021-01-08 | 2021-05-14 | 中国石油天然气集团有限公司 | 数据模型的确定方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN109542893B (zh) | 2021-05-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102157925B1 (ko) | 데이터 질의 방법 및 장치 | |
US8103684B2 (en) | Abstract pipeline component connection | |
US20200236171A1 (en) | Partitioning data according to relative differences indicated by a cover tree | |
US20180232404A1 (en) | Self-recomposing program to transform data between schemas | |
US11645296B1 (en) | Techniques for decoupling access to infrastructure models | |
CN107851060A (zh) | 卸载数据分析应用中的概率计算 | |
US10108682B2 (en) | Query-level access to external petabyte-scale distributed file systems | |
US9396218B2 (en) | Database insert with deferred materialization | |
US20140136578A1 (en) | Techniques to manage virtual files | |
US20160210273A1 (en) | In-memory workspace management | |
CN108710640B (zh) | 一种提高Spark SQL的查询效率的方法 | |
Nolte et al. | Realising data-centric scientific workflows with provenance-capturing on data lakes | |
CN104794567B (zh) | 一种基于HBase的传染病数据管理方法 | |
CN109542893A (zh) | 一种基于编程语言的复合数据结构设置方法及电子设备 | |
CN110019440B (zh) | 数据的处理方法及装置 | |
US9760577B2 (en) | Write-behind caching in distributed file systems | |
Joldzic et al. | The impact of cluster characteristics on HiveQL query optimization | |
CN110222123A (zh) | 用于教育平台的Hive动态分区加载的方法及电子设备 | |
Bansal et al. | Journey of database migration from RDBMS to NoSQL Data Stores | |
US20230066110A1 (en) | Creating virtualized data assets using existing definitions of etl/elt jobs | |
CN104598567A (zh) | 一种基于Hadoop MapReduce编程框架的数据统计排重的方法 | |
US20130297576A1 (en) | Efficient in-place preservation of content across content sources | |
EP2590089A1 (en) | Rule type columns in database | |
US11386111B1 (en) | Systems, devices, and methods for data analytics | |
CN109542873A (zh) | 一种基于编程语言实现重跑历史数据的方法以及电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |