CN107004016A - 有效的数据操纵支持 - Google Patents
有效的数据操纵支持 Download PDFInfo
- Publication number
- CN107004016A CN107004016A CN201580064944.8A CN201580064944A CN107004016A CN 107004016 A CN107004016 A CN 107004016A CN 201580064944 A CN201580064944 A CN 201580064944A CN 107004016 A CN107004016 A CN 107004016A
- Authority
- CN
- China
- Prior art keywords
- data
- storage bank
- data storage
- manipulation
- daily record
- 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/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/23—Updating
- G06F16/2358—Change logging, detection, and notification
-
- 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/23—Updating
- G06F16/2365—Ensuring data consistency and integrity
-
- 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)
- Computer Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
数据操纵语言语句可以针对数据存储***的数据储存库中的数据。语句中规定的数据操纵(包括就地操纵)可以被记录和维护。可以避免或者可能在稍后的时间发起向储存库应用数据操纵。在向数据储存库应用数据操纵之前,可以根据记录的数据操纵和从数据储存库获取的数据来处理对数据储存库中的数据的查询,使得数据操纵被反映在从数据储存库获取的数据中。
Description
背景技术
一旦被限制到几家大公司,存储和分析大量数据的愿望已经升级和扩展。这些数据中的大部分与传统上由数据仓库管理的数据类似,因此可以在关系数据库管理***(RDBMS)中合理地存储和处理数据。然而,越来越频繁地,数据不被存储在RDBMS中。相反,数据被存储在不同***中,包括那些不需要预定义和脊化的(ridged)数据模型的***。例如,数据可以以非关系格式被存储和管理,例如使用分布式文件***(例如在Hadoop框架中使用的HDFS),并且使用诸如MapReduce等部件被分析。然而,由RDBMS存储的关系数据被格式化为关系数据,而由Hadoop存储的数据是非关系数据。
虽然处理关系数据和非关系数据长期以来是分开的努力,但是人们不再满足于这种情况。具体地,分析关系数据的人也希望分析非关系数据,并且他们希望分析这两种类型的数据的组合。类似地,分析非关系数据的人希望将非关系数据与存储在RDBMS中的关系数据相结合。更进一步地,即使分析RDBMS中的数据的人也可能希望使用通常与处理非关系数据相关联的工具(诸如MapReduce)用于某些任务。将数据保存在分开的仓库中已不再可行。
已经出现了各种解决方案,使得能够有效且无障碍地存储和分析关系数据和非关系数据两者。出现的一个***是Polybase,它是RDBMS并行数据仓库的特征,它提供了关系数据和非关系数据的使用SQL(结构化查询语言)的单个关系视图。
发明内容
以下呈现简化的概述,以便提供对所公开主题的一些方面的基本理解。本发明内容不是广泛的概括。它不是旨在确定关键/至关重要的元素或描绘所要求保护的主题的范围。其唯一目的是以简化的形式呈现一些概念,形成稍后呈现的更详细描述的序言。
简要描述,本公开涉及有效的数据操纵支持。可以接收关于数据储存库中的数据的数据操纵。数据操纵可以包括数据存储***不支持的就地操纵。可以通过以下方式来实现不受支持的就地数据操纵:从数据储存库读取数据集,对第一数据集执行操纵,并且将新的数据集写入数据储存库。可以将数据操纵记录并且应用于从数据源接收到的数据,以避免与将操纵应用于数据储存库相关联的高成本。此外,如果数据操纵最终应用于数据储存库,则仍然可以实现成本降低,因为可以对更改进行批处理。
为了实现前述和相关目的,本文中结合以下描述和附图来描述所要求保护的主题的某些说明性方面。这些方面指示可以实践主题的各种方式,所有这些方式都旨在在所要求保护的主题的范围内。当结合附图考虑时,从下面的详细描述中,其他优点和新颖特征可以变得显而易见。
附图说明
图1是互操作性***的框图。
图2是代表性数据操纵部件的框图。
图3是代表性压缩部件的框图。
图4是互操作性***的框图。
图5是数据操纵***的框图。
图6是处理删除语句的方法的流程图。
图7是执行删除的方法的流程图。
图8是执行删除的方法的流程图。
图9是处理***语句的方法的流程图。
图10是数据***的方法的流程图。
图11是处理更新语句的方法的流程图。
图12是执行更新的方法的流程图。
图13是数据压缩的方法的流程图。
图14是执行压缩的方法的流程图
图15是示出用于本公开的各个方面的合适的操作环境的示意性框图。
具体实施方式
数据存储***关于数据操纵具有不同的能力。例如,基于关系数据的***通常通过用于在数据库中删除、***和更新数据的数据操纵语言(DML)来提供对就地数据操纵的完全支持。在一个实例中,可以使用结构化查询语言(SQL)来规定对关系数据的这种操纵。相比之下,诸如Hadoop分布式文件***(HDFS)的web应用的非关系分布式文件***不提供诸如删除和更新的就地操纵的完全支持。
对于在实现对数据操纵的不同支持的多个数据存储***上操作的***存在问题。例如,作为RDBMS并行数据仓库的特征的Polybase提供了对关系数据和非关系数据的使用SQL(结构化查询语言)的单个关系视图。来自向RDBMS提交查询的关系数据背景的人期望完全支持就地数据操纵,因为这样的操作由RDBMS提供。然而,诸如Hadoop和HDFS的数据存储***不提供对就地数据操纵的完全支持。
跨越差异的一种方法是将HDFS文件导入RDBMS表中,进行就地更改,删除旧文件,并且导出到新HDFS文件,新HDFS文件反映从RDBMS到HDFS的更改。然而,该方法在资源利用(例如,存储空间、网络带宽...)以及处理时间方面是昂贵的。此外,与将大型HDFS文件导入表中并且编写捕获修改的新的文件相关联的延迟提供了差的用户体验。
下面的细节通常涉及有效的数据操纵支持。可以接收规定就地操纵的数据操纵语句,其针对在与不完全支持就地操纵的数据存储***相关联的数据储存库上的数据,其中就地操纵表示直接修改数据,而不是创建数据的修改副本。数据操纵可以被记录并且应用于从数据储存库接收的数据,例如作为读取查询的一部分。因此,避免了与不支持就地数据操纵的***上的每个数据操纵执行就地数据操纵相关联的高成本。此外,即使就地操纵最终被应用于数据储存库,由于可以对更改进行批处理,因此降低了成本。根据从数据储存库接收到的、应用有记录的操纵的数据处理查询,从而确保正确的结果。
在一个特定实例中,可以记录根据就地删除将被删除的数据的身份或位置。随后,可以从对来自数据储存库的数据的读取操作中丢弃这些数据。因此,网络通信流量减少。较不有效的替代方案是从数据储存库获取数据并且去除与删除的数据相对应的数据。
根据一个方面,如果与数据操纵的记录和应用相关联的成本超过与将操纵应用于数据相关联的成本,则可以将数据操纵应用于数据储存库。这种成本效益分析可以根据预定阈值来实现,例如与记录的操纵数目或与数据集相关联的更改百分比相关联的阈值。当然,也可以周期性地(例如,每小时、每天、每月……)或预定地应用数据操纵,并且允许用户发起将数据操纵应用于数据储存库。
现在参考附图更详细地描述本公开的各个方面,其中相同的附图标记通常是指相同或对应的元素。然而,应当理解,与其有关的附图和详细描述并不旨在将所要求保护的主题限制于所公开的特定形式。相反,其意图是涵盖落入所要求保护的主题的精神和范围内的所有修改、等同物和替代物。
首先参考图1,示出了互操作性***100。如图所示,***100包括两个数据存储***,即第一数据存储***110和第二数据存储***120。第一数据存储***110和第二数据存储***120可以在逻辑上或物理上分开。无论如何,第一数据存储***110和第二数据存储***通信地耦合。作为示例而非限制,可以通过网络(例如,局域网、广域网)来连接存储***。第一数据存储***110和第二数据存储***120都包括管理***和数据储存库,即第一管理***112、第一数据储存库114、第二管理***122和第二数据储存库124。第一管理***112和第二管理***122被配置为管理对第一数据储存库114和第二数据储存库124的访问。具体地,管理***通过获取数据并将数据写入相应数据储存库来处理对数据的请求和返回响应。第一数据储存库114和第二数据储存库124可以被实现为存储数据的任何机制,包括但不限于单个数据储存库、多个数据储存库和分布式数据储存库。此外,第一数据储存库114和第二数据储存库124被限制为通过对应的管理***间接访问或者在没有管理***的情况下直接访问。
根据一个实施例,第一数据存储***110可以作为主数据存储***来操作,并且第二数据存储***120可以作为辅数据存储***来操作。更具体地,第一数据存储***110可以被配置为接收并响应于请求,包括对第一数据储存库114的查询和数据操纵,并且还与第二数据存储***120交互以处理对第二数据储存库124的查询和数据操纵。例如,可以响应于查询或数据操纵语句来读取、以及删除、***和更新数据。此外,数据操纵可以对应于直接修改数据集的部分(诸如单行)的就地操纵。在一个特定实例中,第一数据存储***110可以是并行数据仓库设备,并行数据仓库设备操作存储在第一数据储存库114中的关系数据,第一数据储存库114可以是分布式储存库,并且第二数据存储***120可以对应于Hadoop***,Hadoop***操作第二数据储存库124上的分布式文件***(例如HDFS)中的非关系数据。为了清楚和简洁,本描述集中于该实施例。然而,***100不限于此。例如,第一数据存储***110可以对应于关系数据库管理***,并且第二存储***120可以对应于非结构化数据提供者。此外,尽管图1仅描绘了两个数据存储***,但是应当理解,第一数据存储***110可以关于任何数目的其他数据存储***来操作。
这里,第一数据存储***110包括查询处理器部件130、数据操纵部件132、更改日志134、外部表部件136、读取部件137和写入部件138。查询处理器部件130是被配置为使得能够关于第一数据储存库114、第二数据储存库124或者第一数据储存库114和第二数据储存库124二者来处理查询的机制。在接收到查询之后,查询处理器部件130生成查询计划,执行计划,并且返回响应。在其中第一数据存储***110操作关系数据并且第二数据存储***120操作非关系数据的实施例中,可以创建提供非关系数据的关系表示的表。外部表136包括定义存储在第二数据储存库124中的数据的结构(例如,表列)并且标识存储在第二数据储存库124中的数据的位置的元数据。然而,外部表136不包括存储在第二数据储存库124中的数据。查询处理器部件130可以处理对第一数据储存库114的关系表的查询和/或第二数据储存库124的数据的外部表表示。读取部件137被配置为通过直接从第二数据储存库124或者间接地通过第二管理***122从第二数据储存库124读取数据来获取或导入满足查询的数据。数据的关系表示基于外部表136的元数据来创建,并且用于产生结果。此外,与外部表相关联的导入数据通常是只读的,而不经受修改。
查询不仅可以规定读取操作,还可以规定诸如删除、***和更新的数据操纵。此外,可以预期,支持就地数据操纵,其直接修改数据集(例如,文件、组块(chunk)、大对象(blob)…)的一部分,这与创建反映修改并且潜在地替换旧数据集的新数据集相反。但是,与外部表相关联的导入数据通常是只读的,而不经受修改。此外,第二数据存储***120可能不能通过第二管理***122完全支持就地操纵。
如果与仅读取查询相反,请求包括诸如删除、***或更新的数据操纵,则查询处理器部件130可以调用数据操纵部件132用于处理。数据操纵部件132被配置为支持对只读数据的就地数据操纵操作,即使操作不被辅存储***120支持。这可以通过在诸如更改日志134的容器中记录操纵来实现。根据一个实施例,更改日志134是存储在第一数据储存库114中的与外部表136相关联的表。然而,更改日志134可以采用另一种形式并且存储在任何地方,只要第一数据存储***110可以在需要时访问更改日志134。例如,如果第二数据存储***120支持追加(append),则更改日志134可以存储在第二数据储存库124中并且由第二管理***122使用。当由读取部件137从第二数据储存库124加载数据时,可以使用更改日志134,使得返回的数据反映在更改日志中规定的更改。例如,可以删除、添加或者删除并且随后添加行。
将注意力转向图2,示出了代表性数据操纵部件132。数据操纵部件132包括删除部件210、***部件220、更新部件230和压缩部件240。删除部件210被配置为在更改日志134中记录诸如行的删除的元素。在一个实例中,删除的元素可以由诸如行标识符(RID)的唯一标识符来标识,例如包括文件名和行偏移(对于文本文件)或主键。在接收到规定就地删除的删除语句之后,删除部件210可以通过例如RID来标识满足与删除操纵相关联的谓词(predicate)(例如,一组标准)的适用的行,并且将它们添加到更改日志134。更改日志134可以被实施为存储在第一数据储存库114中的表。在这种情况下,规定以下各项的删除查询:
DELETE FROM customer_hdfs
WHERE c_NAME like%121%”
可以被删除部件210转换或使用以产生:
INSERT INTO delete_delta_cust_HDFS
SELECT RID
FROM customer_hdfs
WHERE c_name like“%121%
这里,更改日志134被命名为“delete_delta_cust_HDFS”。来自外部表“customer_hdfs”的满足谓词“c_name like“%121%”(客户名称匹配字符串模式“%121%”,其中“%”为规定缺失字符的通配符)的RID被***到更改日志134中。
简要地返回图1,如上所述,更改日志134可以包括诸如行的删除的元素的标识。该信息可以以不同的方式使用。具体地,删除信息可以在由读取部件137读取或扫描存储在第二数据储存库124中的数据期间或之后被使用。在读取期间,例如与读取查询相关联的读取,可以将删除的元素提供给读取部件137,并且读取部件137可以丢弃对应于删除的元素的元素。根据一个实现,可以直接从第二数据储存库124读取数据,以及在对第二数据储存库124的读取操作期间忽略对应于删除的元素的数据。根据另一实现,读取部件137可以生成第二管理***122可接受的语句/命令,其导致数据被读取,除了删除的元素。该语句可以被提供给第二管理***,第二管理***将执行该语句并且将已经滤除删除的数据的数据返回到第一数据存储***110。不管实现如何,在读取期间执行删除(例如结合读取查询(例如,选择查询))是有益的,因为删除的元素不需要被读取或导入到第一数据存储***110中,从而节省了第一数据存储***110上的临时和/或永久存储空间(例如,存储器和磁盘)并且减少了网络流量。在后面的(post)读取或扫描场景中,满足谓词的所有行都将被读取并且导入到第一存储***110中。随后,可以在导入的数据和更改日志134之间执行反连接等,使得删除的数据被去除。这种方法可以最终减少在删除的数据被去除之后的存储空间的使用,但是不如以前的方法那样有效,至少是因为没有减少网络带宽的使用。
***部件220可以被配置为记录要***或添加到更改日志134中的数据。更具体地,在接收到***语句之后,由***语句标识的附加元素被添加到更改日志134中。在读取部件137直接从储存库或间接地通过第二管理***122从第二数据储存库124导入数据之后,更改日志中的记录的数据元素通过追加、连接或其他操作被添加到导入的数据。如果辅存储***120通过追加操作来提供对添加的支持,例如,***部件220可以被配置为通过写入部件138发起将行添加到辅数据储存库124。混合方法也是可能的,其中为了***大量的行,如由预定阈值规定的,***部件220可以发起向第二数据储存库124中***,而不需要使用更改日志134。然而,对于少量的行,如由预定阈值定义的,***部件220可以将行添加到更改日志134。随后,一旦行数达到另一预定阈值,则可以将行添加到第二数据储存库124。
更新部件230被配置为结合所接收的更新语句或操作来采用更改日志134。更新本质上是删除后跟***。因此,可以应用以上关于删除和***描述的功能来实现更新操作。为了进一步清楚,在接收到以下更新语句之后,考虑以下实现:
UPDATE customer_hdfs
SET c_nationkey=10
WHERE c_custkey=1
首先,满足谓词“c_custkey=1”的所有行都将被导入临时表“temp_1”中,例如通过执行以下语句:
SELECT RID,*
FROM customer_hdfs
WHERE c_custkey=1
更改日志134可以用受更新影响的一个或多个行来更新。接下来,可以更新临时表,例如使用以下语句:
UPDATE temp_1
SET c_nationkey=10
WHERE c_custkey=1
最后,临时表用于使用以下语句填充外部表“customer_hdfs”:
INSERT INTO customer_hdfs
SELECT*
FROM temp_1
临时表的使用规避了关于在外部表实例是只读的情况下的问题。因此,应当理解,也可以使用临时表,如以上仅关于删除或***所述的。
压缩部件240被配置为通过排出(drain)更改日志并且将更改应用于诸如第二数据储存库124的数据储存库来执行压缩。在操作中,导入用于外部表的数据,根据记录在更改日志中的数据操纵对数据集进行更改,并且将捕获更改的新数据集(例如,文件、块(block)、大对象(blob)、组块(chunk)...)添加到辅数据储存库。如前所述,这种方法在资源利用(例如,存储空间、网络带宽……)和处理时间方面是昂贵的。根据一个实施例,当对导入的数据应用更改的成本超过应用对数据储存库实现更改的成本时,发起压缩。这可以通过基于删除的数据元素的数目或百分比和/或添加的数据元素的数目或百分比的预定阈值来捕获。
图3更详细地示出了代表性压缩部件240。如图所示,压缩部件240包括触发部件310、排出部件320、导出部件330和清理部件340。触发部件310被配置为分析更改日志并且确定是否满足预定阈值以触发压缩。希望通过引入读取数据和应用更改的成本,避免与生成和向数据储存库写入新文件相关联的大的性能打击(hit)。然而,外部表的性能随着时间的推移而恶化,因为与导入数据和应用更改相关联的开销增加。当导入和应用更改的成本超过生成和向数据源写入文件的成本时,可以触发压缩。触发部件310可以基于删除和/或添加的行的数目或百分比与预定值的比较来进行该确定。如果达到或超过预定阈值,则触发部件310可以通过调用排出部件320来发起压缩。此外,压缩发起不限于基于阈值的触发。还应当理解,该压缩也可以由用户发起或者在调度的时间自动运行。
排出部件320被配置为通过向数据储存库写入添加内容来排出更改日志。例如,如果第二数据存储***120支持追加或类似的操作,则附加数据可以被提供给其并且随后被追加到对应的数据集(例如,文件、块(block)、大对象(blob)…)。导出部件330在排出操作完成之后被调用。
导出部件被配置为通过调用图1的写入部件138来将反映删除的数据导出到第二数据储存库124。在调用写入部件138之前,基于外部表从第二数据储存库124读取或导入数据。读入或导入的数据导致去除在更改日志134中记录的删除的数据。此外,添加内容在之前被追加,并且因此存在于读取的数据中。现在可以通过调用写入部件138将读取的数据写入第二数据储存库124,使得新的数据替换旧的数据。根据一个特定实现,可以使用由第一数据存储***110提供的创建外部表作为选择(CETAS)操作来创建新的外部表。这对应于为选择查询的结果创建新表。例如,操作可以规定如下:
CREATE EXTERNAL TABLE customer_hdfs_temp
As
SELECT*FROM customer_hdfs接下来,原始外部表“customer_hdfs”被重命名为“customer_hdfs_old”,并且新的外部表“customer_hdfs_temp”被重命名为原始名称“customer_hdfs”。
在将数据写入储存库之后,调用清理部件340。清理部件340被配置为丢弃和删除所创建的外部表及其从第二数据储存库124中导入的数据。此外,清理部件340被配置为删除更改日志或者更改日志中标识针对至少删除指定的数据的数据。
转到图参考图4,示出了互操作性***400。图1的互操作性***100涉及其中数据操纵功能由多个数据存储***之一执行的实施例。然而,本发明不限于此。如图所示,数据操纵功能可以由中央管理***410来实现,中央管理***410与至少第一数据存储***110和第二数据存储***120交互。如前所述,第一数据存储***110和第二数据存储***120分别包括第一管理***和第一数据储存库114、以及第二管理***122和第二数据储存库124。第一管理***112和第二管理***122管理与第一数据储存库114和第二数据储存库124的访问和交互,第一数据储存库114和第二数据储存库124都可以以各种方式存储数据,包括跨计算机网络中的多个节点分布。这里,如前所述,中央管理***410包括查询处理器部件130、数据操纵部件132、更改日志134、外部表136、读取部件137和写入部件138。在该实例中,中央管理***410接收这样的请求并且返回关于存储在第一数据储存库114、第二数据储存库124或者第一数据储存库114和第二数据储存库124二者中的数据的响应。查询处理器部件130生成查询计划,执行计划,并且返回从第一数据储存库114和第二数据储存库124中的一个或两者获取满足查询的数据的响应。如果请求包括关于删除、***或更新数据的查询或者其他语句或命令,则可以调用数据操纵部件132。简而言之,数据操纵部件132使得能够将删除、***和更新功能记录到更改记录134中,而不是将数据操纵应用于数据储存库。随后,当例如响应于用于查询的读取操作从与更改日志134相关联的储存库读取数据时,在数据储存库的读取期间或者在从数据储存库读入或导入数据之后,应用数据操纵。但是不限于此,根据一个实施例,中央管理***410可以用关系数据库技术实现。在这种情况下,外部表136可以规定存储在数据储存库中的数据的结构(例如,表列)并且标识存储在数据储存库中的数据的位置,并且读取部件137可以采用外部表来指导读取。在某些时候,例如基于策略、调度或用户发起,可能希望对数据储存库实现数据操纵。在这种情况下,可以采用写入部件138将数据写入数据储存库。
根据一个特定实现,第一数据存储***可以操作关系数据,并且第二数据存储***120可以操作非关系数据。更具体地,第一管理***可以对应于关系数据库管理***(RDBMS),并且第一数据储存库可以是关系数据库。此外,第二管理***122可以对应于实现MapReduce的Hadoop或Hadoop框架,并且第二数据储存库124可以对应于分布式文件数据(例如HDFS)。在这种情况下,第二数据存储***120可以不提供由第一数据存储***提供的就地数据操纵的完全支持。可以通过以下方式来跨越功能之间的不匹配:从第二数据储存库124导入数据,进行更改,并且将数据库导出到第二数据储存库124。然而,如前所述,这可以是要避免或至少延迟以利用批处理的昂贵的操作。中央管理***实现可以记录数据操纵并且将数据操纵应用于从第二数据储存库124获取的数据的功能,从而避免针对每个数据操纵请求而对第二数据储存库实现更改的成本。然而,在某个预定的、调度或用户发起的点,中央管理***可以对第二数据储存库实现更改。
图5描绘了可以被采用以处理数据操纵的数据操纵***500。***500包括记录装置510、应用装置520、实现装置530和触发装置540。记录装置510可以被实施为用于记录数据操纵(包括就地数据操纵)的硬件、软件或硬件和软件的组合。例如,记录装置可以将数据操纵或关于操纵的信息保存到诸如更改日志的容器。在一个实例中,记录装置可以保存与要删除的数据相关联的标识符和/或位置。在其他实例中,记录装置可以保存要***到数据集中的数据。
应用装置520采用硬件、软件或硬件和软件的组合,将记录的数据操纵应用于从数据储存库获取的数据。为了处理对存储在数据储存库上的数据的查询,数据被读取。应用装置520关于该读取功能进行操作以应用数据操纵。根据一个实施例,应用装置520可以在读取期间操作,使得例如记录在更改日志中的被指定用于删除的数据被丢弃并且不被读取或获取。根据另一实施例,应用装置520在数据被读取或导入之后对数据进行操作,例如以丢弃与指定用于删除的数据相对应的数据。此外,应用装置520可以将指定用于***的数据添加到从数据储存库获取的数据。
实现装置530实现或使记录的数据操纵被应用于对应的数据储存库。被实施为硬件、软件或硬件和软件的组合,实现装置530可以读取例如更改日志中的记录的数据操纵,并且使用与修改数据储存库相关联的支持的机制来向数据储存库应用或提交数据操纵。在数据管理***等支持特定操作的情况下,可以采用该操作来实现对数据的更改。例如,如果追加操作被支持,则指定用于***的数据可以通过规定的追加操作的执行被***到数据集中。例如,在没有提供例如关于诸如删除的就地操纵的支持的情况下,实现装置可以从数据储存库导入数据,应用数据操纵,并且将反映数据操纵的数据导出到数据储存库。
触发装置540通过调用实现装置530来触发或发起将数据操纵应用于数据储存库。触发装置540可以被实施为硬件、软件或硬件和软件的组合,其在各种场景中发起将数据操纵应用于数据储存库。在一个实例中,例如,可以关于与数据操纵的数目或对数据集的百分比更改相关的记录操纵建立预定阈值。一个实施例中的阈值可以捕获记录和向所获取的数据应用更改的成本超过对数据储存库实现更改的成本的点。这里,触发装置540可以通过与记录的操纵相关联的另一机制来计算值或监视计算,将该值与阈值相比较,并且如果超过阈值则触发向数据储存库应用更改。在另一实例中,触发装置540可以根据调度(例如,每小时、每天、每周、每月……)发起数据操纵的应用。在另一实例中,触发装置540可以在对数据储存库实现数据操纵的用户发起的命令的叙述(recite)时被激活。
已经关于若干部件之间的交互描述了上述***、架构、环境等。应当理解,这样的***和部件可以包括其中规定的那些部件或子部件、规定的部件或子部件中的一些、和/或附加部件。子部件也可以被实现为通信地耦合到其他部件而不是被包括在父部件内的部件。此外,一个或多个部件和/或子部件可以组合成单个部件以提供聚合功能。***、部件和/或子部件之间的通信可以根据推送和/或拉取模型来实现。为了简洁起见,部件还可以与本文中未具体描述但本领域技术人员已知的一个或多个其他部件交互。
此外,以上公开的***以及下面的方法的各个部分可以包括或采用人工智能、机器学习、或者基于知识或基于规则的部件、子部件、过程、装置、方法或机制(例如,支持矢量机器、神经网络、专家***、贝叶斯信念网络、模糊逻辑、数据融合引擎、分类器……)。除了其他以外,这样的部件可以使由此执行的某些机制或过程自动化,以使得***和方法的部分更具适应性以及高效和智能化。作为示例而非限制,触发部件310可以采用这样的机制来确定或推断何时发起压缩,例如基于上下文和历史信息。
鉴于上述示例性***,可以参考图6-14的流程图更好地理解可以根据所公开的主题来实现的方法。虽然为了简化说明的目的,将方法示出和描述为一系列框,但是应当理解和意识到,所要求保护的主题不受框的顺序的限制,因为一些框可以以不同的顺序发生和/或与本文中所描绘和描述的其他框同时发生。此外,可能不需要所有图示的框来实现下文中描述的方法。
参考图6,示出了处理删除语句的方法600。在附图标记610处,接收删除语句,其例如被实施为被发送到主存储***的查询或命令。在附图标记620处,确定指定用于删除的一个或多个数据元素(例如行)。根据一个实例,可以仅基于删除语句来确定数据元素,例如,在具体地标识个体元素的情况下。备选地,可以用标识要删除的数据的谓词来规定数据。在这种情况下,可以执行数据读取,并且可以标识满足谓词的数据,从而标识要删除的数据。根据一个实现,存储过程可以基于文件的名称以及包括起始索引和结束索引的范围来标识数据元素。在附图标记630处,将指定用于删除的数据元素添加到更改日志或其他容器。根据一个实施例,更改日志可以被实施为存储在主数据存储***的数据储存库中的表。其他实施例也是可能的,包括将更改日志存储在辅数据储存库中。在一个实例中,例如,可以通过记录标识符(RID)标识数据并且将数据保存到更改日志,记录标识符(RID)规定例如文件名和到文件中的索引。
图7描绘了执行删除的方法700。在附图标记710处,标识第一数据元素,诸如行。在附图标记720处,确定第一数据元素是否对应于删除的元素。可以通过将元素与记录在更改日志中的一个或多个数据元素相比较来执行该确定。如果数据元素与更改日志中的数据元素相匹配,则数据元素对应于删除的元素。否则,数据元素不是删除的元素。如果数据元素是删除的元素(“是”),则该方法在附图标记740处继续。如果数据元素不是删除的元素(“否”),则该方法进行到附图标记730,在附图标记730处,读取或换言之导入或加载数据元素。因此,不读取删除的元素。该方法接着在附图标记740处继续,在附图标记740处,确定是否存在更多的数据元素要处理。如果没有更多的数据元素要处理(“否”),则该方法将简单地终止。另一方面,如果存在更多的数据元素要处理(“是”),则该方法进行到附图标记750,在附图标记750处,标识下一数据元素。然后该方法循环回到附图标记720,其确定数据元素是否对应于删除的元素。这里,指定用于删除的数据元素一旦被标识就丢弃并且不被读取。
图8示出了执行删除的方法800。在附图标记810处,标识第一数据元素,诸如行。接下来,在附图标记820处,读取标识的数据元素,并且方法进行到附图标记830。在附图标记830处,确定是否存在更多的数据元素要处理。如果存在更多的数据元素要处理(“是”),则方法在附图标记840处继续,在附图标记840处,标识下一数据元素。随后,该方法循环回到附图标记820,在附图标记820处,读取数据元素。如果没有更多的数据元素要处理(“否”),该方法将在850处继续,在850处,去除删除的数据元素。可以在更改日志中标识删除的数据元素。根据一个实现,如果读取数据元素在更改日志中被指定用于删除,则可以执行反连接或其他操作以去除读取数据元素。在该实例中,读取所有数据并且随后去除指定用于删除的数据元素。
图9描绘了处理***语句的方法900。在附图标记910处,接收***语句,其例如被实现为被发送到主存储***的查询或命令。在附图标记920处,将要根据***语句来***的数据添加到更改日志。在附图标记930处,确定是否排出更改日志并且将数据添加到储存库。例如,如果数据存储***支持追加操作,则可以通过针对更改日志中的***数据调用追加操作来将***数据追加到对应的文件。可以基于与要***的数据元素(例如,行)的数目或百分比有关的预定和定义的阈值来自动进行确定。例如,对于大量数据元素,可以将数据元素添加到外部文件。否则,数据元素可以保留在更改日志中,以便稍后添加到现有文件。更改也可以在调度时间处被自动应用于数据储存库,或者用户可以通过对应的命令来触发***数据的添加。如果确定更改日志将不被排出(“否”),则该方法终止。如果确定要排出更改日志(“是”),则该方法在940处继续,在在940处,在诸如第二数据储存库的储存库上实现更改。如上所述,如果与储存库相关联的管理***支持追加操作,则可以将更改日志中标识的数据提供给存储***以追加数据。在附图标记950处,可以从更改日志清除要***或删除的数据。
图10示出了数据***的方法1000。在附图标记1010处,通过咨询更改日志来标识指定用于***的数据。在附图标记1020处,例如从更改日志或由更改日志规定的其他位置获取数据,并且将其***诸如文件的文数据结构中。假设存储***支持追加操作,则可以通过将数据追加到指定的数据结构来***所标识的数据。然而,如果这样的追加操作不可用,则***数据的动作可以包括:首先从数据储存库导入数据,将数据追加到导入的数据,并且将更改的数据导出到数据储存库以替换原始数据。
图11示出了处理更新语句的方法1100。在附图标记1110处,接收更新语句例如作为由主数据存储***接收的查询或查询的一部分。更新语句引用数据储存库中的数据的至少一部分。在附图标记1120处,标识要更新的数据。在一个实例中,这样的数据可以能够仅从更新语句来确定。在另一实例中,可以用谓词来规定要更新的数据。在这种情况下,可以对数据储存库执行数据读取或扫描,并且可以标识满足谓词的数据,从而标识受更新影响的数据。在附图标记1130处,将受更新影响的数据添加到更改日志。具体地,可以更新更改日志以反映特定数据元素的删除和数据元素的添加。换言之,可以分开地标识删除和***数据。备选地,更改日志可以记录对特定数据元素或行的更新。
图12示出了更新数据的方法1200。在附图标记1210处,从更改日志标识更新。该更新可以规定要删除的数据以及要***的数据。在附图标记1220处,根据更新删除数据。可以在读取期间或之后执行删除,如上面关于图7和图8所述。在附图标记1230处,***由更新规定的数据。在由辅存储***提供追加操作的情况下可以通过使用追加操作来***数据,或者通过对导入数据的本地添加并且输出更改的数据来***数据,如以上关于图10所述。可以使用删除后跟***来实现更新,如上所述。然而,更新也可以实现为***后跟删除。
在一个实施例中,如果发出***语句后跟删除或更新语句,其中***语句和删除或更新语句填充更改日志,则将导致问题。这里,***的数据元素或行可能不具有与其相关联的唯一标识符(例如,记录标识符),因为它们尚未被写入存储装置。解决这个问题至少有两个选择。首先,可以将***的数据从更改日志中排出并且写入存储装置,以便为***的数据获取标识符。第二,可以对更改日志应用删除或更新,以便直接在日志中删除/更新受影响的行。
图13示出了数据压缩的方法1310。在附图标记1310处,分析一个或多个更改日志,其中更改日志规定要删除、添加和/或更新的数据。在附图标记1320处,确定是否要发起数据压缩,其中数据压缩实现对数据储存库的更改。实现对储存库的更改在资源利用(例如,存储空间、网络带宽……)和处理时间方面是昂贵的。然而,由于与导入数据和应用越来越多的更改相关联的开销,应用更改的性能(例如,在数据被读取之后或在读取操作期间)随时间而恶化。根据一个实施例,当对导入的数据应用更改的成本超过实现对数据存储的更改的成本时,可以发起压缩。除了其他以外,这可以通过基于更改的数据元素的数目或更改的数据的百分比(例如,数据文件的一半以上被更改)的预定阈值来捕获。根据另一实施例,压缩可以被调度以在预定的或周期性的时间处(例如,一天一次、一周一次、一个月一次…)执行。如果在附图标记1320处,确定不应当发起压缩(“否”),则该方法可以终止。备选地,如果在附图标记1320处,确定应当发起压缩(“是”),则该方法在1330处继续。在附图标记1330处,从数据源读取或换言之导入数据。在附图标记1340处,将更改应用于数据。更改可以对应于在更改日志或其他容器中捕获的删除、***和/或更新操作。尽管被描述为在读取数据之后,但是应当理解,在读取期间至少可以执行删除,例如通过丢弃删除的元素。这可以减少导入的数据的大小,以保留存储器/存储空间并且减少网络流量。在附图标记1350处,将应用有更改的数据写入数据储存库。例如,可以采用辅数据存储***和由此提供的操作来添加新数据并且删除先前的数据。最后,在附图标记1360处,可以清除更改日志或更改的其他容器的更改或删除。
图14描绘了根据特定实现执行压缩的方法。在附图标记1410处,在储存库上实现***。例如,可以排出记录***的表,并且通过调用在存储***上的导致添加数据的操作来实现对储存库的***。例如,如果数据管理***对应于Hadoop,则支持追加操作,并且可以调用追加操作来向对应文件追加附加数据。在附图标记1420处,基于原始外部表来创建新的外部表,新的外部表包括定义外部数据的结构和位置的元数据。例如,可以在主存储***上调用创建外部表作为选择(CETAS)操作。具体地,可以读取或导入数据,并且可以在读取期间或之后丢弃删除的数据。此外,***的数据将在读取的数据中反映。基于该数据创建外部表。在附图标记1430处,原始外部表被新的外部表替换。在1440处,删除来自数据储存库的读取或导入的数据,并且在附图标记1450处,丢弃对应的外部表(去除表元数据)。在附图标记1460处,删除日志或记录删除的数据元素的其他容器。
本公开支持执行或被配置为执行关于有效数据操纵支持的各种动作的各种产品和过程。接下来是一个或多个示例性方法和***。
一种方法包括采用被配置为执行存储在存储器中的计算机可执行指令以执行以下动作的至少一个处理器:接收规定关于与数据存储***相关联的数据储存库的就地数据操纵的数据操纵语句,数据存储***不支持就地数据操纵;将数据操纵记录在容器中;以及向从数据储存库读取的数据应用容器中记录的一个或多个数据操纵。该方法还包括将数据操纵记录在与外部表相关联的容器中,外部表定义存储在数据储存库中的数据的结构并且标识该数据的位置。该方法还包括:将对存储在数据储存库中的数据的子集的引用与在容器中记录的一个或多个引用相比较;并且仅在容器中没有标识出数据的子集的情况下发起读取数据储存库中的数据的子集。该方法还包括:从数据储存库接收数据;将数据与容器中的一个或多个删除数据操纵相比较;并且如果数据经受一个或多个删除操纵之一,则丢弃该数据。该方法还包括根据容器中的***数据操纵来保存要添加到数据储存库的数据。该方法还包括读取保存在容器中的数据并且发起将数据追加到数据储存库中的数据集。该方法还包括:从数据储存库接收数据;读取被保存在容器中的数据;并且将保存在容器中的数据添加到接收的数据。该方法还包括在容器达到满足预定阈值的大小之后,发起对数据储存库的数据操纵的应用。该方法还包括从数据储存库导入数据集,使用记录的一个或多个数据操纵修改数据集,以及将数据集导出到数据储存库。
一种***包括耦合到存储器的处理器,处理器被配置为执行存储在存储器中的以下计算机可执行部件:被配置为在更改日志中记录就地数据操纵的第一部件,就地数据操纵针对不支持就地操纵的数据存储***的数据储存库;以及被配置为向从数据储存库读取的数据应用更改日志中记录的一个或多个操纵的第二部件。该***还包括被配置为在更改日志中引用数据储存库中存储的数据的情况下在数据储存库的读取期间丢弃该数据的第三部件。该***还包括被配置为从数据储存库读取的数据中去除在更改日志中引用的数据的第三部件。***还包括被配置为将要添加到数据储存库的数据保存到第二更改日志的第三部件。该***还包括被配置为从第二更改日志获取数据并且发起将数据追加到数据储存库中的数据集的操作的第四部件。该***还包括被配置为通过在更改日志达到阈值大小之后向数据储存库写入包括更改的新的数据集来发起对数据存储库应用更改的第三部件。阈值大小表示用于在第一数据存储***上报告和应用操纵的成本超过用于向数据储存库应用该操纵的成本的点。
一种其上存储有指令的计算机可读存储介质,这些指令使得至少一个处理器能够在指令执行时执行方法,该方法包括:维护包括一个或多个唯一标识符的更改日志,一个或多个唯一标识符标识如由数据操纵语言语句规定的、要在数据管理***的数据储存库上就地删除的数据,其中数据管理***不支持就地删除;以及在由更改日志标识的数据量达到预定阈值之后,发起更改日志中的标识的数据的删除,其中通过以下方式来实现删除:接收存储在数据储存库上的数据集,从数据集去除所标识的数据,以及向数据储存库写入新的数据集。该方法还包括在数据在更改日志中被标识出的情况下,在数据的读取期间丢弃存储在数据储存库中的数据。该方法还包括从数据储存库获取数据并且随后去除在更改日志中标识的数据。
一种***包括:用于在更改日志中记录针对与不支持就地数据操纵的数据存储***相关联的数据储存库的就地数据操纵的装置;以及用于将更改日志中的一个或多个就地数据操纵应用于从数据储存库读取的数据的装置。用于应用的装置还包括在从数据存储***的读取期间忽略更改日志中指定用于删除的数据。用于应用的装置还包括在从数据存储***读取数据之后忽略更改日志中指定用于删除的数据。用于应用的装置还包括将更改日志中指定用于***的数据添加到从数据存储***读取的数据。该***还包括用于实现将更改日志中的一个或多个就地数据操纵应用于数据储存库的装置。用于实现的装置还包括导出具有向数据储存库应用的操纵的读取的数据的副本。该***还包括用于在记录和应用操纵的成本超过对数据储存库的操纵的成本时触发用于实现的装置的装置。
本公开的各个方面涉及以下技术问题:提供对与不提供对就地数据操纵的支持的数据存储***相关联的数据的就地数据操纵的支持。与解决该问题相关联的技术特征涉及记录操纵并且将操纵应用于从数据储存库获取的数据。记录的操纵可以应用于数据本身,例如在满足与记录操纵相关联的预定阈值之后或者根据调度。然而,在资源利用(例如,存储空间、网络带宽……)和处理时间方面对数据应用操纵可能是昂贵的。不是产生与在不支持就地数据操纵的***上对每个操纵执行就地数据操纵相关联的高成本,相反,通过记录操纵和应用操纵来避免或至少延迟(并批处理)成本。因此,本公开的各个方面表现出关于资源的有效使用的技术效果,包括但不限于增加处理速度、减少处理器负载、存储器保存和减少网络带宽使用。
词语“示例性”或其各种形式在本文中用于表示用作示例、实例或说明。本文中描述为“示例性”的任何方面或设计不一定被解释为比其他方面或设计优选或有利。此外,仅为了清楚和理解的目的提供了示例,而不意图以任何方式限制或约束所要求保护的主题或本公开的相关部分。应当理解,各种范围的无数的附加或替代示例可以被提出,但是为了简洁起见被省略。
如本文中所使用的,术语“部件”和“***”以及其各种形式(例如,部件、***、子***……)旨在指代计算机相关实体,或者是硬件、或者是硬件和软件的组合、或者是软件、或者是执行软件。例如,部件可以是但不限于在处理器上运行的进程、处理器、对象、实例、可执行文件、执行线程、程序和/或计算机。作为说明,在计算机上运行的应用和计算机都可以是部件。一个或多个部件可以驻留在进程和/或执行线程内,并且部件可以被本地化在一个计算机上和/或分布在两个或更多个计算机之间。
在本说明书和所附权利要求书中使用的连词“或”旨在表示包括性的“或”而不是排他性的“或”,除非另有说明或根据上下文很明确。换言之,“X”或“Y”旨在表示“X”和“Y”的任何包括性排列。例如,如果“‘A’采用‘X’”,“‘A’采用‘Y’”,以及“‘A’采用‘X’和‘Y’二者”,则在任何上述实例中,“‘A’采用‘X’或‘Y’”都满足。
此外,在详细描述或权利要求书中使用术语“包括(include)”、“包含(contain)”、“具有(has)”、“有(having)”或其形式的变体,这些术语旨在以与术语“包括(comprising)”当在权利要求中作为过渡词使用时被解释类似的方式是包括性的。
为了提供所要求保护的主题的上下文,图15以及以下讨论旨在提供可以实现主题的各个方面的合适环境的简要的一般描述。然而,合适的环境仅仅是一个示例,而不旨在暗示对使用范围或功能的任何限制。
虽然可以在一个或多个计算机上运行的程序的计算机可执行指令的一般上下文中描述以上公开的***和方法,但是本领域技术人员将认识到,这些方面也可以结合其他程序模块等来实现。通常,程序模块包括执行特定任务和/或实现特定抽象数据类型的例程、程序、部件、数据结构等。此外,本领域技术人员将理解,可以使用各种计算机***配置来实践上述***和方法,包括单处理器、多处理器或多核处理器计算机***、微型计算设备、大型计算机、以及个人计算机、手持计算设备(例如,个人数字助理(PDA)、电话、手表……)、基于微处理器或可编程消费者或工业电子设备等。各个方面也可以在分布式计算环境中实践,在分布式计算环境中,任务由通过通信网络链接的远程处理设备来执行。然而,所要求保护的主题的一些(如果不是全部)方面可以在独立的计算机上实践。在分布式计算环境中,程序模块可以位于本地和远程存储器设备中的一者或两者中。
参考图15,示出了示例通用计算机或计算设备1502(例如,台式计算机、笔记本计算机、平板计算机、手表、服务器、手持设备、可编程消费者或工业电子设备、机顶盒、游戏***、计算节点……)。计算机1502包括一个或多个处理器1520、存储器1530、***总线1540、一个或多个大容量存储设备1550、和一个或多个接口部件1570。***总线1540至少通信地耦合至少上述***组成部分。然而,应当理解,在其最简单的形式中,计算机1502可以包括耦合到存储器1530的一个或多个处理器1520,其执行存储在存储器1530中的各种计算机可执行动作、指令和/或部件。
一个或多个处理器1520可以用通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其他可编程逻辑器件、分立门或晶体管逻辑、分立硬件部件、或者被设计用于执行本文中所描述的功能的其任何组合来实现。通用处理器可以是微处理器,但是在替代方案中,处理器可以是任何处理器、控制器、微控制器或状态机。一个或多个处理器1520还可以被实现为计算设备的组合,例如DSP和微处理器的组合、多个微处理器、多核处理器、一个或多个微处理器结合DSP核、或任何其他这样的配置。在一个实施例中,一个或多个处理器可以是图形处理器。
计算机1502可以包括或以其他方式与各种计算机可读介质交互,以支持计算机1502的控制以实现所要求保护的主题的一个或多个方面。计算机可读介质可以是可以由计算机1502访问的任何可用介质,并且包括易失性和非易失性介质以及可移除和不可移除介质。计算机可读介质可以包括两种不同的和相互排斥的类型,即计算机存储介质和通信介质。
计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据的信息的任何方法或技术实现的易失性和非易失性、可移除和不可移除介质。计算机存储介质包括存储设备,诸如存储器设备(例如,随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)……)、磁存储设备(例如硬盘、软盘、磁盒、磁带……)、光盘(例如,光盘(CD)、数字通用盘(DVD)……)、和固态设备(例如固态驱动器(SSD)、闪存驱动器、(例如卡、棒、密钥驱动器……)……)、或任何其他类似的介质,其与传输或通信相反,存储计算机1502可访问的所需信息。因此,计算机存储介质排除调制数据信号以及相对于通信介质描述的内容。
通信介质实施计算机可读指令、数据结构、程序模块、或者诸如载波或其他传输机制的调制数据信号中的其他数据,并且包括任何信息传递介质。术语“调制数据信号”是指以其特征中的一个或多个以能够在信号中编码信息的方式来设置或更改的信号。作为示例而非限制,通信介质包括诸如有线网络或直接有线连接的有线介质、以及诸如声学、RF、红外和其他无线介质的无线介质。
存储器1530和一个或多个大容量存储设备1550是计算机可读存储介质的示例。取决于计算设备的确切配置和类型,存储器1530可以是易失性的(例如,RAM)、非易失性(例如,ROM、闪存……)、或两者的某种组合。作为示例,基本输入/输出***(BIOS)(包括在诸如启动期间在计算机1502内的元件之间传送信息的基本例程)可以存储在非易失性存储器中,而易失性存储器可以用作外部高速缓存存储器,以支持一个或多个处理器1520等的处理。
一个或多个大容量存储设备1550包括用于相对于存储器1530存储大量数据的可移除/不可移除、易失性/非易失性计算机存储介质。例如,一个或多个大容量存储设备1550包括但不限于一个或多个设备,诸如磁盘或光盘驱动器、软盘驱动器、闪存、固态驱动器或记忆棒。
存储器1530和一个或多个大容量存储设备1550可以包括或存储有操作***1560、一个或多个应用1562、一个或多个程序模块1564、和数据1566。操作***1560用于控制和分配计算机1502的资源。应用1562包括***和应用软件中的一者或两者,并且可以通过程序模块1564和存储在存储器1530和/或一个或多个大容量存储设备1550中的数据1566来利用操作***1560对资源的管理以执行一个或多个动作。因此,应用1562可以根据由此提供的逻辑将通用计算机1502转换成专用机器。
所要求保护的主题的所有或部分可以使用标准编程和/或工程技术来实现,以产生软件、固件、硬件或其任何组合,以控制计算机来实现所公开的功能。作为示例而非限制,互操作性***100或其部分可以是或形成应用1562的一部分,并且包括存储在存储器和/或一个或多个大容量存储设备1550中的一个或多个模块1564和数据1566,模块1564和数据1566的功能在由一个或多个处理器1520执行时可以被实现。
根据一个特定实施例,一个或多个处理器1520可以对应于片上***(SOC)或类似的架构,在单个集成电路基板上包括或换言之集成硬件和软件。这里,一个或多个处理器1520可以包括一个或多个处理器以及至少类似于一个或多个处理器1520和存储器1530的存储器等。传统处理器包括最少量的硬件和软件,并且广泛地依赖于外部硬件和软件。相比之下,处理器的SOC实现更加强大,因为其中嵌入有硬件和软件,其使得能够以最小或不依赖于外部硬件和软件来实现特定功能。例如,互操作性***100和/或相关联的功能可以嵌入在SOC架构中的硬件内。
计算机1502还包括通信地耦合到***总线1540并且支持与计算机1502的交互的一个或多个接口部件1570。作为示例,接口部件1570可以是端口(例如,串行、并行、PCMCIA、USB、FireWire……)或接口卡(例如,声音、视频……)等。在一个示例实现中,接口部件1570可以被实现为用户输入/输出接口,以使得用户能够向计算机1502中输入命令和信息,例如通过一个或多个手势或语音输入,通过一个或多个输入设备(例如,指示设备,诸如鼠标、轨迹球、触控笔、触摸板、键盘、麦克风、操纵杆、游戏垫、卫星天线、扫描仪、相机、其他计算机……)。在另一示例实现中,接口部件1570可以被实施为输出***接口,以向显示器(例如LCD、LED、等离子体……)、扬声器、打印机和/或其他计算机等提供输出。此外,接口部件1570可以被实施为网络接口,以实现与其他计算设备(未示出)的通信,诸如通过有线或无线通信链路。
上面描述的内容包括所要求保护的主题的各个方面的示例。当然,为了描述所要求保护的主题的目的,不可能描述部件或方法的每个可想到的组合,但是本领域普通技术人员可以认识到,所公开的主题的很多另外的组合和排列是可能的。因此,所公开的主题旨在包含落在所附权利要求的精神和范围内的所有这样的更改、修改和变化。
Claims (12)
1.一种方法,包括:
采用被配置为执行被存储在存储器中的计算机可执行指令的至少一个处理器来执行动作:
接收数据操纵语句,所述数据操纵语句规定关于与数据存储***相关联的数据储存库的就地数据操纵,所述数据存储***不支持所述就地数据操纵;
将所述数据操纵记录在容器中;以及
向从所述数据储存库读取的数据应用所述容器中记录的一个或多个数据操纵。
2.根据权利要求1所述的方法,还包括:
将对被存储在所述数据储存库中的数据的子集的引用与所述容器中记录的一个或多个引用相比较;以及
仅在所述数据的子集没有在所述容器中被标识出的情况下发起读取所述数据储存库中的所述数据的所述子集。
3.根据权利要求1所述的方法,还包括:
从所述数据储存库接收数据;
将所述数据与所述容器中的一个或多个删除数据操纵相比较;以及
在所述数据经受所述一个或多个删除操纵中的一个删除操纵的情况下,丢弃所述数据。
4.根据权利要求1所述的方法,还包括根据所述容器中的***数据操纵来保存要被添加到所述数据储存库的数据。
5.根据权利要求4所述的方法,还包括:
从所述数据储存库接收数据;
读取被保存在所述容器中的所述数据;以及
将被保存在所述容器中的所述数据添加到所接收的数据。
6.根据权利要求1所述的方法,还包括在所述容器达到满足预定阈值的大小之后发起对所述数据储存库应用所述数据操纵。
7.一种***,包括:
被耦合到存储器的处理器,所述处理器被配置为执行被存储在所述存储器中的以下计算机可执行部件:
第一部件,被配置为在更改日志中记录就地数据操纵,所述就地数据操纵针对不支持所述就地操纵的数据存储***的数据储存库;以及
第二部件,被配置为向从所述数据储存库读取的数据应用所述更改日志中记录的一个或多个操纵。
8.根据权利要求7所述的***,还包括第三部件,所述第三部件被配置为在被存储在所述数据储存库中的数据在所述更改日志中被引用的情况下,在所述数据储存库的读取期间丢弃所述数据。
9.根据权利要求7所述的***,还包括第三部件,所述第三部件被配置为从所述数据储存库读取的数据中去除在所述更改日志中被引用的数据。
10.根据权利要求7所述的***,还包括第三部件,所述第三部件被配置为将要被添加到所述数据储存库的数据保存到第二更改日志。
11.根据权利要求7所述的***,还包括第三部件,所述第三部件被配置为通过在所述更改日志达到阈值大小之后向所述数据储存库写入包括更改的新的数据集来发起向所述数据存储库应用更改。
12.根据权利要求11所述的***,所述阈值大小表示用于记录和应用操纵的成本超过用于对所述数据储存库应用所述操纵的成本的点。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/556,063 US10409835B2 (en) | 2014-11-28 | 2014-11-28 | Efficient data manipulation support |
US14/556,063 | 2014-11-28 | ||
PCT/US2015/061717 WO2016085774A1 (en) | 2014-11-28 | 2015-11-20 | Efficient data manipulation support |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107004016A true CN107004016A (zh) | 2017-08-01 |
CN107004016B CN107004016B (zh) | 2021-01-22 |
Family
ID=54834922
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201580064944.8A Active CN107004016B (zh) | 2014-11-28 | 2015-11-20 | 有效的数据操纵支持 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10409835B2 (zh) |
EP (1) | EP3224742A1 (zh) |
CN (1) | CN107004016B (zh) |
WO (1) | WO2016085774A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112567357A (zh) * | 2019-04-16 | 2021-03-26 | 斯诺弗雷克公司 | 外部数据表的自动维护 |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10733148B2 (en) * | 2017-03-07 | 2020-08-04 | Salesforce.Com, Inc. | Predicate based data deletion |
US11210181B2 (en) * | 2017-09-29 | 2021-12-28 | Jpmorgan Chase Bank, N.A. | System and method for implementing data manipulation language (DML) on Hadoop |
US11163750B2 (en) | 2018-09-27 | 2021-11-02 | International Business Machines Corporation | Dynamic, transparent manipulation of content and/or namespaces within data storage systems |
US11080257B2 (en) * | 2019-05-13 | 2021-08-03 | Snowflake Inc. | Journaled tables in database systems |
US11762559B2 (en) | 2020-05-15 | 2023-09-19 | International Business Machines Corporation | Write sort management in a multiple storage controller data storage system |
US11580022B2 (en) | 2020-05-15 | 2023-02-14 | International Business Machines Corporation | Write sort management in a multiple storage controller data storage system |
JP2021189569A (ja) * | 2020-05-26 | 2021-12-13 | 富士通株式会社 | データ更新プログラム、データ更新装置及びデータ更新方法 |
Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5819251A (en) * | 1996-02-06 | 1998-10-06 | Oracle Corporation | System and apparatus for storage retrieval and analysis of relational and non-relational data |
US6754666B1 (en) * | 1999-08-19 | 2004-06-22 | A2I, Inc. | Efficient storage and access in a database management system |
CN101021875A (zh) * | 2007-03-22 | 2007-08-22 | 金蝶软件(中国)有限公司 | 面向对象的数据库访问方法及*** |
US20080281877A1 (en) * | 2007-05-10 | 2008-11-13 | Dot Hill Systems Corp. | Backing store re-initialization method and apparatus |
CN101617290A (zh) * | 2005-04-21 | 2009-12-30 | 微软公司 | 操纵数据存储***中的数据 |
US20110258225A1 (en) * | 2010-04-19 | 2011-10-20 | Salesforce.Com, Inc. | Methods and Systems for Performing Transparent Object Migration Across Storage Tiers |
CN102308297A (zh) * | 2011-07-13 | 2012-01-04 | 华为技术有限公司 | 一种数据迁移方法、数据迁移装置及数据迁移*** |
US20120089573A1 (en) * | 2005-04-22 | 2012-04-12 | Microsoft Corporation | Self-Contained Partial Database Backups |
CN102682052A (zh) * | 2010-12-28 | 2012-09-19 | 微软公司 | 过滤数据存储上的查询数据 |
WO2012151532A1 (en) * | 2011-05-05 | 2012-11-08 | Mario Vuksan | Database system and method |
CN102918551A (zh) * | 2010-05-31 | 2013-02-06 | 埃尔斯威尔股份有限公司 | 用于研究分析的***和方法 |
CN102982130A (zh) * | 2012-11-16 | 2013-03-20 | 深圳市融创天下科技股份有限公司 | 一种nosql与rdbms的数据库同步方法和*** |
US20130166508A1 (en) * | 2011-12-21 | 2013-06-27 | Sybase, Inc. | Multiphase Approach To Data Availability |
US20140208293A1 (en) * | 2013-01-22 | 2014-07-24 | Microgen Aptitude Limited | SQL Visualizer |
Family Cites Families (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5457786A (en) * | 1990-07-03 | 1995-10-10 | Texas Instruments Incorporated | Serial data interface with circular buffer |
US6185575B1 (en) * | 1996-09-19 | 2001-02-06 | Powerquest Corporation | In-place disk partition canonization and storage optimization |
US6604096B1 (en) | 1997-10-14 | 2003-08-05 | International Business Machines Corporation | Apparatus and method for locally caching query explain data |
US6460043B1 (en) * | 1998-02-04 | 2002-10-01 | Microsoft Corporation | Method and apparatus for operating on data with a conceptual data manipulation language |
US9239763B2 (en) * | 2012-09-28 | 2016-01-19 | Oracle International Corporation | Container database |
CA2279359C (en) * | 1999-07-30 | 2012-10-23 | Basantkumar John Oommen | A method of generating attribute cardinality maps |
US20050219929A1 (en) * | 2004-03-30 | 2005-10-06 | Navas Julio C | Method and apparatus achieving memory and transmission overhead reductions in a content routing network |
US7457832B2 (en) * | 2004-08-31 | 2008-11-25 | Microsoft Corporation | Verifying dynamically generated operations on a data store |
US7293040B2 (en) * | 2005-02-11 | 2007-11-06 | Sybase, Inc. | System and methodology for database migration between platforms |
JP2006338421A (ja) * | 2005-06-03 | 2006-12-14 | Fujitsu Ltd | リモートデータベース操作プログラム、リモートデータベース操作方法、およびリモートデータベース操作装置 |
US20080071730A1 (en) * | 2006-09-14 | 2008-03-20 | Roland Barcia | Method and Apparatus to Calculate Relational Database Derived Fields During Data Modification |
US7836037B2 (en) * | 2007-10-04 | 2010-11-16 | Sap Ag | Selection of rows and values from indexes with updates |
US20090193039A1 (en) * | 2008-01-28 | 2009-07-30 | Apollo Data Technologies, Llc | Data driven system for data analysis and data mining |
US8583692B2 (en) | 2009-04-30 | 2013-11-12 | Oracle International Corporation | DDL and DML support for hybrid columnar compressed tables |
US9081837B2 (en) * | 2010-10-28 | 2015-07-14 | Microsoft Technology Licensing, Llc | Scoped database connections |
US8676772B2 (en) * | 2011-12-09 | 2014-03-18 | Telduráðgevin Sp/f | Systems and methods for improving database performance |
US9461876B2 (en) * | 2012-08-29 | 2016-10-04 | Loci | System and method for fuzzy concept mapping, voting ontology crowd sourcing, and technology prediction |
US9245003B2 (en) * | 2012-09-28 | 2016-01-26 | Emc Corporation | Method and system for memory efficient, update optimized, transactional full-text index view maintenance |
US20140115436A1 (en) * | 2012-10-22 | 2014-04-24 | Apple Inc. | Annotation migration |
US10496640B2 (en) | 2012-12-19 | 2019-12-03 | Salesforce.Com, Inc. | Querying a not only structured query language (NoSQL) database using structured query language (SQL) commands |
US9286336B2 (en) * | 2013-03-12 | 2016-03-15 | Sap Se | Unified architecture for hybrid database storage using fragments |
US9734173B2 (en) * | 2013-03-12 | 2017-08-15 | Sap Se | Assignment of data temperatures in a fragmented data set |
US9171051B2 (en) * | 2013-07-24 | 2015-10-27 | Oracle International Corporation | Data definition language (DDL) expression annotation |
US9720992B2 (en) * | 2013-11-22 | 2017-08-01 | Sap Se | DML replication with logical log shipping |
US9910860B2 (en) * | 2014-02-06 | 2018-03-06 | International Business Machines Corporation | Split elimination in MapReduce systems |
US20150293946A1 (en) * | 2014-04-09 | 2015-10-15 | City University Of Hong Kong | Cross model datum access with semantic preservation for universal database |
US9892001B2 (en) * | 2014-04-30 | 2018-02-13 | Actian Corporation | Customizing backup and restore of databases |
US9846567B2 (en) * | 2014-06-16 | 2017-12-19 | International Business Machines Corporation | Flash optimized columnar data layout and data access algorithms for big data query engines |
US10067909B2 (en) * | 2014-06-25 | 2018-09-04 | Sap Se | Sparse linear algebra in column-oriented in-memory database |
US9477745B2 (en) * | 2014-07-07 | 2016-10-25 | Sap Se | Predictive cluster analytics optimization |
-
2014
- 2014-11-28 US US14/556,063 patent/US10409835B2/en active Active
-
2015
- 2015-11-20 EP EP15805679.6A patent/EP3224742A1/en not_active Ceased
- 2015-11-20 CN CN201580064944.8A patent/CN107004016B/zh active Active
- 2015-11-20 WO PCT/US2015/061717 patent/WO2016085774A1/en active Application Filing
Patent Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5819251A (en) * | 1996-02-06 | 1998-10-06 | Oracle Corporation | System and apparatus for storage retrieval and analysis of relational and non-relational data |
US6754666B1 (en) * | 1999-08-19 | 2004-06-22 | A2I, Inc. | Efficient storage and access in a database management system |
CN101617290A (zh) * | 2005-04-21 | 2009-12-30 | 微软公司 | 操纵数据存储***中的数据 |
US20120089573A1 (en) * | 2005-04-22 | 2012-04-12 | Microsoft Corporation | Self-Contained Partial Database Backups |
CN101021875A (zh) * | 2007-03-22 | 2007-08-22 | 金蝶软件(中国)有限公司 | 面向对象的数据库访问方法及*** |
US20080281877A1 (en) * | 2007-05-10 | 2008-11-13 | Dot Hill Systems Corp. | Backing store re-initialization method and apparatus |
US20110258225A1 (en) * | 2010-04-19 | 2011-10-20 | Salesforce.Com, Inc. | Methods and Systems for Performing Transparent Object Migration Across Storage Tiers |
CN102918551A (zh) * | 2010-05-31 | 2013-02-06 | 埃尔斯威尔股份有限公司 | 用于研究分析的***和方法 |
CN102682052A (zh) * | 2010-12-28 | 2012-09-19 | 微软公司 | 过滤数据存储上的查询数据 |
WO2012151532A1 (en) * | 2011-05-05 | 2012-11-08 | Mario Vuksan | Database system and method |
CN102308297A (zh) * | 2011-07-13 | 2012-01-04 | 华为技术有限公司 | 一种数据迁移方法、数据迁移装置及数据迁移*** |
US20130166508A1 (en) * | 2011-12-21 | 2013-06-27 | Sybase, Inc. | Multiphase Approach To Data Availability |
CN102982130A (zh) * | 2012-11-16 | 2013-03-20 | 深圳市融创天下科技股份有限公司 | 一种nosql与rdbms的数据库同步方法和*** |
US20140208293A1 (en) * | 2013-01-22 | 2014-07-24 | Microgen Aptitude Limited | SQL Visualizer |
Non-Patent Citations (1)
Title |
---|
赵辉 等: "基于MapReduce模型的范围查询分析优化技术研究", 《计算机研究与发展》 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112567357A (zh) * | 2019-04-16 | 2021-03-26 | 斯诺弗雷克公司 | 外部数据表的自动维护 |
Also Published As
Publication number | Publication date |
---|---|
EP3224742A1 (en) | 2017-10-04 |
WO2016085774A1 (en) | 2016-06-02 |
US20160154866A1 (en) | 2016-06-02 |
CN107004016B (zh) | 2021-01-22 |
US10409835B2 (en) | 2019-09-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107004016A (zh) | 有效的数据操纵支持 | |
US11941017B2 (en) | Event driven extract, transform, load (ETL) processing | |
CN107169083B (zh) | 公安卡口海量车辆数据存储与检索方法及装置、电子设备 | |
El-Seoud et al. | Big Data and Cloud Computing: Trends and Challenges. | |
US20180314721A1 (en) | Incremental out-of-place updates for index structures | |
CA2953959C (en) | Feature processing recipes for machine learning | |
JP5990192B2 (ja) | データストアにおけるクエリーデータのフィルタリング | |
US8527695B2 (en) | System for updating an associative memory | |
CN104781812A (zh) | 策略驱动的数据放置和信息生命周期管理 | |
US10783112B2 (en) | High performance compliance mechanism for structured and unstructured objects in an enterprise | |
CN107710215A (zh) | 在测试设施中的移动计算装置安全的方法和设备 | |
Gupta et al. | Practical Enterprise Data Lake Insights: Handle Data-Driven Challenges in an Enterprise Big Data Lake | |
CN106407355A (zh) | 一种数据存储方法及装置 | |
Erraissi et al. | Meta-modeling of data sources and ingestion big data layers | |
Strengholt | Data Management at scale | |
CN116048817B (zh) | 数据处理控制方法、装置、计算机设备和存储介质 | |
US20180219737A1 (en) | Management of cloud-based shared content using predictive cost modeling | |
EP4334824A2 (en) | Storage engine for hybrid data processing | |
CN115238004A (zh) | 一种去中心化的元宇宙应用监管方法 | |
Kumar et al. | Modern Big Data processing with Hadoop: Expert techniques for architecting end-to-end Big Data solutions to get valuable insights | |
Hbibi et al. | Big data: Framework and issues | |
Bhagattjee | Emergence and taxonomy of big data as a service | |
EP3961411A1 (en) | Method for decentralized accessioning for distributed machine learning and other applications | |
US11829364B2 (en) | Making decisions for placing data in a multi-tenant cache | |
US10031811B1 (en) | Systems and methods for enhancing electronic discovery searches |
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 |