如何以高性能存储地理散列数据

本文关键字:数据 存储 高性能 | 更新日期: 2023-09-27 18:30:11

我想将geodata(纬度/经度)对象保存在表存储区和内存中。

使用geohash,您可以将整个世界划分为32个部分。每个部分也可以分为32个部分,依此类推。这最多可以进行12次(级别)。

(请参阅此获取geohashhttp://www.bigdatamodeling.org/2013/01/intuitive-geohash.html和https://en.wikipedia.org/wiki/Geohash)

例如:57.6491110.40744(位于丹麦)-->u4pruydqqvj

  1. 对于将这些数据存储在像Azure Tables这样的表存储中选择分区和行键的最佳实践是什么
  2. 对于将这些数据存储在内存中,什么是最好的实践我可以使用一个带有geohash代码的大字典钥匙。这将是一个非常大的讨论。我也可以使用具有12个级别的嵌套词典。在这种方法中,我有32一级词典。每个都有一个只有一个的地理散列性格等等

目标是找到具有高性能的给定级别的所有地理数据对象。

编辑:

我有一个给定的地理哈希代码。给定的代码可以是任何地理哈希级别或节。例如u、u4、u4p或u4pr。用我想找到的代码:

  • 该节中的地理数据对象总数
  • 该节中特定类别的地理数据对象的总数
  • 在较低级别上,所有地理数据对象

我正在寻找一种最佳实践,将这样的数据存储在表存储器中一次,存储在内存中一次。

如何以高性能存储地理散列数据

表存储主要是关于如何存储数据以供以后查询,因为为了获得高性能,您必须使用分区键(用于小数据集,而不是1000)和行键,它们只返回一行。根据您的编辑,我认为您需要考虑复制数据以进行适当的存储和查询。

你有很多方法可以做到这一点,我们可以持续几个小时。然而,在寻找解决方案时,请考虑以下几点:

  • 您可以将JSON存储在一列中以容纳多个数据
  • 每一行都可以有自己的模式
  • TABLE是一种分区类型,您可以每个"级别"或每个类别都有一个表格

举例说明

表:GEO_COUNTS

pk     rk          data
-------------------------------
u      total       568965
u      cat:bars    41526
u      cat:gas     35689
u4     total       988965
u4     cat:bars    55526
u4     cat:gas     22689

表:GEO_COUNTS

pk     rk          data (JSON)
-------------------------------
u      unique id   {"total":568965, categories: ["bars" :41526, "gas":95689 ]}
u4     unique id   {"total":568965, categories: ["bars" :41526, "gas":95689 ]}

表:地理细节

pk     rk          data
-------------------------------
u      unique_id   ...
u      unique_id   ...
u4     unique_id   ...
u4     unique_id   ...

表:GEO_DETAILS_U

pk     rk          data
-------------------------------
u4     unique_id   ...
u4     unique_id   ...
u4p    unique_id   ...
u4p    unique_id   ...

表:GEO_DETAILS_U_CATEGORY_BARS

pk     rk          data
-------------------------------
u4     unique_id   ...
u4     unique_id   ...
u4p    unique_id   ...
u4p    unique_id   ...