CN108475276A - 用于多模型数据库的存储器内键-值存储 - Google Patents
用于多模型数据库的存储器内键-值存储 Download PDFInfo
- Publication number
- CN108475276A CN108475276A CN201680077564.2A CN201680077564A CN108475276A CN 108475276 A CN108475276 A CN 108475276A CN 201680077564 A CN201680077564 A CN 201680077564A CN 108475276 A CN108475276 A CN 108475276A
- Authority
- CN
- China
- Prior art keywords
- data
- key
- value
- database
- database table
- 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
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
- G06F16/2228—Indexing structures
- G06F16/2272—Management thereof
-
- 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/25—Integrating or interfacing systems involving database management systems
- G06F16/258—Data format conversion from or to a database
-
- 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
-
- 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
- G06F16/2282—Tablespace storage structures; Management thereof
-
- 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/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
由数据库服务器维护的多模型数据库包括存储器内的键‑值存储库和关系数据库。通过将数据库表中的数据转换为键‑值格式,可以在数据库服务器可访问的易失性存储器内生成键‑值记录。该数据库表可以以持久格式存储。键‑值格式可以与持久格式不同且独立于持久格式。引用数据库表的数据库语句可以基于确定是访问易失性存储器中的一个或多个键‑值记录还是访问数据库表中的数据来执行。响应于确定访问一个或多个键‑值记录,数据库服务器可以访问易失性存储器中的该一个或多个键‑值记录。
Description
技术领域
实施例涉及信息检索技术,并且更具体地涉及用于多模型数据库的存储器内键-值存储。
背景技术
本部分中描述的方法是可以实行的方法,但不一定是先前已被构思或实行的方法。因此,除非另外指出,否则不应当假定在本部分中描述的任何方法仅仅凭其包括在本部分中就有资格作为现有技术。
不同的数据模型常常在一方面的优点与另一方面的缺点之间折中。例如,关系数据模型可以表现出内部复杂性,该内部复杂性以即使对简单查询也有增加的延迟为代价来支持对复杂查询的高效处理。相比之下,例如,键-值数据模型可以为简单查询提供低延迟、高吞吐量查询访问,但可能无法处理复杂查询。因此,将数据维护在多个数据模型中以便获得每个数据模型的好处会是有益的和期望的。
将数据维护在多个数据模型中的一种方法是为每个不同的数据模型实现专用的数据库管理系统。例如,可以存在只实现并支持键-值数据模型的独立的数据库管理系统和只实现并支持关系数据模型的另一个独立的数据库管理系统。然而,维护分离的数据库管理系统所涉及的开销会消除通过实现分离的数据库管理系统所带来的好处。例如,维护分离的数据库管理系统中的数据之间的事务一致性可以涉及数据复制实现,该数据复制实现比键-值数据库本身的实现更复杂。
因此,需要一种新的方法来将数据维护在多个数据模型中,其使得能够利用每个数据模型的优点同时使每个数据模型的缺点最小化。
附图说明
在附图中:
图1描绘了可以在其上实现实施例的示例计算机体系架构。
图2描绘了示例实施例中的关系数据库的详细视图。
图3A-图3C描绘了示例键-值记录。
图4是描绘用于在多模型数据库处处理数据库语句的方法的流程图。
图5描绘了可以在其上实现实施例的计算机系统。
具体实施方式
在以下描述中,出于解释的目的,阐述了许多具体细节,以便提供对本公开的透彻理解。然而,清楚的是,本公开可以在没有这些具体细节的情况下进行实践。在其它情况下,众所周知的结构和设备以框图的形式示出,以避免不必要地模糊本公开。诸如“第一”和“第二”之类的修饰词可以用于区分元素,但修饰词不一定指示任何特定的次序。例如,可以第二数据库表可以被这样命名,尽管实际上它可以与第一、第二和/或第三数据库表对应。
总体概述
计算机可以在多个数据模型中维护数据,这多个数据模型中的一个是用于快速访问的键-值数据模型。在键-值数据模型中维护的数据(以下称为“KV数据”)可以存储在易失性存储器中,而在不同的数据模型中维护的数据可以被持久化到非易失性存储器。在实施例中,该不同的数据模型可以是关系数据模型。
在键-值数据模型中,数据被存储为键-值记录的汇集(collection)。每个键-值记录都包括键-值对。汇集中的键在本文中被称为KV键,并且与KV键相关联的值在本文中被称为KV值。每个KV键唯一地识别键-值记录并用于检索对应的KV值。KV值可以是由KV键直接或间接引用的数据。例如,KV值可以是指向特定数据的位置的指针。
在多个数据模型中维护数据可以涉及维护KV数据与在不同的数据模型中的数据之间的一致性。在实施例中,基于可以与任一数据模型一起使用的公共语言,一个数据模型中的数据改变可以并发地对另一个数据模型做出。该公共语言可以是数据定义语言(DDL)和/或数据操纵语言(DML),诸如结构化查询语言(SQL),其已经与不同的数据模型一起使用并且被扩展以用于KV数据。
公共语言可以使数据库语句能够被并行处理,以便针对KV数据和/或在不同的数据模型中的数据来执行。因此,计算机可以确定是访问KV数据还是不同数据模型中的数据以执行全部或部分数据库语句将是更高效的。
总体体系架构
单个数据库管理系统可以将数据维护在多个数据模型中,包括键-值数据模型。图1描绘了可以在其上实现实施例的示例计算机体系架构。参考图1,数据库服务器100包括易失性存储器102和持久存储装置106。易失性存储器102以键-值格式104存储数据。持久存储装置106以持久格式108存储数据。
在实施例中,以持久格式108存储的数据可以是存储在关系数据模型中的数据(以下称为“REL数据”)。REL数据可以作为关系数据库的一个或多个数据库表存储在持久存储装置106中。REL数据的副本也可以被高速缓存在易失性存储器102中。在下文中,REL数据和REL数据的副本将被统称为REL数据。
KV数据可以包括以键-值格式104存储的REL数据的子集(例如,无、一些、全部)。键-值格式104可以与持久格式108不同并独立于持久格式108。如将在在下文中更详细描述的,可以基于REL数据生成KV数据。例如,可以通过对REL数据执行变换来用KV数据填充易失性存储器102。REL数据和KV数据之间的变换可以在多个时间中的任何一个处发生,诸如启动时、按需、故障后和/或发生数据改变的任何时候。
值得注意的是,KV数据的存在对于将数据库语句提交给数据库服务器100的数据库应用可以是透明的。例如,可以被设计为与仅对REL数据进行操作的数据库管理系统进行交互的数据库应用可以在不修改的情况下与维护REL数据和KV数据两者的数据库管理系统交互。此外,对数据库应用透明,数据库管理系统可以使用KV数据来更高效地处理数据库语句中的一些或全部。
持久存储装置106一般表示任何数量的持久存储设备,诸如磁盘、固态驱动器、闪存和/或任何其它非易失性存储器。当发生故障(例如,失去电力)时,存储在持久存储装置106上的数据通常不会丢失。
易失性存储器102一般表示由数据库服务器100使用的随机存取存储器,并且可以由任意数量的存储器设备来实现。通常,当发生故障时,存储在易失性存储器102中的数据丢失。因此,在故障之后,存储在持久存储装置106中的数据可以用于在易失性存储器102中重建丢失了的数据。
数据库服务器100可以是数据库管理系统的一个或多个计算机。数据库服务器100可以管理一个或多个数据库。例如,在易失性存储器102内,数据库服务器100可以执行从一个或多个数据库应用(例如,客户端)接收的数据库语句。这些数据库语句可以引用由数据库服务器100管理的一个或多个数据库。
关系格式数据
在实施例中,REL数据可以是关系数据库的一个或多个数据库表中的数据。图2描绘了示例实施例中的关系数据库的详细视图。参考图2,关系数据库200包括数据库表202。数据库表202包括字段204、206、208、210。字段208包括字段值212-218。
字段204、206、208、210可以包括单独或组合地唯一识别数据库对象的字段值。例如,字段204、206、208、210可以包括对数据库表202的特定记录(例如,行、列)唯一的索引和/或字母数字字符串。字段204、206、208、210的子集可以被包括在用于数据库表202的主键中。在图2的示例中,字段204和206可以分别指部门名称和用户名称,并且其中任一个或两者可以用于识别公司的某些雇员。然而,如果单独使用字段204来识别某些雇员,那么单个字段值(例如,“Research(研究)”)可能识别出多于一个雇员。
字段204、206、208、210可以存储任何数量的不同数据类型,诸如字符串、整数和二进制大对象(BLOB)。例如,字段值212-218可以是存储在数据库表202中的图像或音频记录。如将在下文中更详细描述的,KV键字段和KV值字段可以各自包括关系数据库表202中的字段204、206、208、210的相应子集。
关系数据库200可以包括用于管理关系数据库200的数据库字典。数据库字典可以包括数据库元数据,该数据库元数据定义物理地或逻辑地包含在关系数据库200中的数据库对象。数据库对象可以包括数据库表、列、索引、数据类型、数据库用户、用户权限、用于存储数据库对象数据的存储结构以及逻辑数据库对象(诸如模式、应用和模块)。数据库字典可以根据发布的DDL命令进行修改,以添加、修改或删除数据库对象。
键-值选项
KV数据可以包括REL数据的任何子集。例如,KV键字段可以由字段206组成,并且KV值字段可以由字段210组成。在另一个示例中,KV键字段可以包括字段204和206,并且KV值字段可以包括字段208和210。
在实施例中,DDL语句可以指定将作为KV数据可用的特定REL数据。在下文中,作为KV数据可用的REL数据将被称为“启用KV选项”的。启用KV选项的数据可以在任何粒度级别指定。例如,可以至少在以下粒度级别指定启用KV选项的数据:
·整个关系数据库200
·指定的数据库表202
·指定的列
·指定的行
例如,通过向数据库服务器100发出DDL语句“ALTERTABLE‘database table 202’KEYVALUE”,可以将数据库表202指定为启用KV选项的。数据库元数据可以指示某些REL数据是启用KV选项的。针对REL数据的特定子集启用KV选项向数据库服务器100提供了响应于数据库语句而访问REL数据或者KV数据的选项。
响应于DDL语句“ALTER TABLE‘database table 202’KEYVALUE”,数据库服务器100还可以关闭用于启用KV选项的数据库表202的KV选项。附加地或可替代地,数据库服务器100可以根据驱逐策略(eviction policy)来管理易失性存储器102。驱逐策略可以基于从最后访问特定KV数据以来已经过去的预定时间段、基于可用资源的量、和/或适于高效存储器管理的任何其它度量,来使得移除特定KV数据。因此,KV选项可以被配置为适于性能和资源使用需求的改变。
键-值格式数据
图3A描绘了键-值记录的相对简单的示例。键-值记录300可以被组织成两个主要部分。一部分与KV键字段302对应,KV键字段302包括唯一识别键-值记录300的KV键。另一部分与KV值字段304对应,KV值字段304包括例如当识别出特定键-值记录300时被检索的KV。参考图3A,KV键字段302包括数据库表202的字段206,并且KV值字段304包括数据库表202的字段210。
用于REL数据的更快查找时间可以基于将REL数据的子集变换成KV数据来实现。将REL数据变换成KV数据可以包括基于REL数据定义KV数据和/或从REL数据向KV数据传播改变。例如,可以根据发布到数据库服务器100的DDL语句来定义KV数据,并且可以根据发布到数据库服务器100的DML语句来修改KV数据。响应于DDL和/或DML语句,数据库服务器100可以根据指定的变换生成KV数据。
在实施例中,数据库服务器100可以自动定义KV键字段302。因此,指定要包括在KV键字段302中和/或要从KV键字段302排除的数据可能是不必要的。例如,数据库服务器100可以被配置为将关系数据库表202的主键自动拷贝到KV键字段302中。然而,这个默认配置可以被覆写。在图3A的示例中,DDL语句“ALTER TABLE‘database table 202’KEYVALUEALTERNATE KEY(‘field 206’)”可能已经被发布,以将字段206定义为KV键字段302。
类似地,对于KV值字段304,数据库服务器100可以被配置为自动拷贝和/或以其它方式引用不包括在关系数据库表的主键中的字段204、206、208、210。然而,指定要包括在KV值字段304中和/或要从KV值字段304中排除的数据对于高效的存储器管理和高效的数据检索可能是期望的。因此,在图3A的示例中,可以基于DDL语句“ALTER TABLE‘database table202’KEYVALUE NO KEYVALUE(‘field 208’)”生成KV值字段304。
键-值记录300可以被存储为一个或多个表(以下称为“KV表”)。关系数据库表可以与KV表具有一对一和/或多对一的对应关系。例如,每个关系数据库表202可以被变换成单独的KV表。附加地或可替代地,基于执行例如SQL JOIN(联接)操作,多个关系数据库表可以被变换成单个KV表。
复合KV键
图3B描绘了具有复合KV键的示例键-值记录300。复合KV键字段包括来自REL数据中的两个或更多个字段的字段值。参考图3B,KV键字段302包括数据库表202的字段204和206。KV值字段304包括数据库表202的字段210。
因此,KV键字段302是包括来自关系数据库表202的多个字段的字段值的复合KV键字段。KV键字段302的每个分量字段包括在本文被称为部分KV键的字段值。
根据实施例,可以使用部分KV键来访问KV数据或REL数据。这被称为部分KV键访问。部分KV键访问使得能够响应于单个数据库语句而从多个记录中检索多个KV值。该单个数据库语句可以是具有指定一个或多个部分KV键的谓词的查询。例如,SQL查询“SELECT‘field 210’FROM‘database table 202’WHERE‘field 204’=‘Research’”指定针对部分KV键“Research”的精确匹配。在图3B的示例中,在包含KV值“Doctorate(博士)”和“Masters(硕士)”的第二和第四键-值记录300二者中均找到部分KV键“Research”。因此,包括“Doctorate”和“Masters”二者的结果集响应于查询而被返回。
在图3B的示例中,KV键字段302被描绘为涵盖作为分离的部分KV键字段的字段204和206。然而,在实施例中,KV键字段302可以将多个字段的聚合包括到单个字段中。例如,KV键字段302可以包括复合KV键“Sales,Alice Smith”,这是来自两个不同字段的两个部分KV键的聚合。部分KV键“Sales(销售人员)”与分量字段204对应,并且部分KV键“Alice Smith”与分量字段206对应。可以引用聚合中的部分KV键中的任一个或两个,以便访问某些键-值记录300。
复合KV值
图3C描绘了具有复合KV值的示例键-值记录300。复合KV值字段包括来自REL数据中的两个或更多个字段的字段值。参考图3C,KV键字段302包括数据库表202的字段204和206。KV值字段304包括字段208和210的复合。
因此,KV值字段304是包括来自关系数据库表202的多个字段的字段值的复合KV值字段。KV值字段304的每个分量字段包括在本文被称为部分KV值的字段值。
部分KV值可以用于在KV值字段304中存储丰富数据集。可以响应于数据库语句来检索丰富数据集中的一些或全部。该数据库语句可以是在查询谓词中指定复合KV值的至少一部分的查询。参考图3C的示例性键-值记录300,SQL查询“SELECT‘field 210’FROM‘database table 202’WHERE‘field 206’=‘Alice Smith’”将指定KV值字段304的分量字段210。因此,响应于该SQL查询,可以检索出部分KV值“Bachelors(学士)”。这是部分KV值检索。
在实施例中,KV值字段304可以涵盖作为分离的部分KV值字段被维护的多个字段。然而,在图3C的示例中,KV值字段304被描绘为多个字段到单个字段的聚合。例如,“{字段208:引用字段值212,字段210:‘Bachelors’}”是来自两个分量字段的两个部分KV值的合成。
对键-值格式数据进行索引
部分KV键访问和部分KV值检索可以使得能够实现高效的存储器管理。多个KV表可以整合到单个KV表中,该单个KV表可以处理用于多个KV表中的每一个KV表的数据库语句。例如,任何可以针对图3A中的KV表执行的数据库语句也可以针对图3B中的KV表执行。然而,向图3A中的KV表添加部分KV键字段涉及比维护包含重复数据的单独KV表更小的存储器空间。
部分KV键访问和部分KV值检索可以通过对部分KV键和/或部分KV值进行索引来支持。数据库服务器100可以被配置为(例如,基于自动地对KV键字段302进行索引)自动地对每个键-值记录300进行索引。然而,KV表上的索引没必要与关系数据库表上的索引对应。
例如,为了指定在REL数据上定义的相同索引要被添加到KV数据,可以向数据库服务器100发布DDL语句“ALTER TABLE‘database table 202’KEYVALUE KEEP INDEXES”。可替代地,为了指定在REL数据上定义的某些索引要被添加到KV数据,可以向数据库服务器100发布DDL语句“ALTER TABLE‘database table 202’KEYVALUE KEEP INDEXES(‘index1’,‘index2’)”。可替代地,为了指定在REL数据上定义的索引不要被添加到KV数据,可以向数据库服务器100发布DDL语句“ALTER TABLE‘database table 202’KEYVALUE NO INDEXES”。
附加地或可替代地,用户可以指定要被索引的KV数据的特定部分。例如,可以向数据库服务器100发布DDL语句“ALTER TABLE‘database table 202’KEYVALUE ADD INDEX(‘field 210’)”。响应于该DDL语句,数据库服务器100生成对字段210的值进行索引的索引。
聚合KV数据
复合KV键和/或复合KV值可以作为字段值的序列化来存储。序列化可以采用任何格式,诸如JavaScript对象表示法(JSON)、可扩展标记语言(XML)和逗号分隔值(CSV)。该格式可以由DDL和/或DML语句指定。
例如,可以基于向数据库服务器100发布DDL语句“ALTER TABLE‘database table202’KEYVALUE value AS TRANSFORM JSON(‘field 208’,‘field 210’)”来生成KV值字段304。因此,来自字段208和210的字段值可以被存储为JSON对象。图3C描绘了由这个示例DDL语句产生的JSON对象的一些示例。
在实施例中,可以基于对KV键和KV值进行序列化来生成键-值记录300。例如,可以向数据库服务器100发布DDL语句“ALTER TABLE‘database table 202’KEYVALUE value ASTRANSFORM JSON(‘field 204’,‘field 206’,‘field 208’,‘field 210’)”。可以对KV数据的序列化的全部或部分进行索引。
聚合KV数据还可以涉及其它变换,诸如数据类型变换。数据类型变换将字段值从一种数据类型(例如,整数)变换为另一种数据类型(例如,字符串)。数据类型变换可以与序列化结合使用。例如,整数可以被转换为字符串,以启用与另一个字段值的字符串拼接。
附加地或可替代地,聚合KV数据可以涉及生成虚拟字段。虚拟字段可以包括与REL数据不完全匹配的KV数据。例如,虽然REL数据可以包括“Sales”和“Alice Smith”作为分离的字段值,但是REL数据并不包括整体的字段值“Sales_Alice Smith”,该字段值“Sales_Alice Smith”可以被生成以包括在KV数据中。可以基于对REL数据执行一个或多个操作来生成虚拟字段。例如,可以基于串对包含“Sales”和“Alice Smith”的字段204和206进行拼接以及使用下划线字符作为分隔符来生成包含“Sales_Alice Smith”的虚拟字段。
附加地或可替代地,聚合KV数据可以涉及执行用于变换和/或生成KV数据的数据库语句。例如,可以执行数据库语句来检索要聚合到KV数据中的REL数据。如果检索出的REL数据被存储在与将和该REL数据一起被聚合的REL数据分离的数据库表202中,那么这可以是特别有用的。在这种情况下,可以涉及SQL JOIN操作。
KV键字段和KV值字段的结构
如前面所提到的,KV数据的重要特征是可以使用与REL数据一起使用的相同语言来访问或修改该KV数据。例如,可以针对或者关系数据库200或者键-值记录300执行SQL查询“SELECT‘field 210’FROM‘database table 202’WHERE‘field 206’=‘Alice Smith’”。由于该查询避免了排除考虑REL数据或KV数据,因此数据库服务器100具有访问REL数据和/或KV数据以执行查询的选项。
因此,用于KV数据和REL数据的不同标签对于访问数据是不必要的。例如,将KV键字段302标记为“键(key)”并且将KV值字段304标记为“值(label)”将使得查询能够引用这些标签,但是这样做会剥夺数据库服务器100在REL数据上执行该查询的选项(如果它会更高效的话)。然而,这种标签对于将REL数据变换成KV数据可以是有用的。例如,当将REL数据聚合到KV值字段304中时,DDL语句可以引用标签“值”。换句话说,这种标签可以由数据库服务器100维护,作为用于KV数据的内部使用的引用。
可以使用多种表示中的任何一种来存储KV数据。KV键至少可以存储在B树、散列表或启用快速查找的任何其它表示中。每个KV键可以引用KV值的表示,KV值不必以任何具体类型的表示来存储。
处理数据库语句
当数据库服务器100接收到引用REL数据的数据库语句时,数据库服务器100分析该数据库语句,并确定用于对REL数据执行数据库语句的具有最佳效率的计划。分析数据库语句和确定执行计划的过程在本文被称为“语句优化”。根据实施例,响应于特定数据库语句,语句优化确定是访问REL数据还是KV数据将是更高效的。
效率确定可以取决于各种因素,包括KV数据的可用性。例如,一些REL数据可以作为KV数据可用,而其它REL数据仅作为REL数据可用。对于作为KV数据可用的REL数据,访问KV数据将比访问持久存储装置106中的REL数据要快。对于不可用作KV数据的REL数据,访问在持久存储装置106中的甚至REL数据比首先将REL数据变换成KV数据然后访问该KV数据会更快。
即使KV数据对特定的数据库语句是可用的,效率确定也可能因其它考虑而变得更加复杂。通常,当解释(例如,解析、分析)经聚合的KV数据的内容是不必要的时,针对KV数据而不是REL数据执行数据库语句是更快的。例如,如果响应于查询而返回整个JSON对象,那么访问KV数据将比访问REL数据更快。然而,如果响应于查询要返回JSON对象的特定名称-值对,那么访问KV数据是否比访问REL数据更快可以取决于各种因素中的任何因素。
图4是描绘在多模型数据库处处理数据库语句的方法的流程图。在方框400处,数据库服务器100接收引用REL数据的数据库语句。可以使用SQL或使得能够绕过SQL的应用编程接口(API)(以下称为“直接访问API”)来执行该数据库语句。例如,如果KV键字段是已知的,那么将有可能直接访问易失性存储器102中的KV数据,以返回与由直接访问API接收的KV键对应的KV值。
确定启用KV选项的数据
在方框402处,数据库服务器100确定是否有可能针对KV数据执行数据库语句。例如,语句优化可以分析该数据库语句,以确定它是否涉及启用KV选项的数据。换句话说,语句优化可以确定数据库语句是否引用KV键字段302的至少一部分和/或KV值字段304的至少一部分。这个确定可以涉及解析数据库语句以获得字段204、206、208、210的名称。这个确定还可以涉及例如在数据库字典中对这些名称的目录查找。
如果数据库服务器100不能针对KV数据执行数据库语句,那么方框402前进到方框406。否则,方框402可以前进到可选方框404以进行进一步分析。
进一步的效率分析
在方框404处,数据库服务器100针对数据库语句的各个部分确定访问KV数据是否比访问REL数据更高效。这个确定可以基于多个不同因素中的任何因素,这多个不同因素包括以下各项:
·访问KV数据涉及解释字段值。
·KV数据包括已知的并且被支持的数据类型和数据表示。
·KV数据包括对对应REL数据的间接引用。
·REL数据的位置和/或KV数据的位置。
在实施例中,如果数据库语句引用作为聚合数据(例如,序列化的数据)被维护的任何部分KV键和/或部分KV值,那么数据库语句可以经历进一步的优化分析,以确定是KV数据还是REL数据应当被访问以执行该数据库语句。然而,如果解释聚合数据是不必要的,那么访问KV数据可以是更高效的,并且方框404可以前进到方框408。
在实施例中,如果聚合数据中的任何聚合数据包括未知或不被支持的数据类型(例如,字符串、整数)和/或数据表示(例如,JSON、XML、CSV),那么方框404可以前进到方框406。否则,方框404可以前进到方框408。例如,如果对KV值字段304使用不被支持的序列化格式,那么解析复合KV值和定位相关的部分KV值可能比访问REL数据要慢。
在实施例中,如果KV数据包括对REL数据的间接引用(例如,指针),那么方框404可以前进到方框406。否则,方框404可以前进到方框408。例如,如果针对KV数据执行数据库语句将涉及解析与REL数据对应的存储器地址,那么直接访问REL数据可能是更高效的。在图3C中,KV值字段304包括包含对REL数据的引用的KV值。当检索到这种KV值时,可以发生第二访问,以将该引用解析成REL数据。取决于第二访问何时发生,访问REL数据可能是更高效的。例如,如果当在易失性存储器102中构建KV值时自动发生第二访问,那么访问KV数据可以是更高效的。然而,如果在访问KV值时自动发生第二访问,那么访问REL数据可以是更高效的。效率确定可以由于递归引用而进一步复杂化。
在实施例中,可以使用REL数据的位置和/或KV数据的位置来确定是访问KV数据还是REL数据。例如,如果相关的REL数据存在于高速缓存中,那么访问REL数据可以比KV数据更高效。作为另一个示例,如果相关数据以一种格式本地存储并以另一种格式远程存储(例如,存储在分布式数据库中),那么以本地存储的格式访问相关数据可以是更高效的。
在方框406处,数据库服务器100访问REL数据以执行数据库语句,并且在方框408处,数据库服务器100访问KV数据以执行数据库语句。如果数据库语句的任何部分仍有待分析,那么方框406和/或方框408可以返回到方框404。
效率分析的复杂性
在实施例中,效率分析可以由方框402组成,使得避免了方框404处在计算上更昂贵并且耗时的分析。因此,在方框402处,数据库服务器100可以简单地确定是否数据库语句中引用的所有REL数据都是启用KV选项的。如果是,那么方框402直接前进到方框408。这个实施例提高了处理动态生成的(例如,实时)数据库语句的效率。
在实施例中,除了方框402之外,彻底的效率分析还可以包括方框404。虽然这个实施例确保执行数据库语句的最佳效率,但是存在与这种透彻分析相关联的开销。因此,这个实施例理想地适用于经准备的语句(例如,预编译的数据库语句)。
压缩
在实施例中,KV数据可以以压缩格式存储在易失性存储器102中。然而,KV数据的不同部分可以以不同方式和/或以不同程度压缩。例如,被频繁访问的KV数据可以是未压缩的或轻度压缩的,而很少访问的KV数据可以被高度压缩。
基于各种因素,数据库服务器100可以自动确定一个或多个压缩算法(例如,基于字典的压缩、游程长度编码、zip压缩)和/或由每个压缩算法使用的相应压缩级别。各种因素可以包括访问频率、数据尺寸、数据优先级和/或可用的存储器。例如,少量可用存储器和大数据尺寸可以导致高压缩级别。
附加地或可替代地,用户可以指定一个或多个压缩算法和/或由每个压缩算法使用的相应压缩级别。DDL可以被扩展为支持由用户指定的压缩提示。例如,可以基于向数据库服务器100发布数据库语句“ALTER TABLE‘database table 202’KEYVALUE MEMCOMPRESSFOR QUERY”来针对所有查询压缩用于数据库表202的KV数据。附加选项可以包括“FOR DML”(即,对于所有DML数据库语句)、“FOR QUERY LOW/HIGH”(即,对于低/高查询访问频率)和/或“FOR CAPACITY LOW/HIGH”(即,对于低/高可用存储器量)。基于向数据库服务器100发布数据库语句“ALTER TABLE‘database table 202’KEYVALUE NO MEMCOMPRESS”,也可以关闭压缩。
附加地或可替代地,用户可以提供运行时提示,该提示指定将某些KV数据加载到易失性存储器102的速度有多快。例如,可以向数据库服务器100发布数据库语句“ALTERTABLE‘database table 202’KEYVALUE PRIORITY LOW”。附加选项可以包括“NONE”、“MEDIUM”、“HIGH”和/或“CRITICAL”。然而,数据库服务器100可以最终决定何时加载某些KV数据以及如何快速完成它。在实施例中,用户可以指定何时加载和/或卸载KV数据。例如,“PRIORITY NONE”可以指示数据库服务器100应当等待用户指令而不是自动加载KV数据。因此,数据库应用可以调用数据库服务器100并指定加载和/或卸载KV数据。
附加地或可替代地,用于KV数据的存储器空间可以基于由用户指定的系统参数来分配。例如,基于向数据库服务器100发布数据库语句“ALTER SYSTEM SET keyvalue_size125GB”,可以将易失性存储器102中的125GB留出用于KV数据。
经压缩的KV数据可以在易失性存储器102内被组织成压缩单元。每个压缩单元可以存储不同的KV数据集合。例如,可以基于不同的表、不同的表分区、不同的行、不同的列等等将KV数据组织成压缩单元。KV数据到压缩单元的映射可以作为元数据存储在易失性存储器102中,该元数据指示每个压缩单元中包含哪个KV数据。在分布式数据库系统中,KV数据到压缩单元的映射还可以指示哪个数据库服务器存储有特定的压缩单元。因为访问本地数据通常比从远程位置获取数据更高效,所以KV数据的位置可以影响是访问KV数据还是REL数据的确定。
在实施例中,在访问KV数据之前解压缩KV数据可能是不必要的。例如,向量处理操作可以直接针对经压缩的KV数据执行。在另一个示例中,经压缩的KV数据可以在该经压缩的KV数据已经被传送到CPU之后在芯片上解压缩。
维护事务一致性
REL数据和KV数据之间的事务一致性可以基于多个一致性模型中的任何一个来维护。例如,使用2014年7月21日提交的美国专利申请No.14/337,164;2014年7月21日提交的美国专利申请No.14/337,142;2014年7月21日提交的美国专利申请No.14/337,045;2014年7月21日提交的美国专利申请No.14/337,182;2014年7月21日提交的美国专利申请No.14/337,179;以及2015年8月5日提交的美国专利申请No.14/819,016中描述的技术中的任何一种,可以在不同数据格式之间维护事务一致性,这些专利申请中的每一个的全部内容通过引用并入本文。在实施例中,可以实现同步一致性模型。在实施例中,可以基于维护数据的多个版本来实现异步一致性模型。
改变传播可以涉及将REL数据改变变换为KV数据。改变传播可以随时可用或按需可用。例如,数据改变可以在数据改变发生时立即被传播,或者可以在预定时间(例如当发生预定量的改变时、定期地或者在为预期的需要做准备时)成批地传播。
在实施例中,数据库管理系统的事务管理器(例如,在线事务处理服务器)可以被配置为并发地更新REL数据和KV数据。例如,如果KV值包含对REL数据的引用并且如果在易失性存储器102中构建KV值时发生解引用(dereference),那么可以跟踪对所引用的REL数据的改变,以确保REL数据和KV数据之间的一致性。如上面所提到的,与REL数据相关联的DDL和/或DML可以被扩展以便与KV数据一起使用。因此,相同的数据库语句可以并发地更新REL数据和KV数据。例如,基于将更新变换为KV数据,可以将REL数据的更新传播到KV数据。
虽然更新可以被立即合并到解压缩和/或未压缩的数据中,但可能有必要对将更新合并到压缩数据中进行延迟。然而,可以通过在存储于易失性存储器102中的改变日志和位图中记录更新来维护一致性。记录更新使得能够在方便解压缩数据时合并更新,由此避免在每次发生改变时解压缩和重新压缩数据的开销。
改变日志可以在易失性存储器102内存储关于尚未反映在压缩数据中的更新的信息。改变日志可以包括经改变的数据、改变的时间戳和/或事务标识符。改变日志可以是全局改变日志或私有改变日志。全局改变日志可以存储已提交的事务,并且可以对所有进程都是可访问的。私有改变日志可以存储未提交的事务并且可能只对特定事务是可访问的。当事务提交时,存储在用于该事务的私有改变日志中的信息可以被移动到一个或多个全局改变日志,在那里也可以存储事务的提交时间戳。全局改变日志中的信息可以在多个时间中的任何时间(诸如在便于对压缩数据进行解压缩的时间)被合并到压缩数据(例如,KV数据)中。
位图可以在易失性存储器102内维护版本控制信息。不是在改变发生时合并改变,而是每当数据项发生改变时,与数据项对应的位就可以在位图中翻转。当改变最终被合并时(例如,合并到KV数据中),位图可以被重置,并且版本标识符(例如,用于改变合并的时间戳)可以与位图相关联。位图可以以这样一种方式动态分配,即,通过存储未翻转的位来使得被浪费的存储空间最小化。可以以数据项可以被高效搜索(例如,二分搜索)的方式基于数据单元的层级(例如,行、列、块、区段和/或段)来组织位图。
附加地或可替代地,可以基于将对应的REL数据变换成已经被更新和压缩的KV数据来避免解压缩、改变和重新压缩KV数据的循环。例如,对应的REL数据可以是未经压缩的高速缓存数据。该高速缓存的数据可以被转换为与经更新的REL数据对应的KV数据。
与其它数据库特征的兼容性
至少上面提到的与在多模型数据库处维护KV数据有关的技术应当与多模型数据库的任何其它特征兼容。例如,可以向数据库服务器100发布使得KV数据以列格式存储在易失性存储器102中的DDL语句。作为另一个示例,SQL扩展(例如,JSON扩展、XML扩展)应当对REL数据和KV数据两者都是可用的。换句话说,KV数据应当与数据库管理系统的所有功能无缝地集成。
硬件概述
根据一个实施例,本文所描述的技术由一个或多个专用计算设备来实现。专用计算设备可以是硬连线的以执行技术,或者可以包括诸如被永久性地编程以执行技术的一个或多个专用集成电路(ASIC)、或现场可编程门阵列(FPGA)的数字电子设备,或者可以包括编程为根据固件、存储器、其它存储装置或组合中的程序指令执行技术的一个或多个通用硬件处理器。这些专用计算设备还可以将自定义的硬接线逻辑、ASIC、或FPGA与自定义的编程组合来实现技术。专用计算设备可以是台式计算机系统、便携式计算机系统、手持式设备、联网设备或结合硬连线和/或程序逻辑来实现技术的任何其它设备。
例如,图5是示出可以在其上实现实施例的计算机系统500的框图。计算机系统500包括总线502或用于传送信息的其它通信机制,以及与总线502耦合用于处理信息的硬件处理器504。硬件处理器504可以是例如通用微处理器。
计算机系统500还包括耦合到总线502用于存储信息和要由处理器504执行的指令的主存储器506,诸如随机存取存储器(RAM)或其它动态存储设备。主存储器506也可以用于在要由处理器504执行的指令执行期间存储临时变量或其它中间信息。当这些指令被存储在处理器504可访问的非暂态存储介质中时,它们使计算机系统500成为被定制以执行指令中指定的操作的专用机器。
计算机系统500还包括耦合到总线502用于存储静态信息和用于处理器504的指令的只读存储器(ROM)508或其它静态存储设备。提供了诸如磁盘或光盘的存储设备510,并且存储设备510被耦合到总线502,用于存储信息和指令。
计算机系统500可以经由总线502耦合到显示器512,诸如阴极射线管(CRT),用于向计算机用户显示信息。输入设备514(其包括字母数字和其它键)被耦合到总线502,用于将信息和命令选择传送到处理器504。另一种类型的用户输入设备是光标控件516,诸如鼠标、轨迹球、或光标方向键,用于向处理器504传送方向信息和命令选择并且用于控制光标在显示器512上的移动。这种输入设备通常具有在两个轴(第一轴(例如,x)和第二轴(例如,y))中的两个自由度,这允许设备在平面中指定位置。
计算机系统500可以使用定制的硬连线逻辑、一个或多个ASIC或FPGA、固件和/或程序逻辑来实现本文描述的技术,这些定制的硬连线逻辑、一个或多个ASIC或FPGA、固件和/或程序逻辑与计算机系统结合使计算机系统500成为或将计算机系统500编程为专用机器。根据一个实施例,本文的技术由计算机系统500响应于处理器504执行主存储器506中包含的一条或多条指令的一个或多个序列而执行。这些指令可以从另一个存储介质(诸如存储设备510)读取到主存储器506中。包含在主存储器506中的指令序列的执行使处理器504执行本文描述的处理步骤。在替代实施例中,可以使用硬连线电路系统代替软件指令或与软件指令组合使用。
如本文所使用的术语“存储介质”是指存储使机器以特定方式操作的数据和/或指令的任何非瞬态介质。这种存储介质可以包括非易失性介质和/或易失性介质。非易失性介质包括例如光盘或磁盘,诸如存储设备510。易失性介质包括动态存储器,诸如主存储器506。存储介质的常见形式包括例如软盘、柔性盘、硬盘、固态驱动器、磁带或任何其它磁性数据存储介质、CD-ROM、任何其它光学数据存储介质、具有孔模式的任何物理介质、RAM、PROM和EPROM、FLASH-EPROM、NVRAM、任何其它存储器芯片或盒带。
存储介质与传输介质不同但可以与传输介质结合使用。传输介质参与在存储介质之间传输信息。例如,传输介质包括同轴电缆、铜线和光纤,包括包含总线502的电线。传输介质还可以采取声波或光波的形式,诸如在无线电波和红外线数据通信期间生成的那些波。
各种形式的介质可以涉及将一条或多条指令的一个或多个序列携带到处理器504以供执行。例如,指令最初可以被携带在远程计算机的磁盘或固态驱动器上。远程计算机可以将指令加载到其动态存储器中,并且使用调制解调器经电话线发送指令。计算机系统500本地的调制解调器可以接收电话线上的数据,并且使用红外线发射器将数据转换为红外线信号。红外线探测器可以接收在红外线信号中携带的数据,并且适当的电路系统可以将数据放在总线502上。总线502将数据携带到主存储器506,处理器504从该主存储器506检索并执行指令。由主存储器506接收到的指令可以可选地在被处理器504执行之前或执行之后存储在存储设备510上。
计算机系统500还包括耦合到总线502的通信接口518。通信接口518提供耦合到网络链路520的双向数据通信,其中网络链路520连接到本地网络522。例如,通信接口518可以是综合业务数字网(ISDN)卡、电缆调制解调器、卫星调制解调器、或向对应类型的电话线提供数据通信连接的调制解调器。作为另一个示例,通信接口518可以是提供到兼容的局域网(LAN)的数据通信连接的LAN卡。也可以实现无线链路。在任何这种实现中,通信接口518都发送和接收携带表示各种类型信息的数字数据流的电信号、电磁信号或光信号。
网络链路520通常通过一个或多个网络向其它数据设备提供数据通信。例如,网络链路520可以通过本地网络522提供到主计算机524或到由互联网服务提供商(ISP)526操作的数据设备的连接。ISP 526又通过现在通常称为“互联网”528的世界范围的分组数据通信网络提供数据通信服务。本地网络522和互联网528二者都使用携带数字数据流的电信号、电磁信号或光信号。通过各种网络的信号以及在网络链路520上并且通过通信接口518的信号是传输介质的示例形式,其中信息将数字数据携带到计算机系统500或者携带来自计算机系统500的数字数据。
计算机系统500可以通过(一个或多个)网络、网络链路520和通信接口518发送消息和接收数据,包括程序代码。在互联网示例中,服务器530可以通过互联网528、ISP 526、本地网络522和通信接口518传送对应用程序的请求代码。
接收到的代码可以在其被接收到时由处理器504执行,和/或存储在存储设备510或其它非易失性存储器中以供以后执行。
在前面的说明书中,实施例已经参考众多的具体细节进行了描述,这些细节可以从一种实现到另一种实现不同。因此,说明书和附图被认为是说明性的而不是限制性的。本公开的范围的唯一且排他指示,以及申请人所预期的作为本公开的范围的内容,是从本申请产生的权利要求集合的书面和等效范围,以这种权利要求产生的具体形式,包括任何后续的校正。
Claims (12)
1.一种方法,包括:
在持久存储装置上维护由数据库服务器管理的关系数据库;
其中所述关系数据库包括数据库表,所述数据库表以持久格式存储在所述持久存储装置中;
通过将所述数据库表中的数据转换为键-值格式,在所述数据库服务器能够访问的易失性存储器内生成键-值记录;
其中所述键-值格式不同于并独立于所述持久格式;
执行引用所述数据库表的数据库语句,其中执行所述数据库语句包括:
确定是访问所述易失性存储器中的一个或多个键-值记录还是访问所述数据库表中的所述数据;
当确定访问所述一个或多个键-值记录时,访问所述易失性存储器中的一个或多个键-值记录。
2.如权利要求1所述的方法,其中通过将所述数据库表中的所述数据转换为所述键-值格式在所述数据库服务器能够访问的所述易失性存储器内生成所述键-值记录包括:
当所述数据库服务器执行对所述数据库表中的所述数据进行改变的数据库操作时,由所述数据库服务器在所述易失性存储器内维护所述键-值记录使其与所述数据库表中的所述数据在事务上一致。
3.如权利要求1所述的方法,其中通过将所述数据库表中的所述数据转换为所述键-值格式在所述数据库服务器能够访问的所述易失性存储器内生成所述键-值记录包括:
生成所述键-值记录的键字段,其中所述键字段包括所述数据库表的多个字段。
4.如权利要求1所述的方法,其中通过将所述数据库表中的所述数据转换为所述键-值格式在所述数据库服务器能够访问的所述易失性存储器内生成所述键-值记录包括:
生成所述键-值记录的值字段,其中所述值字段包括所述数据库表的多个字段。
5.如权利要求4所述的方法,其中生成所述键-值记录的所述值字段包括:
对于所述键-值记录的每个键-值记录,在所述值字段中存储所述多个字段中的相应字段值作为字段值的序列化。
6.如权利要求4所述的方法,其中生成所述键-值记录的所述值字段包括:
对所述多个字段中的至少两个字段进行索引。
7.如权利要求1所述的方法,其中确定是访问所述易失性存储器中的一个或多个键-值记录还是访问所述数据库表中的所述数据包括:
确定访问所述一个或多个键-值记录是否涉及解释一个或多个字段值。
8.如权利要求1所述的方法,其中确定是访问所述易失性存储器中的一个或多个键-值记录还是访问所述数据库表中的所述数据包括:
确定所述一个或多个键-值记录是否包括对所述数据库表中的对应数据的间接引用。
9.如权利要求1所述的方法,其中通过将所述数据库表中的所述数据转换为所述键-值格式在所述数据库服务器能够访问的所述易失性存储器内生成所述键-值记录包括:
对所述关系数据库的所述数据库表和另一个数据库表执行联接操作。
10.如权利要求1所述的方法,其中通过将所述数据库表中的所述数据转换为所述键-值格式在所述数据库服务器能够访问的所述易失性存储器内生成所述键-值记录包括:
存储对所述数据库表的一个或多个字段值的引用。
11.存储指令的一个或多个非瞬态计算机可读介质,所述指令在由一个或多个计算设备执行时,使得执行如权利要求1-10中所述的方法中的任何一个。
12.一种包括一个或多个计算设备的系统,所述一个或多个计算设备包括部件,所述部件至少部分地由计算硬件实现,所述部件被配置为实现如权利要求1-10中所述的方法中的任何一个的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111286461.6A CN113961564A (zh) | 2015-11-19 | 2016-11-15 | 用于多模型数据库的存储器内键-值存储 |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/946,489 | 2015-11-19 | ||
US14/946,489 US10360233B2 (en) | 2015-11-19 | 2015-11-19 | In-memory key-value store for a multi-model database |
PCT/US2016/062109 WO2017087426A1 (en) | 2015-11-19 | 2016-11-15 | In-memory key-value store for a multi-model database |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111286461.6A Division CN113961564A (zh) | 2015-11-19 | 2016-11-15 | 用于多模型数据库的存储器内键-值存储 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108475276A true CN108475276A (zh) | 2018-08-31 |
CN108475276B CN108475276B (zh) | 2021-11-02 |
Family
ID=57570434
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111286461.6A Pending CN113961564A (zh) | 2015-11-19 | 2016-11-15 | 用于多模型数据库的存储器内键-值存储 |
CN201680077564.2A Active CN108475276B (zh) | 2015-11-19 | 2016-11-15 | 用于多模型数据库的存储器内键-值存储 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111286461.6A Pending CN113961564A (zh) | 2015-11-19 | 2016-11-15 | 用于多模型数据库的存储器内键-值存储 |
Country Status (4)
Country | Link |
---|---|
US (2) | US10360233B2 (zh) |
EP (1) | EP3377991B1 (zh) |
CN (2) | CN113961564A (zh) |
WO (1) | WO2017087426A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110069452A (zh) * | 2019-04-26 | 2019-07-30 | 北京字节跳动网络技术有限公司 | 数据存储方法、装置和计算机可读存储介质 |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10360233B2 (en) | 2015-11-19 | 2019-07-23 | Oracle International Corporation | In-memory key-value store for a multi-model database |
US11256746B2 (en) | 2016-04-25 | 2022-02-22 | Oracle International Corporation | Hash-based efficient secondary indexing for graph data stored in non-relational data stores |
US10796237B2 (en) * | 2016-06-28 | 2020-10-06 | International Business Machines Corporation | Patient-level analytics with sequential pattern mining |
US10853364B2 (en) * | 2016-09-28 | 2020-12-01 | Microsoft Technology Licensing, Llc | Direct table association in in-memory databases |
CN108491364A (zh) * | 2018-01-25 | 2018-09-04 | 苏州麦迪斯顿医疗科技股份有限公司 | 医疗护理文书管理系统 |
US11086840B2 (en) | 2018-12-07 | 2021-08-10 | Snowflake Inc. | Transactional streaming of change tracking data |
CN109800234A (zh) * | 2019-01-25 | 2019-05-24 | 苏州科达科技股份有限公司 | 业务平台数据库系统、升级方法、设备及存储介质 |
CN113094292B (zh) * | 2020-01-09 | 2022-12-02 | 上海宝存信息科技有限公司 | 数据存储装置以及非挥发式存储器控制方法 |
US20230060702A1 (en) * | 2021-08-30 | 2023-03-02 | International Business Machines Corporation | Large object data type support for column-based database system |
US12015540B2 (en) | 2021-09-07 | 2024-06-18 | Red Hat, Inc. | Distributed data grid routing for clusters managed using container orchestration services |
US11741134B2 (en) | 2021-09-07 | 2023-08-29 | Oracle International Corporation | Conversion and migration of key-value store to relational model |
US11809414B2 (en) * | 2021-11-30 | 2023-11-07 | Snowflake Inc. | Serialization of data in a concurrent transaction processing distributed database |
US11663189B1 (en) | 2021-12-01 | 2023-05-30 | Oracle International Corporation | Generating relational table structures from NoSQL datastore and migrating data |
US11853563B1 (en) * | 2022-06-17 | 2023-12-26 | Western Digital Technologies, Inc. | Key value data storage device with tiers |
US11966630B2 (en) | 2022-06-27 | 2024-04-23 | Western Digital Technologies, Inc. | Key-to-physical table optimization for key value data storage devices |
CN117827849B (zh) * | 2024-03-04 | 2024-07-12 | 支付宝(杭州)信息技术有限公司 | 数据字典的维护方法及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101902458A (zh) * | 2010-02-21 | 2010-12-01 | 中国联合网络通信集团有限公司 | 跨主机进程间通信的方法、装置及系统 |
CN102402590A (zh) * | 2011-10-31 | 2012-04-04 | 深圳中兴力维技术有限公司 | 一种键值数据管理方法及系统 |
WO2015041967A1 (en) * | 2013-09-21 | 2015-03-26 | Oracle International Corporation | Mirroring, in memory, data from disk to improve query performance |
CN104750809A (zh) * | 2015-03-26 | 2015-07-01 | 中国科学院软件研究所 | 一种支持关系模型和键-值结构的混合数据存储方法 |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
AU2002318380A1 (en) | 2001-06-21 | 2003-01-08 | Isc, Inc. | Database indexing method and apparatus |
US7158996B2 (en) | 2003-01-27 | 2007-01-02 | International Business Machines Corporation | Method, system, and program for managing database operations with respect to a database table |
US7644083B1 (en) * | 2004-09-30 | 2010-01-05 | Teradata Us, Inc. | Efficiently performing inequality joins |
US8397212B2 (en) * | 2007-08-29 | 2013-03-12 | Yahoo! Inc. | Module hosting and content generation platform |
JP4806059B2 (ja) * | 2009-09-09 | 2011-11-02 | 株式会社東芝 | エネルギー管理システムおよびエネルギー管理方法 |
US8819056B2 (en) * | 2010-11-19 | 2014-08-26 | International Business Machines Corporation | Facilitation of search, list, and retrieval operations on persistent data set using distributed shared memory |
US9703706B2 (en) * | 2011-02-28 | 2017-07-11 | Oracle International Corporation | Universal cache management system |
US8949294B2 (en) * | 2011-03-23 | 2015-02-03 | Red Hat, Inc. | Data grid supporting multiple protocols |
KR101500304B1 (ko) * | 2011-12-26 | 2015-03-11 | 주식회사 케이티 | 에너지 저장장치의 충방전 제어 방법 및 시스템 |
US9582603B1 (en) * | 2012-02-27 | 2017-02-28 | Amazon Technologies, Inc. | Managing preloading of data on client systems |
US9075710B2 (en) | 2012-04-17 | 2015-07-07 | SanDisk Technologies, Inc. | Non-volatile key-value store |
KR102042102B1 (ko) * | 2013-04-09 | 2019-11-07 | 한국전자통신연구원 | 태양광 모듈의 전력 데이터 관리 향상을 위한 검침 데이터 보정 방법 및 장치 |
US20140310302A1 (en) | 2013-04-12 | 2014-10-16 | Oracle International Corporation | Storing and querying graph data in a key-value store |
US10394848B2 (en) * | 2013-07-29 | 2019-08-27 | Amazon Technologies, Inc. | Generating a multi-column index for relational databases by interleaving data bits for selectivity |
US10387804B2 (en) | 2014-09-30 | 2019-08-20 | BoonLogic | Implementations of, and methods of use for a pattern memory engine applying associative pattern memory for pattern recognition |
US9870168B1 (en) * | 2014-12-22 | 2018-01-16 | Emc Corporation | Key-value store with internal key-value storage interface |
US10360233B2 (en) | 2015-11-19 | 2019-07-23 | Oracle International Corporation | In-memory key-value store for a multi-model database |
-
2015
- 2015-11-19 US US14/946,489 patent/US10360233B2/en active Active
-
2016
- 2016-11-15 WO PCT/US2016/062109 patent/WO2017087426A1/en active Application Filing
- 2016-11-15 CN CN202111286461.6A patent/CN113961564A/zh active Pending
- 2016-11-15 EP EP16813169.6A patent/EP3377991B1/en active Active
- 2016-11-15 CN CN201680077564.2A patent/CN108475276B/zh active Active
-
2019
- 2019-07-22 US US16/518,114 patent/US11036756B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101902458A (zh) * | 2010-02-21 | 2010-12-01 | 中国联合网络通信集团有限公司 | 跨主机进程间通信的方法、装置及系统 |
CN102402590A (zh) * | 2011-10-31 | 2012-04-04 | 深圳中兴力维技术有限公司 | 一种键值数据管理方法及系统 |
WO2015041967A1 (en) * | 2013-09-21 | 2015-03-26 | Oracle International Corporation | Mirroring, in memory, data from disk to improve query performance |
CN104750809A (zh) * | 2015-03-26 | 2015-07-01 | 中国科学院软件研究所 | 一种支持关系模型和键-值结构的混合数据存储方法 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110069452A (zh) * | 2019-04-26 | 2019-07-30 | 北京字节跳动网络技术有限公司 | 数据存储方法、装置和计算机可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
US10360233B2 (en) | 2019-07-23 |
EP3377991B1 (en) | 2021-08-04 |
US20170147664A1 (en) | 2017-05-25 |
WO2017087426A1 (en) | 2017-05-26 |
US20190340183A1 (en) | 2019-11-07 |
US11036756B2 (en) | 2021-06-15 |
EP3377991A1 (en) | 2018-09-26 |
CN108475276B (zh) | 2021-11-02 |
CN113961564A (zh) | 2022-01-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108475276A (zh) | 用于多模型数据库的存储器内键-值存储 | |
US11163739B2 (en) | Database table format conversion based on user data access patterns in a networked computing environment | |
US11704294B2 (en) | System and method for slowly changing dimension and metadata versioning in a multidimensional database environment | |
US10936588B2 (en) | Self-described query execution in a massively parallel SQL execution engine | |
US11675761B2 (en) | Performing in-memory columnar analytic queries on externally resident data | |
Gudivada et al. | NoSQL systems for big data management | |
Vathy-Fogarassy et al. | Uniform data access platform for SQL and NoSQL database systems | |
US9805080B2 (en) | Data driven relational algorithm formation for execution against big data | |
Foster et al. | Chimera: A virtual data system for representing, querying, and automating data derivation | |
JP5819376B2 (ja) | 列ベースのデータベースに対する列スマートな機構 | |
US9639562B2 (en) | Automatically determining an optimal database subsection | |
CN101403978B (zh) | 用于机器集群的并行编程的基础构造 | |
Fard et al. | Vertica-ml: Distributed machine learning in vertica database | |
US20180275961A1 (en) | Method and system for fast data comparison using accelerated and incrementally synchronized cyclic data traversal algorithm | |
Kvet et al. | Relational pre-indexing layer supervised by the DB_index_consolidator Background Process | |
Sinthong et al. | AFrame: Extending DataFrames for large-scale modern data analysis (Extended Version) | |
Valduriez | Principles of distributed data management in 2020? | |
Butt et al. | Comprehensive Analysis on SQL and No SQL. | |
Ivalo | Data Lakehouse Architecture for Big Data with Apache Hudi | |
CN113515504A (zh) | 数据管理方法、装置、电子设备以及存储介质 | |
Mirel | Benchmarking Big Data SQL Frameworks |
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 |