CN114817275A - 图数据库的数据读写方法、装置、设备及存储介质 - Google Patents
图数据库的数据读写方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN114817275A CN114817275A CN202210764638.7A CN202210764638A CN114817275A CN 114817275 A CN114817275 A CN 114817275A CN 202210764638 A CN202210764638 A CN 202210764638A CN 114817275 A CN114817275 A CN 114817275A
- Authority
- CN
- China
- Prior art keywords
- data
- attribute
- written
- label
- data type
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种图数据库的数据读写方法、装置、设备及存储介质,基于图数据库创建的图实例包括有模式图实例和无模式图实例,其中,所述方法包括:获取待写入数据,待写入数据为点数据或边数据;在有模式场景下,获取用户指定的待写入数据所属的第一标签,每一第一标签对应一个预先确定的属性集,属性集中的每一种属性包括属性名、以及数据类型和/或约束;写入待写入数据以及待写入数据的属性的值,属性的值包括属性集中的每一种属性对应的值、且满足对应的数据类型和/或约束;在无模式场景下,写入待写入数据以及待写入数据的属性和对应的值。本发明提供的技术方案,使得图数据库能够同时支持有模式图实例和无模式图实例。
Description
技术领域
本发明涉及数据管理技术领域,具体涉及一种图数据库的数据读写方法、装置、设备及存储介质。
背景技术
随着互联网、移动互联网、社交网络、物联网及工业领域关联型网络如电力网络的爆炸式发展,关系图的存储以及基于关系图的网络拓扑结构分析与功能分析等应用有着极大的需求,同时也促成了图数据库的研发热潮。
传统的关系型数据库在面对联机事务处理 (On-Line Transaction Processing,OLTP)需求能够实时稳定应对,例如在线商城的用户购买行为记录,系统会在购买行为发生后,记录是谁在什么时候、在哪家店铺买了什么,这样的行为数据会以增删改的方式在关系型数据库中进行数据的更新处理操作。而当在线商城主体想基于有相同或者类似购买习惯的用户的历史购买数据给别的用户进行商品推荐,或者预测某类用户是否会购买某类商品,诸如此类的基于关系图的联机分析处理(On-Line Analytical Processing,OLAP)数据分析需求时,传统关系型数据库则面临着模式(Schema)复杂、计算时间与空间不经济、响应时延较长等困境。在传统关系型数据库中,表征实体之间的关系需要创建关联表。当连边关系巨量、查询的实体关系较深时,在建模阶段通过关键字构建关联表所耗费的时间并不能加快实体之间的关系查询,而这恰好是图数据库的优势所在。
但是,目前的图数据库一般要么有模式、要么无模式,仅支持其中一种。
发明内容
有鉴于此,本发明实施例提供了一种图数据库的数据读写方法、装置、设备及存储介质,以解决图数据库只能支持有模式和无模式中一种的问题。
根据第一方面,本发明实施例提供了一种图数据库的数据读写方法,基于所述图数据库创建的图实例包括有模式图实例和无模式图实例,包括:
获取待写入数据,所述待写入数据为点数据或边数据;
在有模式场景下,获取用户指定的所述待写入数据所属的第一标签,每一所述第一标签对应一个预先确定的属性集,所述属性集中的每一种属性包括属性名、以及数据类型和/或约束;写入所述待写入数据以及所述待写入数据的属性的值,所述属性的值包括所述属性集中的每一种属性对应的值、且满足对应的所述数据类型和/或所述约束;
在无模式场景下,写入所述待写入数据以及所述待写入数据的属性和对应的值。
可选的,所述方法还包括:
在所述图数据库运行时,将数据的属性的数据类型与Java数据类型进行映射;
其中,在有模式场景下,将每一种所述数据类型与对应的Java数据类型进行映射;在无模式场景下,使用通用的数据类型与Java数据类型进行映射。
可选的,在有模式场景下,所述图数据库运行时的内存表示包括:预先确定的模式,包括第一标签列表、每种第一标签对应的属性列表、每种属性的数据类型和/或约束;第一数据对象,包括所述第一数据对象所属的标签的属性列表中的每一种属性对应的值,且,每一种属性对应的值的数据类型基于预先确定的所述模式确定和/或每一种属性对应的值满足所述模式中预先确定的约束;
在无模式场景下,所述图数据库运行时的内存表示包括:第二标签,所述第二标签包括加入第二数据对象时所述第二数据对象对应的第二标签不存在时引入的标签、之前引入的标签;所述第二数据对象,包括所述第二数据对象的一个或多个属性和对应的值;属于同一所述第二标签的所述第二数据对象的属性相同或不同,和/或,不同所述第二数据对象的相同属性的数据类型相同或不同;
其中,所述第一数据对象、所述第二数据对象包括点对象、边对象。
可选的,在有模式场景下,写入所述待写入数据的属性的值,包括:
获取所述待写入数据的属性的数据类型;
根据所述数据类型确定对应的二进制存储格式:
若所述数据类型为“INTEGER”,使用固定长度的4个字节存储;
若所述数据类型为“LONG”,使用固定长度的8个字节存储;
若所述数据类型为“STRING”,使用变长格式存储,前4个字节存储数据部分的长度,其他字节长度部分存储了根据对应的编码字节数组化了的字符串的值;
若所述数据类型为“BOOLEAN”,使用固定长度的1个字节存储;
若所述数据类型为“DATE”,使用固定长度的8个字节存储;
若所述数据类型为“DOUBLE”,使用固定长度的8个字节存储;
若所述数据类型为“FLOAT”,使用固定长度的4个字节存储;
若所述数据类型为“BLOB”,使用变长格式存储,前4个字节存储数据部分的长度,其他字节长度部分存储具体的字节数组的值;
按照确定的二进制存储格式存储所述待写入数据的属性的值。
可选的,所述在无模式场景下,写入所述待写入数据以及所述待写入数据的属性和对应的值,包括:
获取用户指定的所述待写入数据所属的第二标签;
按照所述待写入数据的全部属性,对选取的所述第二标签中的属性名称序列进行按位标记得到属性标记信息,以指示所述属性名称序列中属于所述待写入数据的属性;
存储所述待写入数据、以及所述属性标记信息和所述待写入数据的属性对应的值。
可选的,所述获取用户指定的所述待写入数据所属的第二标签,包括:
判断第二标签列表中是否存在用户指定的所述第二标签;
若存在,则选取对应的所述第二标签;
若不存在,则添加新的所述第二标签,选取新添加的所述第二标签,并将新添加的所述第二标签添加至所述第二标签列表。
可选的,对于所述待写入数据存在的属性,除存储属性对应的值外,还存储第一信息和/或第二信息,所述第一信息用于指示所述待写入数据的属性对应的值的数据类型,所述第二信息用于指示所述待写入数据的属性对应的值是否为空。
根据第二方面,本发明实施例提供了一种图数据库的数据读写装置,基于所述图数据库创建的图实例包括有模式图实例和无模式图实例,包括:
获取模块,用于获取待写入数据,所述待写入数据为点数据或边数据;
第一写入模块,用于在有模式场景下,获取用户指定的所述待写入数据所属的第一标签,每一所述第一标签对应一个预先确定的属性集,所述属性集中的每一种属性包括属性名、以及数据类型和/或约束;写入所述待写入数据以及所述待写入数据的属性的值,所述属性的值包括所述属性集中的每一种属性对应的值、且满足对应的所述数据类型和/或所述约束;
第二写入模块,用于在无模式场景下,写入所述待写入数据以及所述待写入数据的属性和对应的值。
根据第三方面,本发明实施例提供了一种电子设备,包括:
存储器和处理器,所述存储器和所述处理器之间互相通信连接,所述存储器用于存储计算机程序,所述计算机程序被所述处理器执行时,实现上述第一方面所述的任一种图数据库的数据读写方法。
根据第四方面,本发明实施例提供了一种计算机可读存储介质,所述计算机可读存储介质用于存储计算机程序,所述计算机程序被处理器执行时,实现上述第一方面所述的任一种图数据库的数据读写方法。
本发明实施例提供的图数据库的数据读写方法、装置、设备及存储介质,通过引入有模式场景下的数据类型定义和无模式场景下无数据类型定义前提下的图属性数据支持,使得图数据库同时支持有模式的图实例和无模式的图实例。
附图说明
通过参考附图会更加清楚的理解本发明的特征和优点,附图是示意性的而不应理解为对本发明进行任何限制,在附图中:
图1为本发明实施例提供的一种图数据库的数据读写方法的流程示意图;
图2为本发明实施例提供的一种有模式场景下数据的内存表示的示意图;
图3为本发明实施例提供的一种无模式场景下数据的内存表示的示意图;
图4为本发明实施例提供的一种图数据库的数据读写装置的结构示意图;
图5为本发明实施例提供的一种电子设备的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。此外,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。在以下各实施例的描述中,“多个”的含义是两个以上,除非另有明确具体的限定。
请参阅图1,本发明实施例提供一种图数据库的数据读写方法,所述图数据库创建的图实例包括有模式图实例和无模式图实例,所述方法包括:
S101:获取待写入数据,所述待写入数据为点数据或边数据;
S102:在有模式(schema)场景下,获取用户指定的所述待写入数据所属的第一标签,每一所述第一标签对应一个预先确定的属性集,所述属性集中的每一种属性包括属性名、以及数据类型和/或约束;写入所述待写入数据以及所述待写入数据的属性的值,所述属性的值包括所述属性集中的每一种属性对应的值、且满足对应的所述数据类型和/或所述约束;其中,所述约束包括是否为空、值是否唯一等;
S103:在无模式(schema free)场景下,写入所述待写入数据以及所述待写入数据的属性和对应的值。
其中,有模式场景可以是图实例为有模式的场景,无模式场景可以是图实例为无模式(schema free)的场景,有模式(schema)是指需要预先定义模式,在定义模式时需要定义图属性数据类型,无模式是指不需要预先定义模式,也不需要定义图属性数据类型。
现有技术中的图数据库一般要么有模式、要么无模式,仅支持其中一种,而本发明实施例提供的图数据库的数据读写方法,使得图数据库同时支持有模式的图实例和无模式的图实例。
本发明实施例中,属性对应的值、属性的值和属性值的含义相同。
本发明实施例中,在有模式场景下,需要预先定义模式,在定义模式时会定义属性的数据类型,具体的,有模式场景下,在图模式构建过程中,用户可指定点、边不同标签所支持属性的数据类型,来定义对应某一标签的某一属性的数据的数据类型。此定义过程为每一种属性类型指定了具体的数据类型,同时也指定了数据的格式、长度及取值范围,具体如下:
创建图实例点(或边)的标签(Label,即标签);
为每一种标签创建属性集定义,定义每种属性的属性名、数据类型及约束(是否为空、值是否唯一);
创建完标签的属性集后,每创建一个点(或边)数据,都要为此点(或边)的每一个属性设定属性的值,值应满足数据类型、是否为空或是否唯一等约束要求。
另外,在无模式场景下,用户不需要预先创建模式,不需要预先创建标签及标签对应的属性集定义。
本发明实施例中,在有模式(Schema)的图实例中支持数据类型定义,在无模式(Schema Free)的图实例中省略数据类型定义,改为在运行时记录数据的运行期类型信息。
一些具体的实施方式中,所述方法还包括:
在所述图数据库运行时,将数据的属性的数据类型与Java数据类型进行映射;
其中,在有模式场景下,将每一种所述数据类型与对应的Java数据类型进行映射;在无模式场景下,使用通用的数据类型与Java数据类型进行映射。
本发明实施例通过引入Java语言数据类型和图数据库数据类型的映射建立对象运行时表示方式来表示图数据库数据类型,以支持属性运行期存取。且,引入有模式及无模式的属性数据类型和Java数据类型的无缝映射及表示,使得图数据库同时支持有模式和无模式的属性数据在运行期的存取。
具体的,有模式场景下数据类型和Java数据类型表示:
无模式场景下,由于不存在属性类型和属性数据类型的定义过程,图数据库运行时使用内部的通用类型(GENERIC)来统一表示,此通用类型在运行时支持常见的Java数据类型:
一些具体的实施方式中,在提供上述的Java语言运行时映射及表示的前提下,具体的数值在运行时的内存表示如下:
在有模式场景下,所述图数据库运行时的内存表示包括:预先确定的模式,包括第一标签列表、每种第一标签对应的属性列表、每种属性的数据类型和/或约束;第一数据对象,包括所述第一数据对象所属的标签的属性列表中的每一种属性对应的值,且,每一种属性对应的值的数据类型基于预先确定的所述模式确定和/或每一种属性对应的值满足所述模式中预先确定的约束;
在无模式场景下,所述图数据库运行时的内存表示包括:第二标签,所述第二标签包括加入第二数据对象时所述第二数据对象对应的第二标签不存在时引入的标签、之前引入的标签;所述第二数据对象,包括所述第二数据对象的一个或多个属性和对应的值;属于同一所述第二标签的所述第二数据对象的属性相同或不同,和/或,不同所述第二数据对象的相同属性的数据类型相同或不同;
其中,所述第一数据对象、所述第二数据对象包括点对象、边对象。
在有模式场景下,对应每个图实例,存在全局性的“模式”定义来表示通用的、作用于全图标签级别的数据定义:图实例的标签列表;每种标签对应的点(或边)的属性列表;标签中属性的数据类型、约束(是否为空、是否唯一)。这种情况下,每添加一个点、边对象,其对应的标签都属于全局定义的“模式”中的标签,其对应的多种属性值的值类型、值约束都对应全局定义“模式”中的属性定义。这种全局“模式”定义之下的点、边属性值的运行时内存表示可参阅图2所示的内存表示示例。
图2中,模式定义阶段,定义了标签1及标签2,并为标签1引入了属性p11及p12的属性定义(包括属性名、数据类型、约束等),为标签2引入了属性p21/p22/p23的定义;在加入点(或边)时,标签1中加入的点(或边)对象v11、……、v1n都为属性p11及p12指定了值,标签2中加入的点(或边)对象v21、……、v2m都存在属性p21、p22及p23。
本发明实施例中,通过如上述的模式定义及运行时对象表示,图数据库提供了完全的属性值运行时支持。
关于无模式场景下运行时的数据内存表示,在无模式场景下,对应每个图实例,不存在全局性的“模式”定义,加入的点、边的属性也不会受到“模式”定义的约束。其特点是:没有全局的“模式”定义;新引入的点、边所属的“标签”没有限制,可以指定任意的“标签”;新引入的点、边对象的属性的种类及数目、数据类型、值范围等没有限制。为了在运行时对点、边属性的数据类型进行区分,图数据库实时根据属性值Java对象类型动态判断数据类型,并将类型信息和具体的值数据一起记录在点、边对象中。具体请参阅图3所示的示例,图3中所示意的运行时内存表示:无全局“模式”或“标签”定义;当点(或边)的标签不存在时,加入点(或边)时动态引入新的“标签”(图3中为“标签1”及“标签2”);虽然创建了标签,但标签本身对于其中对象的属性范围或数据类型没有定义,如样例中的标签1中的点对象v11、……、v1n的属性para1/para2/para3等无特定属性名称列表限制、无数据类型限制(即相同属性名称的值类型可以不同),示例中标签2的点对象属性值的情况类似。
本发明实施例中通过上述的无模式运行时对象表示,图数据库提供了完全的无模式场景下属性值运行时支持。在保持属性的数据类型和Java数据类型映射对应的情况下,本发明实施例引入以下特性:数据验证、完整性验证、全局唯一标识符,并引入图元素度数隐藏属性。
一般的图数据库实现以关系型数据库或者通过键值(key-value)数据方式存储,且普遍使用开源的关系型数据库或key-value数据库。本发明实施例在持久层(即存储层)引入对于各种类型属性数据基于磁盘的原生存储,换句话说是基于磁盘的、原生的图属性值存储,具体如下文。
一些具体的实施方式中,在有模式场景下,写入所述待写入数据的属性的值,包括:
获取所述待写入数据的属性的数据类型;
根据所述数据类型确定对应的二进制存储格式:
若所述数据类型为“INTEGER”,使用固定长度的4个字节存储(Big Endian/大端序字序存储);
若所述数据类型为“LONG”,使用固定长度的8个字节存储(Big Endian/大端序字序存储);
若所述数据类型为“STRING”,使用变长格式存储,前4个字节存储数据部分的长度,其他字节长度部分存储了根据对应的编码字节数组化了的字符串的值;换句话说,STRING使用变长格式存储,其前4个字节存储了数据部分的长度,紧接着对应的字节长度部分存储了根据对应的编码(如UTF-8)字节数组化了的字符串的值(即编码后的二进制值);
若所述数据类型为“BOOLEAN”,使用固定长度的1个字节存储,具体的,0值可以代表FALSE,1值可以代表TRUE;
若所述数据类型为“DATE”,使用固定长度的8个字节存储,其值可以为具体的日期时间值相对于1970-1-1 00:00:00 GMT时间的偏移值;
若所述数据类型为“DOUBLE”,使用固定长度的8个字节存储;具体的,其值可以根据IEEE 754关于浮点数的"double format"进行存储;
若所述数据类型为“FLOAT”,使用固定长度的4个字节存储;具体的,其值可以根据IEEE 754关于浮点数的"single format"进行存储;
若所述数据类型为“BLOB”,使用变长格式存储,前4个字节存储数据部分的长度,其他字节长度部分存储具体的字节数组的值;换句话说,若所述数据类型为“BLOB”,使用变长格式存储,其前4个字节存储了数据部分的长度,紧接着对应的字节长度部分存储了具体的字节数组的值;
按照确定的二进制存储格式存储所述待写入数据的属性的值。
其中,“INTEGER”、“LONG”、“STRING”、“BOOLEAN”、“DATE”、“DOUBLE”、“FLOAT”和“BLOB”是有模式场景下支持的图数据属性的数据类型。
本发明实施例针对有模式场景下所支持的属性数据类型,指定了二进制存储格式,即点(或边)属性值存入磁盘时的存储格式,当然也是点(或边)属性值从磁盘读取时的存储格式。
一些具体的实施方式中,所述在无模式场景下,写入所述待写入数据以及所述待写入数据的属性和对应的值,包括:
获取用户指定的所述待写入数据所属的第二标签;
按照所述待写入数据的全部属性,对选取的所述第二标签中的属性名称序列进行按位标记得到属性标记信息,以指示所述属性名称序列中属于所述待写入数据的属性;
存储所述待写入数据、以及所述属性标记信息和所述待写入数据的属性对应的值。
本发明实施例中,在无模式场景下,虽然没有全局的“模式”信息,本发明实施例为无模式场景引入了隐式的全局“属性”序列信息,即全局的“隐式”信息记录了每个标签里属性名称的列表的有序序列,如此则避免了在每个属性值里都需要重复记录其“属性名”的重复操作。即:
隐式的全局“属性”有序序列定义了标签内部属性名称的序列,此序列仅包括属性名称及其顺序信息,不包括属性的数据类型或约束信息;
对于点、边的具体属性值:根据点、边所属的标签,即可知其属性名的有序序列;引入按位标记的方式,来标示此点、边数据存在哪些属性:存在的属性将在位标记中使用按位值“1”来标记,而位值“0”则表示属性不存在;对于存在的属性,按序为其标示数据类型、标示是否为空、依每个属性数据类型不同,存储该属性具体的值。
另外,如果用户指定的所述待写入数据的第二标签的属性名称序列中不包括所述待写入数据的一个或多个属性,则在该第二标签的属性名称序列中增加该一个或多个属性。也就是说,可以在第二标签中增加当前待写入数据具有但是属性名称序列中没有的属性名称。
其中一些可选的具体实施方式中,所述获取用户指定的所述待写入数据所属的第二标签,包括:
判断第二标签列表中是否存在用户指定的所述第二标签;
若存在,则选取对应的所述第二标签;
若不存在,则添加新的所述第二标签,选取新添加的所述第二标签,并将新添加的所述第二标签添加至所述第二标签列表。
另一些可选的具体实施方式中,对于所述待写入数据存在的属性,除存储属性对应的值外,还存储第一信息和/或第二信息,所述第一信息用于指示所述待写入数据的属性对应的值的数据类型,所述第二信息用于指示所述待写入数据的属性对应的值是否为空。
具体的,对于存在的属性,按序为其标示数据类型、标示是否为空、依每个属性数据类型不同,存储该属性具体的值。
本发明实施例中,由于无模式场景下,不存在全局的“模式”信息,因而单个属性值的数据类型未知,故而通过每个属性值内部额外信息来记录此属性值的具体数据类型。
而对于有模式场景,属性值的数据类型已经通过全局的“模式”信息存储到了磁盘,故总是可以判断点(或边)数据单个的具体属性值的数据类型,即数据类型已知。具体而言:
全局的“模式”定义信息定义了标签内部属性的“模式”信息,包括:所有属性的有序列表、每种属性的名称、属性的数据类型及约束信息;
点、边具体的属性值,将在运行时根据点、边所属的标签,按照属性有序列表相应为此点、边数据建立有序的属性值序列。点、边数据的每个属性值:不需要再次标示数据类型,但需要标示此具体值是否为空;依每个属性数据类型不同,存储该属性具体的值。
本发明实施例,引入有模式和无模式两种场景下基于磁盘的图属性值数据格式定义及数据的存取支持。
相应地,请参考图4,本发明实施例提供一种图数据库的数据读写装置,基于所述图数据库创建的图实例包括有模式图实例和无模式图实例,该装置包括:
获取模块401,用于获取待写入数据,所述待写入数据为点数据或边数据;
第一写入模块402,用于在有模式场景下,获取用户指定的所述待写入数据所属的第一标签,每一所述第一标签对应一个预先确定的属性集,所述属性集中的每一种属性包括属性名、以及数据类型和/或约束;写入所述待写入数据以及所述待写入数据的属性的值,所述属性的值包括所述属性集中的每一种属性对应的值、且满足对应的所述数据类型和/或所述约束;
第二写入模块403,用于在无模式场景下,写入所述待写入数据以及所述待写入数据的属性和对应的值。
本发明实施例提供的图数据库的数据读写方法,使得图数据库同时支持有模式的图实例和无模式的图实例。
一些具体的实施方式中,所述装置还包括:
映射模块,用于在所述图数据库运行时,将数据的属性的数据类型与Java数据类型进行映射;
其中,在有模式场景下,将每一种所述数据类型与对应的Java数据类型进行映射;在无模式场景下,使用通用的数据类型与Java数据类型进行映射。
一些具体的实施方式中,在有模式场景下,所述图数据库运行时的内存表示包括:预先确定的模式,包括第一标签列表、每种第一标签对应的属性列表、每种属性的数据类型和/或约束;第一数据对象,包括所述第一数据对象所属的标签的属性列表中的每一种属性对应的值,且,每一种属性对应的值的数据类型基于预先确定的所述模式确定和/或每一种属性对应的值满足所述模式中预先确定的约束;
在无模式场景下,所述图数据库运行时的内存表示包括:第二标签,所述第二标签包括加入第二数据对象时所述第二数据对象对应的第二标签不存在时引入的标签、之前引入的标签;所述第二数据对象,包括所述第二数据对象的一个或多个属性和对应的值;属于同一所述第二标签的所述第二数据对象的属性相同或不同,和/或,不同所述第二数据对象的相同属性的数据类型相同或不同;
其中,所述第一数据对象、所述第二数据对象包括点对象、边对象。
一些具体的实施方式中,第一写入模块402包括:
数据类型获取单元,用于获取所述待写入数据的属性的数据类型;
存储格式确定单元,用于根据所述数据类型确定对应的二进制存储格式:
若所述数据类型为“INTEGER”,使用固定长度的4个字节存储;
若所述数据类型为“LONG”,使用固定长度的8个字节存储;
若所述数据类型为“STRING”,使用变长格式存储,前4个字节存储数据部分的长度,其他字节长度部分存储了根据对应的编码字节数组化了的字符串的值;
若所述数据类型为“BOOLEAN”,使用固定长度的1个字节存储;
若所述数据类型为“DATE”,使用固定长度的8个字节存储;
若所述数据类型为“DOUBLE”,使用固定长度的8个字节存储;
若所述数据类型为“FLOAT”,使用固定长度的4个字节存储;
若所述数据类型为“BLOB”,使用变长格式存储,前4个字节存储数据部分的长度,其他字节长度部分存储具体的字节数组的值;
第一存储单元,用于按照确定的二进制存储格式存储所述待写入数据的属性的值。
一些具体的实施方式中,所述第二写入模块403包括:
标签获取单元,用于获取用户指定的所述待写入数据所属的第二标签;
标记单元,用于按照所述待写入数据的全部属性,对选取的所述第二标签中的属性名称序列进行按位标记得到属性标记信息,以指示所述属性名称序列中属于所述待写入数据的属性;
第二存储单元,用于存储所述待写入数据、以及所述属性标记信息和所述待写入数据的属性对应的值。
一些具体的实施方式中,所述标签获取单元包括:
判断子单元,用于判断第二标签列表中是否存在用户指定的所述第二标签;
第一选取单元,用于在第二标签列表中存在用户指定的所述第二标签的情况下,选取对应的所述第二标签;
新增单元,用于在第二标签列表中不存在用户指定的所述第二标签的情况下,添加新的所述第二标签,并将新添加的所述第二标签添加至所述第二标签列表;第二选取单元,用于在第二标签列表中不存在用户指定的所述第二标签的情况下,选取新添加的所述第二标签。
一些具体的实施方式中,对于所述待写入数据存在的属性,除存储属性对应的值外,还存储第一信息和/或第二信息,所述第一信息用于指示所述待写入数据的属性对应的值的数据类型,所述第二信息用于指示所述待写入数据的属性对应的值是否为空。
本发明实施例是与上述方法实施例基于相同的发明构思的装置实施例,因此具体的技术细节和对应的技术效果请参阅上述方法实施例,此处不再赘述。
本发明实施例还提供了一种电子设备,如图5所示,该电子设备可以包括处理器51和存储器52,其中处理器51和存储器52可以通过总线或者其他方式互相通信连接,图5中以通过总线连接为例。
处理器51可以为中央处理器(Central Processing Unit,CPU)。处理器51还可以为其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等芯片,或者上述各类芯片的组合。
存储器52作为一种非暂态计算机可读存储介质,可用于存储非暂态软件程序、非暂态计算机可执行程序以及模块,如本发明实施例中的图数据库的数据读写方法对应的程序指令/模块(例如,图4所示的获取模块401、第一存储模块402和第二存储模块403)。处理器51通过运行存储在存储器52中的非暂态软件程序、指令以及模块,从而执行处理器的各种功能应用以及数据处理,即实现上述方法实施例中的图数据库的数据读写方法。
存储器52可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储处理器51所创建的数据等。此外,存储器52可以包括高速随机存取存储器,还可以包括非暂态存储器,例如至少一个磁盘存储器件、闪存器件、或其他非暂态固态存储器件。在一些实施例中,存储器52可选包括相对于处理器51远程设置的存储器,这些远程存储器可以通过网络连接至处理器51。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
所述一个或者多个模块存储在所述存储器52中,当被所述处理器51执行时,执行如图1-3所示实施例中的图数据库的数据读写方法。
上述电子设备的具体细节可以对应参阅图1至图3所示的实施例中对应的相关描述和效果进行理解,此处不再赘述。
相应地,本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质用于存储计算机程序,所述计算机程序被处理器执行时,实现上述图数据库的数据读写方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (10)
1.一种图数据库的数据读写方法,其特征在于,基于所述图数据库创建的图实例包括有模式图实例和无模式图实例,包括:
获取待写入数据,所述待写入数据为点数据或边数据;
在有模式场景下,获取用户指定的所述待写入数据所属的第一标签,每一所述第一标签对应一个预先确定的属性集,所述属性集中的每一种属性包括属性名、以及数据类型和/或约束;写入所述待写入数据以及所述待写入数据的属性的值,所述属性的值包括所述属性集中的每一种属性对应的值、且满足对应的所述数据类型和/或所述约束;
在无模式场景下,写入所述待写入数据以及所述待写入数据的属性和对应的值。
2.根据权利要求1所述的方法,其特征在于,还包括:
在所述图数据库运行时,将数据的属性的数据类型与Java数据类型进行映射;
其中,在有模式场景下,将每一种所述数据类型与对应的Java数据类型进行映射;在无模式场景下,使用通用的数据类型与Java数据类型进行映射。
3.根据权利要求2所述的方法,其特征在于,
在有模式场景下,所述图数据库运行时的内存表示包括:预先确定的模式,包括第一标签列表、每种第一标签对应的属性列表、每种属性的数据类型和/或约束;第一数据对象,包括所述第一数据对象所属的标签的属性列表中的每一种属性对应的值,且,每一种属性对应的值的数据类型基于预先确定的所述模式确定和/或每一种属性对应的值满足所述模式中预先确定的约束;
在无模式场景下,所述图数据库运行时的内存表示包括:第二标签,所述第二标签包括加入第二数据对象时所述第二数据对象对应的第二标签不存在时引入的标签、之前引入的标签;所述第二数据对象,包括所述第二数据对象的一个或多个属性和对应的值;属于同一所述第二标签的所述第二数据对象的属性相同或不同,和/或,不同所述第二数据对象的相同属性的数据类型相同或不同;
其中,所述第一数据对象、所述第二数据对象包括点对象、边对象。
4.根据权利要求1所述的方法,其特征在于,在有模式场景下,写入所述待写入数据的属性的值,包括:
获取所述待写入数据的属性的数据类型;
根据所述数据类型确定对应的二进制存储格式:
若所述数据类型为“INTEGER”,使用固定长度的4个字节存储;
若所述数据类型为“LONG”,使用固定长度的8个字节存储;
若所述数据类型为“STRING”,使用变长格式存储,前4个字节存储数据部分的长度,其他字节长度部分存储了根据对应的编码字节数组化了的字符串的值;
若所述数据类型为“BOOLEAN”,使用固定长度的1个字节存储;
若所述数据类型为“DATE”,使用固定长度的8个字节存储;
若所述数据类型为“DOUBLE”,使用固定长度的8个字节存储;
若所述数据类型为“FLOAT”,使用固定长度的4个字节存储;
若所述数据类型为“BLOB”,使用变长格式存储,前4个字节存储数据部分的长度,其他字节长度部分存储具体的字节数组的值;
按照确定的二进制存储格式存储所述待写入数据的属性的值。
5.根据权利要求1所述的方法,其特征在于,所述在无模式场景下,写入所述待写入数据以及所述待写入数据的属性和对应的值,包括:
获取用户指定的所述待写入数据所属的第二标签;
按照所述待写入数据的全部属性,对选取的所述第二标签中的属性名称序列进行按位标记得到属性标记信息,以指示所述属性名称序列中属于所述待写入数据的属性;
存储所述待写入数据、以及所述属性标记信息和所述待写入数据的属性对应的值。
6.根据权利要求5所述的方法,其特征在于,所述获取用户指定的所述待写入数据所属的第二标签,包括:
判断第二标签列表中是否存在用户指定的所述第二标签;
若存在,则选取对应的所述第二标签;
若不存在,则添加新的所述第二标签,选取新添加的所述第二标签,并将新添加的所述第二标签添加至所述第二标签列表。
7.根据权利要求5所述的方法,其特征在于,对于所述待写入数据存在的属性,除存储属性对应的值外,还存储第一信息和/或第二信息,所述第一信息用于指示所述待写入数据的属性对应的值的数据类型,所述第二信息用于指示所述待写入数据的属性对应的值是否为空。
8.一种图数据库的数据读写装置,其特征在于,基于所述图数据库创建的图实例包括有模式图实例和无模式图实例,包括:
获取模块,用于获取待写入数据,所述待写入数据为点数据或边数据;
第一写入模块,用于在有模式场景下,获取用户指定的所述待写入数据所属的第一标签,每一所述第一标签对应一个预先确定的属性集,所述属性集中的每一种属性包括属性名、以及数据类型和/或约束;写入所述待写入数据以及所述待写入数据的属性的值,所述属性的值包括所述属性集中的每一种属性对应的值、且满足对应的所述数据类型和/或所述约束;
第二写入模块,用于在无模式场景下,写入所述待写入数据以及所述待写入数据的属性和对应的值。
9.一种电子设备,其特征在于,包括:
存储器和处理器,所述存储器和所述处理器之间互相通信连接,所述存储器用于存储计算机程序,所述计算机程序被所述处理器执行时,实现权利要求1至7中任一项所述的图数据库的数据读写方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质用于存储计算机程序,所述计算机程序被处理器执行时,实现权利要求1至7中任一项所述的图数据库的数据读写方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210764638.7A CN114817275B (zh) | 2022-07-01 | 2022-07-01 | 图数据库的数据读写方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210764638.7A CN114817275B (zh) | 2022-07-01 | 2022-07-01 | 图数据库的数据读写方法、装置、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114817275A true CN114817275A (zh) | 2022-07-29 |
CN114817275B CN114817275B (zh) | 2022-09-23 |
Family
ID=82522869
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210764638.7A Active CN114817275B (zh) | 2022-07-01 | 2022-07-01 | 图数据库的数据读写方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114817275B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20190026334A1 (en) * | 2017-07-20 | 2019-01-24 | Linkedin Corporation | Distributed graph database writes |
CN112000851A (zh) * | 2020-08-28 | 2020-11-27 | 北京计算机技术及应用研究所 | 一种键值模型、文档模型和图模型数据的统一存储方法 |
CN114282071A (zh) * | 2021-12-29 | 2022-04-05 | 北京同心尚科技发展有限公司 | 基于图数据库的请求处理方法、装置、设备及存储介质 |
CN114297173A (zh) * | 2021-06-18 | 2022-04-08 | 北京大学 | 一种面向大规模海量数据的知识图谱构建方法和系统 |
-
2022
- 2022-07-01 CN CN202210764638.7A patent/CN114817275B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20190026334A1 (en) * | 2017-07-20 | 2019-01-24 | Linkedin Corporation | Distributed graph database writes |
CN112000851A (zh) * | 2020-08-28 | 2020-11-27 | 北京计算机技术及应用研究所 | 一种键值模型、文档模型和图模型数据的统一存储方法 |
CN114297173A (zh) * | 2021-06-18 | 2022-04-08 | 北京大学 | 一种面向大规模海量数据的知识图谱构建方法和系统 |
CN114282071A (zh) * | 2021-12-29 | 2022-04-05 | 北京同心尚科技发展有限公司 | 基于图数据库的请求处理方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN114817275B (zh) | 2022-09-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2020501235A (ja) | 系統メタデータの生成、アクセス、及び表示 | |
CN108932257B (zh) | 多维度数据的查询方法及装置 | |
US11567999B2 (en) | Using a B-tree to store graph information in a database | |
CN112463991B (zh) | 历史行为数据的处理方法、装置、计算机设备及存储介质 | |
TWI724570B (zh) | 資料結構的讀取及更新方法、裝置、電子設備及儲存媒體 | |
CN106021369A (zh) | 一种用于数据变更管理的方法与设备 | |
CN111475653B (zh) | 油气勘探开发领域的知识图谱的构建方法及装置 | |
CN116226425A (zh) | 一种图数据的存储方法、读取方法和系统 | |
CN114297204A (zh) | 一种异构数据源的数据存储、检索方法及装置 | |
CN114756630A (zh) | 一种基于Flink状态的实时数仓建设方法 | |
US20240004871A1 (en) | Systems and methods for targeted data discovery | |
Eckert | Provenance and annotations for linked data | |
CN114817275B (zh) | 图数据库的数据读写方法、装置、设备及存储介质 | |
CN111008198B (zh) | 业务数据获取方法、装置、存储介质、电子设备 | |
CN112597151A (zh) | 数据处理方法、装置、设备和存储介质 | |
CN112616074A (zh) | 目标团体识别方法及电子设备 | |
US8775463B2 (en) | Detection and display of semantic errors in a reporting tool | |
CN113297207B (zh) | 数据处理方法、装置及设备 | |
CN113722334B (zh) | 数据处理的方法、装置、电子设备及介质 | |
CN114036171B (zh) | 应用数据管理方法、装置、计算机设备和存储介质 | |
US20230033904A1 (en) | System and method for generating business ontologies and glossaries from metadata | |
CN115328878B (zh) | 日志数据存储系统、方法、设备及介质 | |
CN117850800A (zh) | 一种数据列表管理页面自动生成的方法及设备 | |
CN116578951A (zh) | 一种接口访问方法、计算设备及存储介质 | |
Satyanarayanan | Modelling storage systems |
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 |