CN115129714A - 一种基于侵入式容器和代码生成技术的数据表生成方法 - Google Patents

一种基于侵入式容器和代码生成技术的数据表生成方法 Download PDF

Info

Publication number
CN115129714A
CN115129714A CN202210721394.4A CN202210721394A CN115129714A CN 115129714 A CN115129714 A CN 115129714A CN 202210721394 A CN202210721394 A CN 202210721394A CN 115129714 A CN115129714 A CN 115129714A
Authority
CN
China
Prior art keywords
data table
memory data
defining
index
memory
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
Application number
CN202210721394.4A
Other languages
English (en)
Inventor
林琨
汪鑫
顾辰飞
陈清睿
王泊
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Stock Exchange Technology Co ltd
Original Assignee
Shanghai Stock Exchange Technology Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shanghai Stock Exchange Technology Co ltd filed Critical Shanghai Stock Exchange Technology Co ltd
Priority to CN202210721394.4A priority Critical patent/CN115129714A/zh
Publication of CN115129714A publication Critical patent/CN115129714A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2291User-Defined Types; Storage management thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/25Integrating or interfacing systems involving database management systems
    • G06F16/252Integrating or interfacing systems involving database management systems between a Database Management System and a front-end application
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45579I/O management, e.g. providing access to device drivers or storage

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种基于侵入式容器和代码生成技术的数据表生成方法,所述方法包括内存数据表定义、golang template模板定义和golang template模板生成,其中所述内存数据表定义包括定义内存数据表数据结构和定义内存数据表类,所述的golang temple模板定义包括定义内存数据表元素结构和定义内存数据表类模板;本发明采用侵入式容器作为内存数据引擎,结合对象池,简化内存管理、提高执行效率,同时能够避免共享内存带来的开销和风险,同时支持嵌套的变长数据类型,通过代码生成技术,为内存数据表定义多种侵入式容器类型,实现对单张内存数据表的多维索引。

Description

一种基于侵入式容器和代码生成技术的数据表生成方法
技术领域
本发明涉及数据处理技术领域,具体来说是一种基于侵入式容器和代码生成技术的数据表生成方法。
背景技术
面向证券交易系统的内存数据表是交易系统中,提供业务参考数据加载、存储、维护和索引功能的组件。
代码生成是根据用户提供的输入,基于一定的规则,生成规范的计算机程序代码的的技术,代码生成技术目前所使用的主要方式有基于模板编排的生成方式、基于可视化UI的生成方式、基于代码语料的生成方式以及基于AI的生成方式;其中基于模板编排的生成方式是最原始、最简单,也是目前应用最为广泛的代码生成方式,通过提取代码的公共逻辑形成模板,根据元数据的描述向模板中填充相关信息,生成不同业务的代码。
基于可视化UI的生成方式主要面向的也是非研发人员,由开发人员进行各种基础功能模块的开发,并通过可视化编程的方式向用户提供这些功能模块,由用户自由组合,构建生成相关代码或程序。
基于代码语料的生产方式主要应用与IDE的各种插件,通过分析开发人员编写的代码上下文信息,预判开发人员将要输入的内容,并进行代码的生成补全。
基于AI的生成方式是指借助计算机视觉、自然语言处理等技术,理解设计师等非研法人员绘制或书写的相关内容,生成相应代码片段的技术,目前应用范围较为小众。
Golang template是golang编程语言提供一种用于生成文本输出的数据驱动模板,根据定义好的模板,能够通过数据的填充,来生产各种文本。
这里的容器是一种用于存放同一类型元素对象的集合,在元素对象的组织上可以使用不同的组织结构,如堆、栈、链表、二叉树、哈希表等;在数据存储上可以是堆内存、栈内存、共享内存、外存等。
非侵入式容器一般不需要对元素的本身的结构进行修改,通过对元素对象进行拷贝、克隆来存储元素对象,侵入式容器不存储元素对象数据本身,而是通过在元素本身的结构基础上添加额外的属性hook(钩子)来达到在元素对象间建立连接关系的目的,实现元素对象的不同组织方式,从而避免容器对元素对象的拷贝、克隆,降低对内存管理的要求,能够提供更好的性能。
Boost.Intrusives是Boost库提供的面向C++的侵入式容器库。
现有证劵交易系统中,为了便于其他进程能够访问交易系统运行过程中维护的交易数据,采用基于共享内存的内存数据引擎,基于该内存数据引擎为不同的数据模型分别生成内存数据表的逻辑代码。
现有证劵交易系统中,通过使用共享内存来达到外部程序访问交易系统内部数据时,共享内存没有提供同步的机制,虽然可以借助其他手段来进行进程间的同步工作,但多个进程同时对共享内存中统一数据模块进行操作时,造成的效率低下、容易产生错误,且错误产生后难以进行调试。
现有技术中共享内存采用偏移量指针,无法使用一般指针和存储C++对象,不支持嵌套的变长数据类型。
现有技术中将共享内存内的数据结构作为API使用,当涉及到使用方数量过多时,为保持向下兼容,难以对数据结构进行优化。
发明内容
本发明的目的在于解决现有技术的不足,提供一种基于侵入式容器和代码生成技术的数据表生成方法。
为了实现上述目的,设计一种基于侵入式容器和代码生成技术的数据表生成方法,其中所述内存数据表T包括内存数据表的字段F、在内存数据表上建立的索引I,索引I具有索引字段、有序性和唯一性属性,所述方法包括内存数据表定义方法,具体步骤如下:
S1.定义内存数据表数据结构,根据内存数据表T1的字段和索引,定义内存数据表元素结构T1Data;
S11.根据内存数据表T1的字段,定义元素字段;
S12.根据内存数据表T1的索引,定义侵入式容器hook类型;
S2.定义内存数据表类;
S21.根据内存数据表T1内存数据表元素结构中定义的hook类型,定义侵入式容器HookOpt类型;
S22.根据内存数据表T1的索引,定义由索引字段组成的索引键结构体以及用于获取索引键结构体的KeyOfValue结构体,KeyOfValue结构体通过重载实现内存数据库数据到索引键结构体的转换;
S23.根据内存数据表T1的索引,定义侵入式容器类型,为侵入式容器类型指定hook option和索引字段;
S24.定义用于存放内存数据表数据的存储类型,采用标准容器,以唯一指针的方式存储;
S25.无序的侵入式容器通过hash进行数据的组织,因此需要定义hash桶;
S26.定义内存数据表类型的构造函数,在构造函数中初始化定义的侵入式容器类型,即被无序侵入式容器类型使用的hash桶;
S27.定义内存数据表的添加数据接口,将内存数据表T1的数据以唯一指针封装存储至datas中,并通过根据索引定义的侵入式容器的接口添加数据索引信息;
S28.定义内存数据表的删除数据接口;
S29.根据内存数据表T1的索引,定义内存数据表查找数据接口,从侵入式容器中查找数据,若数据存在则返回数据对象指引,若数据不存在返回空指针。
本发明还包括如下优选的技术方案。
进一步,还包括模板定义方法,所述定义方法具体步骤如下:
D1.定义内存数据表元素结构模板;
D11.根据内存数据表名定义内存数据表元素结构体名;
D12.遍历内存数据表字段结合,根据字段类型和字段名定义字段变量,字段名转化为下划线格式;
D13.遍历内存数据表索引集合,根据索引字段集合和索引名定义用于侵入式容器的hook变量;
D2.定义内存数据表类模板;
D21.根据内存数据表名定义内存数据表类名;
D22.遍历内存数据表索引集合,根据索引字段集合定义索引键结构体,其中索引键结构体的构造函数需遍历索引字段集合;
D23.遍历内存数据表索引集合,根据索引名,索引有序性定义侵入式容器的HookOpt;
D24.遍历内存数据表索引集合,根据索引名,索引有序性定义侵入式容器的类型及变量;
D25.定义存储内存数据表数据的存储器;
D26.定义内存数据表类的构造函数;
D27.定义内存数据表类的析构函数,遍历内存数据表索引集合,根据索引名清理侵入式容器和内存数据表数据存储器;
D28.定义内存数据表类的添加数据接口,遍历内存数据表索引集合,根据索引名将数据添加进侵入式容器,并通过唯一指针封装存储至数据存储器;
D29.定义内存数据表类的删除数据接口,遍历内存数据表索引集合,根据索引名将数据从所有侵入式容器和数据存储器中删除;
D210.遍历内存数据表索引集合,为所有侵入式容器定义与之对应的内存数据表类的查询数据接口,从根据相应的索引键结构从侵入式容器中查询数据,若存在返回数据指针,否则返回空指针。
进一步,还包括模板生成方法,所述模板生成方法是通过提供的接口,将内存数据表T的属性传入模板,即可生成正确可用的在内存数据表定义中定义的内存数据表结构及内存数据表类。
本发明同现有技术相比,其优点在于:
1.采用侵入式容器作为内存数据引擎,结合对象池,简化内存管理、提高执行效率,同时能够避免共享内存带来的开销和风险。
2.在证劵交易系统领域,使用侵入式容器作为承载内存数据表的基础数据结构,使得内存数据表支持存储C++对象,支持嵌套的变长数据类型。
3.通过代码生成技术,为内存数据表定义多种侵入式容器类型,实现对单张内存数据表的多维索引。
具体实施方式
下面对本发明作进一步说明,本发明的结构和原理对本专业的人来说是非常清楚的。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
具体实施例说明内容如下:
1.符号定义:
内存数据表用T表示;内存数据表的字段用F表示,字段F具有类型F.type等属性;在内存数据表上建立的索引用I表示,索引I具有索引字段I.fields、有序性I.ordered、唯一性I.unique等属性。
2.内存数据表定义:
假设数据表T1存在四个字段,即T1.fields={F1,F2,F3,F4},其中F1.type=int,F2.type=int,F3.type=string,F4.type=string。
数据表T1的索引有,T1.indexes={I1,I1_2}。根据字段F1构建了有序唯一索引I1,即I1.fields={F1}、I1.ordered=true、I1.unique=true;根据字段F2,F3构建了无序唯一索引I1_2,即I1_2.fields={F1,F2}、I1_2.ordered=false、I1_2.unique=true。使用基于Boost.Intrusive库提供的侵入式容器定义内存数据表的方式如下。
(1)定义内存数据表数据结构:
根据T1的字段和索引,定义内存数据表元素结构T1Data;
步骤1:根据T1的字段,定义元素字段;
步骤2:根据T1的索引,定义侵入式容器hook类型。有序索引使用“set_member_hook”,无序索引使用“unordered_set_member_hook”。
最终定义的T1Data结构体如下:
Figure BDA0003711415310000071
Figure BDA0003711415310000081
(2)定义内存数据表类:
内存数据表T1所对应的类名为T1,定义步骤如下。
步骤1:根据T1内存数据表元素结构中定义的hook类型,定义侵入式容器HookOpt类型;
using OrderedUniqueIndexF1HookOpt=intrusive::member_hook<
T1Data,
intrusive::set_member_hook<>,
&T1Data::ordered_unique_index_f1_hook>;
using UnorderedUniqueIndexF1F2HookOpt=intrusive::member_hook<
T1Data,
intrusive::unordered_set_member_hook<>,
&T1Data::unordered_unique_index_f2_f3_hook>;
步骤2:根据T1的索引,定义由索引字段组成的索引键结构体以及用于获取索引键结构体的KeyOfValue结构体,KeyOfValue结构体通过重载“operator()”实现内存数据库数据到索引键结构体的转换。I1.field={F1},因此定义由F1组成的索引键结构体名为F1Key,KeyOfValue结构体名为F1KeyOfValue;I1_2.fields={F1,F2},因此定义由F2和F3组成的索引键结构体名为F2F3Key,KeyOfValue结构体名为F2F3KeyOfValue;
Figure BDA0003711415310000082
步骤3:根据T1的索引,定义侵入式容器类型,为侵入式容器类型指定hookoption和索引字段。I1索引对应的为OrderedUniqueIndexF1Container,I1_2索引对应的为UnorderedUniqueIndexF1F2Container,并分别定义两者的变量ordered_unique_index_f1_container和unordered_unique_index_f1_f2_container;
using OrderedUniqueF1IndexContainer=intrusive::rbtree<
TData,
OrderedUniqueF1IndexHookOpt,
intrusive::key_of_value<F1KeyOfValue>>;
using UnorderedUniqueF2F3IndexContainer=intrusive::unordered_set<
TData,
UnorderedUniqueF2F3IndexHookOpt,
intrusive::key_of_value<F2F3KeyOfValue>>;
OrderedUniqueIndexF1Container ordered_unique_index_f1_container;
UnorderedUniqueIndexF1F2Container unordered_unique_index_f1_f2_container;
步骤4:定义用于存放内存数据表数据的存储类型,采用标准容器std::unordered_set,以唯一指针的方式存储。定义内存数据表T1的数据存储变量datas;
std::unordered_set<std::unique_ptr<T1Data>>datas;
步骤5:无序的侵入式容器通过hash进行数据的组织,因此需定义hash桶,即为UnorderedUniqueIndexF1F2Container定义hash桶unordered_unique_index_f1_f2_container_buckets
std::vector<UnorderedUniqueIndexF1F2Container::bucket_type>unordered_unique_index_f1_f2_container_buckets;
步骤6:定义内存数据表类型的构造函数,在构造函数中初始化定义的侵入式容器类型,即被无序侵入式容器类型使用的hash桶。定义内存数据表T1类的构造函数T1,初始化UnorderedUniqueIndexF1F2Container使用的hash桶unordered_unique_index_f1_f2_container_buckets,以及侵入式容器变量ordered_unique_index_f1_container和unordered_unique_index_f1_f2_container;
Figure BDA0003711415310000091
Figure BDA0003711415310000101
步骤7:定义内存数据表的添加数据接口。将内存数据表T1的数据以唯一指针封装存储至datas中,并通过根据索引定义的侵入式容器的接口添加数据索引信息。
Figure BDA0003711415310000102
步骤8:定义内存数据表的删除数据接口。从侵入式容器ordered_unique_inde x_f1_container和unordered_unique_index_f1_f2_container,以及数据存储datas中移除数据;
Figure BDA0003711415310000103
步骤9:根据T1的索引,定义内存数据表查找数据接口。从侵入式容器中查找数据,若数据存在则返回数据对象指针,若数据不存在返回空指针。I1索引对应的接口为FoundByF1Key,I1_2索引对应的接口为FoundByF2F3Key;
Figure BDA0003711415310000104
Figure BDA0003711415310000111
3.golang template模板定义:
为了简化内存数据表代码的编写,将内存数据表T的公共逻辑进行提取,作为代码生成的元数据,在符号定义的基础上进行如下定义。
内存数据表T具有如下属性,内存数据表名T.name,内存数据表字段集合T.fields,内存数据表索引集合T.indexes;
字段F具有如下属性,字段名F.name,字段类型F.type;
索引I具有如下属性,索引名I.name,索引字段集合I.fields,索引有序性I.ordered,索引唯一性I.unique。
根据定义的属性、以及内存数据库的定义方式,提取内存数据库代码模板如下。
(1)定义内存数据表元素结构:
步骤1:根据T.name定义内存数据表元素结构体名;
struct{{.T.Name}}Data
步骤2:遍历T.fields,根据F.type和定义字段变量,F.name通过ToUnderScoreCase转化为“aa_bb_cc”的下划线格式;
{{range$f_i,$f:=.T.Fields}}
{{$f.Type}}{{ToUnderScoreCase$f.Name}}_;
{{end}}
步骤3:遍历T.indexes,根据I.ordered和I.name定义用于侵入式容器的hook变量,I.ordered=true时使用intrusive::set_member_hook,否则使用intrusive::unordered_set_member_hook;
{{range$i_i,$i:=.T.Indexes}}
{{if$i.Ordered}}intrusive::set_member_hook<>{{else}}intrusive::unordered_set_member_hook<>{{end}}{{ToUnderScoreCase$i.Name}}_hook_;
{{end}}
(2)定义内存数据表类模板:
步骤1:根据T.name定义内存数据表类名;
class{{.T.Name}}Table
步骤2:遍历T.indexes,根据I.fields定义索引键结构体的KeyOfValue结构体,其中索引键结构体的构造函数需遍历I.fields;
Figure BDA0003711415310000121
步骤3:遍历T.indexes,根据I.name,I.ordered定义侵入式容器的HookOpt,I.ordered=ture时使用set_member_hook,否则使用unordered_set_member_hook;
Figure BDA0003711415310000122
Figure BDA0003711415310000131
步骤4:遍历T.indexes,根据I.name,I.ordered定义侵入式容器类型及变量,I.ordered=ture时使用rbtree,否则使用unordered_set且需定义hash桶数组;
Figure BDA0003711415310000132
步骤5:定义存储内存数据表数据的存储器,采用std::vector;
std::unordered_set<std::unique_ptr<{{.T.Name}}Data>>datas_;
步骤6:定义内存数据表类的构造函数。遍历T.indexes,对I.ordered=false采用unordered_set的侵入式容器和其hash桶数组进行初始化;
Figure BDA0003711415310000133
Figure BDA0003711415310000141
步骤7:定义内存数据表类的析构函数,遍历T.indexes,根据I.name清理侵入式容器和内存数据表数据存储器;
Figure BDA0003711415310000142
步骤8:定义内存数据表类的添加数据接口。遍历T.indexes,根据I.name将数据添加进侵入式容器,并通过唯一指针封装存储至数据存储器;
Figure BDA0003711415310000143
步骤9:定义内存数据表类的删除数据接口。遍历T.indexes,根据I.name将数据从所有侵入式容器和数据存储器中删除;
Figure BDA0003711415310000144
Figure BDA0003711415310000151
步骤10:遍历T.indexes,为所有侵入式容器定义与之对应的内存数据表类的查询数据接口,从根据相应的索引键结构体从侵入式容器中查询数据,若存在返回数据指针,否则返回空指针;
Figure BDA0003711415310000152
4.golang template模板生成:
通过golang template提供的接口,将内存数据表T的属性传入模板,即可生成正确可用的在内存数据表定义中定义的内存数据表结构及内存数据表类。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (3)

1.一种基于侵入式容器和代码生成技术的数据表生成方法,其特征在于所述内存数据表T包括内存数据表的字段F、在内存数据表上建立的索引I,索引I具有索引字段、有序性和唯一性属性,所述方法包括内存数据表定义方法,具体步骤如下:
S1. 定义内存数据表数据结构,根据内存数据表T1的字段和索引,定义内存数据表元素结构T1Data;
S11. 根据内存数据表T1的字段,定义元素字段;
S12. 根据内存数据表T1的索引,定义侵入式容器hook类型;
S2. 定义内存数据表类;
S21. 根据内存数据表T1内存数据表元素结构中定义的hook类型,定义侵入式容器HookOpt类型;
S22. 根据内存数据表T1的索引,定义由索引字段组成的索引键结构体以及用于获取索引键结构体的KeyOfValue结构体,KeyOfValue结构体通过重载实现内存数据库数据到索引键结构体的转换;
S23. 根据内存数据表T1的索引,定义侵入式容器类型,为侵入式容器类型指定hookoption和索引字段;
S24. 定义用于存放内存数据表数据的存储类型,采用标准容器,以唯一指针的方式存储;
S25. 无序的侵入式容器通过hash进行数据的组织,因此需定义hash桶;
S26. 定义内存数据表类型的构造函数,在构造函数中初始化定义的侵入式容器类型,即被无序侵入式容器类型使用的hash桶;
S27. 定义内存数据表的添加数据接口,将内存数据表T1的数据以唯一指针封装存储至datas中,并通过根据索引定义的侵入式容器的接口添加数据索引信息;
S28. 定义内存数据表的删除数据接口;
S29. 根据内存数据表T1的索引,定义内存数据表查找数据接口,从侵入式容器中查找数据,若数据存在则返回数据对象指针,若数据不存在返回空指针。
2.如权利要求1所述的一种基于侵入式容器和代码生成技术的数据表生成方法,其特征在于所述方法还包括模板定义方法,所述定义方法具体步骤如下:
D1.定义内存数据表元素结构模板;
D11.根据内存数据表名定义内存数据表元素结构体名;
D12.遍历内存数据表字段集合,根据字段类型和字段名定义字段变量,字段名转化为下划线格式;
D13.遍历内存数据表索引集合,根据索引字段集合和索引名定义用于侵入式容器的hook变量;
D2.定义内存数据表类模板;
D21.根据内存数据表名定义内存数据表类名;
D22.遍历内存数据表索引集合,根据索引字段集合定义索引键结构体,其中索引键结构体的构造函数需遍历索引字段集合;
D23.遍历内存数据表索引集合,根据索引名,索引有序性定义侵入式容器的HookOpt;
D24.遍历内存数据表索引集合,根据索引名,索引有序性定义侵入式容器的类型及变量;
D25.定义存储内存数据表数据的存储器;
D26.定义内存数据表类的构造函数;
D27.定义内存数据表类的析构函数,遍历内存数据表索引集合,根据索引名清理侵入式容器和内存数据表数据存储器;
D28.定义内存数据表类的添加数据接口,遍历内存数据表索引集合,根据索引名将数据添加进侵入式容器,并通过唯一指针封装存储至数据存储器;
D29.定义内存数据表类的删除数据接口,遍历内存数据表索引集合,根据索引名将数据从所有侵入式容器和数据存储器中删除;
D210.遍历内存数据表索引集合,为所有侵入式容器定义与之对应的内存数据表类的查询数据接口,从根据相应的索引键结构从侵入式容器中查询数据,若存在返回数据指针,否则返回空指针。
3.如权利要求1所述的一种基于侵入式容器和代码生成技术的数据表生成方法,其特征在于所述方法还包括模板生成方法,所述模板生成方法是通过提供的接口,将内存数据表T的属性传入模板,即可生成正确可用的在内存数据表定义中定义的内存数据表结构及内存数据表类。
CN202210721394.4A 2022-06-24 2022-06-24 一种基于侵入式容器和代码生成技术的数据表生成方法 Pending CN115129714A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210721394.4A CN115129714A (zh) 2022-06-24 2022-06-24 一种基于侵入式容器和代码生成技术的数据表生成方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210721394.4A CN115129714A (zh) 2022-06-24 2022-06-24 一种基于侵入式容器和代码生成技术的数据表生成方法

Publications (1)

Publication Number Publication Date
CN115129714A true CN115129714A (zh) 2022-09-30

Family

ID=83379730

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210721394.4A Pending CN115129714A (zh) 2022-06-24 2022-06-24 一种基于侵入式容器和代码生成技术的数据表生成方法

Country Status (1)

Country Link
CN (1) CN115129714A (zh)

Similar Documents

Publication Publication Date Title
US7308449B2 (en) System and method for managing collections of data on a network
Faye et al. A survey of RDF storage approaches
AU2006200383B2 (en) Mapping of a file system model to a database object
US8862636B2 (en) Scalable algorithms for mapping-based XML transformation
US7178100B2 (en) Methods and apparatus for storing and manipulating variable length and fixed length data elements as a sequence of fixed length integers
US7383274B2 (en) Systems and methods for efficiently storing and accessing data storage system paths
US7634515B2 (en) Data model and schema evolution
CN111309757B (zh) 一种HBase的SQL解释器和优化方法
US20130124545A1 (en) System and method implementing a text analysis repository
WO2005103882A2 (en) Data structure for a hardware database management system
WO2014145230A1 (en) Object-oriented data infrastructure
Taylor Generalized data base management system data structures and their mappingto physical storage
US7774691B2 (en) Data adapter
CN105550176A (zh) 一种关系数据库与xml的基本映射方法
CN111752549A (zh) Sql函数生成方法及装置
CN115129714A (zh) 一种基于侵入式容器和代码生成技术的数据表生成方法
CN107368302B (zh) 一种基于本体的设计模式识别方法
US7720807B1 (en) Representing finite node-labeled trees using a one bit encoding
Zhong et al. 3SEPIAS: A semi-structured search engine for personal information in dataspace system
Li et al. Study on efficiency of full-text retrieval based on lucene
CN112100207B (zh) 一种子查询处理方法、装置、设备及存储介质
Cieślik et al. Abstractions, algorithms and data structures for structural bioinformatics in PyCogent
El Alami et al. Schema and Data Migration of a Relational Database RDB to the Extensible Markup Language XML
Gupta et al. Framework for efficient indexing and searching of scientific metadata
CN117195478A (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