CN110140121A - 聚合查询的数据库***和处理 - Google Patents
聚合查询的数据库***和处理 Download PDFInfo
- Publication number
- CN110140121A CN110140121A CN201780039079.0A CN201780039079A CN110140121A CN 110140121 A CN110140121 A CN 110140121A CN 201780039079 A CN201780039079 A CN 201780039079A CN 110140121 A CN110140121 A CN 110140121A
- Authority
- CN
- China
- Prior art keywords
- data
- subset
- data record
- inquiry
- record
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/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/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/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/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2462—Approximate or statistical queries
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Computational Linguistics (AREA)
- Probability & Statistics with Applications (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Fuzzy Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
处理单元可以确定数据集的第一子集,其包括基于数据记录的测量值选择的数据记录。该处理单元可以确定将断言映射到与断言相关联的数据记录的索引以及该记录的近似值。处理单元可以针对第一子集来处理查询以提供第一结果和第一精确度值,确定第一精度值不满足精确度标准,以及针对该索引来处理查询。在一些示例中,处理单元可以针对包括满足预定断言的数据记录的第二子集来处理查询。在一些示例中,处理单元可以接收数据记录并且确定第一子集。数据记录可以包括相应的测量值。具有较高测量值的数据记录可以比具有较低测量值的数据记录更频繁地出现在第一子集中。
Description
背景技术
用户越来越多地转向计算服务(诸如数据库引擎)以分析大量的数据。例如,在线分析处理(OLAP)***可以被设计为分析临床测试数据或商务智能(BI)数据。然而,许多数据库***不能提供对大数据集的实时或近实时的查询响应。因此,用户必须提前计划他们的分析,并且不能参与探索分析以试图对数据中的模式进行定位。一些“近似查询处理”(AQP)数据库***通过提供对查询的近似答案来减少响应延迟。然而,这些***所提供的答案可能远离实际答案,使得用户无法依赖于近似结果。
发明内容
本公开描述了用于构建数据库和/或处理查询的***、方法和计算机可读介质。在一些示例中,一种计算设备可以确定数据集的第一子集,该第一子集包括至少部分地基于第一数据记录的相应测量值而从数据集中选择的第一数据记录。该计算设备可以确定索引,索引模块包括从断言到与断言相关联的数据集的一个或多个第二数据记录和到与一个或多个第二数据记录相关联的相应近似值的映射。此外,该计算设备还可以针对第一子集来处理查询以提供第一结果和第一精确度值;确定第一精确度值不满足预定精确度标准;以及针对索引来处理查询以提供第二结果。
根据在本文中的示例查询处理技术,计算设备可以针对数据集的第一子集来处理查询以提供第一查询结果,第一子集包括至少部分地基于第一数据记录的相应测量值而从数据集中选择的第一数据记录。计算设备可以确定第一查询值不满足预定精确度标准。此外,计算设备可以针对数据集的第二子集来处理查询以提供第二查询结果,第二子集包括从数据集中选择的第二数据记录,其中第二数据记录中的个体记录满足第二子集的预定断言。
根据在本文中的示例数据库构建技术,计算设备可以经由通信接口接收多个数据记录。多个数据记录中的第一数据记录包括第一离散值和第一测量值,并且多个数据记录中的第二数据记录包括第二离散值和大于第一测量值的第二测量值。计算设备可以确定多个数据记录中的第一子集,其中第二数据记录在第一子集中比第一数据记录更频繁地出现。
本发明内容被提供是为了以简化的形式介绍一些概念,这些概念将在下面的具体实施方式中被进一步描述。本发明内容并不旨在标识所要求保护的主题内容的关键特征或必要特征,也并不旨在被用于帮助确定所要求保护的主题内容的范围。例如,术语"技术"可以例如指***、方法、计算机可读指令,模块,算法,硬件逻辑和/或操作,如上文和整个文档中所描述的上下文所允许的。
附图说明
参考附图描述具体实施方式。在附图中,附图标记的最左边的数字标识该附图标记首次出现的附图。不同附图中的相同附图标记指示相似或相同的项。
图1示出了描述用于构建如本文所述的数据库或处理查询的示例环境的框图;
图2是描绘根据本文所述的各种示例的被配置为参与构建数据库或处理查询的示例计算设备的框图;
图3是描述根据本文所述的各种示例的在构建数据库或处理查询期间的示例模块交互以及示例数据项目的数据流示图;
图4是示出了根据本文所述的各种示例的用于构建数据库或处理查询的示例过程的流程图;
图5是示出了根据本文所述的各种示例的用于构建数据库或处理查询的示例过程的流程图;
图6是示出了根据本文所述的各种示例的用于处理查询和示例数据项目的示例过程的数据流图;
图7是示出了根据本文所述的各种示例的用于处理查询的示例数据项目的示例过程的数据流图;
图8是示出了根据本文所述的各种示例的用于处理查询的示例过程的流程图;
图9是示出了根据本文所述的各种示例的用于处理查询的示例过程数据流图,以及示例数据项目;
图10是示出了根据本文所述的各种示例的用于处理查询的示例过程的数据流图,以及示例数据项目;
图11是示出了根据本文所述的各种示例的用于构建数据库的示例过程的数据流图,以及示例数据项目;
图12示出了根据本文所述的各种示例的用于构建数据库的示例过程的数据流图,以及示例数据项目。
具体实施方式
概述
本文描述的示例提供了用于在数据库列中改进查询的处理(例如,提供数据的和、计数或其它统计的聚合查询)的技术和构造。本文描述的示例提供了允许计算***更快速地提供近似查询响应的技术和构造。与精确(非近似)查询响应相比较,本文中的示例在近似查询响应中提供了关于可能的误差的量值的精确信息。本文中的示例可以减少用户实现用户的目标所需***交互的数量,从而减少了***与用户之间通信所需的带宽。本文中的示例例如关于OLAP***和关系数据库而被给出,但是这些示例不是限制性的。本文中的示例技术可以适用于其它数据存储***(例如,XML(可扩展标记语言)数据库和HADOOP文件)。
参考附图1-12进一步描述了各种实体、电子设备的配置、以及用于处理查询(例如,用于OLAP应用)的方法。虽然本文中所描述的许多示例涉及服务器和其它非消费电子设备,但是也可以使用其他类型的电子设备(例如,如参考图1所讨论)。贯穿本文中的“用户”的引用可以指人类用户或指与计算***交互的其他实体。
说明性环境
图1示出了示例性环境100,其中数据库构建***或查询处理***的示例可以运行,和/或其中可以执行诸如那些本文所述的数据库构建方法或查询处理方法。在所示示例中,环境100中所示出的各种设备和/或组件包括计算设备102(1)-102(N)(在本文中单独地和/或共同地指引用102),其中,N为任何大于和/或等于1的整数,以及计算设备104(1)-104(K)(在本文中单独地和/或共同地指引用104),其中K为大于和/或等于1的任何整数。在一些示例中,N=K;在一些其他的实例中,N>K或N<K。尽管被示为,例如,台式计算机、膝上型计算机、平板计算机和/或蜂窝电话,但是计算设备102和/或计算设备104可以包括多种多样类型的设备类别、类型、和/或型号,而不限于特定类型的设备。
在所示示例中,计算设备102(1)-102(N)可以为在集群计算***106(例如,诸如微软AZURE(MICROSOFT AZURE),谷歌云平台(GOOGLE CLOUD PLATFORM)的云服务)中的计算节点,或具有一些离散计算节点(设备102)另一集群计算***(“计算集群”或“集群”),这些离散计算节点一起工作以完成分配给此整个集群的计算任务。在一些示例中,计算设备104可以是集群106的客户端,并且可以向集群106提交作业和/或从集群106接收作业结果。在集群106中的计算设备102(1)-102(N)例如可以共享资源、平衡负载、提高性能和/或提供故障切换支持和/或冗余。附加地或备选地,计算设备104可以以集群来操作和/或以分组配置来操作。在所示示例中,计算设备104与计算设备102通信。附加地或备选地,计算设备104可以例如利用集群106的负载平衡设备或作业协调设备来与集群106通信,并且集群106或其组件可以向个体计算设备102路由传输。
一些基于集群的***可以具有部署在云中的集群的全部或部分。云计算允许将计算资源提供为服务而不是可递送的产品。例如,在云计算环境中,资源(诸如,计算能力、软件、信息和/或网络连接)通过网络(诸如,互联网)被提供(例如,通过租赁协议来提供)。如本文中所使用的,参考计算群集、节点和作业所使用的术语“计算”通常是指计算、数据操纵和/或其它编程控制的操作。参考群集、节点、作业所使用的术语“资源”通常是指集群所提供的由作业使用的任何商品和/或服务。资源可以包括处理器周期、磁盘空间、随机访问存储器(RAM)空间、网络带宽(上行链路,下行链路,或两者)、优先网络通道(诸如用于与服务质量(QoS)保障通信的那些)、备份磁带空间和/或安装/卸载服务、电力等。
作为示例而非限制,计算设备102和/或计算设备104可以包括但不限于:服务器计算机和/或刀片服务器(诸如,Web服务器、映射/还原服务器和/或其它计算引擎)、和/或网络附接存储单元(例如,102(1))、膝上型计算机、瘦客户端、终端和/或其它移动计算机(例如,104(1))、可佩戴计算机(诸如,智能手表和/或生物测定传感器和/或医疗传感器)、植入计算设备(诸如,生物测定和/或医学传感器)、计算机导航客户端计算设备、基于卫星的导航***设备(包括全球定位***(GPS)设备和/或其他基于卫星的导航***设备)、个人数据助理(PDA)、和/或其它专用的便携式电子设备(例如,104(2))、平板计算机、平板混合计算机、智能电话、移动电话、移动电话平板混合设备和/或其他电信设备(例如,104(3))、便携式和/或基于控制台的游戏设备、和/或其它娱乐设备(诸如,基于网络的电视、机顶盒、媒体播放器、摄像头和/或个人录像机(PVR))(例如,104(4),图示为游戏手柄)、汽车计算机(诸如,车辆控制***、车辆安全***和/或针对车辆(例如,104(K),图示为汽车)的电子钥匙、台式计算机、和/或用于被包括在计算设备中的集成组件、电器、和/或被配置为参与和/或执行如本文所述的查询处理的其它计算设备(例如,用于控制目的)。在一些示例中,如图所示,计算设备(例如,计算设备102和计算设备104(1))可以相互通信以参与和/或执行本文所述的查询处理。例如,计算设备104(K)可以是或者可以包括由用户操作的数据源,并且计算设备102(1)可以为查询处理***,如下文参考例图2-图10所述。
不同的设备和/或不同类型的计算设备102和计算设备104可以具有与集群106交互的不同需求和/或方式。例如,计算设备104可以利用具有离散请求/响应通信来与集群106交互(例如,针对使用已经被填充以数据的数据库的查询和响应)。附加地和/或备选地,计算设备104可以是数据源,并且可以利用将要被存储到数据库中的数据的离散传输和/或正在进行的传输来与集群106来交互。例如,在汽车中的数据源(例如,与汽车中与交互式语音响应***相关联的计算设备104(K)),可以向集群106提供车辆提供周围的位置和环境条件的数据。通过增加被输入到数据库的数据量,这可以提供数据库搜索结果的更广泛覆盖。附加地和/或备选地,计算设备104可以是数据接收器,并且可以利用来自数据库的针对查询结果(例如,基于变化的交通状况的被估计的驾驶时间)的离散和/或正在进行的请求来与集群106交互。例如,被估计的驾驶时间可以被确定为查询的近似结果,其包括在旅程时间列上的平均(AVERAGE)聚合。
在一些示例中,计算设备102和/或计算设备104可以通过一个或多个网络108来彼此通信和/或与其它计算设备通信。在一些示例中,计算设备102和计算设备104可以经由网络108来与外部设备通信。例如,网络108可以包括公共网络(诸如,因特网)、专用网络(诸如,机构的内联网和/或个人内联网)、和/或专用网络和公共网络的组合。专用网络可以包括不与其它网络连接的隔离网络(诸如MODBUS、FIELDBUS和/或在针对机器自动化的工厂中所使用的工业以太网网络)。专用网络还可以包括经由以下设备连接到因特网和/或其他公共网络的网络:网络地址转换(NAT)设备、防火墙、网络入侵检测***、和/或限制和/或控制允许在专用网络和公共网络之间流动的网络分组的类型的其他设备。
网络108还可以包括任何类型的有线网络和/或无线网络,包括但不限于局域网(LAN)、广域网(WAN)、卫星网络、电缆网络、Wi-Fi网络、WiMAX网络、移动通信网络(例如,3G、4G等)和/或其任意组合。网络108可以利用通信协议,诸如例如,基于分组的和/或基于数据报的协议,诸如因特网协议(IP)、传输控制协议(TCP)、用户数据报协议(UDP)、其他类型的协议和/或其组合。此外,网络108还可以包括许多支持网络通信和/或形成用于网络的硬件基础结构的设备(交换机、路由器、网关、接入点、防火墙、基站、中继器、骨干设备等)。网络108还可以包括支持在计算设备102和/或计算设备104之间使用各种拓扑的总线协议通信的设备(例如,纵横开关、无线带宽(INFINIBAND)开关、和/或光纤通道(FIBRE CHANNEL)开关和/或集线器)。
在一些示例中,网络108还可以包括支持连接到无线网络的设备(诸如,无线接入点(WAP))。示例通过WAP支持连接性,该WAP在各种电磁频率(例如,射频)上发送和接收数据,包括支持电气和电子工程师协会(IEEE)802.11标准(例如802.11g,802.11n等)、其他标准(例如,蓝牙、蜂窝电话标准(诸如,GSM、LTE和/或WiMAX))的WAP。
不同的网络具有不同的特性,例如,带宽或延时,以及针对无线网络,可访问性(开发的、宣告的但是安全的和/或未宣告的)和/或覆盖区域。用于例如在计算设备104和集群106之间的任何给定的连接网络108的类型可以基于这些特征和交互类型来被选择。示例数据源可以是来自无人驾驶的和/或其它远程操作的车辆或者来自网络摄像机的实时数据和/或视频流。这样的视频流可以经由高带宽、低延时的网络来承载。相反,低带宽网络可以被用于携带来自用户的文本查询、到用户的响应、或者数据(诸如,来自环境传感器(诸如温度传感器)的测量)。这样的传感器可以提供不频繁的更新(例如,逐渐变化的温度在每分钟的一个值)。
在一些示例中,计算设备102和/或计算设备104(例如,膝上型计算机、智能电话和/或其他如上文所述的计算设备102和/或计算设备104)与实体110交互。实体110可以包括***、设备、各方(诸如用户)、和/或计算设备102和/或计算设备104可以与之交互的其他特征。为简明起见,本文参考计算***的用户讨论了实体110的示例;然而,这些示例不是限制性的。在一些示例中,计算设备104由实体110(例如,用户)操作。在一些示例中,计算设备102操作查询引擎122以确定对应于用户查询的响应,并且经由网络108来向计算设备104(3)(例如,智能电话)发送响应的指示。计算设备104例如可以向实体110呈现对查询的响应的信息。下面参照图3-图10更详细地讨论查询处理的示例。
仍然参考图1的实例,示例计算设备102(N)的细节被在插图112处被示出。示例计算设备102(N)的细节可以代表计算设备102的其他。然而,计算设备102中的每一个都可以包括附加的或备选的硬件组件和/或软件组件。所示的计算设备102(N)可以包括一个或多个处理单元114,其诸如经由总线118而可操作地连接到一个或多个计算机可读介质116(例如,存储器),在一些实例中,该总线118可以包括一个或多个***总线、数据总线、地址总线、***组件互连(PCI)高速PCI(PCIe)总线、PCI总线、小型PCI总线、以及任何各种本地的、***的和/或独立的总线和/或它们的任意组合。在一些示例中,多个处理单元114可以通过内部接口总线(例如,PCIe)来交换数据而不是通过网络108和/或作为网络108的附加。虽然,在该示例中,处理单元114被描述为驻留在计算设备102(N)上,但是在一些示例中处理单元114还可以驻留在不同的计算设备102和/或计算设备104上。在一些示例中,处理单元114中的至少两个可以驻留在不同的计算设备102和/或计算设备104上。在此示例中,在同一计算设备102和/或计算设备104上的多个处理单元114可以使用计算设备102和/或计算设备104的总线118来交换数据,而不同计算设备102和/或计算设备104上的处理单元114可以通过网络108来交换数据。
本文中描述的计算机可读介质(例如,计算机可读介质116)包括计算机存储介质和/或通信介质。计算机存储介质包括以任何方法和/或技术实现以用于信息(诸如,计算机可读指令、数据结构、程序模块和/或其它数据)存储的有形存储单元(诸如,易失性存储器、非易失性存储器和/或其它永久和/或辅助计算机存储介质、可移除和不可移除的计算机存储介质)。计算机存储介质包括被包括在设备和/或硬件组件中的有形和/或物理形式的介质,该设备和/或硬件组件为设备的一部分和/或在设备的外部,包括但不限于:RAM、静态RAM(SRAM)、动态RAM(DRAM)、相变存储器(PRAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、闪存、光盘只读存储器(CD-ROM)、数字多功能盘(DVD)、光卡和/或其它光学存储介质、磁带盒、磁带、磁盘存储、磁卡和/或其它磁存储设备和/或介质、固态存储设备、存储阵列、网络附接存储、存储区域网络、托管计算机存储和/或存储器、可用于存储和维护由计算设备102和/或计算设备104访问的信息的存储器、存储装置、设备和/或存储介质。
与计算机存储介质相反,通信介质可以具化计算机可读指令、数据结构、程序模块和/或调制数据信号(例如,载波和/或其他传输机制)中的其它数据。如本文中所定义的,计算机存储介质不包括通信介质。
在一些示例中,计算机可读介质116可以存储可由处理单元114执行的指令。例如,计算机可读介质116可以存储操作***(为了简明起见省略)、索引引擎120的模块、查询引擎122的模块、通信引擎124的模块和/或可加载并可由处理单元114来执行的其它模块、程序和/或应用的计算机可执行指令。例如,计算机可读介质116上存储的计算机可执行指令可以在执行时配置计算机(诸如,计算设备102和/或计算设备104)执行本文参考操作***、索引引擎120、查询引擎122和/或通信引擎124所描述的操作。在一些示例中,索引引擎120、查询引擎122和/或通信引擎124中的至少一个可以被包括在数据库服务器中,或者例如可以被具化为数据库前端或网关。
在未示出的一些示例中,在计算设备102和/或104中的一者的一个或多个处理单元114例如可以经由通信接口128(在下面讨论)和网络108而被可操作地连接到计算设备102和/或计算设备104中的不同一个。例如,执行例如本文中参考索引引擎120或查询引擎122所描述的流程图的步骤的程序代码可以例如经由网络108而从服务器(例如,计算设备102(1))下载到客户端(例如,计算设备104(K)),并且由在计算设备104(K)中的一个或多个处理单元执行。
计算机可读介质116还可以存储一个或多个数据库126,其在本文中可以被单独地和/或共同地被称为为附图标记126。在一些示例中,数据库126可以包括数据记录、数据记录的唯一标识符(例如,在关系数据库表中的唯一数据记录号)、索引、数据记录的子集、索引记录或在本文中所述的其它类型的数据或元数据。
在一些示例中,如本文描述的用于处理对数据库126的查询的算法可以在计算设备(例如,计算设备102)(诸如,智能手机、写字板、台式电脑、服务器、服务器刀片、超级计算机等)上执行。该查询结果可以由此计算设备和/或具有一个或多个输入设备(诸如,物理键盘、软键盘、触摸屏、触摸板、麦克风和/或摄像头)的计算设备(例如,计算设备104)来呈现,或者进一步在其上被处理或使用。在一些示例中,本文中所描述的功能可以在一个或多个计算设备102和一个或多个计算设备104之间共享。例如,计算设备104可以执行数据库126的增量更新,并且计算设备102可以执行与数据库126相关联的索引的更新(例如,如下文参照图3-图12所描述的)。
在例如用于响应于用户查询和/或本文所述的其它使用情况的数据库的各种示例中,数据库可以包括但不限于:关系数据库、XML或其他树结构数据库、或者其他数据库。索引引擎120可以被配置为将数据加载到数据库126中,和/或被配置为确定数据库126的索引或子集(例如,如本文参考图3所讨论的)。
例如,查询引擎122可以被配置为使用数据库126的数据和/或索引的数据或子集的数据,以例如确定对用户查询的响应、和/或执行其他数据分析和/或处理。例如,查询引擎122可以确定如本文所述的近似查询答案。例如,通信引擎124可以在实体110和被指派用于处理或响应于用户查询的数据库126之间传送信息。
计算设备102还可以包括一个或多个通信接口128,其经由总线118被连接到处理单元114以支持在计算设备102和在集群计算中涉及的其它网络计算设备102和/或计算设备104和/或其他计算设备之间例如通过网络108的有线通信和/或无线通信。处理单元114可以通过相应的通信接口128来交换数据,通信接口128可以经由总线118或经由网络108来发送和接收数据。在一些示例中,通信接口128可以包括但不限于:用于蜂窝网(3G、4G和/或其它)的收发器、WI-FI、超宽带(UWB)、蓝牙和/或卫星传输。通信接口128可以包括有线I/O接口(诸如,以太网接口、串行接口、通用串行总线(USB)接口、INFINIBAND接口和/或其他有线接口。附加地和/或备选地,通信接口128可以包括至少一个用户界面设备或用户界面、至少一个总线(诸如,存储器总线和/或本地总线)、至少一个存储器接口和/或至少一个硬连线接口(诸如,0mA-20mA的控制线)。为了简要,从所示出的计算设备102(N)和插图112中省略了这些组件和其它组件。
在一些示例中,计算设备102可以包括用户界面130,其被配置为允许用户(例如,实体110和/或数据库管理员)操作索引引擎120、查询引擎122和/或通信引擎124。下面将讨论用户界面130的一些示例。
示例计算设备104(1)的细节在插图132中示出。示例计算设备104(1)的细节可以代表计算设备104中的其他。然而,附加的和/或可选的,计算设备104中的每个可以包括硬件和/或软件组件。计算设备104(1)可以包括一个或多个处理单元134,其例如可以经由总线138而被可操作地连接到一个或多个计算机可读介质136。在上文中参考处理单元114讨论了处理单元134中的一些示例。在上文中参考计算机可读介质116讨论了计算机可读介质136的一些示例。例如,计算机可读介质136可以包括一个或多个计算机存储介质。在上文中参考总线118讨论了总线138的一些示例。
例如,计算机可读介质136可以存储以下各项的计算机可执行指令:例如,操作***(为了简明起见省略)、通信引擎(为了简洁而省略)、控制程序140和/或其模块和/或其他模块、程序和/或由处理单元136可加载和可执行的应用程序。
在一些示例中,控制程序140可以被配置为:例如经由键盘来接收输入、向计算设备102发送相应的查询、接收来自计算设备102的响应,并且例如经由显示器来呈现该响应。在一些示例中,在计算设备102上执行查询处理。在这些示例中的一些中,控制程序140可配置为接收输入、向计算设备102发送查询、接收来自计算设备102的查询结果(如果有的话)和/或例如经由用户界面144(将在下面讨论)来呈现所接收的查询结果。在一些示例中,在计算设备104上执行确定和操作。在这些示例中的一些中,控制程序140可以被配置为接收输入和至少部分地基于那些输入(例如,确定查询结果)而使用查询引擎122的指令来查询数据库126。在一些示例中,控制程序140例如可以例如在计算设备104上执行索引引擎120的指令来维护或更新数据库。在一些示例中,控制程序140可以包括但不限于:Web浏览器、智能手机应用(app)或智能手机桌面应用、后台服务行为或监控网络通信、或即时消息传送客户端,或者可以包括被配置为执行本文描述的功能的那些中的任何的组件。为了清楚起见,参考Web浏览器讨论了各种示例。除了明确指出之外,其它类型的控制程序140可以与这些示例一起使用。
在一些示例中,计算设备104可以被配置为与计算设备102通信以查询数据库126。例如,计算设备104可以向计算设备102发送查询、接收响应,并基于该响应来采取动作。例如,计算设备104可以向实体110提供响应中所包括的信息。
计算设备104还可以包括一个或多个通信接口142,其经由总线138而被连接到处理单元134,以在网络108上支持在计算设备和其它在集群计算中涉及的网络计算设备102和/或计算设备104,和/或其他计算设备之间的有线通信和/或无线通信。上面参考通信接口128讨论了一些示例。
在一些示例中,计算设备104可以包括用户界面144。例如,计算设备104(N)可以提供用户界面144以控制和/或以其他方式来与集群106和/或其中的计算设备102交互。例如,处理单元134可以经由用户接口144来接收用户动作的输入,并且经由通信接口142来向计算设备102传输相应的数据。
用户界面130和/或用户界面144可以包括一个或多个输入设备其被集成和/或外设到计算设备102和/或计算设备104。该输入设备可以是用户可操作的,和/或可以被配置为用于来自其他计算设备102和/或计算设备104的输入。输入设备的示例可以包括:例如,键盘、小键盘、鼠标、轨迹球、笔传感器和/或智能笔、光笔和/或光枪、游戏控制器(诸如操纵杆和/或游戏垫)、语音输入设备(诸如麦克风、声音识别设备、和/或语音识别设备)、触摸输入设备(诸如触摸屏)、姿态和/或运动输入设备(诸如深度相机、握持传感器、加速度计、另一触觉输入)、可视输入设备(诸如一个或多个相机和/或图像传感器)等。用户查询可以经由用户界面130和/或用户界面144而例如从实体110被接收。在一些示例中,用户界面130和/或用户界面144可以包括麦克风146或其他音频输入设备,并且计算设备104可执行语音识别引擎(为简明起见省略)以确定例如来自由麦克风146检测到的输入音频的查询的文本数据。
用户界面130和/或用户界面144可以包括一个或多个结果设备,其被配置为用于与用户和/或另一计算设备102和/或计算设备104通信。结果设备可以被集成到和/或外设到计算设备102和/或计算设备104。结果设备的示例可以包括:显示器、打印器、音频扬声器,蜂鸣器和/或其他音频结果设备、振动电机,线性振动器和/或其他触觉结果设备等。动作(例如,向实体110呈现对数据库126的查询结果的信息/与对数据库126的查询结果相对应的信息)可以经由用户界面130和/或用户界面144来被进行。在一些示例中,用户界面130和/或用户界面144可以包括扬声器148或其他音频结果设备,并且计算设备104可以执行语音合成引擎(为简明起见省略)以从例如经由网络108接收的那些动作的文本或其他数据来例如确定动作的音频数据。虽然被示为计算设备104的一部分,麦克风146和扬声器148可以与计算设备104分离并且与其通信地可连接。
在一些示例中,计算设备104允许实体110在会话的过程中与计算设备102执行多个交互。会话可以包括在持续网络连接(诸如,Telnet连接)期间的通信或交互,或者与特定Web服务器或门户(例如,跨一个或多个HTTP连接)的一系列用户交互。会话可以由诸如计算设备102的服务器来表示/实施。计算设备102或计算设备104可以存储或交换会话数据;交换可以例如经由HTTP或其他协议来执行。会话数据可以包括但不限于以下中的至少一个:会话中的文本数据(由实体110所提供的一个查询或多个查询(包括但不限于由语音识别引擎所产生的文本))、即时消息的文本或时间戳、文本消息、社交网络发布、或来传输到/来自于实体110的其他通信、用户或其他实体110的标识信息,会话的历史信息(例如,先前查询,响应或采取的动作)、由实体110创建的/被发送到实体110的或者以其他方式与网络实体110相关的内容;图像数据;音频数据;数目数据(诸如,在会话中的查询数目)、用户简档信息(例如,名字、位置、兴趣等)、关于实体110和其他实体(例如,其他用户)之间连接的信息、或者日期/时间数据(诸如,会话的开始时间、由同一用户的会话的历史时间和日期、或实体110的时区或本地时间)。如在本文中所使用的,用户简档可以与特定实体110(例如,用户)相关联,或者与多个用户或用户组相关联。特定实体110可以与一个、至少一个或多于一个用户简档相关联。如本文中所使用的,“时间戳”是可以表示日期、时间或这两者的值。
说明性组件
图2是示出了根据本文中的各种实施例的计算设备200的示例组件的说明性示图,该计算设备200可以表示计算设备102和/或计算设备104,并且该计算设备可以是和/或实现查询处理***、设备和/或装置。计算设备200可以包括和/或被包括在用于如本文中所描述的用于数据库构建或查询处理的***和/或设备中。
计算设备200可以包括和/或被连接到用户界面202,该用户界面202可以表示用户界面130和/或用户界面144。用户界面202可以包括显示器204。显示器204可以包括:有机发光二极管(OLED)显示器、液晶显示器(LCD)、阴极射线管(CRT)和/或其他类型的可视显示器。显示器204可以是触摸屏的一个部件,和/或可以包括触摸屏。用户界面202可以包括上文参考用户界面130和/或用户界面144所描述的各种类型的结果设备。在一些示例中,计算设备200可以与另一计算设备的用户界面144(图1)通信地连接。
用户界面202可以包括用户可操作的输入设备206(图形地被表示为游戏手柄)。用户可操作输入设备206可以包括上文参考用户界面130和/或用户界面144所描述的各种类型的输入设备(例如,用以提供语音或文本输入)。
计算设备200还可以包括一个或多个输入/输出(I/O)接口208,以允许计算设备200与输入、结果和/或I/O设备(为了清楚起见,一些未被描述)通信。这样的设备的示例可以包括用户界面202的部件,诸如,上文参考用户界面130和/或用户界面144的用户可操作的输入设备和结果设备。这些设备的其他示例可以包括:功率计、加速度计和用于测量实体110、计算设备200和/或另一计算设备102和/或计算设备104的属性的其他设备。计算设备200可以经由I/O接口208来与合适的设备通信,和/或使用合适的电子/软件交互方法来通信。输入数据(例如,用户可操作输入设备206上的用户输入的)可以经由I/O接口208(例如,一个或多个I/O接口208)而被接收。结果数据(例如,用户界面屏幕的)可以经由I/O接口208而被提供给显示器204(例如,用于由用户观看)。
计算设备200可以包括一个或多个处理单元210,其可以表示处理单元114和/或处理单元134。在一些示例中,处理单元210可以包括和/或被连接到存储器212(例如,RAM和/或高速缓存)。处理单元210可以被可操作地耦合到I/O接口208和耦合到至少一个计算机可读介质214,其可以表示计算机可读介质116和/或计算机可读介质136(图1)。
处理单元210可以是和/或包括一个或多个单核处理器、多核处理器、CPU、GPU、GPGPU和/或经由来自模块和/或API经专用编程所配置以执行本文中的功能硬件逻辑组件。作为示例而非限制,可以用在处理单元210中的说明性的类型的硬件逻辑组件包括:现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、***上***(SOC)、复杂可编程逻辑器件(CPLD)、数字信号处理器(DSP)以及可以被定制的其它类型的处理器。例如,处理单元210可以表示混合设备(诸如,包括被嵌入在FPGA结构中的CPU核心的来自ALTERA和/或XILINX的设备)。这些和/或其它硬件逻辑组件可以独立地和/或在一些情况下可以由CPU驱动而运行。在一些示例中,计算设备102和/或计算设备104(图1)中的至少一些包括许多种类型的多个处理单元210。例如,计算设备102(N)中的处理单元210可以是一个或多个GPGPU和一个或多个FPGA的组合。不同的处理单元210可以具有不同的执行模型,例如,如为针对图形处理单元(GPU)和中央处理单元(CPU)的情况。
计算机可读介质214可以存储由处理单元210所执行的指令,和/或由外部处理单元(诸如,由外部中央处理单元(CPU)和/或在本文中所讨论的任何类型的外部处理器)可执行的指令。在一些示例中,至少一个处理单元210(例如,CPU、图形处理单元(GPU)和/或硬件逻辑设备)可以被合并到计算设备200中,然而在一些示例中,至少一个处理单元210(例如,CPU、GPU和/或硬件逻辑设备中的一个或多个)可以位于计算设备200的外部。
在所示示例中,计算机可读介质214包括数据存储216。在一些示例中,数据存储216可以包括结构化的和/或非构化的数据存储装置,诸如,数据库(例如,结构化的查询语言,SQL和/或NoSQL数据库)和/或数据仓库。在一些示例中,数据存储216可以包括具有一个或多个列表、阵列、索引、存储过程等的语料库和/或关系数据库以支持数据访问。数据存储216可以存储用于过程的操作、应用、组件、和/或被存储在计算机可读介质214中的模块的数据和/或由处理单元210所执行的那些模块中的计算机指令。在一些示例中,数据存储可以存储计算机程序指令218(例如,与本文中所描述的过程相对应的指令和/或与由处理单元210可执行的其它软件相对应的指令)、一个或多个数据库220(其可以表示数据库126(图1))、数据库模式和/或其任意组合。
计算机可读介质214(例如,计算机存储介质)可以存储多个各种模块;示例在下文被讨论。处理单元210可以被配置为执行多个模块中的模块。例如,存储在计算机可读介质214上的计算机可执行指令可以在执行时配置计算机(诸如,计算设备200)来执行本文参考多个模块中的模块所描述的操作。存储在计算机可读介质214中的模块可以包括指令,当该指令由一个或多个处理单元210执行时,使得该一个或多个处理单元210执行下文描述的操作。
计算设备200可以实现索引引擎222,其可以表示索引引擎120(图1)。存储在计算机可读介质214上的索引引擎222的模块可以包括一个或多个模块,例如,壳模块和/或API模块(并且同样地贯穿文档),其被示出为采样模块224和索引模块226。
计算设备200可以实现查询引擎228,其可以表示查询引擎122(图1)。存储在计算机可读介质214上的查询引擎228的模块可以包括一个或多个模块,其被示为查询模块230。
计算设备200可以实现通信引擎124,其可以表示通信引擎124(图1)。存储在计算机可读介质214上的通信引擎232的模块可以包括一个或多个模块,其被示为接收模块234和传输模块236。
在索引引擎222、查询引擎228和/或通信引擎232中,模块的数目可以变化为更多和/或更少,并且各种类型的模块可以被在各种组合中使用。例如,与所示模块相关联地被描述的功能可以被组合以由较少数目的模块和/或API来执行,和/或此功能可以被划分并且可以由较多数目的模块和/或API来执行。例如,采样模块224和索引模块226可以被组合在单个模块中,其执行下述那些模块中的至少一些示例功能,并且接收模块234和传输模块236与此类似。在一些示例中,计算机可读介质214可以包括上述模块的子集。
计算机可读介质214还可以包括操作***(为简明起见省略)。在一些示例中,不使用操作***(通常被称为“裸金属(bare metal)”配置)。在一些示例中,操作***可以包括支持和/或引导计算设备200经由各种输入(例如,用户控件、网络和/或通信接口、存储设备和/或传感器)而接收数据的组件,并且使用处理单元210对数据进行处理以生成结果。该操作***还可以包括呈现该结果(例如,在电子显示器上显示图像、将数据存储在存储器中和/或将数据发送到另一计算设备)的一个或多个组件。操作***可以支持用户使用用户界面与来与计算设备200交互。附加地,操作***可以包括执行通常与操作***相关联的各种功能(例如,存储管理和设备内管理)的组件。
在所示示例中,计算设备200包括通信接口238,其可以表示通信接口128和/或通信接口142。例如,通信接口238(例如,一个或多个通信接口)可以包括收发器设备(诸如网络接口控制器(NIC)的)以通过网络108(以虚线示出)发送和接收通信(例如,如以上所讨论的)。这样,计算设备200可以具有网络能力。通信接口238可以包括任意组合的任何数目的网络、总线和/或存储器接口,无论它们是否一起和/或分离地被封装。在一些示例中,通信接口238可以包括在特定计算设备102或计算设备104内部的存储器总线,经由通信接口238传输可以包括将所传输的数据存储在存储器212或计算机可读介质214中,并且经由通信接口238接收可以包括从存储器212或计算机可读介质214取回数据。
例如,计算设备200可以经由一个或多个网络108(例如,因特网)而与计算设备102和/或计算设备104(例如,膝上型计算机,计算机和/或服务器)交换数据。在一些示例中,计算设备200可以经由一个或多个网络108而从一个或多个数据源(未示出)接收数据。示例数据源可以包括计算设备102和/或计算设备104,数据聚合器和/或数据馈送(例如,经由应用编程接口(API)可访问的)。处理单元210可以例如经由超文本传输协议(HTTP)请求(诸如,GET)将数据从数据源取回到网络服务(Web Service)和/或代表状态转移(REST)API端点。
在一些示例中,处理单元210可以经由总线240访问计算机可读介质214上的模块,总线240可以表示总线118和/或总线138(图1)。I/O接口208和通信接口238还可以经由总线240而与处理单元210通信。
图3是示出了在模块(诸如,图2中所示的模块)之间的示例交互的数据流示图300。为了清楚起见,可以表示通信接口238的通信接口302在该图中被在多个地方描述。这样的描述不限制可以被使用的通信接口302的数目。下面参考图4-图12来描述本文的操作的更多细节。下文所描述的模块可以被配置为执行下面所描述的功能。
在一些示例中,接收模块304(可以表示接收模块234)可以被配置为经由通信接口302接收一个数据记录306或多个数据记录306。数据记录306可以包括针对一个或多个字段的值。这些字段可以包括例如关系数据库表中的列,并且该数据记录可以对应于该表中的行。附加地或备选地,数据记录可以包括XML数据的节点树,并且该字段可以包括该树的个体元素或属性。如下所述,数据记录306可以包括例如文本、音频或表示事实、实体、表示在事实和实体之间的关系的其它数据、或者被编码以用于存储在数据库318的其它信息。
为了清楚而非限制,在本文参考包括数据记录表(例如,关系数据库表)的数据集来讨论一些示例。在表1中示出了示例数据集。
表示例
表1中所示出的示例数据集具有200个数据记录306。具有相同的字段值的相邻数据记录306的组被在“ID”列(例如,表1中的第二行,表示数据记录306#2-#89)中标记为每个数据记录306具有唯一的ID、四个离散值:DV1、DV2、DV3和DV4、以及两个测量值MV1和MV2。在所示示例中,针对每个记录,DV1-DV3是被表示为整数的布尔值,MV1为整数,并且MV2为实数。如本文中所使用的,术语“列”是指一个或多个数据记录的相应字段,无论这些记录是否被存储在表中。例如,存储联系信息的XML数据库可以具有针对XML Path语言(XPath)表达式/“人/名字/最后”(“/person/name/last”)、“/人/地址/城市”(“/person/address/city”)和“/人/电话/本地号”(“/person/phone/localnumber”)的“列”。在不是所有数据记录都具有所有字段的实例中,“列”是指该数据记录的对应字段,无论那些对应字段存在于哪里。
如在本文中所使用的,“离散值”为例如二进制值、分类值、序数、计数、整数、有理数、布尔、字符、字符串或可以对计算机上的任意值的精确等式进行有意义的测试的其他值。离散值不包括被表示为浮点值的任意实数,因为在计算机中浮点计算不准确,所以相等测试是无意义的。例如,在MICROSOFT EXCEL和其他实现IEEE754算法的***中,由于浮点计算的有限精度,表达式(43.1-43.2)+1等于而不是0.9。因此,该测试(43.1-43.2)+1=0.9在这样的***中是无意义的,即,当根据算术的习惯规则应该具有值真(True)时,其具有值假(False)。然而,在二进制浮点***中,恰好为整数或有理数(例如,在二进制浮点***中,0.12510≡0.0012)或固定精度的十进制数(诸如,二进制编码十进制(BCD)值)的特定实数可以是离散值。在一些示例中,离散值可以存储在具有SQL类型(诸如,例如,字符(CHARACTER)、可变长字符串(VARCHAR)、二进制(BINARY)、布尔(BOOLEAN)、整数(INTEGER)、十进制数(DECIMAL)、日期(DATE)或时间(TIME)(不包括分数秒))的数据库列中。离散值的进一步示例可以包括:通用产品代码(UPC)值、产品名称或项目名称、实体名称、邮政地址、电话号码、电子邮件地址、统一资源定位符(URL)或(例如在剂量响应测试中的)化学品的名称。
如在本文中所使用的,“测量值”为例如可以被有意义地添加到特定列中的其他测量值的自然数值、整数值、有理数值、实数值或复数值。测量值的示例可以包括被销售的产品的计数、每个产品的成本、货币量(例如,总销售的)、距离、时间间隔(诸如在制造过程中针对特定步骤所需的时间,例如以秒来表示)、或指示药物功效的值(例如,半最大抑制浓度(IC50)或半最大有效浓度(EC50))。在一些示例中,可以在具有测量值(例如,浮点数目)的列上执行范围测试。测量值可以与SQL类型(诸如,例如,浮点型(FLOAT)和实型(REAL))一起被存储。
如本文中所使用的,“断言”(或“测试”和本文中类似的)是可以被应用到值以提供布尔结果的公式或算法。如果结果为真(True),则该值被认为“满足”该断言。在该文档中,测试条件c的断言被表示为P{c},并且应用于值v的断言被表示为P{c}(v)。例如,因为2>1,所以P{v>1}(2)为真(True)。断言可以被应用于离散值或测量值。断言可以包括诸如与(AND或∧))、或(OR或∨),或者非(NOT或)等逻辑连接。断言可以包括其它断言的逻辑组合(例如,P1=P2∧P3)。如本文中所使用的那样,表示P{c}{K}是指从将断言P{c}应用到列k中的每个值的结果集。表示P{K=i}≡P{v=i}(K)是针对在数据记录中的列k的值是否等于i的断言测试的简写。为了清楚起见,在本文中一些对记录中的字段的引用使用点记法来表示(例如,“记录_名称.字段_名称”(“Record_Name.Field_Name”))。如在本文中所使用的,“等式断言”或“等约束(equi-constraint)”为仅有等式(例如,针对一些i,P{v=i}或P{v≠i})的断言测试。等式断言可以包括一个或多个项(例如,针对值i和j,P{V1=i∧V2=j})。
在一些示例中,采样模块308(可以表示采样模块224)可以被配置为确定数据集(例如,数据记录306)中的至少一个子集310。至少一个子集310可以包括:例如,第一子集、第二子集或任意数目的子集(例如,每一测量列的一个子集)。为了清楚,本文中子集310被描述为例如“包括(including)”或“包含(containing)”数据记录306。然而,这些术语不要求子集310在物理上包括或合并一个或多个数据记录306。在一些示例中,子集310可以包括计算机可读存储器的以下区域,该区域物理上或逻辑上包括所包括的数据记录306中的至少一些的数据中的至少一些的拷贝(或唯一拷贝或主拷贝)。在一些示例中,子集310可以包括对所包括的数据记录306中的至少一些的引用,或者指示的所包括的数据记录306中的至少一些的信息。在一些示例中,子集310可以包括一些数据记录306(或其部分)的拷贝,以及对其他数据记录306(或其部分)的引用。在本段落中的示例也适用于在本文中所描述的其它子集(诸如,下面讨论的断言相关联子集312)。
在一些示例中,子集310包括基于数据记录的相应测量值而从数据集中所选择的数据记录306。在一些示例中,采样模块308可以通过至少部分地基于数据记录306的相应测量值而从数据集中选择数据记录306来确定至少一个子集310。例如,可以从数据集随机地选择数据记录306以形成子集310,并且每一个数据记录306均可以利用与在前述数据记录306中的测量值成比例的概率来被选择。在此讨论示例,例如,参考框402(图4)。在一些示例中,,例如针对计数(COUNT)查询,采样模块308可以通过从使用均匀选择概率的数据集中选择数据记录306来确定至少一个子集310。
在一些示例中,采样模块308可以被配置为确定数据集的至少一个断言相关联子集312。该断言相关联子集312可以包括从基于满足断言相关联的子集312的预定断言来从数据集中所选择的数据记录。采样模块308可以被配置为确定针对相应的、不同的断言的多个断言相关联子集312。在本文中例如参考图4、图5或图11来讨论示例。
在一些示例中,索引模块314(可以表示索引模块226)可以被配置为确定至少一个索引316。该索引316可以存储从断言到数据集中满足该断言的一个或多个数据记录的映射。附加地或备选地,索引316可以存储与被索引的数据记录相关联的近似值。在本文中例如参考图4、图6或图12来讨论示例。
接收模块304、采样模块308或索引模块314可以将数据记录306中的至少一些、子集310中的至少一些断言相关联子集312中的至少一些或索引316中的至少一些存储在数据库318(其可以表示数据库220)中。在一些示例中,可以存储少于那些中的任意的全部。在一些示例中,这些中的至少一个可以被从数据库318中省略。例如,数据库318可以包括子集310和断言相关联子集312,而不包括索引316;包括子集310和索引316,但不包括断言相关联子集312;或包括断言相关联子集312和索引316,而不包括子集310。在一些示例中,子集310和索引316可以在数据库318中被生成和存储,并且断言关联的子集312可以被从数据库318中省略。这可以允许节省磁盘空间,同时还提供具有经确定的误差范围的近似结果。在一些示例中,在组320中的组件的操作可以被重复一次或多次,例如、以相应地处理多个数据记录306和加载数据库318。在下文中,例如参考图4、图5、图11或图12来讨论示例。在一些示例中,接收模块304可以例如使用SQL(结构化查询语言)***(INSERT)语句来将数据记录306的一部分或全部存储到数据库318中。在一些示例中,接收模块304可以接收多个数据记录306(例如,数据集的数据记录306),并且在数据库318中存储数据记录306中的至少一个的部分或全部。
在一些示例中,接收模块304可以被配置为经由通信接口302来接收查询322。例如,查询322可以包括但不限于:例如用户查询的音频、文本或其它数据。查询322可以包括例如SQL查询或XPath查询。例如,通信接口302可以以超文本传输协议(HTTP)请求或者经由传输控制协议(TCP)连接所传输的其他数据序列的形式来接收查询322中的至少一些。在一些为简要而被省略的示例中,查询322可以被从计算机可读介质214中取回,以代替作为经由通信接口302来接收或者作为其附加。在一些示例中,查询322可以与用户(例如,实体110)相关联。例如,包括HTTP请求的查询322可以包括URL参数、HTTP cookie或与实体110相关联的其他标识信息。包括SQL查询的查询322可以包括与实体110相关联的用户名。
可以表示查询模块230的查询模块324可以对数据库318进行处理以确定对应于查询322的至少一个查询结果326。例如,给定SQL查询“SELECT COUNT(*)FROM EXAMPLE(示例)WHERE DV2=1”,查询模块324可以提供10个结果326,数据记录306#91-#100的计数,其与“WHERE”条件相匹配。在本文中参考图4-图10来描述查询操作的示例。在一些示例中,结果326可以包括/表示对查询322的响应的文本。结果326可以包括数据的多个字段。例如,对应于聚合由商店的收入和利润两者的查询的结果326可以包括针对存储ID、针对该商店的聚合收入的列和针对该商店的聚合利润的列。结果326可以包括将要呈现给实体110的信息(例如,对用户查询322的直接答案)。例如,在交互式查询***中,结果326可以以数字输出、饼状图、绘图或另一可视、可听或触觉的表示(例如,盲文)的形式而被提供给实体110。
在一些示例中,查询模块324还可以被配置为确定精确度值328、其可以指示例如在结果326中所包括的近似聚合值和与查询322相关联的实际聚合值之间的差。精确度值328可以被确定例如为欧几里德距离、均方误差、置信区间或其它值。下文中例如参考判定框408或框606来讨论示例。
在一些示例中,查询模块324可以被配置为确定该精确度值328是否满足预定的精确度标准。如果不满足,则查询模块324可以以不同的方式(例如,试图确定与满足标准的精确度值328相关联的结果326)来处理查询322。在一些示例中,查询模块324被配置为使用子集来处理查询310。在一些示例中,如果该精确度值328不满足该预定精确度标准,则查询模块324可以使用断言相关联子集312或索引316来处理查询322。
在表1的示例中,给定查询322和“SELECT DV1,SUM(MV1)FROM EXAMPLE(示例)GROUP BY DV1”,针对DV1=0的精确答案为190,针对DV1=1的精确答案为298。这可以被表示为元组集合{(0,190),(1,298)}。分布可以通过将每个总和除以总数为488=190+298的总和来确定,从而得到分布(190/488,298/488)≈(0.39,0.61)。在一些示例中,近似答案可以被确定例如对应于(0.30,0.70)的分布。精确度值328可以被确定为分布(作为在测量空间中的点)之间的欧几里德距离,例如,如等式(1)中所示:
其中,x=(x1,...,xr)为精确分布,并且是近似分布。在一些示例中,该距离可以是精确度值328。
在一些示例中,精确度值328可以被确定为对断言或查询的“支持”(例如,满足该断言或者被用于确定针对查询322的结果326的数据记录的数目)。在上面针对SUM(MV1)来使用查询的示例中,采样模块308可以基于各种数据记录306的MV1列中的值来确定包括数据记录306的子集310(例如,如本文中参考图4中的框402所讨论的)。因为查询322包括MV1列上的聚合,查询模块324可以针对该子集310来处理查询322。该精确度值可以是满足该断言的数据记录306的数目。因为上述示例查询322不具有指定特定断言的WHERE子句,所以该支持将是在该子集310中的数据记录306的数目。在对表1中的数据的示例查询322“SELECTSUM(MV1)FROM EXAMPLE(示例)WHERE DV2=1”中,支持大小将最多为19,因为仅有10个数据记录306(#91-#100)满足条件DV2=1。
在一些示例中,预定精确度标准可以包括阈值支持值。例如,针对例如在等式(1)和n行的表中所确定的最大允许距离∈,阈值支持值可以是1/∈2、2/∈2或在一些示例中,查询模块324可以针对至少一个子集310来执行查询。如果支持(由该精确度值328所指示)小于阈值支持值,则该查询模块324可以确定精确度值328不满足精确度标准(备选地,可以使用小于或等于的测试)。作为响应,查询模块324可以针对断言相关联子集312、索引316或其组合来处理查询以提供查询结果326。
在本文中所讨论的一些示例中,针对距离误差约束∈,阈值支持值可以被选择为1/∈2。在这些示例中的一些实施例中,当如本文所述处理查询时,给定错误率δ,当查询如本文中被处理时,具有概率1-δ。在一些示例中,阈值支持值可以被选择为(1/∈2)log(1/δ)(分子为2或而不是1)。在一些示例中,∈基本上可以为以下中的一项:0.025、0.05、0.075或0.01。
在一些示例中,传输模块330(可以表示传输模块236)可以经由通信接口302来发送查询结果326的指示。例如,传输模块330可以将指示发送到计算设备104(图1)。在一些示例中,附加地或备选地,传输模块330可以提供精确度值328的指示。在一些示例中,查询模块324可以至少部分地基于查询的支持来确定精确度值328,并且使用精确度值328来确定是否针对子集312或索引316来处理查询。这可以允许提供满足至少基线或阈值水平精确度的查询结果。传输模块330可以发送精确度值328的指示,以通知实体110
(例如,用户)使用哪个策略来提供查询结果。
在一些示例中,组332中的组件的操作可以被重复一次或多次以处理多个查询322,并且提供相应的结果326。下面参照图4-图10来讨论示例。
说明性过程
示意过程图4是示出了用于构建数据库或处理查询的示例过程400的流程示图。图4中所示的示例功能和本文中的其它流程图和示意过程可以例如使用在该设备上运行的软件来实现和/或以其他方式被具化在一个或多个计算设备102和/或计算设备104(例如,计算设备200)中。为了说明,在下文参考可以执行和/或参与该示例性方法的步骤的计算设备200(图2)的处理单元210和其他组件来描述示例过程400。然而,其他处理单元(例如,计算设备102和/或计算设备104的处理单元114和/或其它组件)可以执行诸如过程400的所描述的示例性过程的步骤。类似地,在图5-12中所示的示例性方法不限于由任何具体地识别的部件来执行。
在每个示例流程图和/或过程中所描述的操作的顺序不旨在被解释为限制,并且任何数目经描述的操作都可以以任意顺序和/或并行地被组合以实现每个过程。在每个流程图中,除了明确指出之外,可以执行少于所有示出的操作。此外,图4-图12中的每一个图中的操作可以以硬件、软件和/或其组合来实现。在软件的上下文中,操作表示计算机可执行指令,其当由一个或多个处理器执行时使得该一个或多个处理器执行该操作。在硬件的上下文中,操作表示在电路中实现的逻辑功能(例如,数据路径控制和有限状态机排序功能)。因此,下面操作的描述还描述了执行所描述功能的这样的软件或硬件结构。
在一些示例中,在框402处,数据集的第一子集310可以被确定。第一子集310可以包括至少部分地基于第一数据记录306的相应测量值而从数据集中选择的第一数据记录306。例如,上文参考采样模块224讨论了示例。在一些示例中,针对近似值和精确分布之间的期望的距离阈值∈(例如,如等式(1)中所示),如上面所讨论的,第一数据记录306的数目可以至少是1/∈2。
在一些示例中,可以使用关于特定列所定义的测量偏置采样过程来选择第一数据记录306。例如,在放回的条件下,可以随机从数据集中选择(“抽取(draw)”)第一数据记录306。任何特定数据记录306被选择的概率例如可以与前述列中的特定测量值成比例或正相关。在表1的示例中,针对基于列MV1的第一子集310,在整个表中的MV1值的总和为488。因此,每个数据记录306被选择的概率可以为数据记录的MV1值除以488。例如,针对每个随机抽取,数据记录306#1-#90和#101-#198中的每一个数据记录都具有1/488≈0.002的机会被选中,数据记录306#91-#100中的每一个数据记录都具有10/488≈0.02的机会被选中,数据记录306#199-#200中的每一个数据记录都具有100/488≈0.2的机会被选中。
在表1的示例中,针对基于列MV2的而不是列MV1的第一子集310,在整个表中的MV1值的总和为~701.95。因此,例如,数据记录306#1具有~3.14159/710.95≈0.0044的概率被选择,并且数据记录306#100具有~8.3279/710.95≈0.012被概率选择。下面参考例如图4、6、9、11或12或说明性的结果部分来讨论选择的其他示例。
现在将讨论基于表1中所示的EXAMPLE(示例).MV1抽取第一子集310的示例。MV1值的总和为488,其可以在对表1的一个顺序遍历中被确定。该第一子集310中的数据记录306的数目m可以被确定为20(例如,对应于距离阈值∈≈0.25和错误率δ≈0.05)。然后可以从在[0,488)[0,488)上的均匀分布中选择具有m个随机数的随机数集合(例如{0,25,50,...,450,475})。然后可以在表1上进行第二顺序遍历(作为示例),并且在之前记录中的MV1值的运行总和被保留(其从0开始)。例如,当处理数据记录306#3时,运行总和(#1.MV1和#2.MV1的总和)为2。所遇到的每个数据记录306可以被添加到第一子集以下次数:至少为运行总和并且小于数据记录306的测量值和该运行总和的总和的随机数目的计数。例如,当处理数据记录306#26时,该运行总和为25,并且被添加到#26.MV1的运行总和为26。因为随机数中的一个随机数为在范围[25,26)[25,26)上,所以数据记录306#26的一个副本被添加到第一子集310。当处理数据记录306#199时,数据记录306#26的一个副本被添加到第一子集310,运行总和为并且总和为随机数中的四个随机数(即{300,325,350,375})在该范围[288,388)|288,388)内,所以数据记录306#199中的四个拷贝被添加到第一子集310。此示例技术可以允许使用两个在数据集上的顺序遍历并且无随机搜寻来确定第一子集310(或其他子集310,例如,包括所选数据记录616(图6)的子集)。附加地或备选地,可以使用用于选择记录的其它技术。
在一些示例中,在框404处,索引316可以被确定。索引316可以包括从断言到与该断言相关联的数据集的一个或多个第二数据记录306的映射。索引316例如可以包括一个或多个第二数据记录306的相应标识符。在表1的示例中,索引316例如可以对应于断言P{DV1=1},即,针对DV1=1的若干或全部数据记录。在此示例中,索引316可以包括ID 101-200,其表示DV1=1的记录。要是该断言出现在查询中,这可以允许容易地确定哪些数据记录306满足该断言。索引316可以例如使用B+树(例如,针对具有测量值的列)、常规倒相索引、字典树(trie)、散列表或其它反索引数据结构(例如,适用于相应类型的列)来存储。
在一些示例中,索引316可以包括从断言到与一个或多个第二数据记录306相关联的相应近似值的映射。例如,索引316可以包括与相应的第二数据记录306的标识符相关联的近似值。索引316可以包括例如针对第二数据记录306中的至少一个测量值的相应近似值。在一些示例中,索引316可以包括ρ×μ表(或等式结构),其包括针对在第r个数据记录306中的第m个测量值的近似值,m∈[1,μ]并且r∈[1,ρ]。个体近似值可以包括例如舍入值、二进制值、数量级或其它近似。
表2示出了针对在表1中的数据和示例索引316和断言P{DV4=1}的示例索引316。在表2的示例中,值v的近似a为v的大小(magnitude)的二进制,即使得在一些示例中,可以使用其它对数基数。将近似值存储为指数的值可以降低用于存储每个近似值所需的位数,节省磁盘和RAM空间,并且通过降低高速缓存未命中的概率来提高吞吐量。然而,这些示例不是限制性的。在一些示例中,测量值被存储在索引316中,以替代近似值或作为其附加。例如,在具有例如少量测量列的数据集中,存储精确值可以允许提高查询结果的精确度。下面参照表3讨论近似值的其它示例。
表2:针对表1的索引,DV4=1
在一些示例中,在框406处,可以针对第一子集310来处理查询322以提供第一结果(例如,查询结果326和第一精确度值328)。上面参考查询模块230讨论了示例。例如,可以例如在一次遍历中顺序地处理第一子集310的数据记录306。可以测试每个数据记录306以确定其是否满足查询322(例如,数据记录306中的离散值是否满足查询322的断言。确实满足查询322的数据记录302可以被输出或者保存,例如以用于分组或聚合。支持值可以被初始化为零,并且针对满足查询的每个数据记录306递增,以确定第一查询结果326的支持。可以在遍历第一子集310时确定例如针对SUM或COUNT聚合的第一查询结果326,或者在所有行已被遍历之后确定例如针对STDEV聚合的第一查询结果326。
在一些示例中,索引(例如,如本文中参考图12所讨论的)可以包括诸如本文中参考图2讨论的近似值。例如,可以在B+树或其他搜索树的分支节点中确定近似值并进行存储。然后可以在搜索树时使用近似值以确定可能满足针对log2(值)的近似的近似值(P{MV1>5的近似值})的形式而被表示的范围断言(例如,p{MV1>42})的节点。附加地或备选地,在索引中的近似值可以被用于满足更复杂的标准(例如,诸如p{1337≤MV1≤1708}≡p{MV1≥1337∧MV1≤1708}的范围断言)。
在一些示例中,在判定框408,可以确定第一精确度值328是否满足预定的精确度标准。上文参考精确度值328(图3)讨论了示例。例如,如果第一查询结果326的支持不至少为1/∈2,则判定框408可以确定第一精确度值328不满足预定的精确度标准。在这种情况下,框410可以接着判定框408。如果第一精确度值328不满足预定的精确度标准,判定框412可以接着判定框408。
在一些示例中,在框410处,可以针对索引316来处理查询322以提供第二结果(例如,第二查询结果326)。上文中例如参考图6讨论了示例。在一些示例中,例如如以上参考传输模块236所讨论的,第二查询结果326可以被提供。
在一些示例中,在框412处,查询结果326可以被提供。例如,查询结果326可以被显示或发送,例如如以上参考传输模块236所讨论的那样。在一些示例中,查询结果326可以被提供给实体110,例如用户或其他人,或者被提供给计算***或查询结果326的其他自动接收器。
在一些示例中,框406可以接着框402。在一些示例中,框410可以接着框404。在一些示例中,框406可以在框404之前被执行,使得仅在必须满足预定的精确度标准时才确定索引316。在一些示例中,框402和框404可以例如作为准备或数据摄取操作的一部分而被离线执行。在一些示例中,框406-框412可以例如作为交互式数据探索***的一部分而被在线执行。
在一些示例中,本文中所描述的技术可以被用于非负的测量值。在一些示例中,测量列的子列可以例如在预处理步骤或顺序遍历期间被确定。一个子列可以包括来自该测量列的非负(或正)值,并且分离的子列的值可以包括该负(或非正)值的绝对值。例如,给定列MV3={3,-1,4,-1,5,9,-2,-6},则可以确定子列MV3非负={3,空(NULL),4,空,5,9,空,空}和MV3负={空,1,空,1,空,空,2,6}。在一些示例中,子集310、断言相关联子集312或索引316可以包括子列,或者至少部分地基于子列(代替子列或作为子列的附加)而被确定。然后,可以例如通过将范围分为非负(或正)和负(或非正)子范围,以及通过如本文中所描述的针对子列处理每个子范围,或者通过将在将要被应用的子查询中的输出值否定至负(或非正)子列,来确定查询322的子查询。然后可以通过组合子查询的结果来确定近似值。例如,查询SUM(MV3)具有精确答案11。子查询SUM(MV3非负)和-SUM(MV3负)具有相应的精确答案21和-10,并且SUM(MV3)=SUM(MV3非负)+-SUM(MV3负)=11。
在一些示例中,允许负测量值(以替待确定子列或作为其附加),可以通过向每个测量值添加预定值来确定针对相应测量列的偏置列。例如,对于偏置值10,MV3偏置={13,9,14,9,15,19,8,4}。然后可以对偏置列(以替代测量列或作为其附加)来执行索引和查询。可以在查询结束时调整结果。例如,在总和查询中,所得到的总和可以被减去偏置值乘以该总和中包括的行数。例如,SUM(MV3)≡SUM(MV3偏置)-10×|MV3偏置|=91-10×8。
在一些示例中,在本文中所描述的技术可以被用于计算COUNT或SUM聚合。在一些示例中,在本文中所描述的技术可以被用于计算其它聚合,例如COUNT DISTINCT(不重复计数),AVERAGE(平均)或STDEV(标准方差。例如,AVERAGE可以通过例如在单个遍历过数据记录306期间并行地查询COUNT和SUM以及将SUM除以COUNT来确定。在一些示例中,在查询的处理期间,满足查询的数据记录306以及它们的选择概率可以在结果集中被存储或记录。可以在例如从子集310或断言相关联子集312中选择数据记录306之后,或者基于索引316结果集的数据记录306或者结果集的数据记录306的选择概率被提供给聚合函数以计算聚合的结果。例如,在框406、410、504、602、614、702、708、806、902或1006中,数据记录306可以在已经使用汇集函数填充了结果集之后所计算的结果集和聚合中被标记。在一些示例中,可以随着每个数据记录306被选择来迭代地调用聚合更新函数,并且合并函数可以在已经选择了所有的数据记录306后被调用(例如,如在具有“累加”(更新)和“融合”(合并)函数的JAVADERBY用户定义的汇集器的示例中那样)。
图5是示出了用于构建数据库或处理查询的示例过程500的流程图。
在一些示例中,在框502处,数据集的断言相关联子集312可以被确定。例如在上文中参考采样模块224(图3)讨论了示例。断言相关联子集312可以包括从数据集中选择的第三数据记录306。第三数据记录306的个体数据记录306(例如,所有数据记录306)可以满足断言相关联子集312的预定断言。在一些示例中,断言相关联子集312可以包括针对数据集的表格或其他部分或全部的具化查询结果,以获取满足该断言的记录。可以包括满足断言的一些或所有记录。具化这样的查询结果可以允许快速取回满足断言的数据记录306,而不需要进一步的查询操作。在一些示例中,第三数据记录306可以被顺序地存储在计算机可读存储器(例如,在一些示例中,RAM、磁盘或闪存)中。顺序地存储与断言相关联子集312的第三数据记录306,可以允许对第三数据记录306进行快速扫描,以定位满足确定第三数据记录306中没有使用附加断言的第三数据记录306的记录。
在一些示例中,在框504处,查询322可以对断言相关联的子集312进行处理。在上文中例如参考查询模块230(图3)讨论了示例。例如,第三数据记录306可以顺序地或以其他方式被扫描,并且每个记录都依次针对查询322被测试。
在使用多个断言相关联子集312(例如,如下文参考框508、框502或框504所讨论的)的一些示例中可以包括选择断言相关联子集312以用于处理查询322。在一些示例中,框502(或例如由采样模块224所执行的其它框)可以包括存储从断言到相应的断言相关联的子集312的映射以及在这些断言相关联的子集312中的相应的数据记录306计数。在一些示例中,该映射可以被存储在索引316中或与其相关联(例如,如在本文中参考框404或框410或图6所讨论的)。框502或框504可以包括:确定查询322中的多个断言,从该映射中取回针对该断言的相应数据记录306计数,以及选择具有例如最低数据记录306计数的断言。然后,框504可以包括针对与所选择断言相对应的断言相关联子集312来处理查询。选择具有最低数据记录306计数的断言可以通过减少将要针对除了所选择的断言之外的查询的断言进行测试的数据记录306的数目来提高查询速度。
在一些示例中,如果第一精确度值328不满足预定精确度标准,如上面所讨论的,则框502可以接着可以表示判定框408的判定框506之后。以此方式,响应于确定第一精确度值328不满足预定精确度标准,例如由查询模块230来针对断言相关联的子集来处理查询。
在一些示例中,框508可以接着框502或判定框506之后。
在一些示例中,在框508处,可以确定数据集的第二断言相关联的子集312,其包括从数据集中选择的第四数据记录306。例如在上文中参考采样模块224讨论了示例。在一些示例中,框504可以接着在框508之后,在该框508中针对第二断言相关联子集312来查询查询322。在一些示例中,框508还可以包括确定例如针对相应的不同的断言的任意数目的附加的断言相关联子集312。在表1的示例中,框502和框508可以针对断言P{DV2=1}(10个数据记录306)、P{DV3=1}(1个数据记录306)和P{DV4=1}(8个数据记录306)来确定在它们之间的断言相关联子集。在一些示例中,个体断言相关联子集312可以与例如具有P{DVx=y}形式的等式断言、具有P{MVz<w}形式的范围断言、或具有P{DVx=y∧MVz>w}形式的断言的组合相关联。这些示例形式不是限制性的。
在一些示例中,采样模块224被配置为选择第四数据记录306,或者第四数据记录306以其他方式被选择,使得该第四数据记录306满足该第二断言相关联子集312的的预定的第二断言。该第二断言可以是例如不同于在框502处所确定的断言相关联子集312的断言。断言相关联的子集312和第二断言相关联的子集312可以具有(例如,可以被选择为具有)小于预定阈值数目的相应数目的数据记录。
在一些示例中,预定阈值数等于或基本等于其中n为在数据集中(例如,在所讨论的特定表中)的数据记录306的数目。在表1的示例中,n=200,所以因此,框508(或框502)可以包括确定针对匹配少于14个数据记录306,或14个或更少的数据记录306的断言相关联子集312。例如,有100个数据记录306(#101-#200)满足断言P{DV1=1}。因此,在一些示例中,断言相关联子集312不是基于P{DV1=1}来被确定。相反地,仅10个数据记录306(#91-#100)满足断言P{DV2=1},因此,在一些示例中,断言相关联子集312可以基于P{DV2=1}来被确定。针对匹配少于预定阈值数目的数据记录306的断言来确定断言相关联子集312可以允许提高查询的速度(例如通过允许顺序扫描),同时保持与具体化针对匹配大量的数据记录306(例如,P{DV3=0})的断言的查询结果相比较可接受的存储消耗。
在一些示例中,随着数据记录306变得可用,框402、框404、框502或框508中的至少一些框可以被在线执行。附加地或备选地,可以至少执行框402、框404、框502或框508中的一些,例如,批量地覆盖例如一天或一周的数据记录306。
图6是示出了用于处理查询和示例数据项目的示例过程600的数据流图。过程600的操作可以例如由查询模块230实施。在一些示例中,框406可以包括框602-框606中的至少一个框。在一些示例中,判定框408可以包括判定框608。在一些示例中,框410可以包括框610-框618中的至少一个。在一些示例中,图5和图6中的框可以被一起使用。在一些示例中,例如为了节省磁盘空间,图6中的框可以在没有来自图5中的框的情况下被使用。
在一些示例中,在框602,第一子集310的一个或多个数据记录306可以被确定(例如至少部分地基于查询322来从该第一子集310中选择)。一个或多个数据记录306中的每一个可以满足查询322。框602可以包括当查询322被应用于第一子集310时确定该查询322的结果。框604或框606接着在框602之后。
在一些示例中,在框604处,可以至少部分地基于一个或多个数据记录306来确定第一结果326。例如,可以处理查询322的GROUP BY(分组)子句进行处理。在一些示例中,近似答案可以针对在查询322(例如,COUNT或SUM操作)中的聚合而被确定。
在一些示例中,在框606处,第一精确度值328可以基于一个或多个数据记录的计数而被确定。在一些示例中,如果在第一子集310中的四个数据记录306满足查询,则框606可以包括确定第一精确度值328等于4。上文例如参考图3或图4讨论了示例。
在一些示例中,在可以表示判定框408的判定框608处,可以确定第一精确度值328不满足预定的精确度标准。上文例如参考图3或4讨论了示例。
在一些示例中,在框610处,使用查询322搜索索引316以确定数据集的候选数据记录612。例如,如上所述,索引316可以包括与一个或多个断言相关联的映射。框610可以包括从索引316依此取回满足每个断言的候选数据记录612的标识符或其它指示。
对表1的示例查询为“SELECT DV1,SUM(MV1)FROM EXAMPLE WHERE DV1=1AND DV4=1GROUP BY DV1”。此查询包括两个断言:P{DV1=1}和P{DV4=1}。在框610,针对P{DV1=1}的第一映射可以被取回。第一映射可以指示ID#101-#200。针对P{DV4=1}的第二映射可以例如在取回第一映射之前、之后或并行被取回。第二映射可以指示ID#1、90、91、100、101、198、199和200。然后可以确定候选数据记录612。由于在示例查询中的逻辑连接器为“AND”,在框610处,可以计算第一映射和第二映射的交集以确定候选数据记录612。在此示例中,候选数据记录612为#101、198、199和200。
可以例如使用例如集合交集(set-intersection)算法来计算交集,诸如对表示映射的位串逐位进行AND运算、并行于定位共同元素地依次遍历该集、计算布隆(Bloom)过滤器的逐位AND,基于散列(hash)的交集,或其它技术。类似的技术可以被用在计算对应于在查询中的断言之间的逻辑连接器的其他集合操作中。例如,查询可以包括断言的结构和形成操作符树的逻辑连接器,并且可以使用利用在每个节点处使用的集合操作技术的语言翻译器技术来评估操作符树。
在一些示例中,附加地或备选地,框610可以包括针对查询的范围断言来测试索引的近似值中的至少一些。对表1的这种查询的示例为“选择DV1”,总和(MV1)来自示例其中DV1=1并且DV4=1并且MV2>5对DV1进行分组”。断言P{DV1=1}和P{DV4=1}(≡P{DV1=1∧DV4=1})可以如以上讨论的那样进行处理(例如,使用映射)。与映射的处理同时地,或在处理映射之前或之后,查询模块324可以对范围断言(例如,P{MV2>5})来测试近似值。查询模块324可以至少部分地基于满足范围断言的行来确定第一结果(例如,省略不满足范围断言的行)。
对范围断言测试近似值可以包括至少部分地基于范围断言来确定近似断言,并且对该近似断言测试近似值。在上面表2的示例索引中,MV2近似值因此,在本例中的近似断言为P{apx(MV2)>2},其对应于P{MV2>4}。满足范围断言P{MV2>5}的所有行将满足近似断言P{apx(MV2)>2}≡P{MV2>4}。因此,选择满足近似断言的行可以允许将第一结果确定为查询的准确结果的近似值。
在一些示例中,在框614处,可以至少部分地基于相应的近似值来选择多个候选数据记录612,以提供所选数据记录616。可以利用在放回的条件下随机地抽取候选数据记录612以提供所选数据记录616。在一些示例中,框614可以包括在框610处使用来自索引316的搜索的该结果来选择所选数据记录616中的至少一些的ID。在一些示例中,框614还可以包括例如通过数据集的磁盘存储的随机搜寻和读取来从数据集中取回所选数据记录616。在一些示例中,所选数据记录616的数目可以至少为候选数据记录612的数目,或者为阈值支持值(例如,针对最大允许距离∈所确定的1/∈2,例如,如在等式(1)中所示)、或者为该数目和该值中的较大者、或为该数目和该值中的较小者。
在一些示例中,将候选数据记录612选择作为被选择的数据记录616的概率可以正比于与上述候选数据记录612相关联的近似值。例如上文参考框402(图4)讨论了这样的选择的示例。来自表1和2的相关数据在表3中被重复以便于参考。然而,表2将近似值示出为2的指数,即如下所讨论,表3将近似值示出为2的幂,即
表3
在此示例中,在特定的随机抽取中,针对包括MV1的聚合的查询(例如,SUM(MV1)),选择数据记录306#101的概率和选择数据记录306#198的概率各自都可以为1/(1+1+64+64))=1/130≈0.008。选择数据记录306#199的概率和选择数据记录306#200的概率各自都可以为64/130≈0.49。针对包含MV2(例如,SUM(MV2))的聚合的查询,选择数据记录306#101的概率、选择数据记录306#198的概率以及选择数据记录306#200的概率各自都可以为4/(4+4+2+4)=4/18≈0.22。选择数据记录306#199的概率可以为2/18≈0.11。基于与近似值或测量值相关联的概率而将候选数据记录612选择为所选数据记录616可以允许更精确地向查询确定近似答案。在一些示例中,使用如上文参考第一子集310所讨论的双向技术,候选数据记录612可以被选择为所选择的数据记录616。这些示例不是限制性的。在一些示例中,例如,对于仅支持查询中的预定聚合子集的数据库220,将候选数据记录612选择作为所选择的数据记录616的概率可以例如是统一的或以其他方式预定的。
在一些示例中,在框618处,第二结果620(可以表示结果326)可以至少部分地基于所选择的数据记录616的相应测量值而被确定。例如,可以基于所选数据记录616的内容来执行GROUP BY子句,或者可以基于被取回的所选择的数据记录616来计算聚合。在一些示例中,框618可以包括存储例如由进行分组子句参数、测量值的对应权重(选择相应数据记录306的概率)分离的测量值的集合。此外,框618可以包括至少部分地基于该集合和该权重来确定结果620。在一些示例中,该集合和该权重的确定可以并行地或与所选数据记录616的确定(框614)交织地执行。此外,框618可以包括基于已确定的集合和权重来确定结果620。这可以降低访问所选数据记录616的记录所需的搜寻次数,提高性能。在一些示例中,可以基于相应的不同的权重集或不同的技术集来确定多种子集310,以用于确定权重(例如,与特定类型的集合体相关联的权重或技术)。这可以在提供上述集合体的近似值的改进精确度的同时提供向查询的快速响应。
图7是示出了用于处理查询和示例数据项目的示例过程700的流程图。过程700的操作可以例如由查询模块230来实施。
在一些示例中,在框702处,可以针对数据集的第一子集310来处理查询322以提供第一查询结果704。第一子集310可以包括至少部分地基于第一数据记录306的相应测量值而从数据集中选择的第一数据记录306。上文例如参考框406或框604讨论了示例。
在一些示例中,在判定框706处,可以确定第一查询结果704是否满足预定精确度标准(例如,与第一查询结果704相关联的精确度值是否满足预定精确度标准)。如果满足,则下一框可以为框712。如果不满足,则下一框为框708。上文例如参考框406、框506、框606或框608讨论了示例。
在一些示例中,在框708处,可以针对数据集的第二子集(例如,断言相关联的子集312)来处理查询322以提供第二查询结果710。第二子集可以包括从数据集中选择的第二数据记录306,其中该第二数据记录306的个体记录306满足该第二子集中的预定断言。上文例如参考图5讨论了示例。
在一些示例中,在框712处,查询结果326可以被提供。例如,第一查询结果704或第二查询结果710可以被提供为查询结果326。上文例如参考框412讨论了示例。
图8是示出了用于处理查询的示例过程800的流程图。过程800的操作可以例如由查询模块230实施。在一些示例中,例如如果查询结果不满足预定精确度标准,则框802可以在判定框706(图7)之后。
在一些示例中,在框802处,查询322的等式断言可以被确定。例如,解析或树处理(tree-processing)技术可以被使用以处理查询322来定位等式断言。
在一些示例中,在判定框804处,可以确定该等式断言是否与该第二子集相关联。如果是,则可以确定第二子集在处理查询322中是可用的。因此,框708可以在判定框804之后。这样,响应于确定等式断言与该第二子集相关联,可以针对该第二子集来处理该查询322。如果等式断言不与第二子集相关联,则框806在判定框804之后。在一些示例中,第二子集是或者包括断言相关联的子集312。
在一些示例中,可以重复方框802和框804以确定可以用于处理查询的至少一个断言相关联子集312。上文例如参考框504讨论了示例。例如,如果查询322包括一个或多个相等断言,则如果至少一个等式断言与相应的第二子集相关联,则可以使用框708。在一些示例中,框802或判定框804中的至少一个可以包括确定查询322包括至少一个断言,以及确定在该查询中的每一个的断言都是等式断言。在例如上面参考框508所讨论的表1的示例中,可以针对断言P{DV2=1}、P{DV3=1}或P{DV4=1}中的至少一个来确定相应的断言相关联子集312。如果查询322包括上述三个断言中的至少一个,则框708可以被使用,针对该三个断言相应的断言相关联子集312已经被确定。
在一些示例中,在框806处,例如响应于确定(判定框804)等式断言不与该第二子集相关联,则可以针对数据集的索引316来处理查询322以提供第三查询结果。索引316可以包括从断言到与该断言相关联的数据集的至少一个第三数据记录和到与至少一个第三数据记录相关联的至少一个相应近似值的映射。本文参考例如索引模块226、框404或图12,索引316讨论了示例。针对索引316来处理查询322的示例在本文中参考查询模块230、框410或框610-框618被讨论。在一些示例中,框712可以在框806之后,在此处第三查询结果可以被提供作为查询结果326。
在一些示例中,框806可以包括通过对查询的断言的索引的至少一些近似值进行测试来对数据集进行过滤。查询的断言可以包括例如等式断言或范围断言中的至少一个。例如,如在本文中参考框610所讨论的,框806可以包括选择数据集在索引中所列的近似值满足查询的断言或与该查询的断言对应的近似断言的行。然后可以至少部分地基于所选行来确定第三查询结果。在一些实施例中,不满足查询的断言的行或对应的近似查询的行,可以在确定第三查询结果中不被考虑。
图9是示出了用于处理查询和示例数据项目的示例过程900的数据流图。过程900的操作可以例如由查询模块230实施。
在一些示例中,在框902处,可以确定在第一数据记录306中所选择的数据记录904或满足查询322的“命中”。
在一些示例中,在框906处,第一查询结果908(可以表示第一查询结果704)可以至少部分地基于所选数据记录904(命中)的相应测量值而被确定。上文例如参考框406或框604讨论了示例。
在一些示例中,在框910处,第一查询结果908的支持值912可以至少部分地基于所选择的数据记录(命中)904的数目(例如,满足查询322的第一数据记录的记录的数目)而被确定。上文例如参考框606讨论了示例。
在一些示例中,可以在框902之后或者在块906之前执行框910。例如,仅在确定该第一查询结果908满足该精确度标准之后(例如,基于支持值912(在框910处所确定的)),集合操作才可以被执行(框906)。通过仅在第一查询结果908将满足标准的情况下才确定第一查询结果908,这可以降低CPU利用率并降低查询响应延时。
在一些示例中,在框914(可以表示判定框706)处,可以至少部分地基于支持值912来确定该第一查询结果908不满足预定精确度准。框708可以在框914之后。上文例如参考判定框608讨论了示例。
图10是示出了用于处理查询和示例数据项目的示例过程1000的数据流图。过程1000的操作可以例如由查询模块230实施。处理可以开始于判定框1004或框1006。在一些示例中,第二查询1002可以被处理。
在一些示例中,在判定框1004处,可以确定第二查询1002是否包括与第二子集的预定断言所不同的断言。如果否,则框702或框708可以在判定框1004之后。如果是,则框1006在判定框1004之后。这可以允许针对索引316来执行第二查询1002。
在一些示例中,在框1006处,可以针对数据集的索引316来处理第二查询1002以提供第二查询1002的查询结果1008。索引316可以包括从断言到与该断言相关联的数据集的至少一个第三数据记录306和到与该至少一个第三数据记录相关联的至少一个相应近似值的映射。上文例如参考框404讨论了示例。
图11是示出了用于分析数据记录和示例数据项目的示例过程1100的数据流图。可以由组320的组件(图3)来执行过程1100的操作。
在一些示例中,在框1102处,多个数据记录306(或至少一个数据记录306)可以例如经由通信接口238而被接收。上文例如参考通信接口238或接收模块234讨论了示例。在一些示例中,多个数据记录306的第一数据记录可以包括第一离散值和第一测量值。多个数据记录306的第二数据记录可以包括第二离散值和大于第一测量值的第二测量值。
在一些示例中,在框1104处,可以确定多个数据记录306的第一子集1106。框1104可以操作以使得第二数据记录在第一子集1106中比第一数据记录更频繁地出现。例如,可以以与其测量值成比例的或与其测量值关联的概率来对数据记录306进行采样(例如,如在本文中参考框402或框614所讨论的)。例如,第二数据记录可以在第一子集1106中出现一次,并且第一数据记录可以在第一子集1106中不出现。在另一个示例中,第二数据记录可以在第一子集1106中出现两次,并且第一数据记录可以在第一子集1106中出现一次。
在表3的示例中,数据记录306#90(ID=90)具有测量值MV1=1和MV2=8.9793。数据记录306#91(ID=91)具有测量值MV1=10和MV2=2.3846。因此,如果第一测量值为#90.MV1并且第二测量值为#91.MV1(#91.MV1>#90.MV1),则数据记录306#91比数据记录306#90更频繁地在第一子集1106中出现。在其他示例中,如果第一测量值为#91.MV2并且第二测量值为#90.MV2(#90.MV2>#91.MV2),则数据记录306#90可以比数据记录306#91更频繁地在第一子集1106中出现。
图12是示出了用于分析数据记录和示例数据项目的示例过程1200的数据流图。可以例如由组320的组件(图3)来实施过程1200的操作。在一些示例中,框1202、框1206或框1214中的至少一个可以在框1104之后。
在一些示例中,在框1202处,可以确定多个数据记录306的第二子集1204。上文例如参考采样模块224或框402或框1104讨论了示例。在一些示例中,第一数据记录包括第三测量值,并且第二数据记录包括大于该第三测量值的第四测量值。框1202可以包括确定第二子集1204,使得第一数据记录在第一子集中比第二数据记录更频繁地出现。例如,第二数据记录可以在第一子集1106中不出现,并且第一数据记录可以在第一子集110中出现一次。在另一示例中,第二数据记录可以在该第一子集1106中出现一次,并且第一数据记录可以在该第一子集1106中出现两次。在此示例和其他示例中,数据集的多个子集310可以被确定。个体子集310(例如,每一个子集310)可以包括或引用利用与针对相应子集310的预定测量列的值成比例的概率或频率所选择的数据记录306。在表1、表2或表3的示例中,框402、框1104或框1202可以包括确定两个子集310:具有基于MV1的概率的一个子集,以及具有基于MV2的概率的另一个子集。例如,第一数据记录306可以是#90,并且第二数据记录306可以是#91。在基于或与MV1相关联的第一子集310中,#91可以比#90更频繁地出现。然而,在基于或与MV2相关联的第一子集310中,#90可以比#91更频繁地出现。这可以允许为针对在特定测量列上的聚合查询的近似结果提供可接受的精确度,并且允许仅处理相对少量的行来回答查询,而不管哪一测量列正在被聚合。
在一些示例中,在框1206处,可以确定索引1208(可以表示索引316)。索引1208可以包括从断言1210到索引记录1212的至少一个映射。在一些示例中,断言1210可以包括等式断言或范围断言中的至少一个。索引记录1212可以表示满足断言1210的多个数据记录306中的至少一个。索引记录可以包括与多个数据记录306中的至少一个的测量值相关联的至少一个近似值。上文例如参考索引模块226、框404或表2讨论了示例。如上所述,可以例如在例如基于范围断言过滤数据集的情况下,或在确定采样概率的情况下使用近似值,以提高与均匀采样方案相比的精确度。
在一些示例中,框1206可以包括确定索引1208,其包括与在数据集中的每一个离散列的每一个值相关联的、或者与少于每一个值相关联的,或者与少于每一个离散列相关联的相应索引记录1212、或者其被索引的部分。保持与在数据集中的每一个离散列的每一个值相关联的索引记录1212可以允许使用断言的任意组合来容易地回答查询。在一些示例中,框1214可以在框1206之后。
在一些示例中,在框1214处,可以确定断言相关联子集1216(可以表示断言相关联子集312)。断言相关联的子集1216可以包括多个数据记录306的一半或少于一半。断言相关联子集可以包括满足预定断言的数据记录。预定断言可以包括例如等式断言或范围断言中的至少一个。在一些示例中,随框1206可以在框1214之后。使用框1206和框1214两者可以允许使用索引1208和断言相关联子集1216两者。
在一些示例中,框1202、框1206或框1214的任何组合都可以被以任意顺序使用。这可以允许利用适当的索引来处理查询(例如,查询322或查询1002),以提供快速的查询响应和可接受的回答精确度。
示意结果:
继续表1的示例,针对示例查询322“SELECT DV1,SUM(MV1)FROM EXAMPLE GROUPBY DV 1”,如以上参考图3所讨论的那样,精确答案(到两个小数位)可以被表示为答案(0.39,0.61)。在根据一些先前方案的均匀选择的示例中,从具有均匀概率的表1中选择20行可以提供不精确结果。例如,如果行#199或行#200都被包括在样本中,但不是两者都被包括在样本中,则结果可以为分布(0.15,0.85)。如果在样本中既不包括行#199也不包括行#200,则结果可以为分布(0.66,0.34)。这两者都远离所确定的答案。相反地,如上,在本文中的技术可以提供(0.30,0.70)的近似答案,其均匀选择示例更接近与精确答案。
示例条款
A:一种设备包括:处理单元;以及计算机可读介质,计算机可读介质包括被配置用于由处理单元执行的模块,模块包括:采样模块,采样模块被配置为确定数据集的第一子集,第一子集包括至少部分地基于第一数据记录的相应测量值而从数据集中选择的第一数据记录;索引模块,索引模块被配置为确定索引,索引包括从断言到与断言相关联的数据集的一个或多个第二数据记录和到与一个或多个第二数据记录相关联的相应近似值的映射;以及查询模块,查询模块被配置为:针对第一子集来处理查询以提供第一结果和第一精确度值;确定第一精确度值不满足预定精确度标准;以及针对索引来处理查询以提供第二结果。
B:根据段落A的设备,其中:采样模块还被配置为确定数据集的断言相关联子集,断言相关联子集包括从数据集中所选择的第三数据记录,其中第三数据记录中的个体记录满足断言相关联子集的预定断言;并且查询模块还被配置为针对断言相关联子集来处理查询。
C:根据段落B的设备,其中查询模块被配置为:响应于确定第一精确度值不满足预定精确度标准,针对断言相关联子集来处理查询。
D:根据段落B或C的设备,其中:采样模块还被配置为:确定数据集的第二断言相关联子集,第二断言相关联子集包括从数据集中所选择的第四数据记录;第四数据记录中的个体记录满足第二断言相关联子集的预定第二断言;并且采样模块被配置为确定断言相关联子集和第二断言相关联子集,断言相关联子集和第二断言相关联子集具有小于预定阈值数目的相应数目的数据记录。
E:根据段落A-D中任一段的设备,其中,映射包括一个或多个第二数据记录的相应标识符。
F:根据段落A-E中任一段的设备,其中查询模块还被配置为:确定第一子集的一个或多个数据记录,其中一个或多个数据记录中的每个数据记录满足查询;以及基于一个或多个数据记录的计数来确定第一精确度值。
G:根据段落F的设备,其中查询模块还被配置以至少基于一个或多个数据记录的部分来确定第一结果。
H:根据段落A-G中的任一段落的设备,其中查询模块还被配置为:使用查询来搜索索引,以确定数据集的候选数据记录;至少部分地基于相应的近似值来选择多个候选数据记录,以提供所选择的数据记录;以及至少部分地基于所选择的数据记录的相应测量值来确定第二结果。
I:根据段落A-H中的任一段落的设备,还包括:通信接口;以及传输模块,其被配置为经由通信接口传输第二结果的指示。
J:根据段落A-I中的任一段落的设备,其中断言包括等式断言或者范围断言中的至少一个。
K:根据段落A-J中的任一段落的设备,其中查询模块被配置为针对范围断言测试索引的近似值中的至少一些。
L:一种方法,包括:针对数据集的第一子集的查询以提供第一查询结果,第一子集包括至少部分地基于第一数据记录的相应测量值而从数据集中选择的第一数据记录;确定第一查询值不满足预定精确度标准;以及针对数据集的第二子集来处理查询以提供第二查询结果,第二子集包括从数据集中选择的第二数据记录,其中第二数据记录中的个体记录满足第二子集的预定断言。
M:根据段落L的方法,还包括确定查询的至少一个等式/不等式断言;并且确定断言是否与第二子集相关联。
N:根据段落M的方法,还包括确定查询包括至少一个断言以及在查询中的每一个断言都为等式断言。
O:根据段落M或N的方法,其中断言包括等式断言和范围断言中的至少一个。
P:根据段落L-O中的任一段落的方法,还包括响应于确定查询的等式/不等式断言与第二子集相关联,针对第二子集来处理查询以提供第二查询结果;以及响应于确定查询的等式/不等式断言不与第二子集相关联,针对数据集的索引处理查询以提供第三查询结果,索引包括从断言到与断言相关联的数据集的至少一个第三数据记录和到与至少一个第三数据记录相关联的至少一个相应近似值的映射。
Q:根据段落P中的方法,还包括通过针对查询的断言来测试索引的至少一些来过滤数据集。
R:根据段落Q中的方法,其中查询的断言包括等式断言和范围断言的至少一个。
S:根据段落L-R中的任一段落的方法,还包括针对数据集的索引来处理第二查询以提供第三查询结果,索引包括从断言到与断言相关联的数据集的至少一个第三数据记录和到与至少一个第三数据记录相关联的至少一个相应近似值的映射。
T:根据段落S中的方法,还包括确定第二查询包括与第二子集的预定断言不同的断言,并且作为响应而针对索引来处理第二查询。
U:根据段落L-T中的任一段落的方法,还包括确定第一数据记录中满足查询的所选择的数据记录;以及至少部分地基于所选择的数据记录的相应测量值来确定第一查询结果。
V:根据段落L-U中的任一段落的方法,还包括:至少部分地基于第一数据记录中满足查询的记录的数目,确定第一查询结果的支持值;以及至少部分地基于支持值,确定第一查询结果不满足预定精确度标准。
W:根据段落L-V中的任一段落的方法,还包括:确定第二数据记录中的满足查询的所选择的数据记录;以及至少部分地基于所选择的数据记录的相应测量值来确定第二查询结果。
X:根据段落L-W中的任一段落的方法,还包括:确定查询的精确结果;以及确定精确结果和第二查询结果之间的距离度量。
Y:根据段落L-X中的任一段落的方法,还包括经由通信结果来传输第二查询结果的指示。
Z:根据段落L-Y中的任一段落的方法,还包括在计算机可读存储器中顺序地存储第二数据记录。
AA:根据段落L-Z中的任一段落的方法,还包括:确定查询的一个或多个断言;取回与一个或多个断言相关联的数据记录的相应计数;选择与最低相应计数相关联的断言;以及针对与所选断言相关联的多个断言相关联子集中的一个来处理查询,其中该多个断言相关联子集包括第二子集。
AB:一种计算机可读介质(例如,计算机存储介质),具有在其上执行的计算机可执行指令,其当执行时配置计算机以执行段落L-AA中的任一段落的操作。
AC:一种设备包括:处理器;和计算机可读介质(例如,计算机存储介质),在其上具有计算机可执行指令,其当由处理器执行时配置设备以执行段落L-AA中的任一段落的操作。
AD:一种***包括:用于处理的部件;以及用于存储在其上具有计算机可执行指令的部件,该计算机可执行指令包括用于配置该***实施段落L-AA中的任一段落的方法的部件。
AE:一种***,包括:用于针对数据集的第一子集来处理查询以提供第一查询结果的装置,第一子集包括至少部分地基于第一数据记录的相应测量值而从数据集中选择的第一数据记录;用于确定第一查询值不满足预定精确度标准的装置;以及用于针对数据集的第二子集来处理查询以提供第二查询结果的装置,第二子集包括从数据集中选择的第二数据记录,其中第二数据记录中的个体记录满足第二子集的预定断言。
AF:根据段落AE中的***,还包括:用于确定查询的至少一个等式/不等式断言的装置;以及用于确定等式/不等式断言是否与第二子集相关联的装置。
AG:根据段落AF中的***,还包括用于确定查询包括至少一个断言以及在查询中的每一个断言为等式断言的装置。
AH:根据段落AF或AG中的***,其中该断言包括等式断言或范围断言中的至少一个。
AI:根据段落AE-AH中的任一段的***,还包括:用于响应于确定查询的相等/不相等断言与第二子集相关联而针对第二子集来处理查询以提供第二查询结果的装置;以及用于响应于确定查询的相等/不相等断言不与第二子集相关联而针对数据集的索引来处理查询以提供第三查询结果的装置,索引包括从断言到与断言相关联的数据集的至少一个第三数据记录和到与至少一个第三数据记录相关联的至少一个相应近似值的映射。
AJ:根据段落AI的***,还包括用于通过对查询的断言测试索引的至少一些来过滤数据集的装置。
AK:根据段落AJ的***,其中查询的断言包括等式断言和范围断言的至少一个。
AL:根据段落AE-AK中的任一段落的***,还包括:用于针对数据集的索引来处理第二查询以提供第三查询结果的装置,索引包括从断言到与断言相关联的数据集的至少一个第三数据记录和到与至少一个第三数据记录相关联的至少一个相应近似值的映射。
AM:根据段落AL中的***,还包括用于确定第二查询包括与第二子集的预定断言不同的断言并且作为响应而针对索引来处理第二查询的装置。
AN:根据段落AE-AM中的任一段落的***,还包括用于确定第一数据记录中满足查询的所选数据记录的装置;以及用于至少部分地基于所选数据记录的相应测量值来确定第一查询结果的装置。
AO:根据段落AE-AN中的任一段落的***,还包括:用于至少部分地基于第一数据记录中满足查询的记录的数目来确定第一查询结果的支持值的装置;以及用于至少部分地基于支持值来确定第一查询结果不满足预定精确度标准的装置。
AP:根据段落AE-AO中的任一段落的***,还包括:用于确定第二数据记录中的满足查询的所选数据记录的装置;以及用于至少部分地基于所选数据记录的相应测量值来确定第二查询结果的装置。
AQ:根据段落AE-AP中的任一段落的***,还包括:用于确定查询的精确结果的装置;以及用于确定在精确结果和第二查询结果之间的距离度量的装置。
AR:根据段落AE-AQ中的任一段落的***,还包括用于经由通信结果来传输第二查询结果的指示的装置。
AS:根据段落AE-AR中的任一段落的***,还包括用于顺序地存储第二数据记录的计算机可读存储器。
AT:根据段落AE-AS中的任一段落的***,还包括:用于确定查询的一个或多个断言的装置;用于取回与一个或多个断言相关联的数据记录的相应计数的装置;用于选择与最低相应计数相关联的断言的装置;以及用于针对与所选择的断言相关联的多个断言相关联子集中的一个来处理查询的装置,其中该多个断言相关联子集包括第二子集。
AU:一种***,包括:通信接口;至少一个处理单元;以及包括指令的至少一个计算机可读介质,该指令当由至少一个处理单元执行时引起至少一个处理单元:经由通信接口接收多个数据记录,其中多个数据记录中的第一数据记录包括第一离散值和第一测量值,并且多个数据记录中的第二数据记录包括第二离散值和大于第一测量值的第二测量值;确定多个数据记录的第一子集,其中第二数据记录在第一子集中比第一数据记录更频繁地出现。
AV:根据段落AU中的***,其中第一数据记录包括第三测量值,并且第二数据记录包括大于第三测量值的第四测量值,指令还使得至少一个处理单元:确定多个数据记录中的第二子集,其中第一数据记录在第一子集中比第二数据记录更频繁地出现。
AW:根据段落AU或AV中的***,指令还使得至少一个处理单元确定索引,索引包括从断言到索引记录的至少一个映射,其中:索引记录标识多个数据记录中满足断言的至少一个数据记录;并且索引记录包括与多个数据记录中的至少一个数据记录的测量值相关联的至少一个近似值。
AX:根据段落AU或AW中的***,指令还使得至少一个处理单元:确定少于多个数据记录的一半的数据记录的断言相关联子集,断言相关联子集包括满足预定断言的数据记录。
AY:根据段落AX中的***,指令还使得至少一个处理单元确定包括从断言到索引记录的至少一个映射的索引,其中:索引记录标识多个数据记录中满足断言的至少一个数据记录;并且索引记录包括与多个数据记录中的至少一个数据记录的测量值相关联的至少一个近似值。
总结
这里描述的各种查询处理技术可以允许更有效地分析数据以提供近似结果。一些示例可以在交互式时间标度中(例如,在诸如与实体的通信会话的会话期间)提供近似结果。与先前方案相比,各种示例可以提供查询结果精确度的更优的一致性,允许用户更有效地使用近似结果。各种示例可以降低用于确定数据库的时间或存储器需求,同时提供近似结果的可接受的精确度水平。各种示例可以利用具有预定限制的许多I/O操作(例如,顺序读取或随机搜寻))提供近似查询结果的选定精确度水平。
尽管已经用结构特征和/或方法动作特定的语言描述了这些技术,但是应当理解,所附权利要求不必限于所描述的特征或动作。相反,特征和动作被描述为这种技术的示例实现。相反地,特征和动作被描述为这样的技术的示例实现。例如,网络108、处理单元114、以及本文的其它结构(其中所列出的多个类型的实现设备或结构)可以包括任何所列类型,和/或其中的多种和/或其组合。
示例过程的操作在个体框中被示出并且参考这些框进行总结。过程被图示为框的逻辑流,其中的每个框可以表示可以用硬件、软件或其组合来实现的一个或多个操作。在软件的上下文中,操作表示存储在一个或多个计算机可读介质上的计算机可执行指令,计算机可执行指令在由一个或多个处理器执行时使一个或多个处理器能够执行所记载的操作。通常,计算机可执行指令包括执行特定功能或实现特定抽象数据类型的例程、程序、对象、模块、部件、数据结构等。描述操作的次序不旨在被解释为限制,并且任何数目的所描述的操作可以以任何次序执行、以任何次序组合、细分为多个子操作、和/或并行执行以实现所描述的过程。所描述的过程可以通过与一个或多个计算设备102、104或200(诸如,一个或多个内部或外部CPU或GPU)相关联的资源和/或一个或多个硬件逻辑(诸如FPGA、DSP)或上述其它类型来执行。
以上描述的所有方法和过程可以具化在由一个或多个计算机或处理器执行的软件代码模块中并且经由其进行完全自动化。代码模块可以存储在任何类型的计算机可读介质、存储器或其他计算机存储设备中。一些或所有方法可以具化在专用的计算机硬件中。
除非另有特别说明,否则诸如“能够”、“可能”、“可以”、“可”的条件语言在上下文中被理解为表示特定示例包括(而其他示例不包括)某些特征、元件和/或步骤。因此,这样的条件语言通常不旨在暗示某些特征、元件和/或步骤以任何方式需要用于一个或多个示例,或者一个或多个示例必须包括用于在具有或不具有用户输入或提示的情况下决定在任何特定示例中是否包括或将要执行某些特征、元件和/或步骤的逻辑。除非另有明确说明,词语“或”和短语“和/或”在本文中以包含性的意义使用。除非另有特别说明,否则诸如短语“X、Y或Z”、“至少X、Y或Z”或“X、Y或Z中的至少一个”的连接语言应理解为表示项目、术语等可以是X、Y或Z中任一个或者是它们的组合。
这里描述和/或附图中描绘的流程图中的任何例程描述、元件或框应该被理解为可能代表包括用于实现例程中的特定逻辑功能或元件的一个或多个可执行指令的模块、分段或代码的一部分。备选实现方式包含于本文所描述的示例的范围内,其中可以删除元件或功能,或者以与所示或所讨论的次序不同的次序执行元件或功能,如本领域技术人员可以理解的,包括基本同步或相反的次序(这取决于所涉及的功能)。无论它们是否被明确描述为非限制性的,本文中的示例是非限制性的,除非另有明确说明。应该强调的是,可以对上述示例做出许多变化和修改,其要素被理解为是其他可接受的示例。所有这些修改和变化都旨在包含于本公开的范围内并且由以下权利要求保护。此外,在权利要求中,除非另有明确说明,对由前述权利要求条款所提供的一组项目的任何引用是对项目组中的至少一些项目的引用。
Claims (15)
1.一种设备,包括:
处理单元;以及
计算机可读介质,所述计算机可读介质包括被配置用于由所述处理单元执行的模块,所述模块包括:
采样模块,所述采样模块被配置为确定数据集的第一子集,所述第一子集包括至少部分地基于第一数据记录的相应测量值而从所述数据集中选择的所述第一数据记录;
索引模块,所述索引模块被配置为确定索引,所述索引包括从断言到所述数据集的与所述断言相关联的一个或多个第二数据记录和到与所述一个或多个第二数据记录相关联的相应近似值的映射;以及
查询模块,所述查询模块被配置为:
针对所述第一子集来处理查询,以提供第一结果和第一精确度值;
确定所述第一精确度值不满足预定的精确度标准;以及
针对所述索引来处理所述查询,以提供第二结果。
2.根据权利要求1所述的设备,其中:
所述采样模块还被配置为:确定所述数据集的断言相关联子集,所述断言相关联子集包括从所述数据集中选择的第三数据记录,其中所述第三数据记录中的个体记录满足所述断言相关联子集的预定的断言;并且
所述查询模块还被配置为:针对所述断言相关联子集来处理所述查询。
3.根据权利要求2所述的设备,其中所述查询模块被配置为:响应于确定所述第一精确度值不满足所述预定的精确度标准,针对所述断言相关联子集来处理所述查询。
4.根据权利要求2或3所述的设备,其中:
所述采样模块还被配置为:确定所述数据集的第二断言相关联子集,所述第二断言相关联子集包括从所述数据集中选择的第四数据记录;
所述第四数据记录中的个体记录满足所述第二断言相关联子集的预定的第二断言;并且
所述采样模块被配置为:确定所述断言相关联子集和所述第二断言相关联子集,所述断言相关联子集和第二断言相关联子集具有小于预定的阈值数目的相应数目的数据记录。
5.根据权利要求1至4中任一项所述的设备,其中所述查询模块还被配置为:
确定所述第一子集的一个或多个数据记录,其中所述一个或多个数据记录中的每个数据记录满足所述查询;以及
基于所述一个或多个数据记录的计数来确定所述第一精确度值。
6.根据权利要求1至5中任一项所述的设备,其中所述查询模块还被配置为:
使用所述查询来搜索所述索引,以确定所述数据集的候选数据记录;
至少部分地基于所述相应近似值来选择多个所述候选数据记录,以提供所选择的数据记录;以及
至少部分地基于所选择的所述数据记录的相应测量值来确定所述第二结果。
7.一种方法,包括:
针对数据集的第一子集来处理查询以提供第一查询结果,所述第一子集包括至少部分地基于所述第一数据记录的相应测量值而从所述数据集中选择的第一数据记录;
确定所述第一查询值不满足预定的精确度标准;以及
针对所述数据集的第二子集来处理所述查询以提供第二查询结果,所述第二子集包括从所述数据集中选择的第二数据记录,其中所述第二数据记录中的个体记录满足所述第二子集的预定的断言。
8.根据权利要求7所述的方法,还包括:
确定所述查询的至少一个断言;
确定所述断言是否与所述第二子集相关联;
响应于确定所述查询的所述断言与所述第二子集相关联,针对所述第二子集来处理所述查询以提供所述第二查询结果;以及
响应于确定所述查询的所述断言不与所述第二子集相关联,针对所述数据集的索引来处理所述查询以提供第三查询结果,所述索引包括从断言到与所述断言相关联的所述数据集的至少一个第三数据记录和到与所述至少一个第三数据记录相关联的至少一个相应近似值的映射。
9.根据权利要求7或8所述的方法,还包括:
针对所述数据集的索引来处理第二查询以提供第三查询结果,所述索引包括从断言到与所述断言相关联的所述数据集的至少一个第三数据记录和到与所述至少一个第三数据记录相关联的至少一个相应近似值的映射。
10.根据权利要求9所述的方法,还包括:确定所述第二查询包括与所述第二子集的所述预定的断言不同的断言,作为响应而针对所述索引来处理所述第二查询。
11.根据权利要求7至10中任一项所述的方法,还包括:
至少部分地基于所述第一数据记录中满足所述查询的记录的数目而确定所述第一查询结果的支持值;以及
至少部分地基于所述支持值而确定所述第一查询结果不满足所述预定的精确度标准。
12.一种***,包括:
通信接口;
至少一个处理单元;以及
至少一个计算机可读介质,所述至少一个计算机可读介质包括指令,所述指令当由所述至少一个处理器单元执行时使得所述至少一个处理单元:
经由所述通信接口接收多个数据记录,其中所述多个数据记录中的第一数据记录包括第一离散值和第一测量值,并且所述多个数据记录中的第二数据记录包括第二离散值和大于所述第一测量值的第二测量值;
确定所述多个数据记录的第一子集,其中所述第二数据记录在所述第一子集中比所述第一数据记录更频繁地出现。
13.根据权利要求12所述的***,其中所述第一数据记录包括第三测量值,并且所述第二数据记录包括大于所述第三测量值的第四测量值,所述指令还使得所述至少一个处理单元:
确定所述多个数据记录的第二子集,其中所述第一数据记录在所述第一子集中比在所述第二数据记录中更频繁地出现。
14.根据权利要求12或13所述的***,所述指令还使得所述至少一个处理单元确定索引,所述索引包括从断言到索引记录的至少一个映射,其中:
所述索引记录标识断言所述多个数据记录中满足所述断言的至少一个数据记录;并且
所述索引记录包括与所述多个数据记录中的所述至少一个数据记录的测量值相关联的至少一个近似值。
15.根据权利要求12至14中任一项所述的***,所述指令还使得所述至少一个处理单元:
确定具有少于所述多个数据记录的一半的断言相关联子集,所述断言相关联子集包括满足预定的断言的数据记录;以及
确定包括从断言到索引记录的至少一个映射的索引,其中:
所述索引记录标识断言所述多个数据记录中满足所述断言的至少一个数据记录;并且
所述索引记录包括与所述多个数据记录中的所述至少一个数据记录的测量值相关联的至少一个近似值。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/192,909 US10740328B2 (en) | 2016-06-24 | 2016-06-24 | Aggregate-query database system and processing |
US15/192,909 | 2016-06-24 | ||
PCT/US2017/038407 WO2017223125A1 (en) | 2016-06-24 | 2017-06-21 | Aggregate-query database system and processing |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110140121A true CN110140121A (zh) | 2019-08-16 |
CN110140121B CN110140121B (zh) | 2023-06-13 |
Family
ID=59258403
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780039079.0A Active CN110140121B (zh) | 2016-06-24 | 2017-06-21 | 聚合查询的数据库***和处理 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10740328B2 (zh) |
EP (1) | EP3475843B1 (zh) |
CN (1) | CN110140121B (zh) |
WO (1) | WO2017223125A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111177155A (zh) * | 2019-12-31 | 2020-05-19 | 山东浪潮通软信息科技有限公司 | 消息过滤方法、***和计算机设备 |
CN112307062A (zh) * | 2020-09-18 | 2021-02-02 | 苏宁云计算有限公司 | 数据库聚合查询方法、装置及*** |
CN113704300A (zh) * | 2020-05-21 | 2021-11-26 | Sap欧洲公司 | 供数据检索方法使用的数据印记技术 |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9607045B2 (en) | 2012-07-12 | 2017-03-28 | Microsoft Technology Licensing, Llc | Progressive query computation using streaming architectures |
US10691709B2 (en) | 2015-10-28 | 2020-06-23 | Open Text Sa Ulc | System and method for subset searching and associated search operators |
EP3322149B1 (en) * | 2016-11-10 | 2023-09-13 | Tata Consultancy Services Limited | Customized map generation with real time messages and locations from concurrent users |
KR102011671B1 (ko) * | 2016-12-06 | 2019-08-19 | 한국전자통신연구원 | 이종 계산 장치 기반의 질의 처리 방법 및 장치 |
US10552435B2 (en) | 2017-03-08 | 2020-02-04 | Microsoft Technology Licensing, Llc | Fast approximate results and slow precise results |
US11550834B1 (en) * | 2017-04-26 | 2023-01-10 | EMC IP Holding Company LLC | Automated assignment of data set value via semantic matching |
US10747815B2 (en) | 2017-05-11 | 2020-08-18 | Open Text Sa Ulc | System and method for searching chains of regions and associated search operators |
EP3649566A4 (en) | 2017-07-06 | 2021-04-14 | Open Text SA ULC | SYSTEM AND PROCEDURE FOR VALUE-BASED AREA SEARCH AND RELATED SEARCH OPERATORS |
US20210390624A1 (en) * | 2017-09-27 | 2021-12-16 | State Farm Mutual Automobile Insurance Company | Real Property Monitoring Systems and Methods for Risk Determination |
US10805345B2 (en) * | 2017-09-29 | 2020-10-13 | Paypal, Inc. | Blind injection attack mitigation |
US11182437B2 (en) * | 2017-10-26 | 2021-11-23 | International Business Machines Corporation | Hybrid processing of disjunctive and conjunctive conditions of a search query for a similarity search |
US10824686B2 (en) | 2018-03-05 | 2020-11-03 | Open Text Sa Ulc | System and method for searching based on text blocks and associated search operators |
US11138215B2 (en) * | 2018-06-29 | 2021-10-05 | Oracle International Corporation | Method and system for implementing parallel database queries |
US11461323B2 (en) * | 2019-06-28 | 2022-10-04 | Visa International Service Association | Techniques for efficient query processing |
CN113626490B (zh) * | 2020-05-08 | 2023-08-25 | 杭州海康威视数字技术股份有限公司 | 数据查询方法、装置及设备、存储介质 |
US11625403B2 (en) * | 2020-10-30 | 2023-04-11 | Teradata Us, Inc. | Query processing using a predicate-object name cache |
US20230401246A1 (en) * | 2022-06-08 | 2023-12-14 | Adobe Inc. | System and methods for streaming string similarity and pattern matching |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050182558A1 (en) * | 2002-04-12 | 2005-08-18 | Mitsubishi Denki Kabushiki Kaisha | Car navigation system and speech recognizing device therefor |
CN101620619A (zh) * | 2009-08-07 | 2010-01-06 | 北京航空航天大学 | 一种基于聚类方法的测量数据粗大误差处理***及处理方法 |
US20120078904A1 (en) * | 2010-09-28 | 2012-03-29 | International Business Machines Corporation | Approximate Index in Relational Databases |
US20140019352A1 (en) * | 2011-02-22 | 2014-01-16 | Visa International Service Association | Multi-purpose virtual card transaction apparatuses, methods and systems |
US20140280193A1 (en) * | 2013-03-13 | 2014-09-18 | Salesforce.Com, Inc. | Systems, methods, and apparatuses for implementing a similar command with a predictive query interface |
Family Cites Families (78)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5878426A (en) | 1996-12-23 | 1999-03-02 | Unisys Corporation | Statistical database query using random sampling of records |
US6108658A (en) | 1998-03-30 | 2000-08-22 | International Business Machines Corporation | Single pass space efficent system and method for generating approximate quantiles satisfying an apriori user-defined approximation error |
US6052689A (en) | 1998-04-20 | 2000-04-18 | Lucent Technologies, Inc. | Computer method, apparatus and programmed medium for more efficient database management using histograms with a bounded error selectivity estimation |
US6477534B1 (en) | 1998-05-20 | 2002-11-05 | Lucent Technologies, Inc. | Method and system for generating a statistical summary of a database using a join synopsis |
US7966078B2 (en) | 1999-02-01 | 2011-06-21 | Steven Hoffberg | Network media appliance system and method |
US6532458B1 (en) | 1999-03-15 | 2003-03-11 | Microsoft Corporation | Sampling for database systems |
US6760724B1 (en) | 2000-07-24 | 2004-07-06 | Lucent Technologies Inc. | Approximate query processing using wavelets |
US6504195B2 (en) | 2000-12-29 | 2003-01-07 | Eastman Kodak Company | Alternate method for photodiode formation in CMOS image sensors |
US6842753B2 (en) | 2001-01-12 | 2005-01-11 | Microsoft Corporation | Sampling for aggregation queries |
US8090730B2 (en) | 2001-12-04 | 2012-01-03 | University Of Southern California | Methods for fast progressive evaluation of polynomial range-sum queries on real-time datacubes |
US7385708B2 (en) | 2002-06-07 | 2008-06-10 | The University Of North Carolina At Chapel Hill | Methods and systems for laser based real-time structured light depth extraction |
US20040002956A1 (en) | 2002-06-28 | 2004-01-01 | Microsoft Corporation | Approximate query processing using multiple samples |
US7557805B2 (en) | 2003-04-01 | 2009-07-07 | Battelle Memorial Institute | Dynamic visualization of data streams |
US20040249810A1 (en) | 2003-06-03 | 2004-12-09 | Microsoft Corporation | Small group sampling of data for use in query processing |
US7383246B2 (en) | 2003-10-31 | 2008-06-03 | International Business Machines Corporation | System, method, and computer program product for progressive query processing |
US20060106793A1 (en) | 2003-12-29 | 2006-05-18 | Ping Liang | Internet and computer information retrieval and mining with intelligent conceptual filtering, visualization and automation |
WO2005082075A2 (en) | 2004-02-25 | 2005-09-09 | The University Of North Carolina At Chapel Hill | Systems and methods for imperceptibly embedding structured light patterns in projected color images |
US7636707B2 (en) | 2004-04-06 | 2009-12-22 | Microsoft Corporation | Query selectivity estimation with confidence interval |
US7650331B1 (en) | 2004-06-18 | 2010-01-19 | Google Inc. | System and method for efficient large-scale data processing |
US7487145B1 (en) | 2004-06-22 | 2009-02-03 | Google Inc. | Method and system for autocompletion using ranked results |
US7836044B2 (en) | 2004-06-22 | 2010-11-16 | Google Inc. | Anticipated query generation and processing in a search engine |
US8296654B2 (en) | 2004-07-01 | 2012-10-23 | Spotfire Ab | Automatic guide for data analysis |
US7617186B2 (en) | 2004-10-05 | 2009-11-10 | Omniture, Inc. | System, method and computer program for successive approximation of query results |
US20070016612A1 (en) | 2005-07-11 | 2007-01-18 | Emolecules, Inc. | Molecular keyword indexing for chemical structure database storage, searching, and retrieval |
US7536396B2 (en) | 2006-03-21 | 2009-05-19 | At&T Intellectual Property Ii, L.P. | Query-aware sampling of data streams |
US7490110B2 (en) | 2006-03-24 | 2009-02-10 | International Business Machines Corporation | Predictable query execution through early materialization |
US7877381B2 (en) | 2006-03-24 | 2011-01-25 | International Business Machines Corporation | Progressive refinement of a federated query plan during query execution |
US7728868B2 (en) | 2006-08-02 | 2010-06-01 | Inneroptic Technology, Inc. | System and method of providing real-time dynamic imagery of a medical procedure site using multiple modalities |
US8201107B2 (en) | 2006-09-15 | 2012-06-12 | Emc Corporation | User readability improvement for dynamic updating of search results |
WO2008039741A2 (en) | 2006-09-25 | 2008-04-03 | Mark Business Intelligence Systems, Llc. | System and method for project process and workflow optimization |
US8584046B2 (en) | 2007-04-09 | 2013-11-12 | Microsoft Corporation | Visualizing differences in similarity metrics of hierarchies |
JP4980148B2 (ja) | 2007-06-07 | 2012-07-18 | 株式会社日立製作所 | 文書検索方法 |
US7890444B2 (en) | 2007-09-19 | 2011-02-15 | International Business Machines Corporation | Visualization of data availability and risk |
US20090187467A1 (en) | 2008-01-23 | 2009-07-23 | Palo Alto Research Center Incorporated | Linguistic extraction of temporal and location information for a recommender system |
US8903802B2 (en) | 2008-03-06 | 2014-12-02 | Cisco Technology, Inc. | Systems and methods for managing queries |
US7882138B1 (en) | 2008-03-27 | 2011-02-01 | Sonoa Networks India (PVT) Ltd. | Progressive evaluation of predicate expressions in streaming XPath processor |
US9002100B2 (en) | 2008-04-02 | 2015-04-07 | Xerox Corporation | Model uncertainty visualization for active learning |
JP5198929B2 (ja) | 2008-04-25 | 2013-05-15 | 株式会社日立製作所 | ストリームデータ処理方法及び計算機システム |
US8446412B2 (en) | 2008-06-26 | 2013-05-21 | Microsoft Corporation | Static visualization of multiple-dimension data trends |
US8358308B2 (en) | 2008-06-27 | 2013-01-22 | Microsoft Corporation | Using visual techniques to manipulate data |
JP5337447B2 (ja) | 2008-10-28 | 2013-11-06 | 株式会社日立製作所 | ストリームデータ処理方法、及びシステム |
US8572068B2 (en) | 2009-02-02 | 2013-10-29 | Hewlett-Packard Development Company, L.P. | Evaluation of set of representative query performance using robustness mapping |
US8690776B2 (en) | 2009-02-17 | 2014-04-08 | Inneroptic Technology, Inc. | Systems, methods, apparatuses, and computer-readable media for image guided surgery |
EP2226752A1 (de) | 2009-03-03 | 2010-09-08 | Siemens Aktiengesellschaft | Verfahren zur rechnergestützten Visualisierung des Risikostatus in einem technischen Projekt |
US20100241893A1 (en) | 2009-03-18 | 2010-09-23 | Eric Friedman | Interpretation and execution of a customizable database request using an extensible computer process and an available computing environment |
CN101551745A (zh) | 2009-05-13 | 2009-10-07 | 山东中创软件工程股份有限公司 | 大幅度提高工作流引擎性能的方法 |
US20110084967A1 (en) | 2009-10-09 | 2011-04-14 | International Business Machines Corporation | Visualization of Datasets |
US20130030860A1 (en) | 2009-10-30 | 2013-01-31 | Fluor Technologies Corporation | Managing inspection, test, analys, and acceptance criteria (itaac) activities, systems and methods |
US20110310112A1 (en) | 2010-03-31 | 2011-12-22 | Alexandre Zolotovitski | Method for statistical visualization of client service events |
US8484243B2 (en) | 2010-05-05 | 2013-07-09 | Cisco Technology, Inc. | Order-independent stream query processing |
US8195458B2 (en) * | 2010-08-17 | 2012-06-05 | Xerox Corporation | Open class noun classification |
US8290936B2 (en) | 2010-08-17 | 2012-10-16 | International Business Machines Corporation | Executing a query plan with display of intermediate results |
US8326821B2 (en) | 2010-08-25 | 2012-12-04 | International Business Machines Corporation | Transforming relational queries into stream processing |
US8620945B2 (en) | 2010-09-23 | 2013-12-31 | Hewlett-Packard Development Company, L.P. | Query rewind mechanism for processing a continuous stream of data |
US9208217B2 (en) | 2010-10-06 | 2015-12-08 | Linguamatics Ltd. | Providing users with a preview of text mining results from queries over unstructured or semi-structured text |
US8484244B2 (en) | 2010-12-17 | 2013-07-09 | Fanhattan Llc | Forecasting an availability of a media content item |
WO2012129507A1 (en) * | 2011-03-24 | 2012-09-27 | WellDoc, Inc. | Adaptive analytical behavioral and health assistant system and related method of use |
US8954967B2 (en) | 2011-05-31 | 2015-02-10 | International Business Machines Corporation | Adaptive parallel data processing |
US8862577B2 (en) | 2011-08-15 | 2014-10-14 | Hewlett-Packard Development Company, L.P. | Visualizing sentiment results with visual indicators representing user sentiment and level of uncertainty |
US20130117257A1 (en) | 2011-11-03 | 2013-05-09 | Microsoft Corporation | Query result estimation |
US9201164B2 (en) | 2011-11-15 | 2015-12-01 | Chevron U.S.A. Inc. | System and method of using spatially independent subsets of data to calculate property distribution uncertainty of spatially correlated reservoir data |
JP5919825B2 (ja) | 2012-01-05 | 2016-05-18 | 富士通株式会社 | データ処理方法、分散処理システムおよびプログラム |
US20130194271A1 (en) | 2012-01-30 | 2013-08-01 | Sap Ag | Visualization of Uncertain Times Series |
US9436740B2 (en) | 2012-04-04 | 2016-09-06 | Microsoft Technology Licensing, Llc | Visualization of changing confidence intervals |
US8983936B2 (en) | 2012-04-04 | 2015-03-17 | Microsoft Corporation | Incremental visualization for structured data in an enterprise-level data store |
CN103379114B (zh) | 2012-04-28 | 2016-12-14 | 国际商业机器公司 | 用于在MapReduce***中保护隐私数据的方法和装置 |
US9607045B2 (en) | 2012-07-12 | 2017-03-28 | Microsoft Technology Licensing, Llc | Progressive query computation using streaming architectures |
US8996693B2 (en) | 2012-09-17 | 2015-03-31 | Nokia Corporation | Method and apparatus for providing dynamic stream processing of data based on static analytics |
US9047225B1 (en) * | 2012-09-27 | 2015-06-02 | Emc Corporation | Dynamic selection of data replacement protocol for cache |
US9563663B2 (en) | 2012-09-28 | 2017-02-07 | Oracle International Corporation | Fast path evaluation of Boolean predicates |
US9384279B2 (en) | 2012-12-07 | 2016-07-05 | Charles Reed | Method and system for previewing search results |
US9081826B2 (en) | 2013-01-07 | 2015-07-14 | Facebook, Inc. | System and method for distributed database query engines |
US9659043B2 (en) * | 2013-02-07 | 2017-05-23 | Enigma Technologies, Inc. | Data system and method |
US9514214B2 (en) | 2013-06-12 | 2016-12-06 | Microsoft Technology Licensing, Llc | Deterministic progressive big data analytics |
EP3117347B1 (en) | 2014-03-10 | 2020-09-23 | Interana, Inc. | Systems and methods for rapid data analysis |
US10496643B2 (en) | 2016-02-08 | 2019-12-03 | Microsoft Technology Licensing, Llc | Controlling approximations of queries |
US9959412B2 (en) * | 2016-03-11 | 2018-05-01 | Facebook, Inc. | Sampling content using machine learning to identify low-quality content |
US9881053B2 (en) * | 2016-05-13 | 2018-01-30 | Maana, Inc. | Machine-assisted object matching |
-
2016
- 2016-06-24 US US15/192,909 patent/US10740328B2/en active Active
-
2017
- 2017-06-21 CN CN201780039079.0A patent/CN110140121B/zh active Active
- 2017-06-21 WO PCT/US2017/038407 patent/WO2017223125A1/en unknown
- 2017-06-21 EP EP17734610.3A patent/EP3475843B1/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050182558A1 (en) * | 2002-04-12 | 2005-08-18 | Mitsubishi Denki Kabushiki Kaisha | Car navigation system and speech recognizing device therefor |
CN101620619A (zh) * | 2009-08-07 | 2010-01-06 | 北京航空航天大学 | 一种基于聚类方法的测量数据粗大误差处理***及处理方法 |
US20120078904A1 (en) * | 2010-09-28 | 2012-03-29 | International Business Machines Corporation | Approximate Index in Relational Databases |
US20140019352A1 (en) * | 2011-02-22 | 2014-01-16 | Visa International Service Association | Multi-purpose virtual card transaction apparatuses, methods and systems |
US20140280193A1 (en) * | 2013-03-13 | 2014-09-18 | Salesforce.Com, Inc. | Systems, methods, and apparatuses for implementing a similar command with a predictive query interface |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111177155A (zh) * | 2019-12-31 | 2020-05-19 | 山东浪潮通软信息科技有限公司 | 消息过滤方法、***和计算机设备 |
CN111177155B (zh) * | 2019-12-31 | 2023-09-19 | 浪潮通用软件有限公司 | 消息过滤方法、***和计算机设备 |
CN113704300A (zh) * | 2020-05-21 | 2021-11-26 | Sap欧洲公司 | 供数据检索方法使用的数据印记技术 |
CN112307062A (zh) * | 2020-09-18 | 2021-02-02 | 苏宁云计算有限公司 | 数据库聚合查询方法、装置及*** |
CN112307062B (zh) * | 2020-09-18 | 2022-11-22 | 苏宁云计算有限公司 | 数据库聚合查询方法、装置及*** |
Also Published As
Publication number | Publication date |
---|---|
US20170371924A1 (en) | 2017-12-28 |
CN110140121B (zh) | 2023-06-13 |
WO2017223125A1 (en) | 2017-12-28 |
EP3475843A1 (en) | 2019-05-01 |
EP3475843B1 (en) | 2021-09-22 |
US10740328B2 (en) | 2020-08-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110140121A (zh) | 聚合查询的数据库***和处理 | |
US11537629B2 (en) | Replicating data using a replication server of a multi-user system | |
US20200202243A1 (en) | Balanced federated learning | |
WO2021233199A1 (zh) | 搜索推荐模型的训练方法、搜索结果排序的方法及装置 | |
CN105900396B (zh) | 移动云服务体系架构 | |
US10963318B2 (en) | Natural language interface to web API | |
CN107609185B (zh) | 用于poi的相似度计算的方法、装置、设备和计算机可读存储介质 | |
Zaslavsky et al. | Internet of things: challenges and state-of-the-art solutions in internet-scale sensor information management and mobile analytics | |
CN106599164A (zh) | 复杂事件处理中对于参数化的查询/视图的支持 | |
CN108141449A (zh) | 控制设备云 | |
CN104246756B (zh) | 用于提供用于控制***的预测的***和方法 | |
US20220116291A1 (en) | Networking data analysis in a visual spreadsheet | |
CN109978175A (zh) | 用于机器学习模型的并行化坐标下降法 | |
US11275994B2 (en) | Unstructured key definitions for optimal performance | |
US20140337274A1 (en) | System and method for analyzing big data in a network environment | |
CN109902126A (zh) | 支持hive自动分区的加载***及其实现方法 | |
US20230244939A1 (en) | Computer-based systems configured for detecting and splitting data types in a data file and methods of use thereof | |
Harth et al. | On-the-fly integration of static and dynamic linked data | |
CN108122029A (zh) | 一种相机特效的推荐方法及装置 | |
Subramanian et al. | Systems dynamics-based modeling of data warehouse quality | |
CN109213940A (zh) | 大数据下实现用户位置计算的方法、存储介质、设备及*** | |
Triboan et al. | Towards a mobile assistive system using service-oriented architecture | |
US11847117B2 (en) | Filter class for querying operations | |
Ann et al. | Quality assurance in big data analytics: An IoT perspective | |
US10909138B2 (en) | Transforming data to share across applications |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |