CN113742379A - 使用基于点的关系拆分执行地理空间函数连接 - Google Patents
使用基于点的关系拆分执行地理空间函数连接 Download PDFInfo
- Publication number
- CN113742379A CN113742379A CN202110475438.5A CN202110475438A CN113742379A CN 113742379 A CN113742379 A CN 113742379A CN 202110475438 A CN202110475438 A CN 202110475438A CN 113742379 A CN113742379 A CN 113742379A
- Authority
- CN
- China
- Prior art keywords
- predicate
- query
- geospatial
- interval
- connection
- 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
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/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
- G06F16/24534—Query rewriting; Transformation
- G06F16/24542—Plan optimisation
- G06F16/24544—Join order optimisation
-
- 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/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
-
- 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/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
- G06F16/24534—Query rewriting; Transformation
- G06F16/24537—Query rewriting; Transformation of operators
-
- 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
-
- 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/29—Geographical information 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)
- Computational Linguistics (AREA)
- Operations Research (AREA)
- Remote Sensing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及使用基于点的关系拆分执行地理空间函数连接。数据库平台接收用于对数据库的查询的查询指令,其中,查询指令包括地理空间函数连接,该地理空间函数连接包括地理空间函数谓词。数据库平台通过用具有由地理空间函数谓词隐含的区间连接谓词的单个区间连接替换地理空间函数连接并且还通过在单个区间连接之上插入过滤器以应用地理空间函数谓词来生成查询执行计划。数据库平台执行查询执行计划,并且响应于查询而返回查询结果。
Description
相关申请的交叉引用
本申请是2020年7月28日提交且题为“Performing Geospatial-Function JoinsUsing Point-Based Relation Splitting”的美国专利申请第16/941,236号的延续,美国专利申请第16/941,236号是2020年7月2日提交且题为“Performing Geospatial-FunctionJoins Using Interval Joins”的美国专利申请第16/920,143号的延续,美国专利申请第16/920,143号要求2020年5月27日提交且题为“Systems and Methods for PerformingGeospatial-Function Joins Using Interval Joins”的美国临时专利申请第63/030,872号的权益,所有这三个专利申请以它们的相应全部内容在此并入本文中。
技术领域
本公开内容涉及数据库平台、查询处理和地理空间数据,并且更特别地涉及用于使用区间连接来执行地理空间函数连接的系统和方法。
背景技术
数据库平台被广泛用于计算和通信环境中的数据存储和数据访问。关于架构,数据库平台可以是本地(on-premises)数据库平台、基于网络的数据库平台(例如,基于云的数据库平台)、两者的组合以及/或者包括另一类型的架构。关于数据处理的类型,数据库平台可以实现在线事务处理(OLTP)、在线分析处理(OLAP)、两者的组合和/或另一类型的数据处理。此外,数据库平台可以是或包括关系数据库管理系统(RDBMS)和/或一个或更多个其他类型的数据库管理系统。
在典型的实现方式中,数据库平台包括代表客户帐户维护的一个或更多个数据库。实际上,数据库平台可以包括分别与任何数量的客户帐户相关联地维护的一个或更多个数据库、以及与数据库平台的系统帐户(例如,管理帐户)相关联的一个或更多个数据库、用于管理目的的一个或更多个其他数据库、以及/或者与一个或更多个其他组织相关联地维护和/或用于任何其他目的的一个或更多个其他数据库。数据库平台通常还可以与数据库平台相关联地以及同样与特定数据库和/或特定客户账户相关联地存储元数据。与给定客户帐户相关联的用户和/或执行过程可以经由一个或更多个类型的客户端能够使数据被摄取到数据库中,并且还可以能够操纵数据,添加其他数据,移除数据,运行对数据的查询等。
在数据库平台的实现方式中,给定数据库(例如,针对客户账户维护的数据库)可以作为数据库对象驻留在例如客户账户内,客户账户也可以包括其他数据库对象(例如,用户、角色等)。此外,给定数据库对象本身可以包含一个或更多个数据库对象,例如,模式、表、实例化的视图等。给定表可以被组织为记录(例如,行)的集合,每个记录包括多个属性(例如,列)。在许多实现方式中,数据库数据被物理地存储在多个存储单元中,这些存储单元可以被称为文件、块、微分区和/或被称为一个或更多个其他名称。在许多情况下,数据库平台上的数据库充当在一个或更多个应用服务器上执行的一个或更多个应用的后端。
发明内容
一个示例实施方式采取下述方法的形式,所述方法包括由包括至少一个硬件处理器的数据库平台接收用于对数据库的查询的查询指令。查询指令包括用于包括地理空间函数谓词的地理空间函数连接的指令。该方法还包括基于查询指令来生成查询执行计划。查询执行计划的生成包括:用一个或更多个区间连接替换地理空间函数连接,其中的每个区间连接包括由地理空间函数谓词隐含的一个或更多个谓词。查询执行计划的生成还包括:在查询执行计划中在一个或更多个区间连接之上插入应用地理空间函数谓词的过滤器运算符。该方法还包括至少部分地通过执行查询执行计划来获得查询的查询结果。该方法还包括响应于查询而返回查询结果。
另一实施方式采用下述系统(例如,数据库平台)的形式,所述系统(例如,数据库平台)包括至少一个处理器,并且还包括一个或更多个计算机存储介质,所述一个或更多个计算机存储介质包含能够由至少一个处理器执行以使所述至少一个处理器至少执行在先前段落中列出的操作的指令。又一实施方式采取一个或更多个计算机存储介质的形式,所述一个或更多个计算机存储介质包含能够由(例如,数据库平台的)至少一个处理器执行以使所述至少一个处理器至少执行那些操作的指令。
附图说明
从下面的描述中可以得到更详细的理解,下面的描述是通过示例的方式结合以下附图提出的,其中,在所有附图中,相似的附图标记与相似的元件一起使用。
图1示出了根据至少一个实施方式的示例数据库平台。
图2示出了根据至少一个实施方式的示例方法。
图3示出了根据至少一个实施方式的第一示例查询执行计划。
图4示出了根据至少一个实施方式的描绘了一个示例地理数据对象包含另一示例地理数据对象的第一示例图。
图5示出了根据至少一个实施方式的第二示例查询执行计划。
图6示出了根据至少一个实施方式的描绘两个示例地理数据对象的交叠的第二示例图。
图7示出了根据至少一个实施方式的第三示例查询执行计划。
图8示出了根据至少一个实施方式的描绘隔开一定距离的两个示例地理数据对象的第三示例图。
图9示出了根据至少一个实施方式的第四示例查询执行计划。
图10示出了根据至少一个实施方式的第五示例查询执行计划。
图11示出了根据至少一个实施方式的示例计算设备。
具体实施方式
可以存储在给定数据库中的数据类型中有地理空间数据,其可以用于表示一个或更多个地理特征。地理数据类型可以被定义为表示这样的地理特征,并且地理数据类型的给定实例可以被称为地理数据对象。地理数据对象的各种示例包括点、线、多边形等。点可以表示具有特定经度和纬度的特定地理位置。在本公开内容中被称为线串的线可以表示街道或高速公路作为示例,并且可以由一个或更多个线段的连续集合组成,其中的每个线段可以被定义为在相关坐标系中的位于线段的相应端部处并因此定义线段的两个点之间的最短路径。可以被视为线串的特定情况(即,闭合线串)的多边形可以包括一组点,该组点共同定义地理区域的周界。在一些情况下,多边形可以包括一个或更多个所谓的孔,其中的每个孔都是在较大多边形的边界内但不被考虑为较大多边形的一部分的多边形。在一个示例中,多边形可以表示给定县的陆地,并且该多边形内的一个或更多个孔可以各自对应于位于该县内的湖泊。也可以给出许多其他示例。例如,多边形可以表示罗马市,而该多边形内的孔可以对应于梵蒂冈城。
如以上讨论的,给定的地理数据对象可以表示单个点,或者可以替代地包括形成线串或多边形的多个点。如本文所使用的,除非另外限定或指定,否则术语线串是指非封闭线串。地理数据对象可以包括多个地理数据对象例如点、线串、多边形等的集合。被称为开放地理空间联盟(OGC)的组织发布了与关系数据库中地理空间数据的存储和处理有关的标准。两个这样的标准为:(i)题为“Implementation Standard forGeographic information–Simple feature access–Part 1:Common architecture”的实现标准第OGC 06-103r4号,版本1.2.1(2011年5月28日);以及(ii)题为“Implementation Standard for Geographic information–Simple featureaccess–Part 2:SQL option”的实现标准第OGC 06-104r4号,版本1.2.1(2010年8月4日)。OGC还定义了可扩展标记语言(XML)格式,其被称为用于表达地理特征的地理标记语言(GML)。用于对地理特征进行编码的其他格式包括公知的文本(WKT)、公知的二进制(WKB)和GeoJSON,其是被设计成用于表示简单的地理特征的开放标准格式。GeoJSON基于JavaScript对象表示法(JSON)。
在用于表示地理特征的给定格式中,通常将点表示为坐标系中的一组坐标。在本公开内容中,在二维(2D)几何和地理的上下文中讨论和说明示例,同时理解本文所讨论的原理可扩展到三维(3D)(和更高维)几何和地理。在2D中,点被表示为一对坐标。在笛卡尔域中,点可以由{x,y}对给出,其中x和y各自表示以例如米、千米、英尺、英里等为度量的单位的距其各自轴的线性距离。在所谓的地球域中,点可以由{经度,纬度}对给出。按照惯例,笛卡尔域中的x和y分别对应于地球域中的经度和纬度,并且在本公开内容中遵循该惯例。经度和纬度通常以度来表达,经度的范围在-180度至180度之间,而纬度的范围在-90度至90度之间。此外,在0度经度处的经度线被称为本初子午线,并且在-180度和180度经度处的经度线被称为对向子午线。正经度值是本初子午线以东至对向子午线的值,并且负经度值是本初子午线以西至对向子午线的值。赤道位于0度纬度处,并且北极和南极分别位于90度和-90度纬度处。
在各种不同的实现方式中,地球表面可以被建模为平面、球体或椭圆体,后者也被称为椭球体。在这些不同的地球域模型中,线段的形状是不同的。通常,在这三种类型的地球域模型中,地球的实际形状通常由椭圆体模型最准确地表示,在该椭圆体模型中,(i)赤道比它在球形模型中长,并且(ii)北极和南极两者比它们在球形模型中更靠近地球中心。相反,在这三种类型的地球域模型中,地球的实际形状通常由平面模型最不准确地表示,其中,准确度的缺乏通常在越来越大的距离上变得越来越显著。在本文讨论的一些示例中,通过说明的方式使用地球的球形模型,同时理解可以使用其他模型。在地球域中,如以上所讨论的,通常按照度来表达坐标,而通常使用诸如米、千米、英尺、英里等的度量单位来表达距离。在笛卡尔域中,通常使用这样的度量单位来表达距离和坐标两者。
OGC标准利用商定的语义来定义各种复杂的地理空间函数。这些地理空间函数的示例包括ST_Covers、ST_CoveredBy、ST_Contains、ST_Within、ST_Distance、ST_DWithin、ST_Intersects和ST_Buffer。每个地理空间函数名称的“ST”前缀是“空间类型”的缩写。如本文中通过示例的方式所使用的,这些各种地理空间函数的语义如下,其中“g”表示给定的地理数据对象,其中“g1”和“g2”表示两个不同的地理数据对象,以及其中“d”表示距离。
·ST_Covers(g1,g2)当且仅当g2中的每个点均在g1的周界内或接触g1的周界时返回TRUE,否则返回FALSE;
·ST_CoveredBy(g1,g2)相当于ST_Covers(g2,g1);
·ST_Contains(g1,g2)当且仅当g2中的每个点在g1的周界内(但不接触g1的周界)时返回TRUE,否则返回FALSE;
·ST_Within(g1,g2)相当于ST_Contains(g2,g1);
·ST_Distance(g1,g2)返回g1与g2之间的最短距离;
·ST_Distance(g1,g2)<(或<=)d当且仅当ST_Distance(g1,g2)小于(或小于或等于)d时返回TRUE,否则返回FALSE(如本文所使用的,“<=”相当于“≤”,并且相当于语言“小于或等于”);
·ST_DWithin(g1,g2,d)当且仅当ST_Distance(g1,g2)小于或等于d时返回TRUE,否则返回FALSE;
·ST_Intersects(g1,g2)当且仅当g1和g2具有至少一个公共点时返回TRUE,否则返回FALSE;以及
·ST_Buffer(g,d)返回包含距g小于或等于d(即,至多d)的所有点的地理数据对象。
注意,这些函数中的各个函数的稍后示例用“left.g”和“right.g”中的一个或更多个替换“g”、“g1”和/或“g2”,其中“left”和“right”表示关系(也被称为关系表达),并且其中“.g”用法中的“g”表示可以包含在关联关系的列中的地理数据对象,可以由关联关系的多个列的组合表示,或者可以是对关联关系的一个或更多个列执行的功能的输出,以及其他可能性。下面提供了在这方面的进一步说明和示例。如本文所使用的,关系可以是表、查询执行计划中的另一运算符的输出、内联视图、子查询、物化视图、行流、具有多个行的另一对象等。
关于查询处理,可能发生的是,查询执行计划中的连接运算符(也被称为连接(join))包括连接谓词,该连接谓词本身包含诸如ST_Contains的复杂地理空间函数。在本公开内容中,包括这样的连接谓词的连接被称为地理空间函数连接,并且对应的连接谓词被称为地理空间函数谓词。在数据库平台的一些当前实现方式中,为了执行地理空间函数连接,执行被称为交叉连接的操作,该操作涉及生成连接的左侧关系与右侧关系的所谓的“笛卡尔积”。给定左侧关系与给定右侧关系的笛卡尔积包括下述行,所述行是来自给定左侧关系的一行与来自给定右侧关系的一行的每个可能组合。然后,来自该笛卡尔积笛卡尔积的每一行的两个相关地理数据对象——在本文中被称为地理数据对象连接键(key),一个源自给定的左侧关系而另一个源自给定的右侧关系——被输入到实现复杂地理空间函数的过滤器中,并且将地理空间函数返回TRUE的那些行包括在该过滤器的输出中,而不将地理空间函数返回FALSE的那些行包括在该过滤器的输出中。该方法就处理资源和时间而言在计算上是昂贵的,因此是低效率的。在用于数据库平台的查询处理逻辑的设计中,通常在可能的情况下避免多个关系的笛卡尔积(即,交叉连接)的生成。
例如,一些当前的数据库平台实现方式采用用于以通过替代地使用诸如嵌套的矩形或嵌套的正方形等的专用地理索引来避免使用交叉连接的方式执行两个关系的地理空间函数连接的方法。利用这样的索引的两种方法被称为R树和四叉树。注意,如果使用线性化函数(例如,Z阶、希尔伯特曲线等)组合二维的地理空间点,则R树或四叉树可以被缩减为单维层次。
返回到2D讨论,在R树中,使用所谓的边界矩形(即边界框)表示特定的地理数据对象。在一些实现方式中,每个这样的边界矩形在存储的数据中由两个点(例如,西南(或左下)角和东北(或右上)角)来表示。构造了地理数据对象的嵌套边界矩形的R树。然后,为了确定(或至少初始地近似确定)例如第一地理数据对象(例如,城市)是否ST_Contains第二地理数据对象(例如,点),该点用于“行走”R树,以在R树的中间节点或叶级节点中识别城市的边界矩形。如果城市的边界矩形包括该点(并且当然,如果同时满足一个或更多个其他(如果有的话)连接谓词),则在临时连接结果中包括两个相关行的连接,但是如果城市的边界矩形不包括该点,则在临时连接结果中不包括两个相关行的连接。然后,通过来自地理或数学库的实际的ST_Contains函数过滤该临时连接结果,以将临时连接结果缩减为实际连接结果。
在四叉树中使用类似的方法,其中,树被构造成表示嵌套的正方形,该嵌套的正方形形成地理域的网格覆盖。在四叉树中,这些正方形独立于可能覆盖或可能不覆盖它们的任何地理特征。因此,地理数据对象由各个地理数据对象覆盖的一组叶级正方形来定义。然后,为了确定(或再次,至少初始地近似确定)例如第一地理数据对象(例如,城市)是否ST_Contains第二地理数据对象(例如,点),使用点来行走四叉树以识别包括该点的叶级正方形。如果第一地理数据对象包括所识别的叶级正方形(再次,如果还满足一个或更多个其他(如果有的话)连接谓词),则在临时连接结果中包括两个相关行的连接,否则,在临时连接结果中不包括两个相关行的连接。如以上所述,然后可以通过来自地理或数学库的实际的ST_Contains函数过滤该临时连接结果,以将临时连接结果缩减为实际连接结果。尽管通常比上述交叉连接方法更高效,但是专用地理索引方法(例如,R数和四叉树)由于其架构而在一些类型的数据库平台实现方式中实现是困难的和/或不切实际的。
为了解决现有实现方式的这些和其他缺点,本文公开了用于使用所谓的区间连接(interval join)来执行地理空间函数连接的系统和方法的各种实施方式。如以上提及的,如本文中所使用的,在本公开内容的一些实施方式中,地理空间函数连接是在其一个或更多个连接谓词中包括地理空间函数谓词的连接,该地理空间函数谓词包含诸如以上列出的复杂地理空间函数之一的地理空间函数。此外,在本公开内容的至少一些实施方式中,区间连接是其中至少一个连接谓词涉及值与值的范围的比较或涉及值的两个范围的比较的连接。如本文所使用的,术语“一侧区间连接”是指前者,而术语“两侧区间连接”是指后者。在其他示例上下文中,通常结合时间序列数据的处理以及结合基因组数据的处理来部署区间连接。区间连接是许多数据库平台实现方式的功能的一部分,并且可以以许多种不同的方式实现,其中的一些示例包括使用哈希连接、B树索引遍历、区间树、修改的相等连接(也被称为到同等连接(equijoin))、排序合并连接等。
在左侧关系和右侧关系的示例一侧区间连接中,左侧关系的每一行包括一对值,该对值在本文中称为“L1_min”和“L1_max”并且定义任意变量“L1”的区间或范围。该左侧关系还包括一对值,该对值在本文中称为“L2_min”和“L2_max”并且定义任意变量“L2”的区间或范围。这些可以是任何类型的值。作为示例,L1_min和L1_max(或等同地,L2_min和L2_max)可以分别表示事件的开始和结束时间戳、给定测量值(例如,温度、速度等)的最小值和最大值或共同定义区间或范围的任何两个其他值。在一些情况下,在左侧关系中也存在对应区间或范围中的一个或更多个中间值;在其他情况下,在左侧关系中也不存在对应区间或范围的中间值。此外,在该示例中,右侧关系的每一行包括(i)任意变量“R1”的一个值和(ii)任意变量“R2”的一个值。在该示例中,使用一对区间连接谓词来进行一侧区间连接,该对区间连接谓词针对可能的每对行——一个来自左侧关系并且另一个来自右侧关系——一起评估以下两个陈述是否都为真:(i)由左侧关系的当前行中的L1_min和L1_max(以下分别表达为“left.L1_min”和“left.L1_max”)定义的区间包括来自右侧关系的当前行的R1值(以下表达为“right.R1”);以及(ii)由左侧关系的当前行中的L2_min和L2_max(“left.L2_min”和“left.L2_max”)定义的区间包括来自右侧关系的当前行的R2值(“right.R2”)。在该示例中,当且仅当(i)给定范围的最小值小于或等于给定值并且(ii)给定值小于或等于给定范围的最大值,则认为给定范围包括给定值。两个区间连接谓词可以采取下面所示的形式,这两个区间连接谓词都需要为真,以在连接结果中包括当前左侧关系行和当前右侧关系行的连接行。在该示例以及本文提供的任何其他示例中,可以使用一个或更多个逻辑“AND”运算符将多个连接谓词组合为单个连接谓词。
left.L1_min<=right.R1<=left.L1_max
left.L2_min<=right.R2<=left.L2_max
在左侧关系和右侧关系的示例两侧区间连接中,左侧关系如上所述,并且右侧关系——代替包括单个值R1和R2——与左侧关系类似地包括:(i)定义“R1”的区间或范围的一对值“R1_min”和“R1_max”;以及(ii)定义“R2”的区间或范围的一对值“R2_min”和“R2_max”。如上关于左侧关系所描述的,右侧关系可以包括或可以不包括由R1_min和R1_max定义的区间的一个或更多个中间值和/或由R2_min和R2_max定义的区间的一个或更多个中间值。在该示例中,可以使用一组区间连接谓词来进行两侧区间连接,该组区间连接谓词针对可能的每对行——一个来自左侧关系,并且另一个来自右侧关系——一起评估以下两个陈述是否都为真:(i)由左侧关系的当前行中的L1_min和L1_max定义的区间与由右侧关系的当前行中的R1_min和R1_max定义的区间交叠;以及(ii)由左侧关系的当前行中的L2_min和L2_max定义的区间与由右侧关系的当前行中的R2_min和R2_max定义的区间交叠。在该示例中,如果以下两个陈述都为真,则认为第一范围与第二范围交叠:(i)第一范围的最小值小于或等于第二范围的最大值,以及(ii)第二范围的最小值小于或等于第一范围的最大值。该组(四个)区间连接谓词可以采取以下形式,其中的每个区间连接谓词都需要为真,以在连接结果中包括当前左侧关系行和当前右侧关系行的连接行:
left.L1_min<=right.R1_max
right.R1_min<=left.L1_max
left.L2_min<=right.R2_max
right.R2_min<=left.L2_max
在以上描述的左侧关系和右侧关系的两侧区间连接的另一示例中,可以使用一组区间连接谓词来进行两侧区间连接,该组区间连接谓词针对可能的每对行——一个来自左侧关系,并且另一个来自右侧关系——一起评估以下两个陈述是否都为真:(i)由左侧关系的当前行中的L1_min和L1_max定义的区间包含由右侧关系的当前行中的R1_min和R1_max定义的区间;以及(ii)由左侧关系的当前行中的L2_min和L2_max定义的区间包含由右侧关系的当前行中的R2_min和R2_max定义的区间。在该示例中,如果以下两个陈述都为真,则认为第一范围包含第二范围:(i)第一范围的最小值小于或等于第二范围的最小值,以及(ii)第二范围的最大值小于或等于第一范围的最大值。该组(四个)区间连接谓词可以采取以下形式,其中的每个区间连接谓词都需要为真,以在连接结果中包括当前左侧关系行和当前右侧关系行的连接行:
left.L1_min<=right.R1_min
right.R1_max<=left.L1_max
left.L2_min<=right.R2_min
right.R2_max<=left.L2_max
以上描述的示例一侧区间连接和两个示例性两侧区间连接是本文被称为多维区间连接的示例,其中每个这样的区间连接都在两个或更多个维度上(在这些示例中为在L1/R1和L2/R2维度上)进行评估。仅在单个维度(例如,仅L1/R1维度或仅温度值等)上进行评估的区间连接在本文中被称为一维区间连接。在一些情况下,一维区间连接可能比多维区间连接更易于实现——出于此原因,一些数据库平台支持一维区间连接但不支持多维区间连接。如本领域技术人员将理解的,然后,区间连接的一些示例变型包括一侧一维区间连接、一侧多维区间连接、两侧一维区间连接和两侧多维区间连接。
如以上所提及的,根据本公开内容的实施方式,以包括使用区间连接的方式来进行地理空间函数连接。在一些实施方式中,数据库平台获得(例如,生成)包括地理空间函数连接的查询执行计划,然后修改查询执行计划,以使用一个或更多个区间连接来进行地理空间函数连接。在其他实施方式中,数据库平台接收包括地理空间函数连接的查询,然后生成其中使用一个或更多个区间连接来进行地理空间连接的查询执行计划。此外,根据本公开内容的实施方式,可以存在使用一个或更多个区间连接进行的多于一个地理空间函数连接:为了清楚而非限制,本文主要描述了其中使用一个或更多个区间连接进行一个地理空间函数连接的示例。
在示例实例中,地理空间函数连接包括地理空间函数连接谓词,如上所述,该地理空间函数连接谓词是本文中用于指代包括诸如ST_Contains的复杂地理空间函数、以上列出的其他复杂地理空间函数之一或另一复杂地理空间函数的连接谓词的术语。在该示例中,为简单起见,在示例地理空间函数连接中,地理空间函数谓词是仅有的一个连接谓词,但是也可以有一个或更多个附加的连接谓词。在示例使用情况中,地理空间函数ST_Contains用于识别一组城市中的哪些城市包含特定企业的办公室。在该示例中,左侧关系包括针对各个城市的行,并且左侧关系中的列之一是作为表示由该行表示的城市的周界的多边形的地理数据对象。在该示例中,该列是左侧关系的地理数据对象连接键。此外,在该示例中,右侧关系包括针对特定企业的相应办公室的行,并且右侧关系中的列之一是表示作为点的由该行表示的办公室的地理位置的地理数据对象。在该示例中,该列是右侧关系的地理数据对象连接键。在其他实施方式中,代替包含前述多边形地理数据对象的单个列,左侧关系包含针对该多边形的每个点的x坐标和y坐标的列。类似地,代替包含前述点地理数据对象的单个列,右侧关系可以包含针对该点的x坐标和y坐标的相应列。这是相关领域技术人员技能内的设计选择。
在至少一个实施方式中,为了处理该示例地理空间函数连接,数据库平台使用一个或更多个区间连接进行地理空间函数连接,其中的每个区间连接被配置成实现由特定地理空间函数连接隐含的一组一个或更多个简单谓词(例如,相等谓词、不相等谓词、区间谓词等),在该示例中其包括本身包含复杂地理空间函数ST_Contains的地理空间函数谓词。数据库平台可以至少部分地通过调用可以以例如Java代码实现的一个或更多个函数来进行将地理空间函数连接转换为一个或更多个区间连接(以及可选地一个或更多个其他查询执行计划运算符)。在其他实施方式中,数据库平台可以通过基于特定复杂地理空间函数执行表查找以检索要执行的一组指令以执行地理空间函数连接到一个或更多个区间连接的转换来进行该转换。其他实现方式也是可以的。
在至少一些实施方式中,如本文中进一步描述的,在数据库平台使用多个区间连接进行地理空间函数连接的情况下,数据库平台可以使用合并运算符来生成那些多个区间连接的输出的集合合并,以及在至少一些情况下,还生成一个或更多个其他运算符(例如,交叉连接)的相应输出的集合合并。然后,该集合合并运算符的输出可以被馈送到实现实际的复杂地理空间函数谓词的过滤器中。在数据库平台使用单个区间连接进行地理空间函数连接的至少一些实施方式中,数据库平台可以将该单个区间连接的输出(直接)馈送到这样的过滤器中。
在本示例中,数据库平台使用具有由ST_Contains函数隐含的一组区间连接谓词的单个两侧多维区间连接来实现ST_Contains地理空间函数连接。然后,数据库平台使用该组隐含的区间连接谓词而不是地理空间函数谓词来执行该区间连接。城市可以具有不是像正多边形那样成形的周界。在该示例中,隐含的谓词本质上用于针对给定城市和给定点确定城市周界的边界矩形(例如,最小边界矩形)是否包括给定点。这些谓词被隐含,因为如果给定点包含在给定城市的周界内,则其隐含了给定点也包含在给定城市的周界的更包含性的边界矩形内。在本公开内容的实施方式中,地理空间函数谓词隐含在一个或更多个区间连接中使用的更简单的区间连接谓词。
该区间连接生成临时连接结果,该临时连接结果是至少潜在地过度包含的,因为该临时连接结果包括企业的办公室实际上位于给定城市中的所有组合,并且还可以包括企业的办公室位于给定城市的边界矩形中但实际上不位于城市中的一个或更多个组合。然后,数据库平台可以使用来自地理或数学库的实际ST_Contains谓词来处理该临时结果,以将临时结果缩减为经修改的连接的实际结果。实际结果将是特定企业的办公室实际上包含在给定城市的周界内的组合。本文结合其他复杂的地理空间函数以及结合为一侧的区间连接、为两侧的区间连接、为一维的区间连接、为多维的区间连接以及下述查询执行计划描述了其他示例,在所述查询执行计划中,结合一个或更多个其他运算符(例如,合并运算符、关系复制运算符、交叉连接运算符等)使用一个或更多个区间连接和给定的地理空间函数过滤器。
因此,本公开内容的实施方式涉及通过利用区间连接来高效地连接关于地理空间函数谓词的关系的数据库平台。本文描述的技术可以被例如下述数据库平台利用,在所述数据库平台中区间连接已被本地实现而不管复杂的地理空间函数连接是否也已在或尚未在这些数据库平台中的给定数据库平台中被本地的实现。在本公开内容的实施方式中,当特征由数据库平台的源代码实现而不必在位于数据库平台外部的诸如数学或地理空间库的库——其中该外部库包含由数据库平台的源代码调用以使用特征的一个或更多个函数——(例如,由开发数据库平台的组织之外的组织开发)中链接时,该特征被称为是由数据库平台本地实现的。相反,在本公开内容的实施方式中,当通过在包含由数据库平台的源代码调用以使用特征的一个或更多个函数的外部库中链接来提供特征时,该特征被称为不是由数据库平台本地实现的。
一些数据库平台可能具有本地实现的区间连接,以用于处理例如时间序列和/或基因组数据。不管原因如何,这样的数据库平台可以使用其区间连接的本地实现方式,并且然后通过(i)使用复杂地理空间函数的本地实现方式,如果其具有的话或(ii)在地理或数学库中进行链接以利用由该库提供的复杂地理空间函数来以上文描述的后连接过滤器方式实现复杂地理空间函数。期望本公开内容的实施方式在许多不同类型的数据库平台(包括那些使用无索引数据处理架构的数据库平台)中被证明是有帮助的。
一个示例实施方式采取下述方法的形式,所述方法包括由包括至少一个硬件处理器的数据库平台接收用于对数据库的查询的查询指令。查询指令包括用于包括地理空间函数谓词的地理空间函数连接的指令。该方法还包括基于查询指令来生成查询执行计划。查询执行计划的生成包括:用一个或更多个区间连接替换地理空间函数连接,其中的每个区间连接包括由地理空间函数谓词隐含的一个或更多个谓词。查询执行计划的生成还包括:在查询执行计划中在一个或更多个区间连接之上插入应用地理空间函数谓词的过滤器运算符。该方法还包括至少部分地通过执行查询执行计划来获得查询的查询结果。该方法还包括响应于查询而返回查询结果。
另一实施方式采用下述系统(例如,数据库平台)的形式,所述系统(例如,数据库平台)包括至少一个处理器,并且还包括一个或更多个计算机存储介质,所述一个或更多个计算机存储介质包含能够由至少一个处理器执行以使所述至少一个处理器至少执行在先前段落中列出的操作的指令。又一实施方式采取一个或更多个计算机存储介质的形式,所述一个或更多个计算机存储介质包含能够由(例如,数据库平台的)至少一个处理器执行以使所述至少一个处理器至少执行那些操作的指令。
此外,本文中描述了以上列出的实施方式的许多变型和置换,并且明确指出的是,可以关于任何类型的实施方式来实现在本公开内容中描述的任何变型或置换。例如,结合方法实施方式在本公开内容中主要描述的变型或置换也可以结合系统实施方式(例如,数据库平台实施方式)、计算机存储介质实施方式和/或一种或更多种其他类型的实施方式来实现。此外,尽管本文使用了任何略微不同的语言(例如,过程、方法(method)、方法(methodology)、步骤、操作、函数等)来描述和/或表征这样的实施方式和/或其任何元素或多个元素,但仍存在实施方式的这种灵活性和交叉适用性。
图1示出了根据至少一个实施方式的示例数据库平台100。在各种实施方式中,数据库平台100可以用于执行本文公开的一种或更多种方法(包括处理等)中的一个或更多个操作。如图1所示,数据库平台100包括数据库管理器102,数据库管理器102包括资源管理器104和执行平台106。数据库管理器102不必是定义的物理设备,尽管它可以是定义的物理设备,但通常在本文中被用作简写,以指代资源管理器104和执行平台106的组合。执行平台106可以包括一个或更多个执行节点(例如,服务器、工作者、线程等)。执行平台106中的执行节点的分组可以被称为虚拟仓库,并且在一些实施方式中,这样的虚拟仓库能够动态地调整大小以满足变化的需求。图1中还描绘了客户端108、元数据存储装置110和存储平台112。
在一些实施方式中,图1所描绘的所有实体都是本文中被称为数据库平台100的一部分,但是并非所有实施方式都是这样的情况。例如,在至少一个实施方式中,数据库平台100不包括客户端108。作为另一示例,在一些实施方式中,数据库平台100不包括存储平台112。在本文中主要描述的实施方式中,数据库平台100包括数据库管理器102(包括资源管理器104和执行平台106)、元数据存储装置110和存储平台112,并且不包括客户端108。其他排列也是可以的。
资源管理器104可以被配置成管理许多不同类型的任务,包括从例如一个或更多个客户端如客户端108接收的外部数据库任务(例如,查询请求)。资源管理器104可以耦接至任何数量的客户端,尽管在图1中通过示例的方式描绘了仅一个客户端。客户端108可以促进最终用户进行数据存储和/或数据检索请求,促进系统管理员管理数据库平台100等。在各种不同的实施方式中,客户端108可以是网络接口客户端、桌面应用、移动app、Java数据库连接(JDBC)客户端、开放数据库连接(ODBC)客户端和/或另一类型的客户端。如图1所示,客户端108可以与数据库管理器102(例如,资源管理器104)通信。
如图1中所描绘的,资源管理器104耦接至元数据存储装置110,在实施方式中,该元数据存储装置110与整个数据库平台100上存储的数据相关联。在一些实施方式中,元数据存储装置110包括在远程数据存储系统(例如,存储平台112)中存储的数据以及(例如,资源管理器104和/或执行平台106的)本地高速缓存中可用的数据的汇总。此外,元数据存储110可以包括关于如何在远程数据存储系统中以及在本地高速缓存中组织数据的信息。在其他用途之中,元数据存储装置110可以允许系统和服务确定(关于例如给定查询)是否需要处理给定数量的数据,而不从存储设备加载或访问实际数据。在各种实施方式中,反映数据库、表、列、物化视图和/或记录或记录的部分的一个或更多个其他集合的内容的元数据可以在本文中被称为表达属性。
资源管理器104还耦接至执行平台106,执行平台106可以提供执行各种数据存储和/或数据检索任务的多个计算资源。在至少一个实施方式中,资源管理器104包括相对于数据库平台100是全局的代码层(例如,Java代码),其中该代码层包括用于执行诸如对执行平台106中的一个或更多个执行节点的编译查询和代理请求的功能的指令。在一些实施方式中,存在执行平台106的一个或更多个实例,其用于执行客户端任务例如数据库查询以及/或者内部数据库任务如更新元数据、集群表、生成物化视图等。在一些这样的实施方式中,还存在用于特征开发和/或测试的执行平台106的一个或更多个实例,并且执行平台106的每个这样的实例可以与执行平台106的每个客户端实例分开,使得例如客户端作业处理不受功能开发任务的影响。其他布置也是可以的。
执行平台106可以耦接至多个数据存储设备,例如作为示例存储平台112的一部分的数据存储设备114、数据存储设备116和数据存储设备118中的一个或更多个。尽管在图1中示出了三个数据存储设备,但是存储平台112可以包括任何数量的数据存储设备(并且执行平台106可以能够与其通信)。在一些实施方式中,数据存储设备114、数据存储设备116和数据存储设备118中的一个或更多个是位于一个或更多个地理位置的基于云的存储设备。例如,数据存储设备114、数据存储设备116和数据存储设备118中的一个或更多个可以是公共云基础设施或私有云基础设施的一部分。数据存储设备114、数据存储设备116和数据存储设备118中的一个或更多个可以是或包括硬盘驱动器(HDD)、固态驱动器(SSD)、存储集群和/或任何其他数据存储技术。在一些示例中,存储平台112包括分布式文件系统(例如,Hadoop分布式文件系统(HDFS))、对象存储系统等。
如图1所示,存储平台112——包括数据存储设备114、数据存储设备116和数据存储设备118——通常和与执行平台106、资源管理器104和数据库管理器102相关联的计算资源解耦。在实施方式中,多个数据库平台部署中的每一个包括各自的存储平台112,所述各自的存储平台112具有其自己各自的多个数据存储设备。该架构支持基于改变的数据存储和/或数据检索需要以及用户和系统访问数据库平台100的改变的需要对数据库平台100的动态改变。对动态改变的支持允许数据库平台100响应于对数据库平台100内的系统和部件的改变的需求而快速缩放。计算资源与数据存储设备的解耦支持大量数据的存储,而不需要对应的大量计算资源。类似地,该解耦支持在特定时间利用的计算资源的显著增加,而不需要数据存储资源的对应增加。
作为一般事项,在至少一些实施方式中,可以使用诸如基于云的数据仓库、基于网络的数据仓库或简单地为数据仓库的术语来指代数据库平台100。基于云的数据仓库是一种类型的基于网络的数据系统,其可以用于数据分析和报告并且包括来自一个或更多个不同源的集成数据的中央存储库。基于云的数据仓库通常是OLAP数据库,其可以存储当前数据和历史数据,这些数据可以用于基于存储在企业的数据库内的数据创建对企业的分析报告。为此,数据仓库通常提供业务智能工具、将数据提取、变换和加载到存储库中的工具以及管理和检索元数据的工具等。还存在其他类型的基于云的数据仓库例如OLTP数据库以及以多种类型的数据库系统的特性操作的数据系统。
在图1中和在任何其他附图中描绘的部件、设备、系统等中的任何一个或更多个可以被实现为具有与下面结合图11描述的示例计算设备1100类似的架构的一个或更多个计算设备。此外,在任何附图中描绘的实体中的两个或更多个可以组合为单个部件,并且替代地,在任何附图中被描绘为单个部件的任何实体可以跨多个部件分布(例如,跨位于多个地理位置处的多个系统、平台等分布)。此外,在特定实施方式中,可以经由可以利用任何通信协议和任何类型的通信介质的一个或更多个数据通信网络来实现在图1中以及在任何其他附图中描绘的通信链路中的任何一个或更多个。在一些实施方式中,数据通信网络是彼此耦合的两个或更多个数据通信网络(或子网络)的组合。在各种不同的实施方式中,使用任何类型的通信介质和任何通信协议来实现这些通信链路。
图2示出了根据至少一个实施方式的示例方法200。在各种不同的实施方式中,方法200可以由适当地配备、编程和配置成执行本文描述的操作的任何计算和通信设备或这样的设备的系统来执行。在一些实施方式中,方法200的全部或部分由数据库管理器102执行,这可以涉及由资源管理器104执行的方法200的一个或更多个方面、由执行平台106执行的方法200的一个或更多个方面以及/或者由数据库管理器102的一个或更多个其他功能组件执行的方法200的一个或更多个方面。通过示例而非限制的方式,以下将方法200描述为由数据库管理器102执行。
在操作202处,数据库管理器102接收用于对数据库的查询的查询指令,其中可以针对与客户端108相关联的客户帐户维护该数据库。所接收到的查询指令包括用于地理空间函数连接的指令,该地理空间函数连接包括地理空间函数谓词。该地理空间函数谓词可以包括一个或更多个地理空间函数,例如本文所述的那些地理空间函数和/或一个或更多个其他地理空间函数。实际上,在一些实施方式中,地理空间函数谓词是来自一组一个或更多个地理空间函数谓词的地理空间函数谓词。在至少一个这样的实施方式中,该组一个或更多个地理空间函数谓词包括覆盖谓词(包括例如地理空间函数ST_Covers)、被覆盖谓词(包括例如地理空间函数ST_CoveredBy)、包含谓词(包括例如地理空间函数ST_Contains)、内谓词(包括例如地理空间函数ST_Within)、距离内谓词(包括例如地理空间函数ST_DWithin或形式为ST_Distance<(或<=)指定距离的地理空间表达式)和相交谓词(包括例如地理空间函数ST_Intersects)中的一个或更多个。在至少一个实施方式中,一组一个或更多个地理空间函数谓词包括覆盖谓词、被覆盖谓词、包含谓词、内谓词、距离内谓词和相交谓词。也可以定义这些谓词的组。作为一个示例,ST_Covers、ST_CoveredBy、ST_Contains和ST_Within在本文中有时被称为包含性地理空间函数谓词。
在操作204处,数据库管理器102基于在操作202处接收到的查询指令来生成查询执行计划。数据库管理器102可以从客户端108或从另一源接收查询指令。在一些情况下,该其他源可以在数据库平台100内。在一些实施方式中,查询指令是或至少包括查询本身,并且操作204涉及基于查询来生成查询执行计划。在其他实施方式中,查询指令是或至少包括初步查询执行计划:在接收到初步查询执行计划之后,数据库管理器102至少部分地通过修改初步查询执行计划来执行操作204。在其中所接收到的查询指令是或至少包括查询本身的其他实施方式中,数据库管理器102基于接收到的查询来生成初步查询执行计划。在这样的示例中,初步查询执行计划可以包括地理空间函数谓词,并且基于查询指令生成查询执行计划可以包括修改初步查询执行计划。如图2所示,在一些实施方式中,操作204包括操作206和操作208,这两个操作将在下面描述。
在操作206处,数据库管理器102用一个或更多个区间连接替换地理空间函数连接,其中的每个区间连接包括一个或更多个隐含的谓词,其中每个这样的隐含的谓词由被一个或更多个区间连接替换的地理空间函数谓词隐含。以上描述了由复杂地理空间函数隐含的较简单谓词的一个示例,并且下面进一步描述这样的示例。通常,数据库管理器102用其替换地理空间函数连接(例如,地理空间函数连接的地理空间谓词)的一个或更多个区间连接可以是恰好一个区间连接、恰好两个区间连接、更高数量的区间连接、一个或更多个一侧区间连接、一个或更多个两侧区间连接、一个或更多个一维区间连接和/或一个或更多个多维区间连接。
如以上所提及的并且如下面更全面地讨论的,在本公开内容的实施方式中,一个或更多个隐含的谓词本身都不是复杂的地理空间函数。而是,在一些实施方式中,一个或更多个隐含的谓词是简单得多的谓词,例如相等谓词、不相等谓词、区间谓词等。与执行作为连接谓词的复杂地理空间函数相比,在处理资源和时间方面,作为连接谓词执行这些隐含的谓词显著地更便宜。此外,与交叉连接相比,并且特别是与交叉连接之后将复杂的地理空间函数谓词应用到交叉连接的结果相比,在处理资源和时间方面,执行这样的更简单的谓词的连接显著地更便宜。如本文中所使用的,“区间谓词”可以是简单谓词,例如低<=x<=高,而“区间连接谓词”是本文中用于指代区间连接中使用的任何谓词的术语。因此,区间连接谓词可以包括相等谓词(例如,x1=x2)、不相等谓词(例如,x1<=x2)、区间谓词(left.x_min<=right.x<=left.x_max)等。
在操作208处,数据库管理器102在查询执行计划中在来自操作206的一个或更多个区间连接之上插入过滤器运算符。过滤器运算符应用在操作206处由一个或更多个区间连接替换的地理空间函数谓词。例如,如果地理空间函数谓词包括函数ST_Contains,则过滤器运算符将ST_Contains应用于其输入,下面将描述其示例。在一些情况下,过滤器运算符的输入是区间连接(例如,多维两侧区间连接)的输出。在其他情况下,过滤器运算符的输入是合并运算符的输出,下面将描述一些这样的示例。过滤器运算符也可以具有其他输入。在至少一个实施方式中,过滤器运算符的输出是针对其在操作202处接收到查询指令的查询的结果(即最终结果)。在其他情况下,过滤器运算符的输出是到查询执行计划的一个或更多个其他部分的输入。
在操作210处,数据库管理器102通过执行在操作204处(至少使用操作206和操作208)生成的查询执行计划来获得查询结果。此外,如下面更全面地描述的,在一个或更多个实施方式中,在操作210处对查询执行计划的执行包括数据库管理器102对在操作206中在查询执行计划中插入的一个或更多个区间连接的左侧关系和右侧关系中的一者或两者进行预处理。作为一个示例,在一些实施方式中,给定关系的预处理包括通过诸如(来自例如数学或地理空间库的)ST_Buffer的地理空间函数处理:(i)该关系的每一行的地理数据对象连接键“g”;以及(ii)距离“d”,以针对每一行生成包含“g”的所有点以及与“g”相距不超过距离“d”的所有点的经修改的地理数据对象“g'”,其中,然后可以在一个或更多个区间连接的一个或更多个区间连接谓词中使用g'。下面描述在执行一个或更多个区间连接之前预处理一个或更多个关系的另外的示例。
在操作212处,数据库管理器102响应于查询而返回所获得的查询结果。作为示例,由数据库管理器102对操作212的执行可以包括或采取将查询结果发送至请求实体(例如,客户端108)、将查询结果存储在一个或更多个数据存储位置中、将查询结果传送至一个或更多个其他实体以及/或者将查询结果输出至一个或更多个用户接口的形式。
一些辅助函数的定义
在讨论根据本公开内容的一些示例实施方式生成的一些查询执行计划(或其部分)之前,定义在本文中被称为辅助函数的某些函数是有用的,并且稍后的得出基于这些函数。以下辅助函数将一个或更多个地理空间数据对象(由g、g1、g2等表示)(以及在一些情况下被表示为d的距离)作为输入并且按其以下定义返回数字、布尔值、地理数据对象或另一类型的返回值。注意,地理数据对象在本文中有时可互换地被称为地理空间对象,有时也被称为地理空间数据对象。下面定义的辅助函数在下面在下文部分中用于将地理空间函数谓词重写为区间连接谓词。
与以上描述类似地,如以下所使用的,辅助函数XMIN(g)计算并且返回地理空间对象g中的一个或更多个点的全部点之中的最小x坐标。XMIN(g)然后可以将结果舍入到由数据库平台100指定的精度水平。在一个实施方式中,该精度水平由小数点之前多达三位且小数点之后多达七位的固定数字给出。可以替代地使用许多其他精度水平,并且可以在给定实施方式内的不同情况下使用不同精度水平。以类似于XMIN(g)的方式,辅助函数XMAX(g)返回g的最大x坐标,YMIN(g)返回g的最小y坐标,并且YMAX(g)返回g的最大y坐标。在此处以及在本公开内容的其他地方,“x”值可以是经度值,并且“y”值可以是纬度值。此外,在至少一个实施方式中,这些辅助函数由OGC标准中的函数ST_XMIN、ST_XMAX、ST_YMIN和ST_YMAX来实现。
如果点对象是g,则辅助函数X(g)返回点对象的x坐标,即,如果考虑到给定实施方式的舍入约定,则g可以在x维度中由单个数字表示。特别地,在实施方式中,如果XMIN(g)等于XMAX(g),则X(g)返回XMIN(g),否则返回空值(例如,SQLNULL)。辅助函数Y(g)可以加以必要的修改类似地实现。在各种不同的实施方式中,X(g)和Y(g)返回点、包含至少一个点的地理空间集合和/或在根据实现方式的舍入约定进行舍入之后被减少到单个点的任何其他地理空间对象(例如,线串、多边形等)的非空值。
辅助函数ISPOINT(g)被定义成使得如果g在舍入之后(或在不需要进行舍入的情况下)映射到单个点,则辅助函数ISPOINT(g)返回布尔TRUE。特别是,ISPOINT(g)在本文中按如下定义:
ISPOINT(g):=(XMIN(g)=XMAX(g))AND(YMIN(g)=YMAX(g))
此外,本文中有时使用NOT ISPOINT(g)来在逻辑上反转ISPOINT(g)的结果。因此,如果ISPOINT(g)返回TRUE,则NOT ISPOINT(g)返回FALSE,反之亦然。
地球域的调整
本部分描述了与笛卡尔域相比针对地球域——无论是平面、球形、椭圆体还是其他形式——的调整,在各种不同的实施方式中进行所述调整中的一个或更多个调整。本部分从以下前提开始:如果在地理空间对象g中包含点p,则p的坐标必须包含在g的坐标范围内——即,当且仅当满足以下关系时,p包含在g中:
((XMIN(g)<=X(p)<=XMAX(g))AND(YMIN(g)<=Y(p)<=YMAX(g)))
(如以上所提及的,在本公开内容中,在地球域中,x值用作经度值的简写,并且y值用作纬度值的简写。)并且,虽然下面的描述是在以上谓词的上下文中提供的,但下面描述的调整可以在一个或更多个其他谓词中进行,这些谓词包括一个或更多个辅助函数,例如XMIN(g)、XMAX(g)、YMIN(g)、YMAX(g)等。
以下题为“隐含的谓词——多维区间连接”的部分利用以上谓词来得出一些示例地理空间函数的隐含的谓词。尽管在笛卡尔域中不进行调整的情况下上述谓词为真,但是至少在横跨对向子午线的地理空间对象的上下文中,在地球域中在一些实施方式中进行对以上谓词的调整。作为示例,大致从斐济(大约位于(经度,纬度)为(176,-20)处)前进到美属萨摩亚(大约位于(-172,-14)处)的线段包含点(-178,-17),但使用这些数字,以上谓词将为假。即,在示例线段实际上包括示例点的情况下,以上谓词将指示示例线段不包括示例点。特别地,该谓词的前半部分将为假,导致整个谓词为假,因为暂时抛开经度,整数-178不在整数-172与176(包括-172和176)之间(尽管-178度经度在-172度经度与176度经度之间最短的地球路径上在-172度经度与176度经度之间)。为了解决此问题,在至少一些实施方式中,进行以下调整:
如果地理空间对象g横跨对向子午线,则进行以下设置:
XMIN(g)=-180度经度
XMAX(g)=180度经度
该调整明显地会引起以上谓词的前半部分为真,因为每个可能的经度都在-180度经度与180度经度之间(包括-180度经度和180度经度)。
关于如何确定给定的地理空间对象g是否横跨对向子午线,在至少一个实施方式中,对向子午线被表示为线串,并且诸如ST_Intersects的标准地理空间库函数用于确定g是否ST_Intersects(即,交叉)表示对向子午线的线串。作为第一示例,对向子午线可以表示为两个线段:从点(180,90)(即,地理北极)延伸到点(180,0)(即,对向子午线与赤道的交点)的第一个线段以及从点(180,0)延伸到点(180,-90)(即地理南极)的第二个线段。作为第二示例,对向子午线可以表示为三个线段:从点(180,90)延伸到点(180,30)的第一个线段、从点(180,30)延伸到点(180,-30)的第二个线段以及从点(180,-30)延伸到点(180,-90)的第三个线段。也可以使用其他组的线串。在这些点中的任何一个或更多个中,可以将-180度经度替换为180度经度,因为它们是等效的。
在至少一个实施方式中,作为执行给定区间连接之前的预处理步骤,数据库管理器102使用诸如以下的函数来测试来自左侧关系的地理数据对象连接键以及右侧关系的地理数据对象连接键:
ST_Intersects(g,Antimeridian_linestring)
其中:
·g是给定的地理数据对象连接键;以及
·Antimeridian_linestring可以通过以上列出的示例方式之一或另一等效方式来定义。
按照约定,在至少一些实施方式中,没有地理空间对象横跨极点。如果数据集不遵守该约定,则数据库管理器102可以在y维度上进行等效调整(和预处理操作),即,对于确定横跨极点中的一个或两个的地理数据对象,进行以下调整:
YMIN(g)=-90度
YMAX(g)=90度
隐含的谓词——多维区间连接
如以上所提及的,在至少一个实施方式中,代替使用上述地理空间函数谓词中的一个或更多个(例如,ST_Contains),数据库管理器102使用一个或更多个更简单且通常更宽泛的区间连接谓词,所述区间连接谓词由一个或更多个地理空间函数谓词隐含并且是使用上述辅助函数中的一个或更多个以及在一些情况下使用地理空间函数ST_Buffer对关系进行的一些预处理得出的。在一些实施方式中,一个或更多个区间连接谓词呈可以使用两侧多维区间连接来处理的形式。此外,如果连接的一侧或两侧的地理空间数据对象连接键是点,则可以进一步简化这些谓词中的一些谓词,使得可以使用一侧多维区间连接来处理这些谓词。在可能的情况下,相对于两侧区间连接,使用一侧区间连接至少由于两个原因可以是有益的。首先,一些数据库系统支持一侧区间连接,但不支持两侧区间连接。其次,即使当支持一侧区间连接和两侧区间连接两者时,一侧区间连接也可以更高效。
此外,通常情况是,大的地理空间数据集合主要由点组成。作为示例,智能电话和车辆跟踪可以生成大量的点数据。另一方面,线串、多边形等的集合(表示例如道路、县、州等)通常是固定的,并且数量上更受限制。因此,针对对象对点和/或点对点区间连接得出更简单的谓词可以在至少处理资源和处理时间方面带来显着的好处。
包含性谓词
地理空间函数谓词ST_Contains、ST_Covers、ST_Within和ST_CoveredBy在本文中有时被称为包含性谓词或地理空间函数包含性谓词。根据至少一个实施方式,如果地理空间对象g1包含地理空间对象g2,则g2中的任何点都不能具有超出g1的坐标范围的坐标。因此,在至少一个实施方式中,ST_Contains(g1,g2)和ST_Covers(g1,g2)都隐含:
(XMIN(g1)<=XMIN(g2))AND
(XMAX(g2)<=XMAX(g1))AND
(YMIN(g1)<=YMIN(g2))AND
(YMAX(g2)<=YMAX(g1))
可以使用两侧多维区间连接来处理该隐含的谓词。在该谓词和本文列出的其他谓词中,除非另有说明,否则x和y可以指代笛卡尔坐标或分别指代地球域中的经度和纬度。如果g2是点,则以上谓词可以进一步简化为:
(XMIN(g1)<=X(g2)<=XMAX(g1))AND
(YMIN(g1)<=Y(g2)<=YMAX(g1))
可以使用一侧多维区间连接来处理该隐含的谓词。ST_Within(g1,g2)和ST_CoveredBy(g1,g2)可以使用相同的谓词进行处理,但g1和g2相反。
相交谓词
地理空间函数谓词ST_Intersects在本文中有时被称为相交谓词或地理空间函数相交谓词。根据至少一个实施方式,如果地理空间对象g1与地理空间对象g2相交,则它们的坐标区间必须交叠。因此,ST_Intersects(g1,g2)隐含:
(XMIN(g1)<=XMAX(g2))AND
(XMIN(g2)<=XMAX(g1))AND
(YMIN(g1)<=YMAX(g2))AND
(YMIN(g2)<=YMAX(g1))
可以使用两侧多维区间连接来处理该谓词。
在定义ST_Intersects(g1,g2)使得当且仅当g1和g2具有至少一个共同点时ST_Intersects(g1,g2)返回TRUE否则返回FALSE的实施方式中,以上谓词可以以下适应的方式使用,即,例如,如果g1是点(并且g2是线串或多边形),则XMIN(g1)和XMAX(g1)两者将由X(g1)替换,并且YMIN(g1)和YMAX(g1)两者将由Y(g1)替换。在该示例中,可以使用具有以下经稍微重新布置和简化的谓词的一侧多维区间连接:
(XMIN(g2)<=X(g1)<=XMAX(g2))AND
(YMIN(g2)<=Y(g1)<=YMAX(g2))
相反,如果g2是点并且g1是线串或多边形,则XMIN(g2)和XMAX(g2)两者可以由X(g2)替换,YMIN(g2)和YMAX(g2)两者可以由Y(g2)替换,并且可以使用具有以下谓词的一侧多维区间连接:
(XMIN(g1)<=X(g2)<=XMAX(g1))AND
(YMIN(g1)<=Y(g2)<=YMAX(g1))
如果g1和g2两者都是点,则可以将该谓词简化为相等连接:
(X(g1)=X(g2))AND
(Y(g1)=Y(g2))
在一些实施方式中,当g1和g2中的一个或另一个是点时,不使用ST_Intersects。在一些实施方式中,当g1和g2两者都是点时,不使用ST_Intersects。
距离内谓词
在至少一个实施方式中,地理空间函数谓词ST_DWithin、(ST_Distance<d)和(ST_Distance<=d)被称为距离内谓词或地理空间函数距离内谓词。为了得出ST_DWithin(g1,g2,d)或等效的(ST_Distance(g1,g2)<=d)的简化谓词,第一步可以是将对象g1'标识为执行函数ST_Buffer(g1,d)的结果(或将对象g2'标识为执行函数ST_Buffer(g2,d)的结果)。在下面结合距离内谓词列出的区间连接谓词中,对象g1'(或在对象g2的情况下的g2'等)在相关区间连接谓词中被表达为“ST_Buffer(g1,d)”(或“ST_Buffer(g2,d)”等)。
此外,注意,等效的距离内谓词ST_DWithin(g1,g2,d)和(ST_DISTANCE(g1,g2)<=d)两者隐含:
ST_Intersects(ST_Buffer(g1,d),g2)
如以上在题为“相交谓词”的子部分中所建立的,谓词ST_Intersects(ST_Buffer(g1,d),g2)隐含以下相交谓词:
(XMIN(ST_Buffer(g1,d))<=XMAX(g2))AND
(XMIN(g2)<=XMAX(ST_Buffer(g1,d)))AND
(YMIN(ST_Buffer(g1,d))<=YMAX(g2))AND
(YMIN(g2)<=YMAX(ST_Buffer(g1,d)))
可以使用两侧多维区间连接来处理该谓词。此外,如果g2是点,则可以将该谓词简化为:
(XMIN(ST_Buffer(g1,d))<=X(g2)<=XMAX(ST_Buffer(g1,d)))AND
(YMIN(ST_Buffer(g1,d))<=Y(g2)<=YMAX(ST_Buffer(g1,d)))
可以使用一侧多维区间连接来处理该谓词。
此外,还应注意,等效距离内谓词ST_DWithin(g1,g2,d)和(ST_DISTANCE(g1,g2)<=d)两者也隐含:
ST_Intersects(g1,ST_Buffer(g2,d))
与上面的得出类似,该谓词隐含以下相交谓词:
(XMIN(g1)<=XMAX(ST_Buffer(g2,d)))AND
(XMIN(ST_Buffer(g2,d))<=XMAX(g1))AND
(YMIN(g1)<=YMAX(ST_Buffer(g2,d)))AND
(YMIN(ST_Buffer(g2,d))<=YMAX(g1))
可以使用两侧多维区间连接来处理该谓词。此外,如果g1是点,则该谓词简化为:
(XMIN(ST_Buffer(g2,d))<=X(g1)<=XMAX(ST_Buffer(g2,d)))AND
(YMIN(ST_Buffer(g2,d))<=Y(g1)<=YMAX(ST_Buffer(g2,d)))
可以使用一侧多维区间连接来处理该谓词。
隐含的谓词——一维区间连接
以上在题为“隐含的谓词——多维区间连接”的部分中得出的隐含的谓词涉及两个维度(例如,x和y、经度和纬度等)中的区间。可以使用一侧多维区间连接或两侧多维区间连接来处理那些隐含的谓词。然而,如以上所提及的,一些数据库平台实现方式支持一维区间连接,但不支持多维区间连接。在这样的上下文中,在本公开内容的一些实施方式中,可以使用诸如Z阶、希尔伯特曲线或将成对值(例如(x,y))映射到一维空间的任何其他线性化函数的所谓的线性化函数来“平坦化”以上在多维上下文中得出的隐含的谓词。此外,注意,在一些实施方式中,诸如本文所述的线性化方法可以用于支持一维区间连接和多维区间连接的数据库平台实现方式中。
通常,线性化函数L将任何二维点(x,y)映射到单个数L(x,y)。至少一些实施方式涉及使用线性化函数L,对于该线性化函数L,可以得出地理空间对象g中的所有点之中的L(x,y)的最小值和最大值,即:
LMIN(g)=min(L(x,y))
LMAX(g)=max(L(x,y))
其中,(x,y)在g中。如果g是点,则可以定义以下:
L(g)=L(X(g),Y(g))
在利用Z阶线性化函数的至少一些实施方式中,可以计算以下:
LMIN(g)=L(XMIN(g),YMIN(g))
LMAX(g)=L(XMAX(g),YMAX(g))
在利用其他类型的线性化函数(例如希尔伯特曲线)的上下文中,本领域技术人员熟悉LMIN(g)和LMAX(g)的计算。特别是关于该函数,本领域技术人员将理解,可以通过沿希尔伯特曲线将地理空间对象g分解为正方形,然后计算那些正方形的LMIN和LMAX,来计算可以沿希尔伯特曲线的LMIN和LMAX的计算。这样的函数在公知的数学和地理空间库中可用。
包含性谓词
在包含性谓词的上下文中,注意,如果地理空间对象g1包含地理空间对象g2,则g2中的任何点(x,y)都不能具有超出g1中的点(x,y)的L(x,y)的范围的L(x,y)。因此:
ST_Contains(g1,g2)、
ST_Covers(g1,g2)、
ST_Within(g2,g1)以及
ST_CoveredBy(g2,g1)
各自均独立地隐含:
(LMIN(g1)<=LMIN(g2))AND
(LMAX(g2)<=LMAX(g1))
可以使用两侧一维区间连接来处理该谓词。此外,如果对象g2是点,则可以将该谓词简化为:
LMIN(g1)<=L(g2)<=LMAX(g1)
可以通过一侧一维区间连接来处理该谓词。
相交谓词
在相交谓词的上下文中,注意,如果地理空间对象g1与地理空间对象g2相交,则它们的线性化坐标范围必须交叠。因此,ST_Intersects(g1,g2)隐含:
(LMIN(g1)<=LMAX(g2))AND
(LMIN(g2)<=LMAX(g1))
可以使用两侧一维区间连接来处理该谓词。在定义ST_Intersects(g1,g2)使得当且仅当g1和g2具有至少一个共同点时ST_Intersects(g1,g2)返回TRUE否则返回FALSE的实施方式中,以上谓词可以以下适应的方式使用,即,例如,如果g1是点(并且g2是线串或多边形),则LMIN(g1)和LMAX(g1)两者将由L(g1)替换,从而得到以下稍微重新布置和简化的谓词:
LMIN(g2)<=L(g1)<=LMAX(g2)
可以通过一侧一维区间连接来处理该谓词。相反,如果g2是点,并且g1是线串或多边形,则LMIN(g2)和LMAX(g2)两者可以由L(g2)替换,从而得到以下谓词:
LMIN(g1)<=L(g2)<=LMAX(g1)
该谓词也可以通过一侧一维区间连接来处理。
距离内谓词
在距离内谓词的上下文中,在一些实施方式中(例如,在执行一个或更多个区间连接之前的预处理操作中)使用地理空间函数ST_Buffers以从距离内谓词得出隐含的相交谓词。如以上所述,注意,等效距离内谓词ST_DWithin(g1,g2,d)和(ST_DISTANCE(g1,g2)<=d)两者隐含:
ST_Intersects(ST_Buffer(g1,d),g2)
按照以上子部分,其隐含:
(LMIN(ST_BUFFER(g1,d))<=LMAX(g2))AND
(LMIN(g2)<=LMAX(ST_BUFFER(g1,d)))
可以使用两侧一维区间连接来处理该谓词。此外,如果g2是点,则可以将该谓词简化为:
LMIN(ST_BUFFER(g1,d))<=L(g2)<=LMAX(ST_BUFFER(g1,d))
可以通过一侧一维区间连接来处理该谓词。
此外,同样如以上那样注意,等效的距离内谓词ST_DWithin(g1,g2,d)和(ST_DISTANCE(g1,g2)<=d)两者也隐含:
ST_Intersects(g1,ST_Buffer(g2,d))
按照以上子部分,其隐含:
(LMIN(g1)<=LMAX(ST_BUFFER(g2,d)))AND
(LMIN(ST_BUFFER(g2,d))<=LMAX(g1))
可以使用两侧一维区间连接来处理该谓词。此外,如果g1是点,则可以将该谓词简化为:
LMIN(ST_BUFFER(g2,d))<=L(g1)<=LMAX(ST_BUFFER(g2,d))
可以通过一侧一维区间连接来处理该谓词。
查询执行计划
基于以上在题为“隐含的谓词——多维区间连接”和“隐含的谓词——一维区间连接”的部分中得出的简化的隐含的谓词,本公开内容的这部分根据一些实施方式提供用于使用一个或更多个区间连接来实现复杂的地理空间函数连接的示例查询执行计划(或其部分)。应当理解,下面描述的每个查询执行计划可以是整个查询执行计划,或者可以代替地表示更广泛的查询执行计划的一部分。下面描述的查询执行计划使用以下示例运算符。其他运算符可以用于各种不同的实现方式中。如以下所述,“行集合”或“多个行集合”用作示例关系。
·Filter
ο该运算符将谓词应用于传入的行,并且拒绝谓词为假的那些行,仅输出谓词为真的那些行。
·Replicate
ο该运算符将传入行集合复制一次或更多次,使得可以由两个或更多个下游运算符使用该传入的行集合。
·CrossJoin:
ο该运算符生成两个传入行集合之间的笛卡尔积。
·OneSidedIntervalJoin
ο该运算符实现一侧区间连接。
·TwoSidedIntervalJoin
ο该运算符实现两侧区间连接。
·Union
ο该运算符输出其两个或更多个传入行集合中的全部的并集。在一些实施方式中,该运算符还执行去重(即,从其输出馈送中消除重复的行)。在其他实施方式中,该运算符不执行去重。
对于涉及谓词的运算符(即,Filter、OneSidedIntervalJoin和TwoSidedIntervalJoin),这些谓词以本公开内容的文本来呈现。在一些情况下,在可行的情况下,这些谓词也被呈现在图中。
通过与本公开内容的实施方式比较的方式,如上所述,如果数据库平台未实现用于提高进行地理空间连接的效率的支持,则这样的数据库平台可以简单地将左侧关系和右侧关系馈送到交叉连接中,然后通过应用给定复杂地理空间函数(例如ST_Contains等)的过滤器来过滤左侧关系与右侧关系的所得到的笛卡尔积。如以下所述的示例查询执行计划中所示,由于简化的谓词是从复杂的地理空间函数谓词隐含的,但不等同于复杂的地理空间函数谓词(除了极少数情况例如矩形地理特征之外),因此实际的地理空间函数谓词在至少一个实施方式中,仍然在所实现的一个或更多个区间连接下游的过滤器运算符中被评估。然而,在本公开内容的实施方式中,该过滤器运算符通常将处理比传入的关系的笛卡尔积中少得多的行,从而节省了处理资源和时间。
在支持两侧区间连接的数据库平台中
在数据库平台100支持两侧区间连接的实施方式中,数据库管理器102可以使用一个或更多个两侧区间连接来实现地理空间函数连接。在一些实施方式中,数据库管理器102使用以上得出的一个或更多个简化的隐含的谓词来这样做。在数据库平台100支持多维两侧区间连接的实施方式中,数据库管理器102可以使用来自题为“隐含的谓词——多维区间连接”的以上部分的一个或更多个简化的隐含的谓词。在数据库平台100支持一维两侧区间连接的实施方式中,数据库管理器102可以使用来自题为“隐含的谓词——一维区间连接”的以上部分的一个或更多个简化的隐含的谓词。
包含性谓词
图3示出了根据至少一个实施方式的示例查询执行计划300。在实施方式中,数据库管理器102接收(在方法200的操作202处)下面的查询指令或者接收包括下面的查询指令:
SELECT expressions
FROM left
JOIN right
ON ST_Contains(left.g,right.g)
其中,在本文所述的该示例和其他示例中,“expressions”(如果存在)可以是任何一个或更多个列或其他合适的表达式。此外,在下面描述的该示例和其他示例中,“left”和“right”是各自具有名为“g”的包含地理数据对象的列的关系。(在其他实施方式中,“g”可以是存储在各个列中的多个(x,y)点的表示,或者是返回地理空间对象的函数的输出等,但是为了简化和清楚说明,在该示例和以下示例中,左关系和右关系两者具有名为“g”的包含地理空间对象的相应列。)此外,在该示例和本文讨论的其他示例中,可以存在一个或更多个其他地理空间函数谓词,并且/或者也可以存在一个或更多个其他连接谓词,然而再次为简单起见,所呈现的示例涉及作为地理空间函数谓词的单个连接谓词。
响应于接收到这些查询指令,数据库管理器102生成(在操作204处)示例查询执行计划300,包括利用两侧区间连接306替换(在操作206处)地理空间函数谓词“ST_Contains(left.g,right.g)”,并且还包括在两侧区间连接306之上插入(在操作208处)地理空间谓词过滤器314。按照约定,在如本文所述的查询执行计划中,“之下”、“上游”通常是指“之前执行”,而“之上”和“下游”通常是指“之后执行”。这是相关技术中的约定,并且在此处遵循该约定。
如在图3中可以看到的,左侧关系302在区间连接输入308处被输入到两侧区间连接306中,并且右侧关系304在区间连接输入310处被输入到两侧区间连接306中。两侧区间连接306实现以下隐含的谓词:
(XMIN(left.g)<=XMIN(right.g))AND
(XMAX(right.g)<=XMAX(left.g))AND
(YMIN(left.g)<=YMIN(right.g))AND
(YMAX(right.g)<=YMAX(left.g))
两侧区间连接306输出区间连接输出312,该区间连接输出312仅包括行的那些组合,一个来自左侧关系302,并且另一个来自右侧关系304,对于这些行,隐含的谓词为真。区间连接输出312是地理空间谓词过滤器314的输入,该地理空间谓词过滤器314应用实际的ST_Contains(left.g,right.g)函数以将区间连接输出312缩减为对于其实际地理空间函数谓词为真的那些行。这些行组成地理空间谓词过滤器314的地理空间谓词过滤器输出316。在该示例中以及在一个或更多个其他示例中,数据库管理器102可以已在地理空间和/或数学库中进行链接,以实现复杂的地理空间函数,例如ST_Contains。在一些示例中,数据库平台100具有这样的地理空间函数的本地实现方式。在至少一个实施方式中,当地理空间函数谓词不是ST_Contains(left.g,right.g)而是ST_Covers(left.g,right.g)、ST_Within(right.g,left.g)或ST_CoveredBy(right.g,left.g)时,使用相同的查询执行计划300。
注意,图3示出了用于多维两侧区间连接的隐含谓词。在使用一维两侧区间连接的实施方式中,该谓词可以从以上“隐含的谓词——一维区间连接”部分的“包含性谓词”子部分中选择。查询执行计划的架构将与结合图3中的查询执行计划300所示的架构相同。
图4示出了根据至少一个实施方式的描绘一个示例地理数据对象(多边形A 406)包含另一示例地理数据对象(多边形B 408)示例的图400。因此,图400在具有x轴402和y轴404的笛卡尔域中示出将满足在图3中示出并在上面结合图3所论述的隐含的谓词和地理空间函数谓词两者的两个示例地理数据对象。例如,对于行的给定组合,一个来自左侧关系302而另一个来自右侧关系304,多边形A406可以是包含可以由多边形B408表示的right.g对象的left.g对象的示例。如在图4中可视地理解的,多边形A406和多边形B 408满足以下隐含的谓词:
(XMIN(left.g)<=XMIN(right.g))AND
(XMAX(right.g)<=XMAX(left.g))AND
(YMIN(left.g)<=YMIN(right.g))AND
(YMAX(right.g)<=YMAX(left.g))
其中,以下所有为真:
·XMIN_A 410<=XMIN_B 418
·XMAX_B 420<=XMAX_A 412
·YMIN_A 414<=YMIN_B 422
·YMAX_B 424<=YMAX_A 416
相交谓词
图5示出了根据至少一个实施方式的示例查询执行计划500。在实施方式中,数据库管理器102接收(在操作202处)下面的查询指令或者接收包括下面的查询指令:
SELECT expressions
FROM left
JOIN right
ON ST_Intersects(left.g,right.g)
响应于接收到这些查询指令,数据库管理器102生成(在操作204处)示例查询执行计划500,包括用两侧区间连接506替换(在操作206处)地理空间函数谓词“ST_Interfects(left.g,right.g)”。并且还包括在两侧区间连接506之上插入(在操作208处)地理空间谓词过滤器514。如图5中可以看出,左侧关系502在区间连接输入508处被输入到两侧区间连接506中,并且右侧关系504在区间连接输入510处被输入到两侧区间连接506中。两侧区间连接506实现以下隐含的谓词:
(XMIN(left.g)<=XMAX(right.g))AND
(XMIN(right.g)<=XMAX(left.g))AND
(YMIN(left.g)<=YMAX(right.g))AND
(YMIN(right.g)<=YMAX(left.g))
两侧区间连接506输出区间连接输出512,区间连接输出512仅包括行的那些组合,一个来自左侧关系502,并且另一个来自右侧关系504,对于这些行,隐含的谓词为真。区间连接输出512是地理空间谓词过滤器514的输入,地理空间谓词过滤器514应用实际的ST_Intersects(left.g,right.g)函数,以将区间连接输出512缩减为对于其实际地理空间函数谓词为真的那些行。这些行组成地理空间谓词过滤器514的地理空间谓词过滤器输出516。
注意,图5示出了用于多维两侧区间连接的隐含的谓词。在使用一维两侧区间连接的实施方式中,该谓词可以从上面的“隐含的谓词——一维区间连接”部分的“相交谓词”子部分中选择。查询执行计划的架构将与结合图5中的查询执行计划500示出的架构相同。
图6示出了根据至少一个实施方式的描绘两个示例地理数据对象(多边形A 606和多边形B 608)的交叠的图形600。因此,图形600在具有x轴602和y轴604的笛卡尔域中示出将满足上面关于图5所示出和所论述的隐含的谓词和地理空间函数谓词两者的两个示例地理数据对象。例如,对于行(一个行来自左侧关系502而另一个行来自右侧关系504)的给定组合,多边形A606可以是与可以由多边形B 608表示的right.g对象相交的left.g对象的示例。如在图6中可视地理解的,多边形A 606和多边形B 608满足以下隐含的谓词:
(XMIN(left.g)<=XMAX(right.g))AND
(XMIN(right.g)<=XMAX(left.g))AND
(YMIN(left.g)<=YMAX(right.g))AND
(YMIN(right.g)<=YMAX(left.g))
其中,以下所有为真:
·XMIN_A 610<=XMAX_B 620
·XMIN_B 618<=XMAX_A612
·YMIN_A 614<=YMAX_B 624
·YMIN_B 622<=YMAX_A 616
距离内谓词
图7示出了根据至少一个实施方式的示例查询执行计划700。在实施方式中,数据库管理器102接收(在操作202处)作为以下内容的查询指令或者包括以下内容的查询指令:
SELECT expressions
FROM left
JOIN right
ON ST_DWithin(left.g,right.g,d)
[或者,等效地,ON(ST_Distance(left.g,right.g)<=d)]
响应于接收这些查询指令,数据库管理器102生成(在操作204处)示例查询执行计划700,包括用两侧区间连接706替换(在操作206处)地理空间函数谓词“ST_DWithin(left.g,right.g,d)”,并且还包括在两侧区间连接706之上插入(在操作208处)地理空间谓词过滤器714。如图7中可以看出,左侧关系702在区间连接输入708处被输入到两侧区间连接706中,并且右侧关系704在区间连接输入710处被输入到两侧区间连接706中。两侧区间连接706实现以下隐含的谓词:
(XMIN(ST_Buffer(left.g,d))<=XMAX(right.g))AND
(XMIN(right.g)<=XMAX(ST_Buffer(left.g,d)))AND
(YMIN(ST_Buffer(left.g,d))<=YMAX(right.g))AND
(YMIN(right.g)<=YMAX(ST_Buffer(left.g,d)))
如上所述,上述谓词中出现的“ST_Buffer(left.g,d)”并不意味着在执行两侧区间连接706时执行ST_Buffer函数;确切地说,在至少一个实施方式中,在执行两侧区间连接706之前,执行ST_Buffer函数作为预处理步骤。在同一谓词的其他表达式中,“ST_Buffer(left.g,d)”可以替换为对可以由该函数返回的诸如“left.g'”的地理空间对象的引用。两侧区间连接706输出区间连接输出712,区间连接输出712仅包括行(一个行来自左侧关系702而另一个行来自右侧关系704)的那些组合,对于这些行,该隐含的谓词为真。区间连接输出712是地理空间谓词过滤器714的输入,地理空间谓词过滤器714应用实际的ST_DWithin(left.g,right.g,d)函数,以将区间连接输出712缩减为实际地理空间函数谓词为真的那些行。这些行组成地理空间谓词过滤器714的地理空间谓词过滤器输出716。
要注意的是,图7示出了用于多维两侧区间连接的隐含的谓词。在使用一维两侧区间连接的实施方式中,可以从上面的“隐含的谓词-一维区间连接”部分的“距离内谓词”子部分中选择谓词。查询执行计划的架构将与关于图7中的查询执行计划700示出的架构相同。
图8示出了根据至少一个实施方式的描绘隔开距离d 826的两个示例地理数据对象(多边形A 806和多边形B 808)的图形800。因此,图形800在具有x轴802和y轴804的笛卡尔域中示出将满足上面关于图7所示出和所论述的隐含的谓词和地理空间函数谓词两者的两个示例地理数据对象。例如,对于行(一个行来自左侧关系702而另一个行来自右侧关系704)的给定组合,多边形A 806可以是与可以由多边形B 808表示的right.g对象隔开距离d826的left.g对象的示例。尽管在图8中未明确地在视觉上描绘,但是可以理解,多边形A806和多边形B 808满足以下隐含的谓词:
(XMIN(ST_Buffer(left.g,d))<=XMAX(right.g))AND
(XMIN(right.g)<=XMAX(ST_Buffer(left.g,d)))AND
(YMIN(ST_Buffer(left.g,d))<=YMAX(right.g))AND
(YMIN(right.g)<=YMAX(ST_Buffer(left.g,d)))
这意味着以下所有为真:
·XMIN(ST_Buffer(polygon A 806,distance d 826))<=XMAX_B 820
·XMIN_B 818<=XMAX(ST_Buffer(polygon A 806,distance d 826))
·YMIN(ST_Buffer(polygon A 806,distance d 826))<=YMAX_B 824
·YMIN_B 822<=YMAX(ST_Buffer(polygon A 806,distance d 826))同样在图8中描绘但是在上述谓词中未明确提及的是XMIN_A 810、XMAX_A 812、YMIN_A 814和YMAX_A816。
在支持一侧区间连接的数据库平台中
在数据库平台100支持一侧区间连接(并且可以支持或可以不支持两侧区间连接)的实施方式中,可以生成包括一个或更多个一侧区间连接的若干查询执行计划以进行地理空间函数连接。下面描述一些这样的示例实施方式。
包含性(containment)谓词
图9示出了根据至少一个实施方式的示例查询执行计划900。在实施方式中,数据库管理器102接收(在操作202处)作为以下内容的查询指令或者包括以下内容的查询指令:
SELECT expressions
FROM left
JOIN right
ON ST_Contains(left.g,right.g)
响应于接收这些查询指令,数据库管理器102生成(在操作204处)示例查询执行计划900,包括用一侧区间连接914替换(在操作206处)地理空间函数谓词“ST_Contains(left.g,right.g)”,并且还包括在一侧区间连接914之上插入(在操作208处)地理空间谓词过滤器942。在一些实施方式中,如图3的查询执行计划300、图5的查询执行计划500和图7的查询执行计划700的情况那样,在查询执行计划中在给定区间连接之上直接插入地理空间谓词过滤器。然而,在其他实施方式中,例如在图9的查询执行计划900中所示,在一侧区间连接914之上插入地理空间谓词过滤器(在这种情况下是地理空间谓词过滤器942),但是其中至少一个运算符(在这种情况下是合并运算符938)在区间连接与地理空间谓词过滤器之间。
如图9中可以看出,左侧关系902作为复制运算符输入906被输入到复制运算符908中,该复制运算符908生成左侧关系902的一个附加副本,并且将第一左侧关系实例910输出至一侧区间连接914,并且还将第二左侧关系实例912输出至交叉连接918。在实施方式中,第一左侧关系实例910和第二左侧关系实例912两者包括左侧关系902的每一行。相对于右侧关系904以及由复制运算符924从作为右侧关系904的复制运算符输入922生成的第一右侧关系实例926和第二右侧关系实例928也是这种情况。
第一右侧关系实例926被输入到ISPOINT过滤器930中,该过滤器930将上面定义的函数ISPOINT应用于第一右侧关系实例926的每一行中的地理空间对象right.g,丢弃ISPOINT(right.g)返回FALSE(假)的那些行——这指示该特定right.g不是点(或者在给定数据库平台100的该特定实现方式的舍入设置的情况下至少没有舍入到点),并且转发第一右侧关系实例926的ISPOINT(right.g)返回TRUE(真)的那些行——这指示该特定right.g是点(或者在给定数据库平台100的该特定实现方式的舍入设置的情况下至少舍入到点)。ISPOINT过滤器930的输出被表示为ISPOINT过滤器输出934,由一侧区间连接914接收该ISPOINT过滤器输出934作为输入。
第二右侧关系实例928被输入到NOT-ISPOINT过滤器932中,该过滤器932也将函数ISPOINT应用于第一右侧关系实例926的每一行中的地理空间对象right.g,但是然后对由ISPOINT函数返回的布尔值进行求反(即,翻转)。因此,NOT-ISPOINT过滤器932丢弃ISPOINT(right.g)返回TRUE的第二右侧关系实例928的那些行,并且转发ISPOINT(right.g)返回FALSE的第二右侧关系实例928的那些行。NOT-ISPOINT过滤器932的输出被表示为NOT-ISPOINT过滤器输出936,由交叉连接918接收该NOT-ISPOINT过滤器输出936作为输入。
如所述的,一侧区间连接914接收两个输入:第一左侧关系实例910和ISPOINT过滤器输出934。因此,实质上,一侧区间连接914接收整个左侧关系902并接收右侧关系904的子集,其中在该子集中,right.g是点(在至少一个实施方式中根据函数ISPOINT)。在其他实施方式中,可以由给定函数基于指示例如特定地理空间对象是否具有类型POINT(点)、类型LINESTRING(线串)、类型POLYGON(多边形)等的类型值来确定给定right.g为点。这是ISPOINT的另一实现方式或补充实现方式——即,在至少一个实施方式中,如果(i)上述ISPOINT的实现方式返回TRUE(即,g舍入到点或不需要舍入到点)和/或(ii)g具有设置为POINT的类型属性,则函数ISPOINT(g)返回TRUE。然后,如图9所示,一侧区间连接914将以下隐含的谓词应用于这两个输入:
(XMIN(left.g)<=X(right.g))AND
(X(right.g)<=XMAX(left.g))AND
(YMIN(left.g)<=Y(right.g))AND
(Y(right.g)<=YMAX(left.g))
满足该谓词的成对的行——一个源自左侧关系902,另一个源自右侧关系904——被作为区间连接输出916转发至合并运算符938。还要注意的是,一侧区间连接914可以等效地应用下面的简化谓词,而不是上面的谓词:
(XMIN(left.g)<=X(right.g)<=XMAX(left.g))AND
(YMIN(left.g)<=Y(right.g)<=YMAX(left.g))
如图9所示,交叉连接918将第二左侧关系实例912和NOT_ISPOINT过滤器输出936作为其两个输入。因此,实质上,交叉连接918接收左侧关系902的全部和右侧关系904的子集,其中在该子集中right.g被确定为不是点。交叉连接918生成这两个输入的笛卡尔积,并且将该笛卡尔积作为交叉连接输出920输出至合并运算符938。
因此,在此实施方式中,由一侧区间连接914进行的比较在左侧关系902中的地理空间对象(点、线串、多边形等)与右侧关系904中的点之间进行。然后,右侧关系904中的非点与左侧关系902交叉连接,并且区间连接输出916和交叉连接输出920两者输入至合并运算符938,合并运算符938保持来自其两个输入的所有行,并且输出该结果作为合并运算符输出940。然后,合并运算符输出940输入到地理空间谓词过滤器942中,地理空间谓词过滤器942实现实际的ST_Contains地理空间函数,并且输出其应用该函数的结果作为地理空间谓词过滤器输出944。相比于仅进行左侧关系902与右侧关系904两者的全部的交叉连接并且然后应用地理空间谓词过滤器942,查询执行计划900中所示的方法更高效。其更高效的程度可以取决于右侧关系904中的点与非点的比率。
在其他实施方式中,针对诸如ST_Covers(left.g,right.g)、ST_CoveredBy(right.g,left.g)以及ST_Within(right.g,left.g)的地理空间函数谓词,可以使用查询执行计划900。这些有时在本文中称为包含性谓词、地理空间函数包含性谓词等。要注意的是,图9示出了用于多维一侧区间连接的隐含的谓词。在使用一维一侧区间连接的实施方式中,可以从上面的“隐含的谓词-一维区间连接”部分的“包含性谓词”子部分中选择谓词。查询执行计划的架构将与关于图9中的查询执行计划900示出的架构相同。
距离内谓词
图10示出了根据至少一个实施方式的示例查询执行计划1000。在实施方式中,数据库管理器102接收(在操作202处)作为以下内容的查询指令或者包括以下内容的查询指令:
SELECT expressions
FROM left
JOIN right
ON ST_DWithin(left.g,right.g,d)
[或者,等效地,ON(ST_Distance(left.g,right.g)<=d)]
响应于接收这些查询指令,数据库管理器102生成(在操作204处)示例查询执行计划1000,包括用一侧区间连接1012和一侧区间连接1020两者替换(在操作206处)地理空间函数谓词“ST_DWithin(left.g,right.g,d)”,并且还包括在一侧区间连接1012和一侧区间连接1020之上(尽管不是直接在之上)插入(在操作208处)地理空间谓词过滤器1062。
在图10所描绘的实施方式中,左侧关系1002作为复制运算符输入1006被输入至复制运算符1008,该复制运算符1008生成左侧关系1002的两个附加副本。复制运算符1008(i)将第一左侧关系实例1010输出至一侧区间连接1012,(ii)将第二左侧关系实例1014输出至ISPOINT过滤器1016,ISPOINT过滤器1016又仅将ISPOINT(left.g)返回TRUE的那些行作为ISPOINT过滤器输出1018输出至一侧区间连接1020;以及(iii)将第三左侧关系实例1022输出至NOT-ISPOINT过滤器1024,NOT-ISPOINT过滤器1024仅将ISPOINT(left.g)返回FALSE的那些行作为NOT-ISPOINT过滤器输出1026输出至交叉连接1028。
在右侧,右侧关系1004作为复制运算符输入1030被输入至复制运算符1032,该复制运算符1032生成右侧关系1004的一个附加副本。复制运算符1032(i)将第一右侧关系实例1034输出至ISPOINT过滤器1036,ISPOINT过滤器1036又仅将ISPOINT(right.g)返回TRUE的那些行作为ISPOINT过滤器输出1038输出至一侧区间连接1012,以及(ii)将第二右侧关系实例1040输出至NOT-ISPOINT过滤器1042,NOT-ISPOINT过滤器1042又仅将ISPOINT(right.g)返回FALSE的那些行作为NOT-ISPOINT过滤器输出1044输出至复制运算符1046。复制运算符1046生成NOT-ISPOINT过滤器输出1044的一个附加副本,并且(i)将第一右侧关系非点实例1048输出至一侧区间连接1020,以及(ii)将第二右侧关系非点实例1050输出至交叉连接1028。
如所描述,一侧区间连接1012接收第一左侧关系实例1010和ISPOINT过滤器输出1038作为其两个输入。因此,一侧区间连接1012将左侧关系1002中的诸如点、线串和多边形的地理空间对象与右侧关系1004中的点进行比较。在至少一个实施方式中,一侧区间连接1012将以下隐含的谓词应用于这两个输入,其中第一左侧关系实例1010的地理数据对象连接键表示为left.g并且ISPOINT过滤器输出1038的地理数据对象连接键表示为right.g:
(XMIN(ST_Buffer(left.g,d))<=X(right.g))AND
(X(right.g)<=XMAX(ST_Buffer(left.g,d)))AND
(YMIN(ST_Buffer(left.g,d))<=Y(right.g))AND
(Y(right.g)<=YMAX(ST_Buffer(left.g,d)))
一侧区间连接1012仅输出满足此隐含的谓词的行(一个来自第一左侧关系实例1010而另一个来自ISPOINT过滤器输出1038)的组合。该输出在这里被称为第一区间连接输出1052,它是输入至合并运算符1058的三个输入之一。还要注意的是,一侧区间连接1012可以等效地应用以下简化谓词,而不是上面的谓词:
(XMIN(ST_Buffer(left.g,d))<=X(right.g)<=XMAX(ST_Buffer(left.g,d)))
AND
(YMIN(ST_Buffer(left.g,d))<=Y(right.g)<=YMAX(ST_Buffer(left.g,d)))
如所描述,一侧区间连接1020接收ISPOINT过滤器输出1018和第一右侧关系非点实例1048作为其两个输入。因此,一侧区间连接1020将来自左侧关系1002的点与来自右侧关系1004的诸如线串和多边形的地理空间对象进行比较。在至少一个实施方式中,一侧区间连接1020将以下隐含的谓词应用于这两个输入,其中ISPOINT过滤器输出1018的地理数据对象连接键被表示为left.g并且其中第一右侧关系非点实例1048的地理数据对象连接键被表示为right.g:
(XMIN(ST_Buffer(right.g,d))<=X(left.g))AND
(X(left.g)<=XMAX(ST_Buffer(right.g,d)))AND
(YMIN(ST_Buffer(right.g,d))<=Y(left.g))AND
(Y(left.g)<=YMAX(ST_Buffer(right.g,d)))
一侧区间连接1020仅输出满足此隐含的谓词的行(一个来自ISPOINT过滤器输出1018而另一个来自第一右侧关系非点实例1048)的组合。该输出在这里被称为第二区间连接输出1054,它也是输入至合并运算符1058的三个输入之一。还要注意的是,一侧区间连接1020可以等效地应用以下简化谓词,而不是上面的谓词:
(XMIN(ST_Buffer(right.g,d))<=X(left.g)<=XMAX(ST_Buffer(right.g,d)))
AND
(YMIN(ST_Buffer(right.g,d))<=Y(left.g)<=YMAX(ST_Buffer(right.g,d)))
交叉连接1028将NOT-ISPOINT过滤器输出1026和第二右侧关系非点实例1050作为其两个输入。因此,实质上,交叉连接1028接收来自左侧关系1002的非点和来自右侧关系1004的非点。交叉连接1028生成这两个输入的笛卡尔积,并且输出该笛卡尔积作为交叉连接输出1056,该交叉连接输出1056是输入至合并运算符1058的三个输入中的第三个。
合并运算符1058保持来自其所有三个输入的所有行,并且输出该结果作为合并运算符输出1060,然后合并运算符输出1060被输入到地理空间谓词过滤器1062中,地理空间谓词过滤器1062实现实际的ST_Dwithin地理空间函数。地理空间谓词过滤器1062输出应用该函数的结果作为地理空间谓词过滤器输出1064。与仅进行左侧关系1002和右侧关系1004两者的全部的交叉连接并且然后应用地理空间谓词过滤器1062相比,在图10的查询执行计划1000中反映的该方法更高效。更高效的程度可以取决于左侧关系1002和右侧关系1004中的点与非点的比率。
如上所述,在本公开内容的一些实施方式中,由数据库平台100在元数据存储装置110中保持元数据(也称为表达式属性),其中元数据可以包括相应行、列等的表达式属性。此外,本系统和方法可应用于除了在本文中讨论的那些之外的多个领域。一些这样的领域的示例包括地球表面上来自预定义原点(即,“东和北”)的笛卡尔坐标,并且还包括在预定义平面中例如在微芯片上或在仓库中的笛卡尔坐标。
图11示出了根据至少一个实施方式的示例性计算设备1100。在一些实施方式中,计算设备1100用于实现本文中所讨论的一个或更多个系统和组件。此外,计算设备1100可以与本文中所描述的系统和组件中的任一个交互。因此,计算设备1100可以用于执行例如本文所讨论的那些过程和任务的各种过程和任务。计算设备1100可以用作服务器、客户端或任何其他计算实体。计算设备1100可以是诸如台式计算机、笔记本电脑、服务器计算机、手持式计算机、移动设备、平板电脑等的各种计算设备中的任何计算设备。
在所描绘的实施方式中,计算设备1100包括:一个或更多个处理器1102、一个或更多个存储器设备1104、一个或更多个接口1106、一个或更多个大容量存储设备1108以及一个或更多个输入/输出设备1110,所有这些都耦接至总线1114。处理器1102包括一个或更多个处理器或控制器,其执行存储在存储器设备1104和/或大容量存储设备1108中的指令。
存储器设备1104可以包括各种计算机存储介质,例如易失性存储器(例如,随机存取存储器(RAM))和/或非易失性存储器(例如,只读存储器(ROM)。存储器设备1104还可以包括可重写ROM,例如闪存存储器。处理器1102也可以包括各种类型的计算机存储介质,例如高速缓冲存储器。
接口1106可以包括允许计算设备1100与其他系统、设备、计算环境等进行交互的各种接口。示例接口1106包括任何数目的不同网络接口,例如与局域网(LAN)、广域网(WAN)、无线网络、因特网等的接口。
大容量存储设备1108可以包括各种计算机存储介质,例如磁带、磁盘、光盘、固态存储器(例如,闪存等)等。在大容量存储设备1108中还可以包括各种驱动器,以使得能够从各种计算机存储介质读取和/或向各种计算机存储介质写入。大容量存储设备1108可以包括可移动介质和/或不可移动介质。
输入/输出设备1110可以包括允许向计算设备1100输入数据和/或其他信息以及/或者从计算设备1100检索数据和/或其他信息的各种设备。示例输入/输出设备1110包括光标控制设备、键盘、小键盘、麦克风、监视器或其他显示设备、扬声器、打印机、网络接口卡、调制解调器、镜头,CCD或其他图像捕获设备等。
总线1114允许处理器1102、存储器设备1104、接口1106、大容量存储设备1108和输入/输出设备1110彼此通信,以及与可以耦接至总线1114的其他装置或组件通信。总线1114表示例如以下总线的若干类型的总线结构中的一个或更多个:系统总线、PCI总线、IEEE1394总线、USB总线等。在一些示例中,总线1114包括一个或更多个网络连接。
出于说明的目的,程序和其他可执行程序组件在本文中被示为离散的块,然而要理解的是,这样的程序和组件在很多时候可以驻留在计算设备1100的不同存储组件中并且由处理器1102执行。替选地,可以以硬件、或者使用硬件和软件和/或固件的组合来实现本文中描述的系统和过程。例如,可以对一个或更多个专用集成电路(ASIC)进行编程以执行本文中描述的系统或过程中的一个或更多个。
可执行指令和计算机存储介质
各种存储器可以存储由本文中所描述的方法或功能中的任何一个或更多个体现或利用的一个或更多个指令集1112和数据结构(例如,软件)。这些指令1112在由处理器1102执行时引起各种操作以实现所公开的实施方式。
如在本文中所使用的,术语“计算机存储介质”和“机器存储介质”以及“设备存储介质”是指相同的事物并且可以在本公开内容中互换使用。这些术语是指存储可执行指令和/或数据的单个存储设备或多个存储设备和/或介质(例如,集中式或分布式数据库,和/或相关联的高速缓存和服务器)。因此,这些术语应当被视为包括但不限于固态存储器以及光学和磁性介质,包括处理器内部或外部的存储器。计算机存储介质、机器存储介质和/或设备存储介质的具体示例包括如下:非易失性存储器,包括例如半导体存储器设备,例如可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、现场可编程门阵列(FPGA)和闪存设备;磁盘例如内部硬盘和可移动磁盘;磁光盘;以及CD-ROM和DVD-ROM盘。术语“计算机存储介质”、“机器存储介质”和“设备存储介质”特别地排除载波、调制数据信号和其他这样的介质,其中至少一些被下面讨论的术语“传输介质”所涵盖。
传输介质
在各种示例实施方式中,本文中描述的任何网络或网络的部分可以是自组网、内联网、外联网、虚拟专用网络(VPN)、局域网(LAN)、无线局域网(WLAN)、广域网(WAN)、无线WAN(WWAN)、城域网(MAN)、因特网、因特网的一部分、公共交换电话网(PSTN)的一部分、普通老式电话服务(POTS)网络、蜂窝电话网络、无线网络、Wi-Fi网络、另一类型的网络或者两个或更多个这样的网络的组合。例如,在本文中描述的任何网络或网络的一部分可以包括无线网络或蜂窝网络,并且所利用的耦接可以是码分多址(CDMA)连接、全球移动通信系统(GSM)连接或其他类型的蜂窝或无线耦接。在该示例中,耦接可以实现各种类型的数据传输技术中的任何数据传输技术,例如单载波无线电传输技术(1xRTT)、演进数据优化(EVDO)技术、通用分组无线电服务(GPRS)技术、GSM演进的增强数据速率(EDGE)技术、包括3G的第三代合作伙伴计划(3GPP)、第四代无线(4G)网络、通用移动通讯系统(UMTS)、高速分组接入(HSPA)、全球微波接入互操作性(WiMAX)、长期演进(LTE)标准、由各种标准设置组织定义的其他标准、其他长距离协议和/或其他数据传输技术。
可以经由网络接口设备(例如,网络接口组件)使用传输介质并且利用许多公知的传输协议中的任意一种传输协议(例如,超文本传输协议(HTTP)),通过网络来传输或接收指令1112。类似地,可以经由到一个或更多个设备的耦接(例如,对等式耦接)使用传输介质来发送或接收指令1112。术语“传输介质”和“信号介质”意指相同的事物并且可以在本公开内容中互换使用。术语“传输介质”和“信号介质”应被视为包括能够存储、编码或携带指令1112以供计算设备1100执行的任何无形介质,并且包括有助于这样的软件的通信的数字或模拟通信信号介质或者其他无形介质。因此,术语“传输介质”和“信号介质”应被视为包括任何形式的调制数据信号、载波等。术语“调制数据信号”意指这样的信号,该信号具有以对信号中的信息进行编码的方式设置或改变的其特性中的一个或更多个。
计算机可读介质
术语“计算机可读介质”和“机器可读介质”和“设备可读介质”是指相同的事物并且可以在本公开内容中互换使用。这些术语被定义为包括计算机存储介质和传输介质两者。因此,这些术语包括存储设备和存储介质以及载波和调制数据信号。
实施方式的示例
以下是实施方式的一些示例的列表。
示例1是一种方法,包括:由包括至少一个硬件处理器的数据库平台接收用于对数据库的查询的查询指令,该查询指令包括用于包括地理空间函数谓词的地理空间函数连接的指令;基于查询指令生成查询执行计划,查询执行计划的生成包括:(i)用一个或更多个区间连接替换地理空间函数连接,一个或更多个区间连接中的每个区间连接包括一个或更多个隐含的谓词,每个隐含的谓词由地理空间函数谓词隐含,以及(ii)在查询执行计划中在一个或更多个区间连接之上插入过滤器运算符,该过滤器运算符应用地理空间函数谓词;获得查询的查询结果,该查询结果的获得包括执行查询执行计划;以及响应于查询而返回查询结果。
示例2是示例1的方法,其中查询指令包括查询;并且基于查询指令生成查询执行计划包括基于查询生成查询执行计划。
示例3是示例1的方法,其中查询指令包括初步查询执行计划;并且基于查询指令生成查询执行计划包括修改初步查询执行计划。
示例4是示例1的方法,其中查询指令包括查询;该方法还包括基于查询生成初步查询执行计划,该初步查询执行计划包括地理空间函数谓词;并且基于查询指令生成查询执行计划包括修改初步查询执行计划。
示例5是示例1至示例4中的任一示例的方法,其中地理空间函数谓词包括来自一个或更多个地理空间函数谓词的集合的地理空间函数谓词。
示例6是示例5的方法,其中一个或更多个地理空间函数谓词的集合包括以下中的一个或更多个:覆盖谓词、被覆盖谓词、包含谓词、内谓词、距离内谓词和相交谓词。
示例7是示例1至示例6中任一示例的方法,其中地理空间函数连接是左侧关系和右侧关系的连接;并且一个或更多个区间连接包括左侧关系和右侧关系的单个两侧区间连接。
示例8是示例1至示例6中任一示例的方法,其中地理空间函数连接包括左侧关系和右侧关系的连接;并且地理空间函数谓词包括包含性地理空间函数谓词,用于针对(i)左侧关系和右侧关系中的第一关系的当前行和(ii)左侧关系和右侧关系中的第二关系的当前行的给定组合,来确定第一关系的地理数据对象连接键相对于第二关系的地理数据对象连接键是否具有包含性关系。
示例9是示例1至示例6中任一示例的方法,其中地理空间函数连接包括左侧关系和右侧关系的连接;并且地理空间函数谓词包括距离内地理空间函数谓词,用于针对(i)左侧关系和右侧关系中的第一关系的当前行和(ii)左侧关系和右侧关系中的第二关系的当前行的给定组合,来确定第一关系的地理数据对象连接键是否在第二关系的地理数据对象连接键的指定距离内。
示例10是示例1的方法,其中地理空间函数连接包括左侧关系和右侧关系的连接;并且地理空间函数谓词包括包含性地理空间函数谓词。
示例11是一种数据库平台,其包括至少一个处理器;以及一个或更多个计算机存储介质,其包含能够由至少一个处理器执行以使至少一个处理器执行操作的指令,所述操作包括:接收用于对数据库的查询的查询指令,查询指令包括用于包括地理空间函数谓词的地理空间函数连接的指令;基于查询指令生成查询执行计划,查询执行计划的生成包括:(i)用一个或更多个区间连接替换地理空间函数连接,一个或更多个区间连接中的每个区间连接包括一个或更多个隐含的谓词,每个隐含的谓词由地理空间函数谓词隐含,以及(ii)在查询执行计划中在一个或更多个区间连接之上插入过滤器运算符,该过滤器运算符应用地理空间函数谓词;获得查询的查询结果,该查询结果的获得包括执行查询执行计划;以及响应于查询而返回查询结果。
示例12是示例11的数据库平台,其中查询指令包括查询;并且基于查询指令生成查询执行计划包括基于查询生成查询执行计划。
示例13是示例11的数据库平台,其中查询指令包括初步查询执行计划;并且基于查询指令生成查询执行计划包括修改初步查询执行计划。
示例14是示例11的数据库平台,其中查询指令包括查询;所述操作还包括基于查询生成初步查询执行计划,该初步查询执行计划包括地理空间函数谓词;并且基于查询指令生成查询执行计划包括修改初步查询执行计划。
示例15是示例11至示例14中任一示例的数据库平台,其中地理空间函数谓词是来自一个或更多个地理空间函数谓词的集合的地理空间函数谓词。
示例16是示例15的数据库平台,其中一个或更多个地理空间函数谓词的集合包括以下中的一个或更多个:覆盖谓词、被覆盖谓词、包含谓词、内谓词、距离内谓词和相交谓词。
示例17是示例11至示例16中任一示例的数据库平台,其中地理空间函数连接包括左侧关系和右侧关系的连接;并且一个或更多个区间连接包括左侧关系和右侧关系的单个两侧区间连接。
示例18是示例11至示例16中任一示例的数据库平台,其中地理空间函数连接包括左侧关系和右侧关系的连接;并且地理空间函数谓词包括包含性地理空间函数谓词,用于针对(i)左侧关系和右侧关系中的第一关系的当前行和(ii)左侧关系和右侧关系中的第二关系的当前行的给定组合,来确定第一关系的地理数据对象连接键相对于第二关系的地理数据对象连接键是否具有包含性关系。
示例19是示例11至示例16中任一示例的数据库平台,其中地理空间函数连接包括左侧关系和右侧关系的连接;并且地理空间函数谓词包括距离内地理空间函数谓词,用于针对(i)左侧关系和右侧关系中的第一关系的当前行和(ii)左侧关系和右侧关系中的第二关系的当前行的给定组合,来确定第一关系的地理数据对象连接键是否在第二关系的地理数据对象连接键的指定距离内。
示例20是示例11的数据库平台,其中地理空间函数连接包括左侧关系和右侧关系的连接;并且地理空间函数谓词包括包含性地理空间函数谓词。
示例21是一种或更多种计算机存储介质,其包含能够由至少一个处理器执行以使至少一个处理器执行操作的指令,所述操作包括:接收用于对数据库的查询的查询指令,查询指令包括用于包括地理空间函数谓词的地理空间函数连接的指令;基于查询指令生成查询执行计划,查询执行计划的生成包括:(i)用一个或更多个区间连接替换地理空间函数连接,一个或更多个区间连接中的每个区间连接包括一个或更多个隐含的谓词,每个隐含的谓词由地理空间函数谓词隐含,以及(ii)在查询执行计划中在一个或更多个区间连接之上插入过滤器运算符,该过滤器运算符应用地理空间函数谓词;获得查询的查询结果,该查询结果的获得包括执行查询执行计划;以及响应于查询而返回查询结果。
示例22是示例21的一种或更多种计算机存储介质,其中查询指令包括查询;并且基于查询指令生成查询执行计划包括基于查询生成查询执行计划。
示例23是示例21的一种或更多种计算机存储介质,其中查询指令包括初步查询执行计划;并且基于查询指令生成查询执行计划包括修改初步查询执行计划。
示例24是示例21的一种或更多种计算机存储介质,其中查询指令包括查询;所述操作还包括基于查询生成初步查询执行计划,该初步查询执行计划包括地理空间函数谓词;并且基于查询指令生成查询执行计划包括修改初步查询执行计划。
示例25是示例21至示例24中任一示例的一种或更多种计算机存储介质,其中地理空间函数谓词是来自一个或更多个地理空间函数谓词的集合的地理空间函数谓词。
示例26是示例25的一种或更多种计算机存储介质,其中一个或更多个地理空间函数谓词的集合包括以下中的一个或更多个:覆盖谓词、被覆盖谓词、包含谓词、内谓词、距离内谓词和相交谓词。
示例27是示例21至示例26中任一示例的一种或更多种计算机存储介质,其中地理空间函数连接包括左侧关系和右侧关系的连接;并且一个或更多个区间连接包括左侧关系和右侧关系的单个两侧区间连接。
示例28是示例21至示例26中任一示例的一种或更多种计算机存储介质,其中地理空间函数连接包括左侧关系和右侧关系的连接;并且地理空间函数谓词包括包含性地理空间函数谓词,用于针对(i)左侧关系和右侧关系中的第一关系的当前行和(ii)左侧关系和右侧关系中的第二关系的当前行的给定组合,来确定第一关系的地理数据对象连接键相对于第二关系的地理数据对象连接键是否具有包含性关系。
示例29是示例21至示例26中任一项的一种或更多种计算机存储介质,其中地理空间函数连接包括左侧关系和右侧关系的连接;并且地理空间函数谓词包括距离内地理空间函数谓词,用于针对(i)左侧关系和右侧关系中的第一关系的当前行和(ii)左侧关系和右侧关系中的第二关系的当前行的给定组合,来确定第一关系的地理数据对象连接键是否在第二关系的地理数据对象连接键的指定距离内。
示例30是示例21的一种或更多种计算机存储介质,其中地理空间函数连接包括左侧关系和右侧关系的连接;并且地理空间函数谓词包括包含性地理空间函数谓词。
为了促进对本公开内容的原理的理解,在附图中示出了各种实施方式。在本文中公开的实施方式并不旨在是穷尽的或者将本公开内容限制为在上面详细描述中公开的确切形式。确切地说,已经选择所描述的实施方式,使得本领域的其他技术人员可以利用它们的教示。因此,不意图由此限制本公开内容的范围。
在包括在权利要求中的本公开内容的任何情况下,其中诸如第一、第二和第三的数字修饰语用于提及组件、数据(例如,值、标识符、参数和/或等)和/或任何其他元件,这样的修饰词的这种使用不旨在表示或指示任何以这种方式引用的元件的具体或所需顺序。确切地说,这样的修饰语的任何这种使用旨在帮助读者彼此区分元素,并且不应当被解释为坚持任何特定顺序或者携带任何其他意义,除非本文中明确并且肯定地解释了这样的顺序或其他意义。
此外,与本文中描述的实体和布置(包括关于附图描绘和描述的实体和布置)作为示例而非限制性的方式呈现的事实一致,关于特定附图“描绘”什么、特定附图中的特定元件或实体或本公开内容中另外提到的什“是”或“具有”的任何和所有陈述或其他指示,以及不通过诸如“在至少一个实施方式中”的子句来明确地自我定义,并且因此可以作为绝对而孤立地并且在上下文之外阅读并且因此作为对所有实施方式的限制的任何和所有类似陈述,仅可以适当地被理解为由这样的子句建设性地定义。出于类似于陈述的简洁和清楚的原因,在本公开内容中不重复该隐含的定义子句。
在本公开内容中,根据所提供的定义使用各种术语。此外,注意的是,关于本文所陈述的定义,如本文所使用的经定义的术语和短语包括所提供的定义以及对相应术语和短语的含义的任何一般和常规理解。
还应当注意,除非上下文清楚地另外指出,否则如在说明书中所使用的以及在所附权利要求书中所使用的,单数形式“一(a)”、“一个(an)”以及“该”包括复数指示对象。
如在本文中所使用的,术语“包括(comprising)”、“包括(including)”、“包含(containing)”、“特征在于”及其语法等同物是包含性、开放式术语,这些术语不排除另外的、未列举的元素、方法步骤等。
本说明书中描述的功能单元中的许多可以实现为一个或更多个组件,这是用于更特别地强调它们的实现方式独立性的术语。例如,可以将组件实现为包括定制的超大规模集成(VLSI)电路或门阵列、诸如逻辑芯片的成品半导体、晶体管和/或其他分立组件的硬件电路。还可以在诸如现场可编程门阵列(FPGA)的可编程硬件设备、可编程阵列逻辑、可编程逻辑设备和/或等中实现组件。
也可以在软件中实现组件,用于在各种类型的硬件(例如,由各种类型的处理器)上执行。所识别的可执行代码组建可以例如包括计算机指令的一个或更多个物理块或逻辑块,这些计算机指令可以例如被组织为对象、过程或功能。然而,所识别的组件的可执行指令不需要物理地位于一起,而是可以包括存储在不同位置中的不同指令,这些指令当逻辑地结合在一起时构成上述组件并且实现模块的所述目的。
实际上,可执行代码的组件可以是单个指令或许多指令,并且可以分布在若干个不同的代码段上、分布在不同的程序中以及跨若干个存储设备来分布。类似地,在本文中可以识别和示出组件内的操作数据,并且操作数据可以以任何合适的形式来体现并且可以被组织在任何合适类型的数据结构内。操作数据可以被收集为单个数据集,或者可以分布在不同的位置上,包括分布在不同的存储装置上,并且可以至少部分地仅作为电子信号存在于系统或网络上。组件可以是被动的或主动的,包括可操作以执行所期望功能的代理。
在整个说明书中对“示例”的引用意味着关于该示例描述的特征、结构或特性被包括在本公开内容的至少一个实施方式中。因此,在本说明书的各处出现的短语“在示例中”不一定全部指代同一实施方式。
如本文所使用的,为了方便起见,可以将多个项目、结构元件、组成元件和/或材料呈现在公共列表中。然而,这些列表应当被解释为列表中的每个成员都被单独地识别为独立的且唯一的成员。因此,在没有相反指示的情况下,这样的列表中的单独的成员不应当仅仅基于它们在共同组中的呈现而被解释为与同一列表中的任何其他成员实际上等同。另外,可以在本文中提及本公开内容的各种实施方式和示例连同其各种组件的替选方案。应当理解的是,这样的实施方式、示例和替选方案不应当被解释为实际上彼此等效,而应当被视为本公开内容的单独且自主的表示。
尽管出于清楚的目的已经详细描述了前述内容,但是明显的是,可以在不脱离其原理的情况下进行某些改变和修改。要注意的是,存在实现本文中描述的处理和装置两者的许多替选方式。因此,本实施方式被认为是说明性的而非限制性的。
本领域的技术人员将理解,在不脱离本公开内容的基本原理的情况下,可以对上述实施方式的细节做出许多改变。因此,本公开内容的范围应当仅由权利要求确定。
Claims (30)
1.一种方法,包括:
由包括至少一个硬件处理器的数据库平台接收用于对数据库的查询的查询指令,所述查询指令包括用于包括地理空间函数谓词的地理空间函数连接的指令;
由所述数据库平台基于所述查询指令生成查询执行计划,所述查询执行计划的生成包括:
用恰好一个连接替换所述地理空间函数连接,所述恰好一个连接是具有由所述地理空间函数谓词隐含的区间连接谓词的区间连接;以及
在所述查询执行计划中插入过滤器运算符,以将所述地理空间函数谓词应用于所述区间连接的输出;
由所述数据库平台获得所述查询的查询结果,所述查询结果的获得包括执行所述查询执行计划;以及
由所述数据库平台响应于所述查询而返回所述查询结果。
2.根据权利要求1所述的方法,其中,所述区间连接包括多维两侧区间连接。
3.根据权利要求2所述的方法,其中,所述地理空间函数谓词包括包含性谓词。
4.根据权利要求2所述的方法,其中,所述地理空间函数谓词包括相交谓词。
5.根据权利要求2所述的方法,其中,所述地理空间函数谓词包括距离内谓词。
6.根据权利要求1所述的方法,其中,所述区间连接包括多维一侧区间连接。
7.根据权利要求6所述的方法,其中,所述地理空间函数谓词包括包含性谓词。
8.根据权利要求1所述的方法,其中,所述区间连接包括一维两侧区间连接。
9.根据权利要求1所述的方法,其中,所述区间连接包括一维一侧区间连接。
10.根据权利要求1所述的方法,其中:
所述地理空间函数连接将所述地理空间函数谓词应用于第一关系和第二关系,所述第一关系包括第一连接键,所述第二关系包括第二连接键;
所述第一连接键是多点地理数据对象;
所述第二连接键是单点地理数据对象;并且
所述区间连接包括多维一侧区间连接。
11.一种数据库平台,包括:
至少一个硬件处理器;以及
一个或更多个计算机存储介质,其包含能够由所述至少一个硬件处理器执行以使所述至少一个硬件处理器执行操作的指令,所述操作包括:
接收用于对数据库的查询的查询指令,所述查询指令包括用于包括地理空间函数谓词的地理空间函数连接的指令;
基于所述查询指令生成查询执行计划,所述查询执行计划的生成包括:
用恰好一个连接替换所述地理空间函数连接,所述恰好一个连接是具有由所述地理空间函数谓词隐含的区间连接谓词的区间连接;以及
在所述查询执行计划中插入过滤器运算符,以将所述地理空间函数谓词应用于单个区间连接的输出;
获得所述查询的查询结果,所述查询结果的获得包括执行所述查询执行计划;以及
响应于所述查询而返回所述查询结果。
12.根据权利要求11所述的数据库平台,其中,所述区间连接包括多维两侧区间连接。
13.根据权利要求12所述的数据库平台,其中,所述地理空间函数谓词包括包含性谓词。
14.根据权利要求12所述的数据库平台,其中,所述地理空间函数谓词包括相交谓词。
15.根据权利要求12所述的数据库平台,其中,所述地理空间函数谓词包括距离内谓词。
16.根据权利要求11所述的数据库平台,其中,所述区间连接包括多维一侧区间连接。
17.根据权利要求16所述的数据库平台,其中,所述地理空间函数谓词包括包含性谓词。
18.根据权利要求11所述的数据库平台,其中,所述区间连接包括一维两侧区间连接。
19.根据权利要求11所述的数据库平台,其中,所述区间连接包括一维一侧区间连接。
20.根据权利要求11所述的数据库平台,其中:
所述地理空间函数连接将所述地理空间函数谓词应用于第一关系和第二关系,所述第一关系包括第一连接键,所述第二关系包括第二连接键;
所述第一连接键是多点地理数据对象;
所述第二连接键是单点地理数据对象;并且
所述区间连接包括多维一侧区间连接。
21.一个或更多个计算机存储介质,其包含能够由至少一个硬件处理器执行以使所述至少一个硬件处理器执行操作的指令,所述操作包括:
接收用于对数据库的查询的查询指令,所述查询指令包括用于包括地理空间函数谓词的地理空间函数连接的指令;
基于所述查询指令生成查询执行计划,所述查询执行计划的生成包括:
用恰好一个连接替换所述地理空间函数连接,所述恰好一个连接是具有由所述地理空间函数谓词隐含的区间连接谓词的区间连接;以及
在所述查询执行计划中插入过滤器运算符,以将所述地理空间函数谓词应用于单个区间连接的输出;
获得所述查询的查询结果,所述查询结果的获得包括执行所述查询执行计划;以及
响应于所述查询而返回所述查询结果。
22.根据权利要求21所述的一个或更多个计算机存储介质,其中,所述区间连接包括多维两侧区间连接。
23.根据权利要求22所述的一个或更多个计算机存储介质,其中,所述地理空间函数谓词包括包含性谓词。
24.根据权利要求22所述的一个或更多个计算机存储介质,其中,所述地理空间函数谓词包括相交谓词。
25.根据权利要求22所述的一个或更多个计算机存储介质,其中,所述地理空间函数谓词包括距离内谓词。
26.根据权利要求21所述的一个或更多个计算机存储介质,其中,所述区间连接包括多维一侧区间连接。
27.根据权利要求26所述的一个或更多个计算机存储介质,其中,所述地理空间函数谓词包括包含性谓词。
28.根据权利要求21所述的一个或更多个计算机存储介质,其中,所述区间连接包括一维两侧区间连接。
29.根据权利要求21所述的一个或更多个计算机存储介质,其中,所述区间连接包括一维一侧区间连接。
30.根据权利要求21所述的一个或更多个计算机存储介质,其中:
所述地理空间函数连接将所述地理空间函数谓词应用于第一关系和第二关系,所述第一关系包括第一连接键,所述第二关系包括第二连接键;
所述第一连接键是多点地理数据对象;
所述第二连接键是单点地理数据对象;并且
所述区间连接包括多维一侧区间连接。
Applications Claiming Priority (8)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202063030872P | 2020-05-27 | 2020-05-27 | |
US63/030,872 | 2020-05-27 | ||
US16/920,143 | 2020-07-02 | ||
US16/920,143 US11100105B1 (en) | 2020-05-27 | 2020-07-02 | Performing geospatial-function joins using interval joins |
US16/941,236 US11036738B1 (en) | 2020-05-27 | 2020-07-28 | Performing geospatial-function joins using point-based relation splitting |
US16/941,236 | 2020-07-28 | ||
US16/944,049 | 2020-07-30 | ||
US16/944,049 US11036739B1 (en) | 2020-05-27 | 2020-07-30 | Performing geospatial-function join using single interval join |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113742379A true CN113742379A (zh) | 2021-12-03 |
Family
ID=76320748
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110475438.5A Pending CN113742379A (zh) | 2020-05-27 | 2021-04-29 | 使用基于点的关系拆分执行地理空间函数连接 |
Country Status (2)
Country | Link |
---|---|
US (6) | US11100105B1 (zh) |
CN (1) | CN113742379A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11403296B2 (en) | 2020-05-27 | 2022-08-02 | Snowflake Inc. | Point-based relation splitting in geospatial-function-implied interval joins |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3879412A1 (en) * | 2020-03-09 | 2021-09-15 | Sindice Limited | Methods of finding shortest paths in databases |
US11822519B2 (en) * | 2021-11-30 | 2023-11-21 | Bank Of America Corporation | Multi-dimensional database platform including an apache kafka framework and an auxiliary database for event data processing and provisioning |
US11893016B1 (en) * | 2022-10-26 | 2024-02-06 | Snowflake Inc. | Secure predicate derivation of queries using metadata |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1670729A (zh) * | 2004-03-18 | 2005-09-21 | 微软公司 | 使用隐含谓词的改善的查询优化器 |
CN101976249A (zh) * | 2010-10-12 | 2011-02-16 | 中国科学院软件研究所 | 一种空间数据库的访问控制方法 |
CN103064875A (zh) * | 2012-10-30 | 2013-04-24 | 中国标准化研究院 | 一种服务化空间数据分布式查询方法 |
US20150178352A1 (en) * | 2013-12-23 | 2015-06-25 | Teradata Us, Inc. | Parallelizable gridded geospatial join (pggj) |
US20190114295A1 (en) * | 2013-03-15 | 2019-04-18 | Teradata Us, Inc. | Incremental simplification and optimization of complex queries using dynamic result feedback |
US20190286635A1 (en) * | 2018-03-15 | 2019-09-19 | Arizona Board Of Regents On Behalf Of Arizona State University | Systems and methods for an end-to-end visual analytics system for massive-scale geospatial data |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9430494B2 (en) * | 2009-12-28 | 2016-08-30 | Oracle International Corporation | Spatial data cartridge for event processing systems |
US8965901B2 (en) * | 2011-03-01 | 2015-02-24 | Mongodb, Inc. | System and method for determining exact location results using hash encoding of multi-dimensioned data |
US9311380B2 (en) | 2013-03-29 | 2016-04-12 | International Business Machines Corporation | Processing spatial joins using a mapreduce framework |
US9910878B2 (en) * | 2014-07-21 | 2018-03-06 | Oracle International Corporation | Methods for processing within-distance queries |
US10984039B2 (en) | 2016-11-02 | 2021-04-20 | Sap Se | Hierarchical map visualizations of geo-enriched data |
WO2020209976A1 (en) * | 2019-04-11 | 2020-10-15 | Neighborcom, Llc | System and method associated with an insular digital content distribution platform that generates discrete epochs of content based on determination of a germane zip-span polygon region |
US11100105B1 (en) | 2020-05-27 | 2021-08-24 | Snowflake Inc. | Performing geospatial-function joins using interval joins |
DE202021102300U1 (de) | 2021-04-29 | 2021-09-13 | Snowflake Inc. | Durchführen von Joins mit georäumlicher Funktion unter Verwendung von einzelnen Intervall-Joins |
-
2020
- 2020-07-02 US US16/920,143 patent/US11100105B1/en active Active
- 2020-07-28 US US16/941,236 patent/US11036738B1/en active Active
- 2020-07-30 US US16/944,049 patent/US11036739B1/en active Active
-
2021
- 2021-04-29 US US17/244,173 patent/US11403296B2/en active Active
- 2021-04-29 CN CN202110475438.5A patent/CN113742379A/zh active Pending
- 2021-05-28 US US17/334,339 patent/US11709837B2/en active Active
- 2021-07-30 US US17/389,804 patent/US11514047B2/en active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1670729A (zh) * | 2004-03-18 | 2005-09-21 | 微软公司 | 使用隐含谓词的改善的查询优化器 |
CN101976249A (zh) * | 2010-10-12 | 2011-02-16 | 中国科学院软件研究所 | 一种空间数据库的访问控制方法 |
CN103064875A (zh) * | 2012-10-30 | 2013-04-24 | 中国标准化研究院 | 一种服务化空间数据分布式查询方法 |
US20190114295A1 (en) * | 2013-03-15 | 2019-04-18 | Teradata Us, Inc. | Incremental simplification and optimization of complex queries using dynamic result feedback |
US20150178352A1 (en) * | 2013-12-23 | 2015-06-25 | Teradata Us, Inc. | Parallelizable gridded geospatial join (pggj) |
US20190286635A1 (en) * | 2018-03-15 | 2019-09-19 | Arizona Board Of Regents On Behalf Of Arizona State University | Systems and methods for an end-to-end visual analytics system for massive-scale geospatial data |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11403296B2 (en) | 2020-05-27 | 2022-08-02 | Snowflake Inc. | Point-based relation splitting in geospatial-function-implied interval joins |
US11514047B2 (en) | 2020-05-27 | 2022-11-29 | Snowflake Inc. | Performing geospatial-function joins using interval joins |
Also Published As
Publication number | Publication date |
---|---|
US11403296B2 (en) | 2022-08-02 |
US20210374140A1 (en) | 2021-12-02 |
US20210374137A1 (en) | 2021-12-02 |
US11709837B2 (en) | 2023-07-25 |
US11036739B1 (en) | 2021-06-15 |
US11036738B1 (en) | 2021-06-15 |
US11514047B2 (en) | 2022-11-29 |
US20210374139A1 (en) | 2021-12-02 |
US11100105B1 (en) | 2021-08-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10380130B2 (en) | Querying spatial data in column stores using grid-order scans | |
CN113742379A (zh) | 使用基于点的关系拆分执行地理空间函数连接 | |
US10929501B2 (en) | Managing and querying spatial point data in column stores | |
US9613055B2 (en) | Querying spatial data in column stores using tree-order scans | |
US9519680B2 (en) | Methods for query processing of topological relationships among complex spatial objects | |
US11494385B2 (en) | Multidimensional two-sided interval joins on hash-equality-join infrastructure | |
US20220284025A1 (en) | Indexed geospatial predicate search | |
Tang et al. | Locationspark: In-memory distributed spatial query processing and optimization | |
Al Jawarneh et al. | Big spatial data management for the Internet of Things: A survey | |
DE202021102300U1 (de) | Durchführen von Joins mit georäumlicher Funktion unter Verwendung von einzelnen Intervall-Joins | |
de Souza Baptista et al. | NoSQL geographic databases: an overview | |
Sun et al. | A spatially-pruned vertex expansion operator in the Neo4j graph database system | |
Doraiswamy et al. | A gpu-friendly geometric data model and algebra for spatial queries: extended version | |
Nidzwetzki et al. | BBoxDB streams: scalable processing of multi-dimensional data streams | |
Li et al. | SP-phoenix: a massive spatial point data management system based on phoenix | |
Karlsen et al. | Qualitatively correct bintrees: an efficient representation of qualitative spatial information | |
Frye et al. | Big data storage techniques for spatial databases: implications of big data architecture on spatial query processing | |
Afshani et al. | Concurrent range reporting in two-dimensional space | |
Li et al. | Quadtree–based management on semantic cache for mobile computing | |
Koutroumanis | Design and implementation of a NoSQL data access interface | |
Galić | Geospatial Data Streams | |
Ngo et al. | A mediation system for continuous spatial queries on a unified schema using Apache Spark | |
Brodt | A mobile data management architecture for interoperability of resource and context data | |
Farruque | Distributed spatial query processing and optimization |
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 |