如何以高性能存储地理散列数据
本文关键字:数据 存储 高性能 | 更新日期: 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
- 对于将这些数据存储在像Azure Tables这样的表存储中选择分区和行键的最佳实践是什么
- 对于将这些数据存储在内存中,什么是最好的实践我可以使用一个带有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 ...