CN110352414A - 为大数据添加索引的***和方法 - Google Patents

为大数据添加索引的***和方法 Download PDF

Info

Publication number
CN110352414A
CN110352414A CN201780080860.2A CN201780080860A CN110352414A CN 110352414 A CN110352414 A CN 110352414A CN 201780080860 A CN201780080860 A CN 201780080860A CN 110352414 A CN110352414 A CN 110352414A
Authority
CN
China
Prior art keywords
data
data block
subregion
data point
point
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
Application number
CN201780080860.2A
Other languages
English (en)
Other versions
CN110352414B (zh
Inventor
郭明浩
温翔
柴艺
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Didi Infinity Technology and Development Co Ltd
Original Assignee
Beijing Didi Infinity Technology and Development Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Didi Infinity Technology and Development Co Ltd filed Critical Beijing Didi Infinity Technology and Development Co Ltd
Publication of CN110352414A publication Critical patent/CN110352414A/zh
Application granted granted Critical
Publication of CN110352414B publication Critical patent/CN110352414B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • G06F16/278Data partitioning, e.g. horizontal or vertical partitioning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/907Retrieval characterised by using metadata, e.g. metadata not derived from the content or metadata generated manually
    • G06F16/909Retrieval characterised by using metadata, e.g. metadata not derived from the content or metadata generated manually using geographical or spatial information, e.g. location

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Software Systems (AREA)
  • Library & Information Science (AREA)
  • Navigation (AREA)
  • User Interface Of Digital Computer (AREA)
  • Information Transfer Between Computers (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Processing Or Creating Images (AREA)
  • Electron Beam Exposure (AREA)

Abstract

一种为数据添加索引的方法包括获取至少两个数据点,所述数据点中的每一个包括空间信息。该方法还包括基于空间信息将至少两个数据点划分为至少两个数据块,并且为至少两个数据块中的每一个确定数据块编号。该方法还包括基于预估分布和数据块编号将至少两个数据块划分为至少两个分区,并基于至少两个数据块的数据块编号确定至少两个分区中的每一个的分区编号。该方法还包括基于至少两个数据块的数据块编号和至少两个分区的分区编号,为所述至少两个数据点中的每一个确定索引。

Description

为大数据添加索引的***和方法
技术领域
本申请一般涉及空间大数据的管理,更具体地,涉及为空间大数据添加索引的***和方法。
背景技术
在互联网时代,在线按需服务平台可以从其用户或其他实体接收包括用户的实时或历史位置的空间大数据。空间大数据可以通过例如范围查询、k-最近邻(KNN)算法或空间连接算法来处理。然而,由于空间大数据中的数据点的数量非常大并且无序,因此难以有效地处理空间大数据。因此,希望提供为数据添加索引的***和方法,以使数据有序并易于处理。
发明内容
根据本申请的第一方面,一种为数据添加索引的***可以包括一个或以上存储设备,并且一个或以上处理器被配置用于与一个或以上存储设备通信。一个或以上存储设备可以包括一组指令。当所述一个或以上处理器执行所述组指令时,所述一个或以上处理器可以用于执行一个或以上以下操作。一个或以上处理器可以获取至少两个数据点,所示数据点中的每一个包括空间信息。一个或以上处理器可以基于至少两个数据点的空间信息将至少两个数据点划分为至少两个数据块。一个或以上处理器可以为至少两个数据块中的每一个确定数据块编号。一个或以上处理器可以获取至少两个数据点的预估分布。一个或以上处理器可以基于至少两个数据点的预估分布和至少两个数据块的数据块编号,将至少两个数据块划分为至少两个分区。一个或以上处理器可以基于至少两个数据块的数据块编号通过对至少两个分区进行排序来确定至少两个分区中的每一个的分区编号。一个或以上处理器可以基于至少两个数据块的数据块编号和至少两个分区的分区编号来为至少两个数据点中的每一个确定索引。
在一些实施例中,对于至少两个分区中的每一个,一个或以上处理器可以基于分区中包括的数据块的数据块编号对包括在分区中的数据块进行排序。
在一些实施例中,至少两个数据点中的每一个还可以包括用户的用户标识。
在一些实施例中,对于至少两个分区中的每一个,一个或以上处理器可以基于至少两个数据点的用户标识将分区中的数据点重新划分为至少两个子分区。
在一些实施例中,基于至少两个数据点将至少两个分区中的每一个的数据点重新划分为至少两个子分区,对于分区中的每个数据点,一个或以上处理器可以确定对应于数据点的用户标识的哈希值。一个或以上处理器可以通过将哈希值除以整数来获取余数。一个或以上处理器可以将对应于相等余数的数据点放入相同的子分区。一个或以上处理器可以基于与分区中的数据点对应的余数来确定至少两个子分区中的每一个的子分区编号。
在一些实施例中,为了获取至少两个数据点的预估分布,一个或以上处理器可以从至少两个数据块中选择一个或以上数据块。对于所选择的一个或以上数据块中的每一个,一个或以上处理器可以确定在所选择的一个或以上数据块中包括的每一个的数据点的总数。一个或以上处理器可以基于所选择的一个或以上数据块中的每一个中的数据点的总数来确定至少两个数据点的预估分布。
在一些实施例中,一个或以上处理器可以基于空间填充曲线确定多个数据块中的每一个的数据块编号。
根据本申请的另一方面,一种为数据添加索引的方法可以包括以下操作的一个或以上。一个或以上处理器可以获取至少两个数据点,所示数据点中的每一个包括空间信息。一个或以上处理器可以基于至少两个数据点的空间信息将至少两个数据点划分为至少两个数据块。一个或以上处理器可以为至少两个数据块中的每一个确定数据块编号。一个或以上处理器可以获取至少两个数据点的预估分布。一个或以上处理器可以基于至少两个数据点的预估分布和至少两个数据块的数据块编号,将至少两个数据块划分为至少两个分区。一个或以上处理器可以基于至少两个数据块的数据块编号通过对至少两个分区进行排序来为至少两个数据点中的每一个确定索引。一个或以上处理器可以基于至少两个数据块的数据块编号和至少两个分区的分区编号来确定至少两个数据点中的每一个的索引。
根据本申请的又一方面,非暂时性计算机可读介质可包括至少一个一组指令。至少一个一组指令可以由计算机服务器的一个或以上处理器执行。一个或以上处理器可以获取至少两个数据点,所述数据点中的每一个包括空间信息。一个或以上处理器可以基于至少两个数据点的空间信息将至少两个数据点划分为至少两个数据块。一个或以上处理器可以为至少两个数据块中的每一个确定数据块编号。一个或以上处理器可以获取至少两个数据点的预估分布。一个或以上处理器可以基于至少两个数据点的预估分布和至少两个数据块的数据块编号将至少两个数据块划分为至少两个分区。一个或以上处理器可以基于至少两个数据块的数据块编号通过对至少两个分区进行排序来确定至少两个分区中的每一个的分区编号。一个或以上处理器可以基于至少两个数据块的数据块编号和至少两个分区的分区编号来为至少两个数据点中的每一个确定索引。
根据本申请的又一方面,一种为数据添加索引的***可以包括被配置的获取模块,用于获取至少两个数据点,每个数据点包括空间信息。该***还可以包括块确定模块被配置为基于至少两个数据点的空间信息将至少两个数据点划分为至少两个数据块并且为至少两个数据块的每一个确定数据块编号。该***还可以包括分配获取模块被配置以获取至少两个数据点的预估分布。该***还可以包括分区确定模块被配置为基于至少两个数据点的预估分布和至少两个数据块的数据块编号将至少两个数据块划分为至少两个分区,并且基于至少两个数据块的数据块编号,通过对至少两个分区进行排序,确定至少两个分区中的每一个的分区编号。该***还可以包括索引确定模块被配置用于基于至少两个数据块的数据块编号和至少两个分区的分区编号来为至少两个数据点中的每一个确定索引。
本申请的一部分附加特性可以在下面的描述中进行说明。通过对以下描述和相应附图的研究或者对实施例的生产或操作的了解,本申请的一部分附加特性对于本领域技术人员是明显的。本申请的特征可以通过对以下描述的具体实施例的各种方面的方法、手段和组合的实践或使用得以实现和达到。
附图说明
本申请将通过示例性实施例进行进一步描述。这些示例性实施例将通过附图进行详细描述。这些实施例是非限制性的示例性实施例,在这些实施例中,各图中相同的编号表示相似的结构,其中:
图1是根据本申请的一些实施例所示的示例性按需服务***的示意图;
图2是根据本申请的一些实施例所示的计算设备的示例性硬件和/或软件组件的示意图,在该计算设备上可以实现处理引擎;
图3是根据本申请的一些实施例所示的可在其上实现一个或以上终端的移动设备的示例性硬件和/或软件组件的示意图;
图4是根据本申请的一些实施例所示的示例性处理引擎的框图;
图5是根据本申请的一些实施例所示的用于确定至少两个数据点中的每一个的索引的示例性过程的流程图;
图6是说明用于将分区重新划分为一个或以上子分区的示例性过程的示意图;以及
图7是根据本申请的一些实施例所示的用于确定至少两个数据点的预估分布的示例性过程的流程图。
具体实施方式
以下描述是为了使本领域的普通技术人员能够实施和利用本申请,并且该描述是在特定的应用场景及其要求的环境下提供的。对于本领域的普通技术人员来讲,显然可以对所披露的实施例作出各种改变,并且在不偏离本申请的原则和范围的情况下,本申请中所定义的普遍原则可以适用于其他实施例和应用场景。因此,本申请并不限于所描述的实施例,而应该被给予与权利要求一致的最广泛的范围。
本申请中所使用的术语仅用于描述特定的示例性实施例,并不限制本申请的范围。如本申请使用的单数形式“一”、“一个”及“该”可以同样包括复数形式,除非上下文明确提示例外情形。还应当理解,如在本申请说明书中,术语“包括”、“包含”仅提示存在所述特征、整体、步骤、操作、组件和/或部件,但并不排除存在或添加一个或以上其他特征、整体、步骤、操作、组件、部件和/或其组合的情况。
根据以下对附图的描述,本申请的这些和其他的特征、特点以及相关结构元件的功能和操作方法,以及部件组合和制造经济性,可以变得更加显而易见,这些附图都构成本申请说明书的一部分。然而,应当理解的是,附图仅仅是为了说明和描述的目的,并不旨在限制本申请的范围。应当理解的是,附图并不是按比例绘制的。
本申请中使用了流程图用来说明根据本申请的一些实施例的***所执行的操作。应当理解的是,流程图中的操作可以不按顺序执行。相反,可以按照倒序或同时处理各种步骤。同时,也可以将一个或以上其他操作添加到这些流程图中。也可以从流程图中删除一个或以上操作。
此外,尽管本申请中的***和方法主要是关于确定至少两个数据点的索引来描述,但是还应该理解,这仅是一个示例性实施例。本申请中的***和方法可以应用于可以产生空间大数据的任何应用场景。例如,本申请的***和方法可以应用于不同的运输***,包括陆地、海洋、航空航天等或其任意组合。运输***的车辆可以包括出租车、私家车、顺风车、公共汽车、火车、动车、高铁、地铁、船只、飞机、宇宙飞船、热气球、无人驾驶车辆、自行车、三轮车、摩托车等、或其任意组合。本申请的***和方法可以应用于出租车、司机服务、送货服务、拼车、公交车服务、外卖服务、司机招聘、车辆租赁、自行车共享服务、火车服务、地铁服务、班车服务、位置服务等等。如这里所使用的,大数据指的是数量大到需要索引以进行有效处理的程度的数据。
图1是根据一些实施例的示例性按需服务***的示意图。按需服务***100可以包括服务器110、网络120、用户终端140、存储设备150和定位***160。
在一些实施例中,服务器110可以是单个服务器,也可以是服务器组。所述服务器组可以是集中式的,也可以是分布式的(例如,服务器110可以是分布式的***)。在一些实施例中,服务器110可以是本地的,也可以是远程的。例如,服务器110可以经由网络120访问存储在用户终端140和/或存储设备150中的信息和/或数据。又例如,服务器110可以直接连接到用户终端140和/或存储设备150以访问存储的信息和/或数据。在一些实施例中,服务器110可以在云平台上实施。仅作为示例,该云平台可以包括私有云、公共云、混合云、社区云、分布云、内部云、多层云等或其任意组合。在一些实施例中,服务器110可以在本申请中的图2描述的包含了一个或以上组件的计算设备200上执行。
在一些实施例中,服务器110可以包括处理引擎112。处理引擎112可以处理信息和/或数据以执行本申请中描述的一个或以上功能。例如,处理引擎112可以确定数据点的索引。在一些实施例中,所述处理引擎112可包括一个或以上处理引擎(例如,单芯片处理引擎或多芯片处理引擎)。仅作为示例,处理引擎112可以包括一个或以上硬件处理器,例如中央处理单元(CPU)、特定应用集成电路(ASIC)、特定应用指令集处理器(ASIP)、图像处理单元(GPU)、物理运算处理单元(PPU)、数字信号处理器(DSP)、现场可编程门阵列(FPGA)、可编程逻辑设备(PLD)、控制器、微控制器单元、精简指令集计算机(RISC)、微处理器等或其任意组合。
网络120可以促进信息和/或数据的交换。在一些实施例中,按需服务***100中的一个或以上组件(例如,服务器110、用户终端140、存储设备150和定位***160)可以通过网络120将信息和/或数据发送到按需服务***100中的其他组件。例如,处理引擎112可以经由网络120从存储设备150和/或用户终端140获取至少两个数据点。在一些实施例中,网络120可以是有线网络或无线网络等或其任意组合。仅作为示例,网络120可以包括缆线网络、有线网络、光纤网络、远程通信网络、内部网络、互联网、局域网络(LAN)、广域网路(WAN)、无线局域网络(WLAN)、城域网(MAN)、公共交换电话网络(PSTN)、蓝牙网络、紫蜂网络、近场通信(NFC)网络等或其任意组合。在一些实施例中,网络120可以包括一个或以上网络接入点。例如,网络120可以包括有线或无线网络接入点,如基站和/或互联网交换点120-1、120-2、……。通过接入点,按需服务***100的一个或以上部件可以连接到网络120以交换数据和/或信息。
在一些实施例中,用户终端140可以包括移动设备140-1、平板计算机140-2、膝上型计算机140-3等,或其任何组合。在一些实施例中,移动设备140-1可以包括智能家居设备、可穿戴设备、智能移动设备、虚拟现实设备、增强现实设备等,或其任意组合。在一些实施例中,智能家居设备可以包括智能照明设备、智能电器控制设备、智能监控设备、智能电视、智能摄像机、对讲机等,或其任意组合。在一些实施例中,可穿戴设备可以包括手环、鞋袜、眼镜、头盔、手表、衣物、背包、智慧配饰等或其任意组合。在一些实施例中,移动设备可以包括移动电话、个人数字助理(PDA)、游戏设备、导航设备、销售点(POS)、膝上型电脑、台式机等或其任意组合。在一些实施例中,虚拟现实设备和/或增强型虚拟现实设备可以包括虚拟现实头盔、虚拟现实眼镜、虚拟现实眼罩、增强现实头盔、增强现实眼镜、增强现实眼罩等,或其任意组合。例如,虚拟现实设备和/或增强现实设备可以包括Google GlassTM、RiftConTM、FragmentsTM、Gear VRTM等。在一些实施例中,用户终端140可以是具有定位技术的设备,用于定位用户终端140的位置。在一些实施例中,用户终端140可以将定位信息发送到服务器110。
存储设备150可以存储数据和/或指令。在一些实施例中,存储设备150可以存储从用户终端140和/或处理引擎112获取的数据。例如,存储设备150可以存储从用户终端140获取的至少两个数据点。又如例,存储设备150可以存储由处理引擎112确定的数据点的索引。在一些实施例中,存储设备150可以存储服务器110用来执行或使用来完成本申请中描述的示例性方法的数据和/或指令。例如,存储设备150可以存储处理引擎112可以执行或使用的指令以确定至少两个数据点的索引。在一些实施例中,存储设备可包括大容量存储器、可移动存储器、易失性读写存储器、只读存储器(ROM)等或其任意组合。示例性大容量存储器可包括磁盘、光盘、固态驱动器等。示例性可移动存储器可包括闪存驱动器、软盘、光盘、存储卡、压缩盘、磁带等。示例性易失性读写存储器可以包括随机存取存储器(RAM)。示例性RAM可包括动态随机存取存储器(DRAM)、双倍数据速率同步动态随机存取存储器(DDR SDRAM)、静态随机存取存储器(SRAM)、晶闸管随机存取存储器(T-RAM)和零电容随机存取存储器(Z-RAM)等。示例性只读存储器可以包括掩模型只读存储器(MROM)、可编程只读存储器(PROM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、光盘只读存储器(CD-ROM)和数字多功能磁盘只读存储器等。在一些实施例中,所述存储设备150可以在云平台上实现。仅作为示例,该云平台可以包括私有云、公共云、混合云、社区云、分布云、内部云、多层云等或其任意组合。
在一些实施例中,存储设备150可以连接到网络120以与按需服务***100中的一个或以上组件(例如,服务器110、用户终端140等)通信。按需服务***100中的一个或以上组件可以经由网络120访问储存在存储设备150中的数据或指令。在一些实施例中,存储设备150可以直接连接到按需服务***100(例如,服务器110、用户终端140等)中的一个或以上组件或与之通信。在一些实施例中,存储设备150可以是服务器110的一部分。
定位***160可以确定与对象(例如,用户终端140)相关的信息。例如,定位***160可以实时确定用户终端140的位置。在一些实施例中,定位***160可以是全球定位***(GPS)、全球导航卫星***(GLONASS)、罗盘导航***(COMPASS)、北斗导航卫星***、伽利略定位***、准天顶卫星***(QZSS)等。该信息可以包括对象的位置、高度、速度或加速度、累积里程数或当前时间。位置可以是坐标的形式,例如纬度坐标和经度坐标等。定位***160可以包括一个或以上的卫星,例如卫星160-1、卫星160-2和卫星160-3。卫星160-1至160-3可以独立地或共同地确定上述信息。卫星定位***160可以通过无线连接将上述信息发送给网络120或用户终端140。
图2是根据本申请的一些实施例所示的计算设备的示例性硬件和/或软件组件的示意图,在该计算设备上可以实现处理引擎112。如图2所示,计算设备200可以包括处理器210、存储器220、输入/输出(I/O)230和通信端口240。
处理器210(例如,逻辑电路)可以执行计算机指令(例如,程序代码)并且根据这里描述的技术来执行处理引擎112的功能。例如,处理器210可以包括接口电路210-a和其中的处理电路210-b。接口电路可以被配置用于接收来自总线(图2中未示出)的电子信号,其中电子信号编码用于处理电路的结构化数据和/或指令。处理电路可以进行逻辑计算,然后将结论、结果和/或指令编码确定为电信号。然后,接口电路可以经由总线从处理电路发出电信号。
所述计算机指令可以包括例如执行在此描述的特定功能的常规、程序、对象、组件、数据结构、过程、模块和功能。例如,处理器210可以处理从用户终端140、存储设备150和/或按需服务***100的任何其他组件获取的至少两个数据点。在一些实施例中,处理器210可以包括一个或以上硬件处理器,诸如微控制器、微处理器、精简指令集计算机(RISC)、特定应用集成电路(ASIC)、特定应用指令集处理器(ASIP)、中央处理单元(CPU)、图形处理单元(GPU)、物理处理单元(PPU)、微控制器单元、数字信号处理器(DSP)、现场可编程门阵列(FPGA)、高阶RISC机器(ARM)、可编程逻辑设备(PLD)、能够执行一个或以上功能的任何电路或处理器等,或其任何组合。
仅仅为了说明,在计算设备200中仅描述了一个处理器。然而,应该注意的是,本申请中的计算设备200还可以包括多个处理器,由此执行的操作和/或方法步骤如本申请中所描述的一个处理器也可以由多个处理器联合地或单独地执行。例如,如果在本申请中,计算设备200的处理器执行步骤A和步骤B,应当理解的是,步骤A和步骤B也可以由计算设备200的两个或以上不同的处理器共同地或独立地执行(例如,第一处理器执行步骤A、第二处理器执行步骤B、或者第一和第二处理器共同地执行步骤A和步骤B)。
存储器220可以存储从用户终端140、存储设备150和/或按需服务***100的任何其他组件获取的数据/信息。在一些实施例中,存储器220可包括大容量存储器、可移动存储器、易失性读写存储器、只读存储器(ROM)等或其任意组合。例如,大容量存储器可以包括磁盘、光盘、固态硬盘等。可移动存储器可以包括闪存驱动器、软盘、光盘、存储卡、压缩盘和磁带等。易失性读取和写入存储器可以包括随机存取存储器(RAM)。RAM可以包括动态RAM(DRAM)、双倍速率同步动态RAM(DDR SDRAM)、静态RAM(SRAM)、晶闸管RAM(T-RAM)和零电容(Z-RAM)等。只读存储器可以包括掩模型只读存储器(MROM)、可编程只读存储器(PROM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、光盘只读存储器(CD-ROM)和数字多功能磁盘只读存储器等。在一些实施例中,存储器220可以存储一个或以上程序和/或指令以执行在本申请中描述的示例性方法。例如,存储器220可以存储处理引擎112的程序,所述程序用于确定数据点的索引。
I/O 230可以输入和/或输出信号、数据、信息等。在一些实施例中,I/O 230可以使用户与处理引擎112交互。在一些实施例中,I/O 230可以包括输入设备和输出设备。示例性的输入设备可以包括键盘、鼠标、触控屏幕、麦克风等,或其任何组合。示例性的输出设备可以包括显示设备、扬声器、打印机、投影机等,或其任何组合。显示设备的示例可以包括液晶显示器(LCD)、基于发光二极管(LED)的显示器、平板显示器、弯曲屏幕、电视设备、阴极射线管(CRT)、触控屏幕等,或其任何组合。
通信端口240可以连接到网络(例如,网络120)以促进数据通信。通信端口240可以在处理引擎112、用户终端140、定位***160或存储设备150之间建立连接。连接可以是有线连接、无线连接、可以启用数据传输和/或接收的任何其他通信连接,和/或这些连接的任何组合。有线连接可以包括例如电缆、光缆、电话线等,或其任何组合。有线连接可以包括例如电缆、光缆、电话线等或其任意组合。所述无线连接可以包括例如蓝牙连接、无线网连接、WiMax连接、WLAN连接、紫蜂连接、移动网络连接(例如,3G、4G、5G网络等)等或其任意组合。在一些实施例中,通信端口240可以是和/或包括标准化通信端口,诸如RS232、RS485等。
图3是根据本申请的一些实施例所示的移动设备的示例性硬件和/或软件组件的示意图。用户终端140可以在移动设备上实现。如图3所示,移动设备300可以包括通信平台310、显示器320、图形处理单元(GPU)330、中央处理单元(CPU)340、I/O350、内存360和存储器390。在一些实施例中,任何其他合适的组件,包括但不限于***总线或控制器(未示出),也可包括在移动设备300内。在一些实施例中,操作***370(例如,iOSTM、AndroidTM、Windows PhoneTM等)和一个或以上应用程序380可从存储器390下载至内存360以及由CPU340执行。应用程序380可以包括浏览器或任何其他合适的移动应用程序,用于接收及呈现与图像处理相关的信息或处理引擎112中的其他信息。用户与信息流的交互可以经由I/O350来实现并且经由网络120被提供给处理引擎112和/或按需服务***100的其他组件。
为了实施本申请描述的各种模块、单元及其功能,计算机硬件平台可用作本文中描述的一个或以上组件的硬件平台。具有用户接口组件的计算机可用于实施个人计算机(PC)或任何其他类型的工作站或终端设备。若程控得当,计算机亦可用作服务器。
熟习此项技术者将理解,当按需服务***100的组件执行功能时,该组件可经由电信号和/或电磁信号执行功能。例如,当处理引擎112处理诸如做出确定或识别信息的任务时,处理引擎112可以在其处理器中操作逻辑电路以处理这样的任务。当处理引擎112从用户终端140接收数据(例如,至少两个数据点)时,处理引擎112的处理器可以接收包括数据的电信号。处理引擎112的处理器可以通过输入端口接收电信号。如果用户终端140经由有线网络与处理引擎112通信,则输入端口可以物理地连接到电缆。如果用户终端140经由无线网络与处理引擎112通信,则处理引擎112的输入端口可以是一个或以上天线,其可以将电信号转换为电磁信号。在诸如用户终端140和/或服务器110的电子设备内,当其处理器处理指令,发出指令和/或执行动作时,指令和/或动作通过电信号进行。例如,当处理器从存储介质(例如存储设备150)检索或保存数据时,它可以向存储介质的读/写设备发送电信号,该读/写设备可以在存储介质中读取或写入结构化数据。该结构化数据可以电信号的形式经由电子设备的总线传输至处理器。此处,电信号可以指一个电信号、一系列电信号和/或至少两个不连续的电信号。
图4是根据本申请的一些实施例所示的示例性处理引擎的框图。处理引擎112可包括获取模块410、数据块确定模块420、分布获取模块425、分区确定模块430、排序模块440、二次划分模块445和索引确定模块450。
获取模块410可以被配置为从存储介质(例如,存储设备150、或处理引擎112的存储器220)和/或用户终端140获取至少两个数据点。在一些实施例中,所述至少两个数据点的数量可以是许多,达到了为了进行有效处理需要添加索引的程度。例如,所述至少两个数据点的数量可以大于一亿。在一些实施例中,所述至少两个数据点的数量可能太多而无法用现有的添加索引的技术处理。在一些实施例中,数据点可以对应于按需服务***100的用户。在一些实施例中,数据点可以对应于用户做出的一个服务请求。本申请中的词语“用户”可以指代可以请求服务、订购服务、提供服务或促进提供服务的个体、实体或工具。在本申请中,术语“用户”和“用户终端”可以互换使用。
在一些实施例中,所述至少两个数据点中的每一个可以包括空间信息。数据点的空间信息可以包括时间点以及对应于所述数据点的用户在该时间点的地理位置。在一些实施例中,地理位置可以由纬度和经度的坐标、地址或兴趣点(POI)名称或其组合来表示。在一些实施例中,所述至少两个数据点可以对应于特定时间段和/或特定区域。例如,获取模块410可以获取对应于北京一天的至少两个数据点。
在一些实施例中,用户终端140可以经由安装在用户终端140中的应用程序与处理引擎112和/或存储设备150建立通信(例如,无线通信)。该应用程序可以与按需服务***100相关联。例如,应用程序可以是出租车应用程序或导航应用程序。提供者终端140可以通过用户终端140中的定位技术获取用户的位置,例如,GPS、GLONASS、COMPASS、QZSS、WiFi定位技术等,或其任何组合。应用程序可以指示用户终端140不断地将用户的实时或历史位置发送到处理引擎112和/或存储设备150。因此,处理引擎112和/或存储设备150可以实时或基本上实时地接收用户的位置。另外,处理引擎112和/或存储设备150还可以接收对应于特定时间点或时间段的用户的历史位置。
在一些实施例中,所述至少两个数据点中的每一个还可以包括与数据点对应的用户的用户标识(ID)。当用户第一次使用应用程序时,用户可以注册应用程序的帐户,并且处理引擎112可以在注册之后为用户生成用户ID。应用程序可以指示用户终端140将用户ID连同用户的实时或历史位置一起发送到处理引擎112和/或存储设备150。
在一些实施例中,所述至少两个数据点中的至少一个可以包括与对应于至少两个数据点中的所述至少一个的用户相关联的信息。与用户相关联的信息可以包括用户的姓名、用户的年龄、用户的电话号码、用户的性别、用户的职业、与用户有关的车辆、车辆的车牌号、车辆的品牌、车辆的颜色等,或其任何组合。在一些实施例中,这种用户信息包括在所有数据点或数据点的一部分中。用户可以通过应用程序的界面输入与用户相关联的信息。应用程序可以指示用户终端140将与用户相关联的信息连同用户的实时或历史位置一起发送到处理引擎112和/或存储设备150。
在一些实施例中,当用户处于请求、使用或提供按需服务(例如,司机向乘客提供出租车服务)的过程中时,应用程序可以指示与用户相关联的用户终端140将与按需服务相关联的信息连同用户的实时或历史位置一起发送到处理引擎112和/或存储设备150。例如,当用户(例如,司机)向乘客提供出租车服务时,与提供的出租车服务相关联的信息可以包括行程的起点、行程的目的地等,或其任何组合。
数据块确定模块420可以被配置为将至少两个数据点划分为至少两个数据块。在一些实施例中,数据块确定模块420可以基于至少两个数据点的空间信息将至少两个数据点划分为至少两个数据块。可选地或另外地,数据块确定模块420可以将至少两个数据点对应的特定区域划分为至少两个子区域,每个子区域对应于一个数据块,然后基于至少两个数据点的空间信息确定每个数据块中有多少数据点和/或每个数据块中有哪些数据点。
在一些实施例中,数据块可以表示地理区域(子区域)。在一些实施例中,每个地理区域可以具有规则(例如,三角形、矩形、正方形、圆形、五边形、六边形等)或不规则形状。在一些实施例中,地理区域的大小可以相同。例如,每个地理区域可以是边长为500米的正方形。在一些实施例中,地理区域的大小可以不同。例如,地理区域A可以是边长为200米的正方形,而地理区域B是边长为300米的正方形。
数据块确定模块420可以进一步被配置用于确定至少两个数据块中的每一个的数据块编号。在一些实施例中,数据块确定模块420可以基于空间填充曲线确定数据块编号,例如,希尔伯特曲线、Z阶曲线、四叉树、R树、希尔伯特R树、二元空间分区(BSP)树、灰色曲线、龙曲线、Gosper曲线、Peano曲线等,或其任何组合。在一些实施例中,空间填充曲线可以是希尔伯特曲线,当使用地图时,该希尔伯特曲线不遗漏且不重复地穿过对应于数据块的地理区域。数据块确定模块420可以根据空间填充曲线通过对应于至少两个数据块的地理区域的顺序对至少两个数据块进行编号。
分布获取模块425可以被配置用于获取至少两个数据点的预估分布。至少两个数据点的预估分布可以指示哪个数据块包括相对更多的数据点以及哪个数据块包括相对更少的数据点。预估分布可包括至少两个数据点的预估密度分布,至少两个数据点的预估数量分布等,或其任何组合。
例如,对于预估密度分布,分布获取模块425可以基于数据块中的数据点的数量和对应于数据块的地理区域的大小,为每个数据块确定数据块中的数据点的密度。分布获取模块425可以基于每个数据块中的数据点的密度来确定估计的密度分布。或者,分布获取模块425可以从至少两个数据块中选择一个或以上数据块作为样本,并且基于所选择的一个或以上数据块中的每一个的数据点的密度来确定预估密度分布(例如,如本申请中其他地方结合图6详细描述的)。
又例如,对于预估数量分布,分布获取模块425可以确定每个数据块中的数据点的数量,并基于每个数据块中的数据点的数量来确定预估数量分布。或者,分布获取模块425可以从至少两个数据块中选择一个或以上数据块作为样本,并且基于所选择的一个或以上数据块中的每一个中的数据点的数量来确定预估数量分布(例如,如本申请中其他地方结合图6详细描述的)。
分区确定模块430可以被配置为基于至少两个数据点的预估分布和至少两个数据块的数据块编号将至少两个数据块划分为至少两个分区。为了提高数据点处理的效率,每个分区中的数据点数量可以基本相似(例如,任何两个分区中的数据点的数量之间的差异小于第一数量阈值,例如100、500、1000、5000或10000个数据点;或者差异小于第一百分比阈值,例如但不限于10%、15%、20%、25%或30%)。在一些实施例中,分区确定模块430可以基于至少两个数据点的预估分布将至少两个数据块划分为至少两个分区,以使每个分区中的数据点的数量基本相似。在一些实施例中,分区中的数据块的数据块编号可以是连续的。例如,分区中的数据块的数据块编号可以是1-10000。
分区确定模块430可以进一步被配置为基于至少两个数据块的数据块编号通过对至少两个分区进行排序来确定至少两个分区中的每一个的分区编号。例如,分区确定模块430可以将一个分区的分区编号确定为BU1,该分区包括数据块编号为1-10000的数据块,并将另一个分区的分区编号确定为BU2,该分区包括数据块编号为10001-11000的数据块。
排序模块440可以被配置为,对于所述至少两个分区中的每一个,基于所述分区中包括的数据块的数据块编号,对包括在所述分区中的数据块进行排序。例如,所述分区包括1000个数据块,其中数据块编号为10001-11000。在一些实施例中,排序模块440可以按照升序对这1000个数据块进行排序,并将数据块编号为10001的数据块确定为所述分区中的第一数据块。或者,在一些实施例中,排序模块440可以按降序对这1000个数据块进行排序,并确定数据块编号为11000的数据块作为所述分区中的第一数据块。
二次划分模块445可以被配置为将每个或部分分区中的数据点重新划分为至少两个子分区。在一些实施例中,二次划分模块445被配置为将每个分区中的数据点重新划分为至少两个子分区。每个子分区中的数据点的数量可以基本相似(例如,任何两个子分区中的数据点数量之间的差异小于第二数量阈值,例如50、100、500、1000或5000个数据点或小于第二百分比阈值例如但不限于5%、10%、15%或20%)。
索引确定模块450可以被配置用于基于至少两个数据块的数据块编号和/或至少两个分区的分区编号为至少两个数据点中的每一个确定索引(也称为空间索引)。在一些实施例中,数据点的索引基于数据块的数据块编号和分区的分区编号。在一些实施例中,数据点的索引可以指示数据点所属的数据块和分区。
在一些实施例中,当分区确定模块430将至少两个分区中的每一个重新划分为至少两个子分区时,索引确定模块450可以基于至少两个分区的分区编号和至少两个子分区的子分区编号来确定至少两个数据点中的每一个的索引。在这种情况下,数据点的索引可以指示数据点所属的子分区和分区。
处理引擎112中的模块可以经由有线连接或无线连接彼此连接或通信。有线连接可以包括金属线缆、光缆、混合电缆等或其任意组合。无线连接可以包括局域网络(LAN)、广域网络(WAN)、蓝牙、紫蜂网络、近场通信(NFC)等或其任意组合。并不要求所有模块都存在于所有实施例中。例如,在一些实施例中,可能不存在二次划分模块445。两个或以上模块可以被组合为单个模块,且所述模块中的任一个可以被分成两个或以上单元。例如,分区确定模块430和排序模块440可以组合成单个模块,该模块可以将至少两个数据块分成至少两个分区,并对包含在所述至少两个分区中的每一个的一个或以上数据块进行排序。又例如,数据块确定模块420可以分为两个单元。一个单元可以被配置用于确定至少两个数据块。另一个单元可以被配置为所述至少两个数据块中的每一个确定一个数据块编号。
应该注意的是,上述仅出于说明性目的而提供,并不旨在限制本申请的范围。对于本领域的普通技术人员来说,可以根据本申请的描述,做出各种各样的变化和修改。然而,这些变化和修改不会背离本申请的范围。例如,处理引擎112还可以包括存储模块(图4中未示出)。存储模块可以被配置用于存储在处理引擎112中的任何组件执行的任何过程期间生成的数据。又例如,处理引擎112中的每一个组件可以分别对应于存储模块。附加地或替代地,处理引擎112中的组件可以共享公共存储模块。作为又一示例,可以省略排序模块440和/或二次划分模块445。
图5是根据本申请的一些实施例所示的用于确定至少两个数据点中的每一个的索引的示例性过程的流程图。在一些实施例中,过程500可以在图1所示的按需服务***100中实现。例如,过程500可以作为指令的形式存储在存储介质(例如,存储设备150或处理引擎112的存储器220)中,并且由服务器110(例如,服务器110的处理引擎112、处理引擎112的处理器220,或图4所示的处理引擎112中的一个或以上模块)调用和/或执行。下面呈现的所示过程500的操作旨在说明性的。在一些实施例中,过程500可以利用未描述的一个或以上附加操作,和/或没有所讨论的一个或以上操作来完成。另外,如图5所示和下面描述的过程500的操作的顺序不是限制性的。
在501中,获取模块410(或处理引擎112、和/或接口电路210-a)可以从存储介质(例如,存储设备150、或处理引擎112的存储器220)和/或用户终端140获取至少两个数据点。在一些实施例中,所述至少两个数据点的数量可以是许多,达到了为了进行有效处理需要添加索引的程度。例如,所述至少两个数据点的数量可以大于一亿。在一些实施例中,所述至少两个数据点的数量可能太多而无法用现有的添加索引的技术处理。在一些实施例中,数据点可以对应于按需服务***100的用户。
在一些实施例中,所述至少两个数据点中的每一个可以包括空间信息。数据点的空间信息可以包括时间点以及对应于所述数据点的用户在该时间点的地理位置。在一些实施例中,地理位置可以由纬度和经度的坐标、地址或兴趣点(POI)名称或其组合来表示。在一些实施例中,所述至少两个数据点可以对应于特定时间段和/或特定区域。例如,获取模块410可以获取对应于北京一天的至少两个数据点。
在一些实施例中,用户终端140可以经由安装在用户终端140中的应用程序与处理引擎112和/或存储设备150建立通信(例如,无线通信)。该应用程序可以与按需服务***100相关联。例如,应用程序可以是出租车应用程序或导航应用程序。提供者终端140可以通过用户终端140中的定位技术获取用户的位置,例如,GPS、GLONASS、COMPASS、QZSS、WiFi定位技术等,或其任何组合。应用程序可以指示用户终端140不断地将用户的实时或历史位置发送到处理引擎112和/或存储设备150。因此,处理引擎112和/或存储设备150可以实时或基本上实时地接收用户的位置。另外,处理引擎112和/或存储设备150还可以接收对应于特定时间点或时间段的用户的历史位置。
在一些实施例中,所述至少两个数据点中的每一个还可以包括与数据点对应的用户的用户标识(ID)。当用户第一次使用该应用程序时,用户可以注册该应用程序的帐户。处理引擎112可以在用户注册之后为用户生成用户ID。应用程序可以指示用户终端140将用户ID连同用户的实时或历史位置一起发送到处理引擎112和/或存储设备150。
在一些实施例中,所述至少两个数据点中的至少一个可以包括与对应于至少两个数据点中的所述至少一个的用户相关联的信息。与用户相关联的信息可以包括用户的姓名、用户的年龄、用户的电话号码、用户的性别、用户的职业、与用户有关的车辆、车辆的车牌号、车辆的品牌、车辆的颜色等,或其任何组合。在一些实施例中,这种用户信息包括在所有数据点或数据点的一部分中。用户可以通过应用程序的界面输入与用户相关联的信息。应用程序可以指示用户终端140将与用户相关联的信息连同用户的实时或历史位置一起发送到处理引擎112和/或存储设备150。
在一些实施例中,当用户处于请求、使用或提供按需服务(例如,司机向乘客提供出租车服务)的过程中时,应用程序可以指示与用户相关联的用户终端140将与按需服务相关联的信息连同用户的实时或历史位置一起发送到处理引擎112和/或存储设备150。例如,当用户(例如,司机)向乘客提供出租车服务时,与提供的出租车服务相关联的信息可以包括行程的起点、行程的目的地等,或其任何组合。
在503中,数据块确定模块420(或处理引擎112、和/或处理电路210-b)可以将至少两个数据点划分为至少两个数据块。在一些实施例中,数据块确定模块420可以基于至少两个数据点的空间信息将至少两个数据点直接划分为至少两个数据块。可选地或另外地,数据块确定模块420可以将至少两个数据点对应的特定区域划分为至少两个数据块,然后基于至少两个数据点的空间信息确定每个数据块中有多少数据点和/或每个数据块中有哪些数据点。
在一些实施例中,数据块可以表示地理区域(子区域)。在一些实施例中,每个地理区域中可以具有规则(例如,三角形、矩形、正方形、圆形、五边形、六边形等)或不规则形状。在一些实施例中,地理区域的大小可以相同。例如,每个地理区域可以是边长为500米的正方形。在一些实施例中,地理区域的大小可以不同。例如,地理区域A可以是边长为200米的正方形,地理区域B是边长为300米的正方形。
在505中,数据块确定模块420(或处理引擎112、和/或处理电路210-b)可以确定至少两个数据块中的每一个的数据块编号。在一些实施例中,数据块确定模块420可以基于空间填充曲线确定数据块编号,例如,希尔伯特曲线、Z阶曲线、四叉树、R树、希尔伯特R树、二元空间分区(BSP)树、灰色曲线、龙曲线、Gosper曲线、Peano曲线等,或其任何组合。在一些实施例中,空间填充曲线可以是希尔伯特曲线,当使用地图时,该希尔伯特曲线不遗漏且不重复地穿过对应于数据块的地理区域。数据块确定模块420可以根据空间填充曲线通过对应于至少两个数据块的地理区域的顺序对至少两个数据块进行编号。
在506中,分布获取模块425可以获取至少两个数据点的预估分布。至少两个数据点的预估分布可以指示哪个数据块包括相对更多的数据点以及哪个数据块包括相对更少的数据点。预估分布可包括至少两个数据点的预估密度分布,至少两个数据点的预估数量分布等,或其任何组合。
例如,对于预估密度分布,分布获取模块425可以基于数据块中的数据点的数量和对应于数据块的地理区域的大小为每个数据块确定数据点的密度,并基于每个数据块中数据点的密度确定预估密度分布。或者,分布获取模块425可以从至少两个数据块中选择一个或以上数据块作为样本,并且基于所选择的一个或以上数据块中的每一个的数据点的密度来确定预估密度分布(例如,如本申请中其他地方结合图6详细描述的)。
又例如,对于预估数量分布,分布获取模块425可以确定每个数据块中的数据点的数量,并基于每个数据块中的数据点的数量来确定预估数量分布。或者,分布获取模块425可以从至少两个数据块中选择一个或以上数据块作为样本,并且基于所选择的一个或以上数据块中的每一个中的数据点的数量来确定预估数量分布(例如,如本申请中其他地方结合图6详细描述的)。
在507中,分区确定模块430(或处理引擎112、和/或处理电路210-b)可以基于至少两个数据点的预估分布和至少两个数据块的数据块编号将至少两个数据块划分为至少两个分区。为了提高数据点处理的效率,每个分区中的数据点数量可以基本相似(例如,任何两个分区中的数据点数之间的差异小于第一数值阈值,例如100、500、1000、5000或10000个数据点;或者差异小于第一百分比阈值,例如但不限于10%、15%、20%、25%或30%)。在一些实施例中,分区确定模块430可以基于至少两个数据点的预估分布将至少两个数据块划分为至少两个分区,以使每个分区中的数据点的数量基本相似。在一些实施例中,分区中的数据块的数据块编号可以是连续的。例如,分区中的数据块的数据块编号可以是1-10000。
在509中,对于所述至少两个分区中的每一个,排序模块440(或处理引擎112、和/或处理电路210-b)可以基于所述分区中包括的数据块的数据块编号,对包括在所述分区中的数据块进行排序。例如,所述分区包括1000个数据块,其中数据块编号为10001-11000。在一些实施例中,排序模块440可以按照升序对这1000个数据块进行排序,并将数据块编号为10001的数据块确定为所述分区中的第一数据块。或者,在一些实施例中,排序模块440可以按降序对这1000个数据块进行排序,并确定数据块编号为11000的数据块作为所述分区中的第一数据块。
在511中,分区确定模块430(或处理引擎112、和/或处理电路210-b)可以基于至少两个数据块的数据块编号通过对至少两个分区进行排序来确定至少两个分区中的每一个的分区编号。例如,分区确定模块430可以将一个分区的分区编号确定为BU1,该分区包括数据块编号为1-10000的数据块,并将另一个分区的分区编号确定为BU2,该分区包括数据块编号为10001-11000的数据块。
在一些实施例中,一个数据集中的数据点可以被分成至少两个分区,所述数据集可以以分区为单位进行处理。但是,分区中的数据量可能很大,以至于处理效率低。为了提高处理效率,在分区确定模块430确定分区编号后,二次划分模块445可以将每个或部分分区中的数据点重新划分为至少两个子分区,以便可以在子分区中处理数据点。在一些实施例中,二次划分模块445被配置为将每个分区中的数据点重新划分为至少两个子分区。每个子分区中的数据点的数量可以基本相似(例如,任何两个子分区中的数据点的数量之间的差异小于第二数量阈值,例如100、500、1000、5000,或10000个数据点;或者差异小于第二百分比阈值,例如但不限于10%、15%、20%、25%或30%)。
如图6所示,分区610可包括数据块620和数据块630。数据块620可以包括数据点P1和数据点P2。数据块630可以包括数据点P3-P8。二次划分模块445可以将分区610重新划分为子分区640和子分区650,以使子分区640和子分区650中的数据点的数量基本相似。
仅作为示例,二次划分模块445可以通过组合分区中的至少两个数据块、将分区中的数据块中的至少一个划分为至少两个子块、组合至少两个子块中的至少两个等,或其任何组合来确定至少两个子分区。在一些实施例中,二次划分模块445可以将分区中的至少两个数据块划分为至少两个子块,并将子块组合成一个或以上子分区。
仅作为示例,二次划分模块445可以基于至少两个数据点的用户ID确定每个子分区的子分区编号。对于数据点,二次划分模块445可以确定数据点的用户ID的哈希值。在某些实施例中,二次划分模块445可以将哈希值除以10并获取除法的余数。二次划分模块445可以将对应于相等余数的数据点放入同一子分区,并将该余数确定为子分区的子分区编号。
在513中,索引确定模块450(或处理引擎112、和/或处理电路210-b)可以基于至少两个数据块的数据块编号和/或至少两个分区的分区编号,为至少两个数据点中的每一个确定索引。数据点的索引可以指示包含数据点的数据块和分区。
在一些实施例中,当二次划分模块445将每个分区重新划分为至少两个子分区时,索引确定模块450可以基于至少两个分区的分区编号、至少两个数据块的数据块编号,以及至少两个子分区的子分区编号,为至少两个数据点中的每一个确定索引。数据点的索引可以指示包含数据点的子分区和分区。
应该注意的是,上述仅出于说明性目的而提供,并不旨在限制本申请的范围。对于本领域的普通技术人员来说,可以根据本申请的描述,做出各种各样的变化和修改。然而,这些变化和修改不会背离本申请的范围。例如,在一些实施例中可以省略步骤509。
图7是根据本申请的一些实施例所示的用于确定至少两个数据点的预估分布的示例性过程的流程图。在一些实施例中,过程700可以在图1所示的按需服务***100中实现。例如,过程700可以作为指令的形式存储在存储介质(例如,存储设备150或处理引擎112的存储器220)中,并且由服务器110(例如,服务器110的处理引擎112、处理引擎112的处理器220、或图4所示的处理引擎112中的一个或以上模块)调用和/或执行。下面呈现的所示过程700的操作旨在说明性的。在一些实施例中,过程700可以利用未描述的一个或以上附加操作,和/或没有所讨论的一个或以上操作来完成。另外,如图7所示和下面描述的过程700的操作的顺序不是限制性的。在一些实施例中,可以根据过程700执行图5中所示的步骤506。
在701中,分布获取模块425(或处理引擎112、和/或处理电路210-b)可以从至少两个数据块中选择一个或以上数据块。在一些实施例中,分布获取模块425可以随机选择一个或以上数据块。
在703中,对于所选择的一个或以上数据块中的每一个,分布获取模块425(或处理引擎112、和/或处理电路210-b)可以确定所选数据块中包括的数据点的总数。
在705中,分布获取模块425(或处理引擎112、和/或处理电路210-b)可以基于所选择的一个或以上数据块中的每一个的数据点的总数,确定至少两个数据点的预估分布。在一些实施例中,至少两个数据点的预估分布可以指示哪个数据块包括相对更多的数据点以及哪个数据块包括相对更少的数据点。例如,预估分布可以指示数据块编号为10001到11000的数据块的估计平均数据点数为100/块,数据块编号为11001至12000的数据块的估计平均数据点数为150/块。在一些实施例中,预估分布可以包括至少两个数据点的预估密度分布,至少两个数据点的预估数量分布等,或其任何组合。
在一些实施例中,对于所选择的一个或以上数据块中的每一个,分布获取模块425可以基于所选数据块中数据点的总数和数据块的数量,确定所选数据块中数据点的密度。分布获取模块425可以基于所选择的一个或以上数据块中的每一个的数据点的密度来确定包括在所选择的一个或以上数据块中的数据点的预估密度分布。
或者,分布获取模块425可以基于所选择的一个或以上数据块中的每一个的数据点的总数来确定包括在所选择的一个或以上数据块中的数据点的预估数量分布。
上文已对基本概念做了描述,显然,对于阅读此申请后的本领域的普通技术人员来说,上述发明披露仅作为示例,并不构成对本申请的限制。虽然此处并未明确说明,但本领域的普通技术人员可能会对本申请进行各种修改、改进和修正。该类修改、改进和修正在本申请中被建议,所以该类修改、改进、修正仍属于本申请示范实施例的精神和范围。
同时,本申请使用了特定词语来描述本申请的实施例。例如“一个实施例”、“一实施例”、和/或“一些实施例”意指与本申请至少一个实施例相关的某一特征、结构或特性。因此,应当强调并注意的是,本说明书中在不同位置两次或以上提及的“一实施例”或“一个实施例”或“一替代性实施例”并不一定是指同一实施例。此外,本申请的一个或以上实施例中的某些特征、结构或特点可以进行适当的组合。
此外,本领域的普通技术人员可以理解,本申请的各方面可以通过若干具有可专利性的种类或情况进行说明和描述,包括任何新的和有用的过程、机器、产品或物质的组合,或对其任何新的和有用的改进。相应地,本申请的各个方面可以完全由硬件执行、可以完全由软件(包括韧体、常驻软件、微代码等)执行、也可以由硬件和软件组合执行。以上硬件或软件均可被称为“单元”、“模块”或“***”。此外,本申请的各方面可以采取体现在一个或以上计算机可读介质中的计算机程序产品的形式,其中计算机可读程序代码包含在其中。
计算机可读信号介质可能包含一个内含有计算机程序代码的传播数据信号,例如在基带上或作为载波的一部分。此类传播信号可以有多种形式,包括电磁形式、光形式等或任何合适的组合。计算机可读信号介质可以是除计算机可读存储介质之外的任何计算机可读介质,该介质可以通过连接至一个指令执行***、装置或设备以实现通信、传播或传输供使用的程序。位于计算机可读信号介质上的程序代码可以通过任何合适的介质进行传播,包括无线电、电缆、光纤电缆、RF等,或任何上述介质的组合。
本申请各部分操作所需的计算机程序编码可以用任意一种或以上程序语言编写,包括面向主体编程语言如Java、Scala、Smalltalk、Eiffel、JADE、Emerald、C++、C#、VB.NET、Python等,常规程序化编程语言如C语言、Visual Basic、Fortran 2003、Perl、COBOL 2002、PHP、ABAP,动态编程语言如Python、Ruby和Groovy,或其他编程语言等。该程序代码可以完全在用户计算机上运行、或作为独立的软件包在用户计算机上运行、或部分在用户计算机上运行部分在远程计算机运行、或完全在远程计算机或服务器上运行。在后种情况下,远程计算机可以通过任何网络形式与用户计算机连接,比如局域网(LAN)、或广域网(WAN)、或连接至外部计算机(例如通过因特网)、或在云计算环境中、或作为服务使用如软件即服务(SaaS)。
此外,除非权利要求中明确说明,本申请所述处理元素和序列的顺序、数字字母的使用、或其他名称的使用,并非用于限定本申请流程和方法的顺序。尽管上述披露中通过各种示例讨论了一些目前认为有用的发明实施例,但应当理解的是,该类细节仅起到说明的目的,附加的权利要求并不仅限于披露的实施例,相反,权利要求旨在覆盖所有符合本申请实施例实质和范围的修正和等价组合。例如,虽然以上所描述的***组件可以通过硬件设备实现,但是也可以只通过软件的解决方案得以实现,如在现有的服务器或移动设备上安装所描述的***。
同理,应当注意的是,为了简化本申请披露的表述,从而帮助对一个或以上发明实施例的理解,前文对本申请实施例的描述中,有时会将多种特征归并至一个实施例、附图或对其的描述中。然而,本申请的该方法不应被解释为反映所声称的待扫描对象物质需要比每个权利要求中明确记载的更多特征的意图。实际上,实施例的特征要少于上述披露的单个实施例的全部特征。

Claims (21)

1.一种为数据添加索引的***,包括:
一个或以上存储介质,包括一组指令;以及
一个或以上处理器被配置为与所述一个或以上存储介质进行通信,其中,当执行所述一组指令时,所述一个或以上处理器被指示使所述***:
获取至少两个数据点,所述数据点中的每一个包括空间信息;
基于所述至少两个数据点的所述空间信息,将所述至少两个数据点划分为至少两个数据块;
确定所述至少两个数据块中的每一个的数据块编号;
获取所述至少两个数据点的预估分布;
基于所述至少两个数据点的所述预估分布和所述至少两个数据块的所述数据块编号,将所述至少两个数据块划分为至少两个分区;
基于所述至少两个数据块的所述数据块编号通过对所述至少两个分区进行排序确定所述至少两个分区中的每一个的分区编号;以及
基于所述至少两个数据块的所述数据块编号和所述至少两个分区的所述分区编号,为所述至少两个数据点中的每一个确定索引。
2.根据权利要求1所述的***,其特征在于,当执行所述一组指令时,所述一个或以上处理器进一步指示使所述***:
对于所述至少两个分区中的每一个,基于所述分区中包括的所述数据块的所述数据块编号对所述分区中包括的所述数据块进行排序。
3.根据权利要求1所述的***,其特征在于,所述至少两个数据点中的每一个还包括用户的用户标识。
4.根据权利要求3所述的***,其特征在于,当执行所述一组指令时,所述一个或以上处理器进一步指示使所述***:
对于所述至少两个分区中的每一个,基于所述至少两个数据点的所述用户标识,将所述分区中的所述数据点重新划分为至少两个子分区。
5.根据权利要求4所述的***,其特征在于,基于所述至少两个数据点,将所述至少两个分区中的每一个的所述数据点重新划分为所述至少两个子分区,所述一个或以上处理器进一步指示使所述***:
对于所述分区中的每个数据点,
确定所述数据点对应的所述用户标识的哈希值;
通过将所述哈希值除以整数来获取余数;
将对应于相等余数的所述数据点放入同一子分区;以及
基于与所述分区中的所述数据点对应的所述余数,确定所述至少两个子分区中的每一个的子分区编号。
6.根据权利要求1所述的***,其特征在于,为了获取所述至少两个数据点的所述预估分布,所述一个或以上处理器被指示使所述***:
从所述至少两个数据块中选择一个或以上数据块;
对于所述选择的一个或以上数据块中的每一个,确定所述所选择的一个或以上数据块中的所述每一个中包括的数据点的总数;以及
基于所述所选择的一个或以上数据块中的所述每一个中的数据点的所述总数,确定所述至少两个数据点的所述预估分布。
7.根据权利要求1所述的***,其特征在于,为了确定所述至少两个数据块中的每一个的所述数据块编号,所述一个或以上处理器被指示使所述***:
基于空间填充曲线确定所述多个数据块中的每一个的所述数据块编号。
8.一种实现在具有一个或以上处理器和一个或以上存储设备的计算设备上的为数据添加索引的方法,所述方法包括:
获取至少两个数据点,所述数据点中的每一个包括空间信息;
基于所述至少两个数据点的所述空间信息,将所述至少两个数据点划分为至少两个数据块;
确定所述至少两个数据块中的每一个的数据块编号;
获取所述至少两个数据点的预估分布;
基于所述至少两个数据点的所述预估分布和所述至少两个数据块的所述数据块编号,将所述至少两个数据块划分为至少两个分区;
基于所述至少两个数据块的所述数据块编号通过对所述至少两个分区进行排序确定所述至少两个分区中的每一个的分区编号;以及
基于所述至少两个数据块的所述数据块编号和所述至少两个分区的所述分区编号,为所述至少两个数据点中的每一个确定索引。
9.根据权利要求8所述的方法,还包括:
对于所述至少两个分区中的每一个,基于所述分区中包括的所述数据块的所述数据块编号对所述分区中包括的所述数据块进行排序。
10.根据权利要求8所述的***,其特征在于,所述至少两个数据点中的每一个还包括用户的用户标识。
11.根据权利要求10所述的***,其特征在于,当执行所述一组指令时,所述一个或以上处理器进一步指示使所述***:
对于所述至少两个分区中的每一个,基于所述至少两个数据点的所述用户标识,将所述分区中的所述数据点重新划分为至少两个子分区。
12.根据权利要求11所述的方法,其特征在于,基于所述至少两个数据点,将所述至少两个分区中的每一个的所述数据点重新划分为所述至少两个子分区包括:
对于所述分区中的每个数据点,
确定所述数据点对应的所述用户标识的哈希值;
通过将所述哈希值除以整数来获取余数;
将对应于相等余数的所述数据点放入同一子分区;以及
基于与所述分区中的所述数据点对应的所述余数,确定所述至少两个子分区中的每一个的子分区编号。
13.根据权利要求8所述的方法,其特征在于,获取所述至少两个数据点的所述预估分布包括:
从所述至少两个数据块中选择一个或以上数据块;
对于所述选择的一个或以上数据块中的每一个,确定所述所选择的一个或以上数据块中的所述每一个中包括的数据点的总数;以及
基于所述所选择的一个或以上数据块中的所述每一个中的数据点的所述总数,确定所述至少两个数据点的所述预估分布。
14.根据权利要求8所述的方法,其特征在于,确定所述至少两个数据块中的每一个的所述数据块编号包括:
基于空间填充曲线确定所述多个数据块中的每一个的所述数据块编号。
15.一种暂时性计算机可读介质,包括至少一个为数据添加索引的一组指令,其特征在于,当由计算设备的一个或以上处理器执行时,所述至少一个一组指令使所述计算设备执行一种方法,所述方法包括:
获取至少两个数据点,所述数据点中的每一个包括空间信息;
基于所述至少两个数据点的所述空间信息,将所述至少两个数据点划分为至少两个数据块;
确定所述至少两个数据块中的每一个的数据块编号;
获取所述至少两个数据点的预估分布;
基于所述至少两个数据点的所述预估分布的和所述至少两个数据块的所述数据块编号,将所述至少两个数据块划分为至少两个分区;
基于所述至少两个数据块的所述数据块编号通过对所述至少两个分区进行排序确定所述至少两个分区中的每一个的分区编号;以及
基于所述至少两个数据块的所述数据块编号和所述至少两个分区的所述分区编号,为所述至少两个数据点中的每一个确定索引。
16.根据权利要求15所述的非暂时性计算机可读介质,还包括:
对于所述至少两个分区中的每一个,基于所述分区中包括的所述数据块的所述数据块编号对所述分区中包括的所述数据块进行排序。
17.根据权利要求15所述的非暂时性计算机可读介质,其特征在于,所述至少两个数据点中的每一个还包括用户的用户标识。
18.根据权利要求17所述的非暂时性计算机可读介质,其特征在于,当执行所述一组指令时,所述一个或以上处理器进一步指示使所述***:
对于所述至少两个分区中的每一个,基于所述至少两个数据点的所述用户标识,将所述分区中的所述数据点重新划分为至少两个子分区。
19.根据权利要求18的非暂时性计算机可读介质,其特征在于,基于所述至少两个数据点,将所述至少两个分区中的每一个的所述数据点重新划分为所述至少两个子分区,包括:
对于所述分区中的每个数据点,
确定所述数据点对应的所述用户标识的哈希值;
通过将所述哈希值除以整数来获取余数;
将对应于相等余数的所述数据点放入同一子分区;以及
基于与所述分区中的所述数据点对应的所述余数,确定所述至少两个子分区中的每一个的子分区编号。
20.根据权利要求15所述的非暂时性计算机可读介质,其特征在于,获取所述至少两个数据点的所述预估分布包括:
从所述至少两个数据块中选择一个或以上数据块;
对于所述选择的一个或以上数据块中的每一个,确定所述所选择的一个或以上数据块中的所述每一个中包括的数据点的总数;以及
基于所述所选择的一个或以上数据块中的所述每一个中的数据点的所述总数,确定所述至少两个数据点的所述预估分布。
21.一种为数据添加索引的***,包括:
获取模块,被配置为获取至少两个数据点,所述数据点中的每一个包括空间信息;
块确定模块被配置为
基于所述至少两个数据点的所述空间信息,将所述至少两个数据点划分为至少两个数据块;以及
确定所述至少两个数据块中的每一个的数据块编号;
分配获取模块,被配置为获取所述至少两个数据点的预估分布;
分区确定模块被配置为
基于所述至少两个数据点的所述预估分布和所述至少两个数据块的所述数据块编号将所述至少两个数据块划分为至少两个分区;以及
基于所述至少两个数据块的所述数据块编号通过对所述至少两个分区进行排序确定所述至少两个分区中的每一个的分区编号;以及
索引确定模块,被配置基于所述至少两个数据块的所述数据块编号和所述至少两个分区的所述分区编号,为所述至少两个数据点中的每一个确定索引。
CN201780080860.2A 2017-12-29 2017-12-29 为大数据添加索引的***和方法 Active CN110352414B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2017/119699 WO2019127314A1 (en) 2017-12-29 2017-12-29 Systems and methods for indexing big data

Publications (2)

Publication Number Publication Date
CN110352414A true CN110352414A (zh) 2019-10-18
CN110352414B CN110352414B (zh) 2022-11-11

Family

ID=67064353

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201780080860.2A Active CN110352414B (zh) 2017-12-29 2017-12-29 为大数据添加索引的***和方法
CN201780097937.7A Active CN111587429B (zh) 2017-12-29 2017-12-29 用于关联数据集的***和方法

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN201780097937.7A Active CN111587429B (zh) 2017-12-29 2017-12-29 用于关联数据集的***和方法

Country Status (4)

Country Link
US (2) US20200151197A1 (zh)
CN (2) CN110352414B (zh)
TW (2) TWI701564B (zh)
WO (2) WO2019127314A1 (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI756963B (zh) * 2020-12-03 2022-03-01 禾聯碩股份有限公司 目標物件之區域定義辨識系統及其方法

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040139253A1 (en) * 2003-01-13 2004-07-15 Perego Richard E. Memory system and device with serialized data transfer
US20050055376A1 (en) * 2003-09-05 2005-03-10 Oracle International Corporation Georaster physical data model for storing georeferenced raster data
US20080228783A1 (en) * 2007-03-14 2008-09-18 Dawn Moffat Data Partitioning Systems
US7877405B2 (en) * 2005-01-07 2011-01-25 Oracle International Corporation Pruning of spatial queries using index root MBRS on partitioned indexes
CN102375853A (zh) * 2010-08-24 2012-03-14 ***通信集团公司 分布式数据库***、在其中建立索引的方法和查询方法
CN104112011A (zh) * 2014-07-16 2014-10-22 深圳市国泰安信息技术有限公司 一种海量数据提取的方法及装置
CN105159895A (zh) * 2014-05-28 2015-12-16 国际商业机器公司 用于存储和查询数据的方法和***

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8799668B2 (en) * 2009-11-23 2014-08-05 Fred Cheng Rubbing encryption algorithm and security attack safe OTP token
CN102902742A (zh) * 2012-09-17 2013-01-30 南京邮电大学 一种云环境下的空间数据划分方法
US10929501B2 (en) * 2013-08-08 2021-02-23 Sap Se Managing and querying spatial point data in column stores
WO2015180531A1 (en) * 2014-05-30 2015-12-03 Hubei University Of Education Indexing methods and systems for spatial data objects
JP6726690B2 (ja) * 2015-06-15 2020-07-22 アスカバ・インコーポレイテッドAscava, Inc. 基本データシーブを用いて無損失削減されたデータに対する多次元検索、コンテンツ連想的な取出し、ならびにキーワードベースの検索および取出しの実行
US9690488B2 (en) * 2015-10-19 2017-06-27 Intel Corporation Data compression using accelerator with multiple search engines
CN107229940A (zh) * 2016-03-25 2017-10-03 阿里巴巴集团控股有限公司 数据伴随分析方法及装置
TW201743280A (zh) * 2016-06-13 2017-12-16 趙尚威 基於區域偵測之載具聯網資訊系統
CN107391745A (zh) * 2017-08-10 2017-11-24 国家基础地理信息中心 大规模空间数据分级快速索引方法和装置

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040139253A1 (en) * 2003-01-13 2004-07-15 Perego Richard E. Memory system and device with serialized data transfer
CN101281508A (zh) * 2003-01-13 2008-10-08 拉姆伯斯公司 编码写屏蔽
US20050055376A1 (en) * 2003-09-05 2005-03-10 Oracle International Corporation Georaster physical data model for storing georeferenced raster data
US7877405B2 (en) * 2005-01-07 2011-01-25 Oracle International Corporation Pruning of spatial queries using index root MBRS on partitioned indexes
US20080228783A1 (en) * 2007-03-14 2008-09-18 Dawn Moffat Data Partitioning Systems
CN102375853A (zh) * 2010-08-24 2012-03-14 ***通信集团公司 分布式数据库***、在其中建立索引的方法和查询方法
CN105159895A (zh) * 2014-05-28 2015-12-16 国际商业机器公司 用于存储和查询数据的方法和***
CN104112011A (zh) * 2014-07-16 2014-10-22 深圳市国泰安信息技术有限公司 一种海量数据提取的方法及装置

Also Published As

Publication number Publication date
WO2019127384A1 (en) 2019-07-04
CN111587429A (zh) 2020-08-25
TW201939309A (zh) 2019-10-01
TWI701564B (zh) 2020-08-11
TW201939308A (zh) 2019-10-01
CN111587429B (zh) 2023-12-05
TWI720390B (zh) 2021-03-01
WO2019127314A1 (en) 2019-07-04
CN110352414B (zh) 2022-11-11
US20200327108A1 (en) 2020-10-15
US20200151197A1 (en) 2020-05-14

Similar Documents

Publication Publication Date Title
US10969239B2 (en) Systems and methods for determining a point of interest
US11017327B2 (en) Systems and methods for providing information for on-demand services
CN109313775A (zh) 用于分发服务请求的***和方法
CN111246376B (zh) 用于确定目标是否属于目标地理围栏的***和方法
US20200221257A1 (en) System and method for destination predicting
CN110402437A (zh) 用于查询数据库的***和方法
CN108934181A (zh) 用于路径搜索的***和方法
TWI675184B (zh) 用於路線規劃的系統、方法及非暫時性電腦可讀取媒體
CN108701279A (zh) 用于确定未来运输服务时间点的预测分布的***和方法
CN110050300A (zh) 交通拥堵监控***和方法
CN109074396A (zh) 推荐个性化内容的***和方法
JP6632723B2 (ja) サービスの順序列を更新するためのシステム及び方法
CN110431573A (zh) 订单分配优化的***和方法
CN108885726A (zh) 服务时间点预测***和方法
CN109564100A (zh) 基于位置信息执行动作的***与方法
TW201903660A (zh) 區域劃分系統和方法
US11580451B2 (en) Systems and methods for determining estimated time of arrival
CN110402370A (zh) 用于确定服务请求的推荐信息的***和方法
CN110301132A (zh) 用于按需服务的***和方法
CN110149804A (zh) 用于确定兴趣点的父-子关系的***和方法
WO2019001403A1 (en) SYSTEMS AND METHODS FOR DATA STORAGE AND DATA INTERROGATION
CN110140123A (zh) 用于加载和显示站点的***以及方法
CN110352414A (zh) 为大数据添加索引的***和方法
CN110832811B (zh) 用于发送空间数据的***和方法
CN110799968A (zh) 用于空间索引的***和方法

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