[Movie Ticket] 一些table fields的问题

请问

  1. associated_transaction_id 是具体指什么上课没有提到
  2. 关于geohash, 请问修正以后的db schema geohash是要在events 和super_venues两张表上都出现吗?做denormalisation吗?
  3. 上课说geohash放在events table里面做sharing key. 请问那如果要按范围搜电影(比如当前地址加半径) 请问具体是怎么搜的, 因为已经做完sharding, 感觉不是特别好搜. 尤其是可能出现最好的前10名正好夸过两个分片的情况。请问有什么简单实现吗?谢谢
  1. 如果 type 是 refund,associated_transaction_id 是之前的 payment
  2. 这个 field 在多张表里出现,就是一种 denormalization
  3. Google S2 有 covering 的功能 Google S2 是一种 Geohash 的优化的实现。

3.1 所以意思是我需要根据我当前坐标加radius先算一个s2 cover的a list of hashes, 然后在每一个在对应的shard里面找看有没有hash存在是吗? 类似一个o(n)的算法,n 是size of list of hashes. 不知道我理解的对不对?

3.2 如果这就是用geohash不用google s2 怎么实现呢?

3.1 是的,这个 list of hashes 的最大数量是有限的,因为我们一般就会提供几种选择,比如 5,10, 50, 100 mile 的选项,毕竟大家也不会开车去太远看电影的
3.2 简化来看,先考虑每个 Geohash 是一个覆盖一定的区域的方块,然后计算当前坐标是在哪个 Geohash 范围内,再找到周围一圈的8个 Geohash,也可以再扩大几圈,直到可以覆盖 Radius。