加入收藏 | 设为首页 | 会员中心 | 我要投稿 河北网 (https://www.hebeiwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

海量、多维数据让人抓狂?高效搜刮要领看这里

发布时间:2019-09-17 10:05:45 所属栏目:编程 来源:读芯术
导读:人与天下万物的互动会发生大量的时空数据。那么,当我们必要随时挪用已往的数据时,改怎么办?尤其是面临各类海量、多维度的数据库,假如没有高效的搜刮要领,我们只能望洋兴叹、一筹莫展。 别担忧,本文将器具体的代码,手把手来教授高效搜刮法的特技! 对
副问题[/!--empirenews.page--]

人与天下万物的互动会发生大量的时空数据。那么,当我们必要随时挪用已往的数据时,改怎么办?尤其是面临各类海量、多维度的数据库,假如没有高效的搜刮要领,我们只能望洋兴叹、一筹莫展。

海量、多维数据让人抓狂?高效搜刮要领看这里

别担忧,本文将器具体的代码,手把手来教授高效搜刮法的特技!

工具数据分类

工具数据可分为两种范例:静态数据(相对静态,譬喻构筑)和动态数据(譬喻人的勾当和物联网传感器的勾当)。

按研究需求分类的索引

时空快照搜刮

有些工具以相对较低的频率天生数据。譬喻,构筑物和阶梯等惰性物体也许在数年内不会产生任何变革。假如将为这些工具天生的数据写入数据库,并定时刻范畴查询数据(譬喻,查询日期为2017-07-01至2017-07-02),则也许找不到与这些工具相干的任何数据。缘故起因很简朴,在这段时刻内数据库基础没有相干数据输入。

时空举动数据搜刮

时空举动数据是指从人的勾当等动态工具中获取数据。

譬喻,说明特定地域特按时刻段内某一人群的特性,可能说明大学周边人群在事变日和周末组成的差别。

时空快照不属于本文的接头范畴。此刻,我们看看怎样搜刮时空举动数据。

数据布局

时空举动数据包括三个属性:时刻、空间和工具。

非布局化索引:

  1. create table test(  
  2.  id int8,  
  3.  crt_time timestamp, -- Time  
  4.  pos geometry, -- Location  
  5.  obj jsonb -- Object description  
  6. ); 

除了应用于JSON,布局化数据还可以用于工具描写。譬喻:

  1. create table test(  
  2.  id int8,  
  3.  crt_time timestamp, -- Time  
  4.  pos geometry, -- Location  
  5.  c1 int, -- Some property examples  
  6.  c2 int,  
  7.  c3 text,  
  8.  c4 float8,  
  9.  c5 int,  
  10.  c6 date,  
  11.  c7 text,  
  12.  c8 int,  
  13.  c9 int,  
  14.  c10 int  
  15. ); 

时空举动数据的SQL查询实例

  1. select * from test  
  2.  where  
  3.  pos <-> ? < ?  
  4.  and crt_time between ? and ?  
  5.  and ( (c1 = ? and c2 between ? and ?) or c10=?)  
  6.  ...  
  7.  ; 

优化要领

思量运用以下常识:

时刻序列BRIN索引

crt_time字段是一个时刻序列字段,暗示天生数据的时刻。在PostgreSQL堆存储中,存储和该字段的值具有很强的线性相干性。

因此,BRIN索引很吻合。

行使BRIN索引来取代分区表举办TPC-H测试。大范畴搜刮的机能乃至优于行使分区表时的成果。

  1. create index idx_test_1 on test using brin(crt_time); 

空间索引

显然,空间检索必要空间索引。PostgreSQL中可以行使三种要领实现空间检索。

1. 几许范例的GIST索引

  1. create index idx_test_2 on test using gist(pos); 

该索引支持空间KNN搜刮和空间位置确定等成果。

2. 几许范例的主索引

  1. create index idx_test_2 on test using spgist(pos); 

该索引支持空间KNN搜刮和空间位置确定等成果。

3. Geohash和B-tree索引(将经度和纬度转换为Geohash并为hash值建设B-tree索引)。只需行使表达式索引。

  1. create index idx_test_3 on test using btree( ST_GeoHash(pos,15) ); 

此索引支持前缀搜刮(其能落实编码地理信息网格中包括的相关)。它属于有损索引,必要二次过滤。

GiST和SPGiST空间索引可以或许找到精确的地理位置信息,优于GEOHASH索引。可是,查询信息时必要出格留意。

GIN 索引

此索引范例的方针是工具属性字段JSONB或多个布局化工具属性字段。只需行使GIN索引。

譬喻:

  1. create extension btree_gin; 

非布局化索引:

  1. create index idx_test_4 on test using gin( obj ); 

布局化索引:

  1. create index idx_test_4 on test using gin( c1,c2,c3,c4,c5,c6,c7,c8,c9 ); 

BitmapAnd和BitmapOr

在上一节中,按照数据范例和查询需求可觉得差异的查询维度选择响应的索引。

(编辑:河北网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读