CN106250381B - 用于确定表格式存储的列布局的系统和方法 - Google Patents
用于确定表格式存储的列布局的系统和方法 Download PDFInfo
- Publication number
- CN106250381B CN106250381B CN201510371595.6A CN201510371595A CN106250381B CN 106250381 B CN106250381 B CN 106250381B CN 201510371595 A CN201510371595 A CN 201510371595A CN 106250381 B CN106250381 B CN 106250381B
- Authority
- CN
- China
- Prior art keywords
- columns
- column
- query
- order
- data
- 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.)
- Active
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/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/221—Column-oriented storage; Management thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query 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
- G06F16/24553—Query execution of query operations
-
- 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
- G06F16/24553—Query execution of query operations
- G06F16/24554—Unary operations; Data partitioning operations
- G06F16/24557—Efficient disk access during 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/2457—Query processing with adaptation to user needs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/18—Complex mathematical operations for evaluating statistical data, e.g. average values, frequency distributions, probability functions, regression analysis
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Computational Mathematics (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Probability & Statistics with Applications (AREA)
- Bioinformatics & Computational Biology (AREA)
- Operations Research (AREA)
- Evolutionary Biology (AREA)
- Algebra (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Fuzzy Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本文描述了表格数据中的用于输入/输出优化的列排序,尤其是用于确定数据存储表格的列排序以用于搜索优化的系统、方法、和计算机可读介质。在一些示例中,计算系统被配置成接收包含多个查询的统计数据的输入。该计算系统随后可至少部分地基于该统计数据确定新的列次序(即,布局)。在本文描述的一些示例技术中,该计算系统可至少部分地基于存储数据存储表格的硬件组件、存储系统参数、和/或用户偏好信息来确定该新的列次序。本文描述的示例技术可将该新的列次序应用到随后被添加到该数据存储表格的数据。本文描述的示例技术可将该新的列次序应用到该数据存储表格中的现有数据。
Description
技术领域
本申请涉及表格数据中的用于输入/输出优化的列排序,尤其涉及用于确定数据存储表格的列排序以用于搜索优化的系统、方法、和计算机可读介质。
背景技术
随着世界变得更加通过技术连通,越来越多的人需要存储和访问数据。这种数据通常存储在包括行和列的二维表格中。传统上,数据按行存储格式组织。然而,当表格大小增加时,更多存储系统已经被移动至列存储格式。数据存储表现在包括数千列数据,并且每天都在继续增长。随着数据被存储,新的列可被添加到该表格。因为大多数系统按数据被输入的顺序存储数据,所以两个不相关的数据列可能彼此毗邻地存储。在具有数千列的表格中,在相关列远远隔开的情况下,查询可能在计算上是非常昂贵的。
发明内容
本公开描述了用于确定表的列排序以用于输入/输出优化的系统、方法、和计算机可读介质,诸如,针对搜索示例计算系统被配置成接收包含多个查询的统计数据的输入。该计算系统随后可至少部分地基于该统计数据来确定新的列次序(例如,表格布局)。在本文描述的一些示例技术中,该计算系统可至少部分地基于存储表格的硬件组件、存储系统参数、和/或用户偏好信息来确定该新的列次序。本文描述的示例技术可将该新的列次序应用到随后添加到该表格的数据。本文描述的示例技术可将该新的列次序应用到该表格中的现有数据。
应当理解,上述主题也可被实现为计算机控制的装置、计算机进程、计算系统或诸如计算机可读介质等制品。通过阅读下面的详细描述并审阅相关联的附图,这些及各种其他特征将变得显而易见。
提供本概述是为了以精简的形式介绍将在以下详细描述中进一步描述的一些概念。本发明内容不旨在标识所要求保护的主题的关键或必要特征,也不旨在用于帮助确定所要求保护的主题的范围。例如术语“技术”可指代上述上下文和通篇文档中所准许的系统、方法、计算机可读指令、模块、算法、硬件逻辑和/或操作。此外,所要求保护的主题不限于解决在本公开的任一部分中所提及的任何或所有缺点的实现。
附图说明
参考附图阐述具体实施方式。在附图中,附图标记最左边的数字标识该附图标记首次出现的附图。在不同附图中使用相同的附图标记指示相似或相同的项。
图1是描绘用于输入/输出优化的列排序的示例可在其中操作的示例环境的框图。
图2是描绘被配置成参与用于输入/输出优化系统的列排序中的示例计算设备的框图。
图3是描绘在用于输入/输出优化的列次序评估和重新排序的操作期间的示例模块交互的数据流图。
图4是解说使用用于输入/输出优化系统的列排序来确定新列次序的过程流的流程图。
图5是解说在用于输入/输出优化过程的列排序中确定搜寻成本的过程流的流程图。
图6是解说使用用于输入/输出优化系统的列排序来确定新列次序的过程流的流程图。
具体实施方式
概览
本文描述的技术提供了用于通过对表格的列进行重新排序来提升从表格存储的输入/输出操作的速度以用于数据分析和处理(诸如用于向搜索查询提供响应)的技术和构造。在一些示例中,计算系统可接收与对信息的多个查询有关的统计数据。该统计数据可包括该查询的频率(例如,查询A在上周出现了6次)、每查询所访问的列的列表(例如,查询A访问了列5、13和68)、该查询的时间戳(例如,查询A在2014年7月17日1615GMT出现)、该查询的搜寻成本(例如,该查询的计算复杂度)、和/或与该查询有关的其他信息。
在各示例中,该计算系统可基于该统计数据向每个查询指派权重。例如,具有高频率的查询可比具有较低频率的另一查询更高地加权。附加地或替换地,该计算系统可基于用户偏好来指派权重。例如,该计算系统可从用户接收特定查询对该用户的高重要度的指示。该计算设备可保留用户偏好信息(诸如举例而言在用户简档中)并可向该查询指派更高的权重。
在一些示例中,该计算系统可分析存储该表格的硬件组件。该分析可包括确定该硬件组件的搜寻成本函数。例如,存储在硬盘驱动器(HDD)上的表格可能受磁道搜寻延迟(即,将磁头移动至一磁道或柱面的延迟)以及磁盘旋转延迟(即,所需扇区旋转到该磁头所花的时间)的影响。基于例如磁盘旋转速度,两种类型的HDD(HDD1和HDD2)可具有不同的搜寻成本函数。在各示例中,该计算系统可向该硬件组件的搜寻成本函数应用搜寻距离(例如,各列之间的距离)来确定查询的搜寻成本。其他硬件组件可具有与访问表格中的不同列有关的成本的不同成本函数。
附加地或替换地,该计算系统可分析一个或多个系统参数。该一个或多个系统参数可包括列压缩、行大小、数据类型、行类型、和/或与数据存储有关的任何其他参数。
基于输入统计数据、用户偏好、对硬件组件和/或系统参数的分析,该计算设备可确定多个列的新次序。该新次序是针对该查询输入统计数据优化的,以使得服务查询工作负载的总输入/输出成本在以新次序存储数据时被最小化。在各示例中,该计算系统可向随后被添加至该表格的数据应用该新次序。在一些示例中,该计算系统可通过按新次序重新保存该多个列来向先前保存的数据应用该新次序。通过对表格的列重新排序,无论是包括预先存在的数据还是应用到随后保存的数据,输入/输出(I/O)过程所需的时间可被最小化,由此具有提升查询的效率并减少对查询(诸如数据分析查询和/或搜索查询)做出响应所需的时间的效果。
说明性环境
下面描述的环境仅构成一个示例,而不旨在将各权利要求限于任一特定操作环境。可以使用其它环境而不背离所要求保护的主题的精神和范围。
图1示出其中可实现用于输入/输出优化的对表的列排序的示例环境100。在一些示例中,环境100的各个设备和/或组件包括可相互通信以及经由一个或多个网络104与外部设备通信的分布式计算资源102。
例如,网络104可包括诸如因特网之类的公共网络、诸如机构和/或个人内联网的专用网络、或专用和公共网络的某种组合。网络104还可包括任何类型的有线和/或无线网络,包括但不限于局域网(LAN)、广域网(WAN)、卫星网络、有线网络、Wi-Fi网络、WiMax网络、移动通信网络(例如3G、4G等等)或它们的任意组合。网络104可利用通信协议,包括基于分组的和/或基于数据报的协议,如网际协议(IP)、传输控制协议(TCP)、用户数据报协议(UDP)或其他类型的协议。而且,网络104还可包括便于网络通信和/或形成网络的硬件基础的若干设备,如交换机、路由器、网关、接入点、防火墙、基站、中继器、主干设备等等。
在一些示例中,网络104可进一步包括能够实现到无线网络的连接的设备,诸如无线接入点(WAP)。示例实施例支持通过WAP的连接性,WAP经由各个电磁频率(例如,无线电频率)来发送和接收数据,包括支持电气和电子工程师协会(IEEE)802.11标准(例如,802.11g、802.11n等)和其他标准的WAP。
在各个示例中,分布式计算资源102包括设备106(1)-106(N).各实施例支持以下场景:其中设备106可包括一个或多个可在群集中操作或在其他分组实施例中操作以共享资源、平衡负载、提升性能、提供故障转移支持或冗余或用于其他用途的计算设备。设备106可属于各种各样的类别或分类的设备,诸如传统的服务器型设备、台式计算机型设备、移动设备、专用型设备、嵌入式型设备和/或可穿戴型设备。由此,虽然被示为台式计算机,但是设备106可包括多种多样的设备类型并不限于特定类型的设备。设备106可表示但不限于:台式计算机、服务器计算机、web服务器计算机、个人计算机、移动计算机、膝上型计算机、平板计算机、可穿戴计算机、植入计算设备、电信设备、车载计算机、启用网络的电视机、瘦客户机、终端、个人数据助理(PDA)、游戏控制台、游戏设备、工作站、媒体播放器、个人录像机(PVR)、机顶盒、相机、用于包括在计算设备内的集成组件、家用电器、或任何其他类型的计算设备。
设备106可包括具有诸如经由总线112可操作地连接到计算机可读介质(CRM)110的一个或多个处理单元108的任何类型的计算设备,总线112在一些实例中可包括系统总线、数据总线、地址总线、PCI总线、迷你PCI总线以及任何各种本地、外围和/或独立总线中的一个或多个。存储在CRM 110上的可执行指令可包括例如操作系统114、列排序框架116、和可由处理单元108加载并执行的其他模块、程序或应用。作为附加或替换,本文所描述的功能可至少部分地由一个或多个硬件逻辑组件(诸如加速器)来执行。例如,但非限制,可被使用的说明性类型的硬件逻辑组件包括现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、片上系统(SOC)、复杂可编程逻辑器件(CPLD)等。例如,加速器可表示混合设备,诸如来自包括内嵌在FPGA结构中的CPU资源的ZYLEX或ALTERA的一个。
设备106还可包括一个或多个网络接口118以允许计算设备106和其他联网设备(诸如客户端计算设备120)之间的通信,客户端可通过其提交查询和/或用户偏好。这样的网络接口118可包括一个或多个网络接口控制器(NIC)或其他类型的用于经由网络发送和接收通信的收发机设备。为了简明起见,其他组件从说明性设备106中省略。
对表的列进行排序以用于输入/输出优化所涉及的其他设备可包括客户端计算设备120(1)-120(N)。设备120可属于各种各样的类别或分类的设备,诸如传统的客户端型设备、台式计算机型设备、移动设备、专用型设备、嵌入式型设备和/或可穿戴型设备。由此,虽然被示为移动计算设备(其可具有比设备106少的计算资源),但是客户端计算设备120可包括多种多样的设备类型并不限于任何特定类型的设备。客户端计算设备120可包括但不限于,计算机导航型客户端计算设备120(1)(诸如基于卫星的导航系统(包括全球定位系统(GPS)设备)和其他基于卫星的导航系统设备)、诸如移动电话120(2)的电信设备、移动电话/平板混合设备120(3)、个人数据助理(PDA)120(4)、平板计算机120(5)、膝上型计算机(诸如120(N))、其他移动计算机、可穿戴计算机、植入计算设备、台式计算机、个人计算机、车载计算机、启用网络的电视、瘦客户端、终端、游戏控制台、游戏设备、工作站、媒体播放器、个人录像机(PVR)、机顶盒、相机、用于包括在计算设备内的集成组件、家用电器、或任何其他类型的计算设备。
客户端计算设备120可表示具有诸如经由总线126可操作地连接到CRM 124的一个或多个处理单元122的任何类型的计算设备,总线126在一些实例中可包括系统总线、数据总线、地址总线、PCI总线、迷你PCI总线以及任何各种本地、外围和/或独立总线中的一个或多个。
存储在CRM 124上的可执行指令可包括例如操作系统128、用于访问和应用用户偏好的用户简档系统130、以及可由处理单元122加载并执行的其他模块、程序或应用。作为附加或替换,本文所描述的功能可至少部分地由一个或多个硬件逻辑组件(诸如加速器)来执行。例如,但非限制,可被使用的硬件逻辑组件的说明性类型包括现场可编程门阵列(FPGA)、应用专用集成电路(ASIC)、应用专用标准产品(ASSP)、片上系统(SOC)、复杂可编程逻辑器件(CPLD)等。例如,加速器可表示混合设备,诸如来自包括内嵌在FPGA结构中的CPU资源的ZYLEX或ALTERA的一个。
客户端计算设备120还可包括一个或多个网络接口132以允许客户端计算设备120和其他联网设备(诸如其他客户端计算设备120或设备106)之间通过网络104的通信。这样的网络接口132可包括一个或多个网络接口控制器(NIC)或其他类型的用于经由网络发送和接收通信的收发机设备。
客户端计算设备120还可包括用于使得设备120能够接收关于列排序的用户输入的用户接口134。各示例支持用户接口134接收来自用户的输入以启用和禁用列排序系统、指定重新排序的阈值、以及向随后添加的和/或先前存在的数据应用列次序。附加地或替换地,用户接口134可接收来自用户的输入,该输入指定输入/输出查询偏好和/或系统参数偏好,由此影响所得到的列排序。
在各示例中,用户接口134可诸如经由网络接口132和118将用户输入传达到设备106上的列排序框架116。在此类示例中,列排序框架116可至少部分地基于用户输入来计算新的列次序。
图2是描绘被配置成参与用于输入/输出优化系统的列排序的示例计算设备200的框图。在一些示例中,计算设备200可以是分布式计算资源的一个计算设备,诸如来自图1的设备106。在设备200中,处理单元202可包括处理单元108并可以表示,例如,CPU型处理单元、GPU型处理单元、现场可编程门阵列(FPGA)、另一类数字信号处理器(DSP)或在一些实例中可由CPU驱动的其他硬件逻辑组件。例如,但非限制,可被使用的硬件逻辑组件的说明性类型包括专用集成电路(ASIC)、专用标准产品(ASSP)、片上系统(SOC)、复杂可编程逻辑器件(CPLD)等。
在一些示例中,存储器204可表示CRM 110并可存储能由处理单元202执行的指令,如上面所讨论的,其可表示设备200中包括的处理单元。存储器204还可存储可由外部处理单元(诸如由外部CPU、外部GPU)执行的和/或可由外部加速器(诸如FPGA类型加速器、DSP类型加速器)或任何其他内部或外部加速器执行的指令。在各个示例中,至少一个CPU、GPU和/或加速器被合并到设备200中,而在一些示例中,CPU、GPU和/或加速器中的一个或多个在设备200外部。
在示出的示例中,存储器204还包括数据存储206。在一些示例中,数据存储206包括诸如数据库、数据仓库、或其他类型的结构化或非结构化数据存储之类的数据存储。在一些示例中,数据存储206包括语料库和/或具有一个或多个表格、索引、存储规程等的关系数据库以允许诸如包括例如超文本标记语言(HTML)表格、资源描述框架(RDF)表格、web本体语言(OWL)表格和/或可扩展标记语言(XML)表格的web表格的数据访问。数据存储202可存储数据以用于对存储器204中所存储的和/或由处理单元和/或加速器202执行的进程、应用、组件、和/或模块的操作。替换地,以上提到的数据中的一些或全部可被存储在一个或多个处理单元202板载的分开的存储器208上,诸如CPU类型处理器、GPU类型处理器、FPGA类型加速器、DSP类型加速器和/或另一加速器板载的存储器。
设备200还可包括一个或多个输入/输出(I/O)接口210,以允许设备200与输入/输出设备进行通信,输入/输出设备诸如包括外围输入设备(例如,键盘、鼠标、笔、游戏控制器、语音输入设备、触摸输入设备、姿势输入设备等)的用户输入设备和/或包括外围输出设备(例如,显示器、打印机、音频扬声器、触觉输出等)的输出设备。此外,在设备200中,可以是网络接口118的网络接口212可表示例如网络接口控制器(NIC)或其他类型的用于通过网络发送和接收通信的收发机设备。
在所示示例中,存储器204还包括操作系统214,其可以是操作系统114。存储器204还包括列排序框架216,其可以是列排序框架116。列排序框架216可包括一个或多个模块和/或API,它们被示为框218、220、222、224、和226,但是这仅仅是一个示例,数量可变得更高或更低。
与框218、220、222、224、和226相关联地描述的功能可被组合以由更少数量的模块和/或API执行,或它可被划分并由更多数量的模块和/或API执行。例如,框218可表示工作负载管理器模块提取模块,其具有用于编程设备200的处理单元202以用于提取多个查询统计数据(例如,查询的数量、查询的类型、每查询所访问的列的列表、以及与列排序操作相关的任何其他统计数据)的逻辑。在一些示例中,所述多个统计数据可被存储在计算设备200上,诸如举例而言存储在数据存储206中。在一些示例中,所述多个统计数据可从远程计算设备提取或接收(诸如经由网络接口212)并存储在数据存储206中。
工作负载管理器模块可周期性地(诸如举例而言在每天的指定时间)获得所述多个统计数据。在一些示例中,该周期性区间可以由程序管理器来确定(例如,每月、每周、每天)。在一些示例中,该工作负载管理器模块在由程序管理器手动引导时可获得或访问数据。
在一些示例中,该工作负载管理器模块可输入关于所处理的查询的统计数据,并且可确定每个查询的权重。例如,具有高频率的查询(例如,比另一查询处理多1.5、2.5、10倍的查询)可被给予比较低频率的查询高的权重。作为另一示例,至少基于访问十个列的计算成本(即,查询越计算昂贵,通过提升该查询的效率所得到的改进越大),访问十个列的查询可被给予比访问两个列的查询高的权重。
框220可表示用户偏好模块。在各示例中,用户偏好模块可存储一个或多个用户简档。该一个或多个用户简档可包括关于查询的用户偏好。例如,用户可输入对特定查询的偏好,由此指示该查询对该用户很重要。该用户偏好模块可处理用户偏好信息,并向该查询指派高权重,而不管其他查询统计数据。
在一些示例中,该用户简档可与服务提供方(诸如举例而言云服务提供方)相关联。在此类示例中,用户偏好模块可给予一些用户优先对待而不给其他用户优先对待。例如,服务提供方的付费客户可受到比非付费客户优先的对待。附加地或替换地,用户偏好模块可接收来自多个用户简档的输入,并可以一致方式向被指定为对该客户重要的查询指派权重。例如,同类客户(即,所有非付费客户)可被相同地对待,并且将基于对所述客户的整体一致性来对各查询加权(例如,对于各非付费客户所得到的搜索效率的增加将是类似的)。
框222可表示硬件模拟器模块,其具有用于编程处理单元202以用于提取与存储该表格的硬件组件有关的数据的逻辑。与硬件组件有关的数据可包括类型(例如,电子、磁、光、机械等)、性能性质(例如,访问时间、平均等待时间、数据速率等)、容量(例如,存储大小)。例如,硬件模拟器模块可确定该数据被存储在2TB的HDD上,其具有64MB的高速缓存,7200RPM的转速以及6.0Gb/s的串行ATA,或某种其他配置。
在一些示例中,硬件模拟器模块可包括用于确定与该硬件组件有关的搜寻成本函数的逻辑。该搜寻成本函数可抽象化物理硬件组件的实际属性并可跨不同模块、版本和/或库存单位(SKU)而改变。在各示例中,硬件模拟器模块可包括用于通过向该搜寻成本函数应用搜寻距离(即,各列之间的距离)来确定查询的搜寻成本的逻辑。在此类示例中,硬件模拟器模块可针对特定硬件组件确定查询的计算成本。
框224可表示系统设置模块,其具有用于编程设备200的处理单元202以用于提取与该数据存储相关联的一个或多个系统参数的逻辑。所述系统参数可包括列压缩、行大小、数据类型、行类型、以及与该数据存储相关的任何其他参数。
框226可表示次序生成模块,其具有用于编程设备200的处理单元202以用于生成新的列排序策略的逻辑。该次序生成模块可接收来自包括工作负载管理器模块、用户偏好模块、硬件模拟器模块、和/或系统设置模块在内的一个或多个模块的输入。输入可包括加权查询、用户偏好、搜寻成本和/或系统参数。次序生成模块可处理输入,并确定新的列次序。在一些示例中,次序生成模块可在实现之前测试新的列次序的功效。
在各示例中,框226可包括用于编程处理单元202以向该表格应用新的列排序策略的逻辑。该实现可应用于随后添加的数据和/或应用于该表格中存储的现有数据。
总线228可操作地将存储器204连接到处理单元202,总线228可以是总线112并且在一些实例中其可包括系统总线、数据总线、地址总线、PCI总线、迷你PCI总线以及任何各种本地、外围和/或独立总线中的一个或多个。
图3是解说列排序框架302(诸如列排序框架216)的各模块之间的示例交互的数据流图300。列排序框架302可处理多个数据,并输出用于优化输入/输出(诸如用于搜索)的新的列次序。
在各示例中,工作负载管理器模块304(诸如在框218中描绘的工作负载管理器模块)可从数据存储306接收与一个或多个查询相关联的多个查询统计数据。该查询统计数据可包括但不限于:查询数量、查询频率、查询类型、以及每查询访问的列的列表。在一些示例中,大数据分析系统(BDAS)308(例如,Spark,Scope,MapReduce等)可跟踪对特定表格的所有查询,并可持续地处理并存储与每个查询相关联的统计数据。BDAS 308随后可经由数据存储306向工作负载管理器模块304发送查询统计数据。在一些示例中,工作负载管理器模块304可直接从BDAS 308接收查询统计数据,并随后可将最近的统计数据存储在数据存储306中。
工作负载管理器模块304可周期性地接收与查询相关联的多个统计数据,诸如举例而言在每天、每周或每月指定时间处。在一些示例中,周期性区间可由程序管理器确定,该程序管理器可以在该工作负载管理器模块304内部或外部。在一些示例中,程序管理器模块可自动地指示BDAS 308按周期性区间发送经更新的查询统计数据。在一些示例中,程序管理器可手动地指示BDAS 308发送经更新的查询统计数据。例如,程序管理器可确定已对特定表格请求了高于正常数量的查询。程序管理器随后可指示BDAS 308基于查询的增加在周期性区间之间发送经更新的查询。
在一些示例中,工作负载管理器模块304可输入查询统计数据,并可确定每个查询的权重,所述权重是对用于输入/输出优化的列排序的相对重要性的指示。例如,具有高频率的查询(例如,已比另一查询处理1.5、2.5或10或更多倍的查询)可被给予比较低频率的查询高的权重。作为另一示例,至少基于访问二十个列的计算成本(即,查询越计算昂贵,通过增加该查询的效率所得到的改进越大),访问二十个列的查询可被给予比访问更少列的查询高的权重。
工作负载管理器模块304可向次序生成模块310发送与每个查询相关联的权重和相关统计数据。例如,相关统计数据可包括与每个查询相关联的列、以及与生成用于输入/输出优化的新列次序相关的任何其他数据。
在各示例中,次序生成模块310可接收来自一个或多个模块的输入,诸如工作负载管理器模块304、用户偏好模块312、硬件模拟器模块314、和/或系统设置模块318。次序生成模块310可接收来自前述模块的任何组合的输入。例如,次序生成模块310可接收来自工作负载管理器模块304和硬件模拟器模块314的输入。作为另一示例,次序生成模块310可接收来自工作负载管理器模块304、用户偏好模块312、硬件模拟器模块314、以及系统设置模块318的输入。
在一些示例中,次序生成模块310可接收来自用户偏好模块312的查询权重。用户偏好模块312可访问和/或存储诸如举例而言用户简档中的用户偏好。在各示例中,用户偏好可被存储在数据存储306中,并由用户偏好模块312访问。用户偏好可包括一个或多个查询对特定用户很重要的指示。例如,用户可输入对特定查询的偏好,由此指示该特定查询对该用户很重要。
用户偏好模块312可处理用户偏好信息并向该查询指派权重。在一些示例中,用户偏好模块可评估收到偏好信息并至少部分地基于该偏好信息来确定权重。例如,如果用户指示一查询高度重要,则该用户偏好模块可向该查询指派较重的权重。作为另一示例,如果用户指示该查询是中等或低重要性的,则该用户偏好模块可向该查询指派较低的权重。
在一些示例中,用户偏好模块312可评估收到偏好信息的源,并基于特定源(即,特定用户)来调整权重。例如,对云提供服务付费的用户可收到优于非付费客户的优先对待。在这一示例中,用户偏好模块可增大付费客户的查询偏好的权重和/或可减小非付费客户的查询偏好的权重。作为另一示例,每个付费或非付费类别内的用户可接收到优先对待,诸如举例而言在不同子类内的用户。例如,对白金服务付费的用户可收到优于对黄金或白银服务付费的用户的优先对待。
附加地或替换地,用户偏好模块312可接收来自多个用户的用户偏好信息,并可基于一致性尺度来计算权重。一致性尺度可包括经改进的查询返回性能跨所有用户、用户类别和/或子类的分布。在各示例中,用户偏好模块312可按将导致提供跨所有用户的最大查询返回性能的新列次序的方式来计算和/或调整查询的权重。在此类示例中,用户偏好模块312可平衡跨所有用户的查询偏好,并且确定最大数量用户的最大益处。在一些示例中,用户偏好模块312可按将导致向某些用户而不向其他用户提供更大的查询返回性能的新列次序的方式计算和/或调整查询的权重。例如,同一子类中的两个用户可经历相对等同的查询返回性能;然而较高子类的用户可经历更好的查询返回性能。
在各示例中,用户偏好模块312可向次序生成模块310发送经处理的权重。至少部分地基于查询对用户的重要性,次序生成模块310可确定用于输入/输出优化的新列次序。
次序生成模块310可接收来自硬件模拟器模块314(其可以是在框222表示的硬件模拟器模块)的输入,可处理与存储该表格的一个或多个硬件组件相关的数据。与该硬件组件相关的数据包括类型(例如,电子、磁、光、机械等)、性能性质(例如,访问时间、平均等待时间、数据速率等)、容量(例如,存储大小)。例如,硬件模拟器模块可确定数据被存储在2TBHDD上,其具有64MB高速缓存以及7200RPM的转速以及6.0Gb/s的串行ATA,或某种其他配置。
在各示例中,硬件模拟器模块314可从分布式文件系统316接收与该一个或多个硬件组件相关的数据。分布式文件系统316可包括Hadoop分布式文件系统(HDFS)、Cosmos分布式文件系统(CDFS)、或能够将数据表示为二维表格的任何其他类型的分布式文件系统。在一些示例中,分布式文件系统316可被内部保存到计算设备,诸如计算设备200。在此类示例中,分布式文件系统316可被保存在数据存储(诸如数据存储206)中。在一些示例中,分布式文件系统316可跨多个计算设备(诸如在分布式计算资源102中)保存。分布式文件系统316可包括在其上存储表格的一个或多个硬件组件,并可向硬件模拟器模块314提供与该一个或多个硬件组件相关的数据。
硬件模拟器模块314可处理该数据,并可确定每个硬件组件的搜寻成本(例如,磁盘搜寻的成本)。硬件组件的搜寻成本可以极大地依赖于跨被保存到硬件组件的被访问的两个列(诸如举例而言列i和j)之间的搜寻距离。列i和j之间的搜寻距离可被计算如下:
dist(i,j)=|b(j)–e(i)|
b(i)是数据对象i在该文件中的第一字节的偏移,而e(i)是i的最后字节后的那个字节的偏移。
附加地,硬件模拟器模块314可确定与该硬件组件相关的搜寻成本。搜寻成本函数抽象化物理硬件组件的实际属性并可跨不同库存单位(SKU)改变。在各示例(诸如在HDD上存储表格的示例)中,硬件模拟器模块314可应用曲线拟合来确定与该硬件组件相关的搜寻成本函数。在此类示例中,硬件模拟器模块314可首先选择在同构群集的磁盘上的不同区域(即,不同偏移)上随机分布的一组块,该同构群集是相同硬件的磁盘。硬件模拟器模块314随后可执行该组块中的每个块中的不同搜寻距离的读取-和-搜寻操作,并可记录每个搜寻操作的流逝时间(即,搜寻时间)。硬件模拟器模块314可计算平均搜寻时间。在计算平均搜寻时间之后,硬件模拟器组件314可用搜寻距离和相应的平均搜寻时间来拟合该曲线。
尽管上述示例是针对HDD的,但是应当理解,可以通过评估其他硬件组件(诸如举例而言闪存驱动器)来实现其他搜寻成本函数过程。对于每种类型的硬件组件,搜寻函数可以不同。从而,对于存储系统中的异构硬件组件,硬件模拟器可确定每种类型的硬件组件的搜寻函数。然而,为了降低计算复杂性,在一些示例中,硬件模拟器模块314可以向异构硬件组件应用通用搜寻函数。在确定搜寻函数之后,硬件模拟器组件314可计算从一个列到另一个列的搜寻成本。
为了计算两个列之间的搜寻成本,硬件模拟器模块314可向成本函数应用搜寻距离(如上所述的)。从而,给定两列i和j,从i到j的搜寻成本可被建模为:
Cost(i,j)=f(dist(i,j)).
硬件模拟器模块314可向次序生成模块310发送该硬件组件的搜寻成本。在一些示例中,硬件模拟器模块314可附加地向次序生成模块310发送该硬件组件的搜寻成本函数。然而,次序生成模块310的算法通常对搜寻函数是不可知的,并且从而通用于不同存储介质。
在各示例中,次序生成模块310还可从系统设置模块318接收系统参数。在各示例中,系统设置模块318可从分布式文件系统316接收系统参数。所述系统参数可包括列压缩、行大小、数据类型、行类型、以及与该数据存储相关的任何其他参数。
如同上面概述的,次序生成模块310接收来自工作负载管理器模块304、用户偏好模块312、硬件模拟器模块314、以及系统设置模块316的输入。输入可包括加权查询、用户偏好、搜寻成本和/或系统参数。次序生成器模块可处理输入,并确定新列次序。
列排序问题
具有数百或数千个列的非常大的表格可能需要极大的计算成本来返回来自查询的结果。以下讨论作为查询搜寻成本的函数解释了列排序问题。
查询q通常访问列的子集,该子集可被表示为:
co={co,1,co,2,...,co,m},
其中Cq表示按照S的全局次序q必须访问的列,而Cq,i表示由q访问的第i列。因此,如果i<j,则在S中Cq,i必须出现在Cq,j之前。换言之,q的所访问的列遵循列放置策略S的相同次序。用于处理查询q的读取任务随后可依次访问由q指定的列。从而该查询成本可被表达如下:
S={c1,c2,...,cn}为列放置策略。
因为该表格被划分为多个行组,并且每个行组遵循相同列放置策略S,所以该查询在整个表格上的搜寻成本将与一行组的搜寻成本成正比。从而,以上的查询搜寻成本可被应用到整个表格上。当列的数量较小(例如,<50)时,查询搜寻成本可能不大。然而,对于大表格,诸如举例而言具有大于1000列的表格,查询搜寻成本变成为I/O成本的很大一部分。至少部分是为了减小I/O成本,次序生成模块310确定新的列次序以优化输入/输出效率。
为了寻找到最优列放置策略S*={c1,c2,...,cn},以使得Q的总查询搜寻成本被最小化:
其中q∈Q表示每个查询的权重wq的经加权向量。如上所述,每个查询的权重wq可表示频率和/或重要性,并且可基于来自工作负载管理器模块304和/或用户偏好模块312的输入。在没有关于特定查询的权重的指定或输入的情况下,特定查询可被指派默认wq=1。
列排序优化
次序生成模块310可通过一种或多种算法(例如,基于模拟退火的列排序算法(SCOA)、基因算法(GA)、频率算法等)来处理输入并确定具有增加的输入/输出效率(即,更低的计算成本)的新列次序。如同上面讨论的,输入可以来自工作负载管理模块304、用户偏好模块312、硬件模拟器模块314、以及系统设置模块318中的一者或多者。
在一些示例中,次序生成模块310可应用SCOA算法来解决上述的次序生成问题。作为SCOA算法的基础的模拟退火(SA)包括迭代规程,该迭代规程不断地更新当前状态,直到系统达到足够(例如,预定阈值)的状态为止,或直到给定计算预算已用尽为止。在每个迭代中,SA考虑当前状态S的某种相邻状态S’。邻候选状态通过扰乱当前状态来生成。接受函数可确定该邻状态是否应当被接受。接受函数可利用温度函数和能量函数来做出此决定。由温度函数所返回的温度在特定分布之后的迭代过程期间下降(例如,冷却),其被称为退火时间表。能量函数可被用来计算一状态的能量。SA的目标是实现具有最低能量的状态。从而,具有最低能量的邻状态通常更可能被接受。
关于列排序问题,特定列次序可构成该算法的状态。例如,如果存在‘良好’列次序S,则可能存在‘靠近’S的更好状态S’(即S’和S彼此相关)。附加地,SCOA服务器中的列次序的查询搜寻成本担当SA的能量函数。
SCOA的接受列次序函数可在概率上接受或拒绝邻状态之间做出决定。接受概率的分布由退火时间表来确定。这可确保SCOA在一开始不可能受困为不期望的本地最小值。例如,在至少一个实现中,在开始处温度相对高。然而,随着时间流逝,温度呈指数下降,且工作负载的搜寻成本相应下降。从而,当温度很高时,SCOA概率地探索搜索空间来避免困入局部最小值中。此概率探索可导致开始处的某种波动,但是随着温度冷却,SCOA收敛至生成接近最优的列次序。
SCOA算法可如表格1中所示。
表格1
给定工作负载Q,初始列次序S0和每一列的数据大小,SCOA返回近似最优的列排序策略S,以使得Q的总I/O成本被最小化。在SCOA中,主循环(第0094到0102段)显示基于冷却时间表的迭代搜索过程。温度函数是退火时间表的控制函数。在SCOA中,温度可按照(1–冷却速率)的速率收缩。Neighbor(S)(邻居(S))函数被用来获得从当前列次序S转换的候选状态。邻列次序可通过交换当前列次序中两个随机选择的列的位置来生成。列次序的搜寻成本可通过从工作负载管理器模块304输入的搜寻成本函数来计算。
参数kmax表示主循环中的最大迭代数量,其控制SCOA的终止。在各示例中,kmax被设置得足够大以确保initial_temperature*(1-cooling_rate)kmax接近0。随着温度接近0,不太可能接受具有更高搜寻成本的更差候选状态,从而导致收敛。
接受列次序函数可如表格2中所示。
表格2。
如在表格1和表格2中的算法中所描述的,搜寻成本低于当前状态的搜寻成本的邻候选状态将被直接接受。否则,将以Prob(概率)函数返回的阈值有条件地接受,该Prob函数被设置为且random(0,1)按均匀分布生成0和1之间的随机数。
SCOA仅是次序生成模块310可应用至一个或多个输入的解说性示例算法。其他示例可使用基因算法、频率算法、或用于列排序的任何其他算法来实现输入/输出优化。
在各示例中,在确定新的列次序之后,次序生成模块310可在实现之前测试新列次序的功效。例如,次序生成模块310可取样本查询集,并针对减小的总查询搜寻成本进行测试。
次序生成模块310可将新列次序发送至分布式文件系统316来实现。当新列次序的成本节省增加到阈值水平以上时,和/或在来自用户的指导更新的输入之际,次序生成模块310可在预定时间(例如,每日、每周、每月)发送新列次序。在一些示例中,次序生成模块310可附加地发送对随后添加的数据和/或预先存在的数据实现该新列次序的指令。对预先存在的数据实现该新列次序的指令需要分布式文件系统重新保存表格整体,由此造成该指令计算昂贵。如此,在一些示例中,次序生成模块310可维持重新保存的成本阈值(高于该阈值则重新排序列将更高效),即,不管重新保存表格整体的计算成本如何,该系统将受益于输入/输出效率中的总体增加和查询搜寻成本的减小。
说明性过程
图4、5和6是描绘用于对列排序以用于输入/输出优化的示例过程的流程图。示例过程的操作在单独的框中示出,并且参考这些框来概括。这些过程被示为逻辑框流,其每个框可表示可用硬件、软件或其组合实现的一个或多个操作。
图4是解说使用用于输入/输出优化系统的列排序来确定新的列次序的过程流400的流程图。
在框402,计算设备(诸如计算设备200)可确定表格的列的第一次序。
在框404,计算设备可接收与该表格相关联的一个或多个查询统计数据。该一个或多个查询统计数据可包括查询数量、查询类型、每查询所访问的列的列表、以及与列排序操作相关的任何其他统计数据。在一些示例中,该计算设备可周期性地(诸如举例而言每天)接收该一个或多个查询统计数据。在一些示例中,该计算设备可响应于来自该计算系统或经由该计算系统来自用户的对更新统计数据的手动请求来接收该一个或多个查询统计数据。
在框406,该计算设备可处理在框404接收的该查询统计数据,并可确定该一个或多个查询的第一搜寻成本。例如,第一查询可访问三个列,并可具有第一计算成本。作为另一示例,第二查询可访问十个列,并可具有第二计算成本,该第二计算成本高于该第一计算成本。作为又一示例,第三查询可访问两个列,并可具有第三计算成本,该第三计算成本高于该第一和该第二计算成本。
在框408,该计算设备可接收一个或多个输入。该一个或多个输入可包括用户偏好数据(例如,一个或多个查询的偏好)和/或系统参数。在一些示例中,该用户偏好数据可包括从该用户到该系统的指令。例如,该用户偏好数据可包括启用或禁用列排序系统、指定重新排序的阈值、和/或将列次序应用于随后添加的和/或预先存在的数据的指令。
在一些示例中,该一个或多个输入可包括与存储该表格的一个或多个硬件组件相关联的硬件数据。与该一个或多个硬件组件相关的数据可包括类型、性能性质、容量、和/或与该硬件组件相关的其他数据。例如,硬件模拟器模块可确定数据被存储在2TB HDD上,其具有64MB高速缓存以及7200RPM的转速以及6.0Gb/s的串行ATA,或某种其他配置。
在一些示例中,该一个或多个输入可包括与该分布式文件系统相关联的系统参数。所述系统参数可包括列压缩、行大小、数据类型、行类型、以及与该分布式文件系统内的数据存储相关的任何其他参数。
在框410,该计算设备可基于查询统计数据、用户偏好数据、硬件数据、搜寻成本和系统参数中的一者或多者来确定该表格的列的第二次序。在一些示例中,该计算设备可使用模拟退火列排序算法(SCOA)来确定第二列次序。在一些示例中,该计算设备可使用基因算法或频率算法来确定第二列次序。
在框412,该计算设备可为该表格的列应用第二次序以创建经排序的表格。在一些示例中,该应用可包括向分布式文件系统发送该第二次序,连同应用该第二次序的指令。应用的指令可包括向该表格的列应用该第二列次序的指令和/或向在确定该列的第二次序之后添加到该表格的数据应用该第二列次序的指令。
在框414,该计算设备可接收输入/输出请求,诸如搜索查询。
在框416,该计算设备可搜索经排序的表格以寻找该搜索查询的结果。
图5是解说确定用于输入/输出优化过程的列排序中的搜寻成本的过程流500的流程图。
在框502,类似于框404,计算设备可接收与该表格相关联的一个或多个查询统计数据。该一个或多个查询统计数据可包括查询数量、查询类型、每查询所访问的列的列表、以及与列排序操作相关的任何其他统计数据。在一些示例中,该计算设备可周期性地(诸如举例而言每天)接收该一个或多个查询统计数据。在一些示例中,该计算设备可响应于来自该计算系统或经由该计算系统来自用户的对更新统计数据的手动请求来接收该一个或多个查询统计数据。
在框504,该计算设备可确定存储该表格的一个或多个硬件组件的搜寻函数。搜寻函数可抽象化物理硬件组件的实际属性并可跨不同模型、版本和/或库存单位(SKU)改变。
在框506,该计算设备可确定相关列之间的距离。在一些示例中,该相关列可以是在查询中有可能一起访问的两个或更多个列。该相关列可通过在框404接收的一个或多个查询统计数据来确定。
在框508,该计算设备可向该搜寻函数应用相关列之间的距离。
在框510,作为向搜寻函数应用距离的结果,该计算设备可确定一查询的搜寻成本(即,计算成本),该搜寻成本因硬件而异。
图6是解说使用用于输入/输出优化系统的列排序来确定新列次序的过程流600的流程图。
在框602,该计算设备可访问具有多个列的表格。
在框604,该计算设备可标识至少两个相关列。相关列可以是在查询中有可能一起访问的任两个或更多个列。在一些示例中,该至少两个相关列可通过一个或多个查询统计数据来标识。
在框606,该计算设备可确定该相关列是否紧靠在一起。在各示例中,确定列是否紧靠在一起可以至少部分地基于所述相关列在物理上紧靠在一起地定位。在一些示例中,确定相关列是否紧靠在一起可以至少部分地基于确定可以快速地一起访问所述相关列。确定是否可以快速地访问相关列可以基于访问所述相关列的搜寻成本。该搜寻成本可以基于存储该表格的硬件组件的搜寻函数,以及列之间的距离。
在框608,该计算设备可确定相关列位于彼此附近,且可维持所述相关列的位置。
在框610,该计算设备可确定相关列不位于彼此附近,且可确定所述多个列的新次序。在一些示例中,该新次序可基于查询统计数据、用户偏好、硬件数据、和/或系统参数中的一者或多者来确定。
在框612,该计算设备可应用新次序以创建经排序表格,该经排序表格被配置成具有被排序以优化输入/输出效率的列。在一些示例中,新次序的应用可包括向存储该表格的分布式文件系统发送实现指令。该实现指令可包括向该表格的列和/或向在确定新次序之后添加到该表格的数据应用该新次序的指令。
在一些示例中,该实现指令可至少部分地基于用户偏好数据。例如,用户可启用或禁用列排序过程。在此类示例中,在用户启用列排序过程之际,该计算设备可计算新次序并向分布式文件系统发送信号以便实现。作为另一示例,用户可确定一阈值,高于或低于该阈值计算设备自动重新计算次序,并将其发送至分布式文件系统来便实现。
在框614,该计算设备可接收输入/输出请求,诸如搜索查询。
在框616,该计算设备可搜索经排序的表格以寻找该搜索查询的结果。
示例条款
A:一种计算机实现的方法,包括:查明表格的列的第一次序,所述表格包括多个列;接收与一个或多个查询相关联的统计数据;至少部分地基于该统计数据确定该一个或多个查询的第一成本;确定该表格的列的第二次序,所述列的第二次序具有比该第一成本低的成本;以及应用所述列的第二次序来创建经排序表格。
B:如段落A所述的方法,其中所述确定所述一个或多个查询的第一成本包括:确定存储该表格的硬件的搜寻成本,确定该多个列中的至少两个相关列之间的距离;向该搜寻函数应用该距离;以及确定成本。
C:如段落A或段落B所描述的方法,还包括:接收与以下至少一者相关的一个或多个输入:与该表格相关联的用户偏好;硬件组件;以及系统参数,其中确定该表格的列的第二次序至少部分地基于该一个或多个输入。
D:如段落A-C所述的方法,其中经排序表格包括:以第一列次序配置的所述表格以及在确定所述列的第二次序之后添加的数据。
E:如段落A-C所述的方法,其中经排序表格包括:所述表格以及在确定列的该第二次序之后添加的数据。
F:如段落A-C所述的方法,还包括:接收查询;以及搜索该经排序表格以寻找该查询的结果。
G:具有在其上的计算机可执行指令的计算机可读介质,该计算机可执行指令响应于执行而配置计算机来执行段落A-F中任一段落所述的方法。
H:一种设备或系统,包括:处理器;以及耦合至该处理器的计算机可读介质,该计算机可读介质包括用于配置一个或多个设备以执行段落A-F中任一段落所述的方法的指令。
I:一种设备或系统,包括:用于处理的装置;以及用于耦合至用于处理的装置的用于存储的装置,该用于存储的装置存储用于配置一个或多个设备以执行段落A-F中的任一段落所述的方法的指令。
J:一种计算机实现的方法,包括:访问包括第一多个列的表格;标识所述第一多个列中的至少两个相关列;确定所述第一多个列中的所述至少两个相关列是否彼此靠近;响应于确定所述第一多个列中的所述至少两个相关列不彼此靠近,至少部分地基于使所述至少两个相关列位于彼此附近来确定所述第一多个列的新次序;以及向第二多个列应用所述新次序以创建经排序表格,所述第二多个列在确定所述新次序之后被添加到所述表格。
K:如段落J所述的方法,其中所述至少两个相关列的标识包括确定所述至少两个相关列将有可能被一起访问。
L:如段落J-K所述的方法,其中所述确定所述多个列中的所述至少两个相关列是否彼此靠近至少部分地基于距离模型。
M:如段落J-L所述的方法,还包括:标识所述表格中与所述搜索查询不相关的列;以及在搜索所述表格以寻找所述搜索查询的结果之前将所述列从所述表格移除。
N:如段落J-M所述的方法,还包括:向所述第一多个列应用所述新次序。
O:如段落J-N所述的方法,其中所述标识所述多个列中的所述至少两个相关列包括:接收与查询相关联的统计数据;以及标识响应于所述查询访问的两个或更多个列。
P:如段落J-O所述的方法,还包括:接收查询;以及搜索该经排序表格以寻找该查询的结果。
Q:具有在其上的计算机可执行指令的计算机可读介质,该计算机可执行指令用于配置计算机来执行段落J-P中任一段落所述的方法。
R:一种设备或系统,包括:处理器;以及耦合至该处理器的计算机可读介质,该计算机可读介质包括用于配置一个或多个设备以执行段落J-P中任一段落所述的方法的指令。
S:一种设备或系统,包括:用于处理的装置;以及用于耦合至用于处理的装置的用于存储的装置,该用于存储的装置存储用于配置一个或多个设备以执行段落J-P中的任一段落所述的方法的指令。
T:在其上具有计算机可执行指令的计算机可读介质,所述计算机可执行指令响应于执行来配置设备执行操作,包括:访问包括第一多个列的表格;标识所述第一多个列中的至少两个相关列;确定所述第一多个列中的所述至少两个相关列是否彼此靠近;响应于确定所述第一多个列中的所述至少两个相关列不彼此靠近,至少部分地基于使所述至少两个相关列位于彼此附近来确定所述第一多个列的新次序;以及向第二多个列应用所述新次序以创建经排序表格,所述第二多个列在确定所述第一多个列的所述新次序之后被添加到所述表格。
U:如段落T所述的计算机可读介质,其中所述至少两个相关列的标识包括确定在访问所述经排序表格以寻找查询的结果时所述至少两个相关列将有可能被一起访问。
V:如段落T-U所述的计算机可读介质,其中所述确定所述多个列中的所述至少两个相关列是否彼此靠近至少部分地基于搜寻成本。
W:如段落T-V所述的计算机可读介质,还包括:标识所述表格中与查询不相关的列;以及在搜索所述表格以寻找所述查询的结果之前将所述列从所述表格移除。
X:如段落T-W所述的计算机可读介质,还包括:向所述第一多个列应用所述新次序。
Y:如段落T-X所述的计算机可读介质,其中所述标识所述多个列中的所述至少两个相关列包括:接收与查询相关联的统计数据;以及标识响应于所述查询访问的两个或更多个列。
Z:如段落T-Y所述的计算机可读介质,所述操作还包括:接收查询;以及搜索该经排序表格以寻找该查询的结果。
AA:一种设备或系统,包括:处理器;以及耦合至所述处理器的如段落T-Z中任一段落所述的计算机可读介质。
AB:一种设备或系统,包括:用于处理的装置;以及用于耦合至用于处理的装置的用于存储的装置,该用于存储的装置存储用于配置一个或多个设备以执行段落T-Z中的任一段落所述的方法的指令。
AC:一种系统,包括:处理器;存储用于由所述处理器致动的列排序框架的存储器,所述列排序框架包括:工作负载管理器模块,被配置成且处理关于表格式存储的第一列布局的数据以确定与所述第一列布局相关联的查询工作负载;以及次序生成模块,被配置成至少部分地基于该查询工作负载来计算该表格式存储的第二列布局。
AD:如段落AC所述的系统,其中所述数据包括以下的至少一者:查询的频率;为所述查询所访问的列的列表;所述查询的时间戳;或者所述查询的搜寻成本。
AE:如段落AC-AD所述的系统,其中所述次序生成模块被进一步配置成向在所述第二列布局的计算之后添加的数据应用该表格式存储的第二列布局。
AF:如段落AC-AE所述的系统,其中所述列排序框架还包括:用户偏好模块,其被配置成接收和处理关于所述表格的用户偏好输入;硬件模拟器模块,其被配置成接收与存储所述表格的硬件相关联的数据;以及系统设置模块,其被配置成接收与所述表格相关的系统设置。
AG:如段落AF所述的系统,其中所述用户偏好输入包括以下的至少一者:启用该列排序框架的输入;禁用该列排序框架的输入;对一个或多个查询的偏好;或者用于计算该表格的第二列布局的效率阈值。
AH:具有在其上的计算机可执行指令的计算机可读介质,该计算机可执行指令用于响应于执行来配置计算机执行段落AC-AG中任一段落所述的系统。
AI:一种设备或方法,包括:处理器;以及耦合至该处理器的计算机可读介质,该计算机可读介质包括用于配置一个或多个设备以执行段落AC-AG中任一段落所述的方法的指令。
AJ:一种设备或方法,包括:用于处理的装置;以及用于耦合至用于处理的装置的用于存储的装置,该用于存储的装置存储用于配置一个或多个设备以执行段落AC-AG中的任一段落所述的方法的指令。
AK:一种设备,包括:工作负载管理器模块,被配置成接收并处理关于表格的列的第一次序的数据;用户偏好模块,其被配置成接收和处理关于所述表格的用户偏好输入;硬件模拟器模块,其被配置成接收与存储所述表格的硬件相关联的数据;系统设置模块,其被配置成接收与所述表格相关的系统设置;以及次序生成模块,其被配置成接收来自工作负载管理器模块、用户偏好模块、硬件模拟器模块、以及系统设置模块中的一者或多者的输入,并计算该表格的列的第二次序。
AL:如段落AK所述的设备,其中所述数据包括以下的至少一者:查询的频率;为所述查询所访问的列的列表;所述查询的时间戳;或者所述查询的搜寻成本。
AM:如段落AK-AL所述的设备,其中所述次序生成模块还被配置成向随后添加的数据应用列的该第二次序。
AN:如段落AK-AM所述的设备,其中所述用户偏好输入包括以下的至少一者:启用该列排序框架的输入;禁用该列排序框架的输入;对一个或多个查询的偏好;或者用于计算该表格的列的第二次序的效率阈值。
结语
尽管已经用结构特征和/或方法动作专用的语言描述了本主题,但要理解,所附权利要求书中定义的主题不必限于所描述的具体特征或动作。而是,这些具体特征和动作是作为实现该权利要求的解说性形式而公开的。
除非另外具体声明,否则在上下文中可以理解并一般地使用条件语言(诸如“能”、“能够”、“可能”或“可以”)表示特定示例包括而其他示例不包括特定特征、元素和/或步骤。因此,这样的条件语言一般并非旨在暗示对于一个或多个示例以任何方式要求特征、元素和/或步骤,或者一个或多个示例必然包括用于决定的逻辑、具有或不具有用户输入或提示、在任何特定实施例中是否要包括或要执行这些特征、元素和/或步骤。
除非另外具体声明,应理解联合语言(诸如短语“X、Y或Z中至少一个”)表示项、词语等可以是X、Y或Z中的任一者、或其组合。
本文所述和/或附图中描述的流程图中任何例行描述、元素或框应理解成潜在地表示包括用于实现该例程中具体逻辑功能或元素的一个或多个可执行指令的代码的模块、片段或部分。替换示例被包括在本文描述的示例的范围内,其中各元素或功能可被删除,或与所示出或讨论的顺序不一致地执行,包括基本上同步地执行或按相反顺序执行,这取决于所涉及的功能,如本领域技术人也将理解的。
应当强调,可对上述示例作出许多变型和修改,其中的元素如同其他可接受的示例那样应被理解。所有这样的修改和变型在此旨在包括在本公开的范围内并且由以下权利要求书保护。
Claims (12)
1.一种用于确定表格式存储的列布局的系统,包括:
处理器;
储存用于由所述处理器致动的列排序框架的存储器,所述列排序框架包括:
工作负载管理器,其被配置成处理关于表格式存储的第一列布局的数据以确定与所述第一列布局相关联的查询工作负载;
用户偏好模块,其被配置成接收和处理关于所述表格式存储的用户偏好输入;
硬件模拟器模块,其被配置成接收与储存所述表格式存储的硬件相关联的数据;以及
次序生成模块,其被配置成至少部分地基于所述查询工作负载、所述用户偏好输入、以及与储存所述表格式存储的所述硬件相关联的数据来计算所述表格式存储的第二列布局。
2.如权利要求1所述的系统,其特征在于,关于所述表格式存储的第一列布局的数据包括以下的至少一者:
查询的频率;
为所述查询所访问的列的列表;
所述查询的时间戳;或者
所述查询的搜寻成本。
3.如权利要求1或2所述的系统,其特征在于,所述列排序框架进一步包括:
系统设置模块,其被配置成接收与所述表格式存储相关的系统设置。
4.一种计算机实现的方法,包括:
查明表格的第一列次序,所述表格包括多个列;
接收与一个或多个查询相关联的统计数据;
获得与所述一个或多个查询相关联的用户偏好;
接收与存储所述表格的硬件组件相关的一个或多个输入;
至少部分地基于所述统计数据来确定所述一个或多个查询的第一成本;
至少部分地基于所述统计数据、所述用户偏好、以及所述一个或多个输入来确定所述表格的第二列次序,所述第二列次序具有比所述第一成本低的成本;以及
应用所述第二列次序以创建经排序表格。
5.如权利要求4所述的方法,其特征在于,还包括:
接收与以下相关的一个或多个输入:与存储所述表格有关的系统参数,
其中所述的确定所述表格的第二列次序还至少部分地基于与所述系统参数相关的一个或多个输入。
6.如权利要求4所述的方法,其特征在于,所述经排序表格包括:
以所述第一列次序配置的所述表格;以及
以所述第二列次序配置的、在确定所述表格的第二列次序之后添加的数据。
7.如权利要求4所述的方法,其特征在于,所述经排序表格包括:
以所述第二列次序配置的所述表格以及在确定所述表格的第二列次序之后添加的数据。
8.在其上具有计算机可执行指令的计算机可读介质,所述计算机可执行指令响应于执行来配置设备执行操作,包括:
访问包括第一多个列的表格;
标识所述第一多个列中的至少两个相关列;
至少部分地基于与访问所述两个相关列的每个列相关联的硬件资源成本来确定所述第一多个列中的所述至少两个相关列是否彼此靠近;
响应于确定所述第一多个列中的所述至少两个相关列不彼此靠近,至少部分地基于使所述至少两个相关列位于彼此附近来确定所述第一多个列的新次序,以使得与访问所述新次序中的所述两个相关列的每个列相关联的所述硬件资源成本小于与访问先前次序中的所述两个相关列的每个列相关联的所述硬件资源成本;以及
向第二多个列应用所述新次序来创建经排序表格,所述第二多个列在确定所述第一多个列的所述新次序之后被添加到所述表格。
9.如权利要求8所述的计算机可读介质,其特征在于,所述至少两个相关列的标识包括确定所述至少两个相关列将有可能被一起访问。
10.如权利要求8或9所述的计算机可读介质,其特征在于,所述确定所述多个列中的所述至少两个相关列是否彼此靠近至少部分地基于搜寻成本。
11.一种具有指令的计算机可读存储介质,当所述指令被执行时使得机器执行如权利要求4-7中任一权利要求所述的方法。
12.一种计算机系统,包括用于执行如权利要求4-7中任一权利要求所述的方法的装置。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2016/035607 WO2016196856A1 (en) | 2015-06-04 | 2016-06-03 | Column ordering for input/output optimization in tabular data |
US15/579,522 US11514011B2 (en) | 2015-06-04 | 2016-06-03 | Column ordering for input/output optimization in tabular data |
EP16729456.0A EP3304350B1 (en) | 2015-06-04 | 2016-06-03 | Column ordering for input/output optimization in tabular data |
US18/046,682 US20230078315A1 (en) | 2015-06-04 | 2022-10-14 | Column ordering for input/output optimization in tabular data |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNPCT/CN2015/080766 | 2015-06-04 | ||
CN2015080766 | 2015-06-04 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106250381A CN106250381A (zh) | 2016-12-21 |
CN106250381B true CN106250381B (zh) | 2020-11-17 |
Family
ID=57626462
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510371595.6A Active CN106250381B (zh) | 2015-06-04 | 2015-06-29 | 用于确定表格式存储的列布局的系统和方法 |
Country Status (3)
Country | Link |
---|---|
US (2) | US11514011B2 (zh) |
EP (1) | EP3304350B1 (zh) |
CN (1) | CN106250381B (zh) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11068481B2 (en) * | 2016-04-18 | 2021-07-20 | Verizon Media Inc. | Optimized full-spectrum order statistics-based cardinality estimation |
US10664473B2 (en) * | 2017-01-30 | 2020-05-26 | International Business Machines Corporation | Database optimization based on forecasting hardware statistics using data mining techniques |
US10740553B2 (en) * | 2017-04-17 | 2020-08-11 | Microsoft Technology Licensing, Llc | Collaborative review workflow graph |
US10817515B2 (en) * | 2017-07-26 | 2020-10-27 | International Business Machines Corporation | Cognitive data filtering for storage environments |
US11698936B2 (en) * | 2017-10-09 | 2023-07-11 | Home Depot Product Authority, Llc | System and methods for search engine parameter tuning using genetic algorithm |
TW201926081A (zh) * | 2017-11-27 | 2019-07-01 | 財團法人資訊工業策進會 | 資料轉移系統及方法 |
CN110968993A (zh) * | 2018-09-30 | 2020-04-07 | 北京国双科技有限公司 | 信息的处理方法及装置、存储介质和处理器 |
CN110866042B (zh) * | 2019-10-11 | 2023-05-12 | 平安科技(深圳)有限公司 | 表格智能查询方法、装置及计算机可读存储介质 |
US11050677B2 (en) | 2019-11-22 | 2021-06-29 | Accenture Global Solutions Limited | Enhanced selection of cloud architecture profiles |
CN111832932A (zh) * | 2020-07-10 | 2020-10-27 | 国网辽宁省电力有限公司电力科学研究院 | 一种配电网智能运维决策方法与系统 |
US11481257B2 (en) | 2020-07-30 | 2022-10-25 | Accenture Global Solutions Limited | Green cloud computing recommendation system |
CN112347104B (zh) * | 2020-11-06 | 2023-09-29 | 中国人民大学 | 一种基于深度强化学习的列存储布局优化方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060206465A1 (en) * | 2001-06-01 | 2006-09-14 | Schmitz Benjamin W | System and method for receiving and loading fare and schedule data |
CN102156714A (zh) * | 2011-03-22 | 2011-08-17 | 清华大学 | 实现自适应垂直划分的关系型数据库的方法及系统 |
CN103324656A (zh) * | 2012-03-22 | 2013-09-25 | 乐金信世股份有限公司 | 数据库管理方法及其数据库管理服务器 |
CN104239447A (zh) * | 2014-09-01 | 2014-12-24 | 江苏瑞中数据股份有限公司 | 电网时序大数据存储方法 |
Family Cites Families (29)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5758144A (en) * | 1994-06-24 | 1998-05-26 | International Business Machines Corporation | Database execution cost and system performance estimator |
US20030158842A1 (en) * | 2002-02-21 | 2003-08-21 | Eliezer Levy | Adaptive acceleration of retrieval queries |
US6957225B1 (en) | 2002-05-07 | 2005-10-18 | Oracle International Corporation | Automatic discovery and use of column correlations in tables |
US7103608B1 (en) * | 2002-05-10 | 2006-09-05 | Oracle International Corporation | Method and mechanism for storing and accessing data |
JPWO2005086003A1 (ja) * | 2004-03-08 | 2008-01-24 | アネックスシステムズ株式会社 | データベース・システム |
US8392400B1 (en) * | 2005-12-29 | 2013-03-05 | Amazon Technologies, Inc. | Method and apparatus for stress management in a searchable data service |
US10007686B2 (en) * | 2006-08-02 | 2018-06-26 | Entit Software Llc | Automatic vertical-database design |
US20080059492A1 (en) * | 2006-08-31 | 2008-03-06 | Tarin Stephen A | Systems, methods, and storage structures for cached databases |
US7822769B2 (en) * | 2006-08-31 | 2010-10-26 | Rivet Software, Inc. | Analysis of financial and business information based on interactive data |
US20080320266A1 (en) * | 2007-06-22 | 2008-12-25 | Levine Frank E | Allocating Disk Space On A Disk Drive |
US7966343B2 (en) * | 2008-04-07 | 2011-06-21 | Teradata Us, Inc. | Accessing data in a column store database based on hardware compatible data structures |
US8862625B2 (en) * | 2008-04-07 | 2014-10-14 | Teradata Us, Inc. | Accessing data in a column store database based on hardware compatible indexing and replicated reordered columns |
US8200668B2 (en) | 2008-06-24 | 2012-06-12 | Microsoft Corporation | Scalar representation for a logical group of columns in relational databases |
US8290931B2 (en) * | 2010-02-22 | 2012-10-16 | Hewlett-Packard Development Company, L.P. | Database designer |
US9176995B2 (en) * | 2010-02-22 | 2015-11-03 | International Business Machines Corporation | Organization of data within a database |
US9043373B2 (en) * | 2010-08-17 | 2015-05-26 | Iolo Technologies, Llc | System and method for efficient data storage |
CN102737033B (zh) * | 2011-03-31 | 2015-02-04 | 国际商业机器公司 | 数据处理设备及其数据处理方法 |
US20130204813A1 (en) * | 2012-01-20 | 2013-08-08 | Fluential, Llc | Self-learning, context aware virtual assistants, systems and methods |
US9098406B2 (en) * | 2012-01-23 | 2015-08-04 | Empire Technology Development Llc | Managing addressable memory in heterogeneous multicore processors |
US9159052B2 (en) * | 2012-05-09 | 2015-10-13 | Sap Se | Generalizing formats of business data queries and results |
US9141665B1 (en) * | 2012-08-13 | 2015-09-22 | A9.Com, Inc. | Optimizing search system resource usage and performance using multiple query processing systems |
US8892576B2 (en) * | 2012-10-26 | 2014-11-18 | International Business Machines Corporation | Ordering and presenting a set of data tuples |
US10296462B2 (en) | 2013-03-15 | 2019-05-21 | Oracle International Corporation | Method to accelerate queries using dynamically generated alternate data formats in flash cache |
US9753975B2 (en) * | 2013-07-12 | 2017-09-05 | International Business Machines Corporation | Intelligently utilizing non-matching weighted indexes |
US9317543B2 (en) * | 2014-01-13 | 2016-04-19 | International Business Machines Corporation | Dropping columns from a table with minimized unavailability |
US9798727B2 (en) * | 2014-05-27 | 2017-10-24 | International Business Machines Corporation | Reordering of database records for improved compression |
DK2953407T3 (en) * | 2014-06-05 | 2019-03-18 | Telia Co Ab | Optimizing the utilization of network resources |
US10162855B2 (en) * | 2014-06-09 | 2018-12-25 | Dundas Data Visualization, Inc. | Systems and methods for optimizing data analysis |
US20150370898A1 (en) * | 2014-06-23 | 2015-12-24 | Thomson Licensing | Text and graphic based search querry formulation |
-
2015
- 2015-06-29 CN CN201510371595.6A patent/CN106250381B/zh active Active
-
2016
- 2016-06-03 US US15/579,522 patent/US11514011B2/en active Active
- 2016-06-03 EP EP16729456.0A patent/EP3304350B1/en active Active
-
2022
- 2022-10-14 US US18/046,682 patent/US20230078315A1/en active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060206465A1 (en) * | 2001-06-01 | 2006-09-14 | Schmitz Benjamin W | System and method for receiving and loading fare and schedule data |
CN102156714A (zh) * | 2011-03-22 | 2011-08-17 | 清华大学 | 实现自适应垂直划分的关系型数据库的方法及系统 |
CN103324656A (zh) * | 2012-03-22 | 2013-09-25 | 乐金信世股份有限公司 | 数据库管理方法及其数据库管理服务器 |
CN104239447A (zh) * | 2014-09-01 | 2014-12-24 | 江苏瑞中数据股份有限公司 | 电网时序大数据存储方法 |
Also Published As
Publication number | Publication date |
---|---|
EP3304350B1 (en) | 2020-06-24 |
US11514011B2 (en) | 2022-11-29 |
CN106250381A (zh) | 2016-12-21 |
EP3304350A1 (en) | 2018-04-11 |
US20180107696A1 (en) | 2018-04-19 |
US20230078315A1 (en) | 2023-03-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106250381B (zh) | 用于确定表格式存储的列布局的系统和方法 | |
US10025785B2 (en) | Method and system of automatically downloading media content in a preferred network | |
US8782219B2 (en) | Automated discovery of template patterns based on received server requests | |
CN111460234B (zh) | 图查询方法、装置、电子设备及计算机可读存储介质 | |
US8768929B2 (en) | Clustering streaming graphs | |
CN111898221A (zh) | 选址方法、装置及计算机可读存储介质 | |
CN107330761B (zh) | 基于地理位置的服务信息提供方法和装置以及计算设备 | |
US10445341B2 (en) | Methods and systems for analyzing datasets | |
US20220035794A1 (en) | Data retrieval via incremental updates to graph data structures | |
CN108389152B (zh) | 一种图结构感知的图处理方法及装置 | |
US11381635B2 (en) | Method of operating a server apparatus for delivering website content, server apparatus and device in communication with server apparatus | |
Zhang et al. | Buffer pool aware query scheduling via deep reinforcement learning | |
US10936192B2 (en) | System and method for event driven storage management | |
US10320698B1 (en) | Determining network connectivity for placement decisions | |
US10915597B2 (en) | Systems and methods for multiobjective optimization | |
CN108289115B (zh) | 一种信息处理方法及系统 | |
TWI758223B (zh) | 具有動態最小批次尺寸之運算方法,以及用於執行該方法之運算系統及電腦可讀儲存媒體 | |
Liu et al. | Towards dynamic reconfiguration of composite services via failure estimation of general and domain quality of services | |
WO2016196856A1 (en) | Column ordering for input/output optimization in tabular data | |
CN108256694A (zh) | 基于重复遗传算法的模糊时间序列预测系统、方法及装置 | |
US9858551B2 (en) | Ranking analysis results based on user perceived problems in a database system | |
US12047439B1 (en) | System and method for management of workload distribution in shared environment | |
KR102343848B1 (ko) | 이용자 상태 벡터를 이용한 전환 전략 탐색 방법 및 운영 장치 | |
US11811862B1 (en) | System and method for management of workload distribution | |
WO2024139461A1 (zh) | 机器学习模型的训练方法、装置、设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |