比较和更新mySQL记录中的数组

时间:2016-12-29 21:40:37

标签: python mysql arrays beacon

情境: 我有多个静态接收器检测移动信标并记录每个的相对信号强度。每个灯塔都是1 /秒,我使用滚动平均值来平滑读数随时间的变化。我在本地记录每x秒(15)的平均读数,然后每y秒将该数组发送到一个sql数据库(300s,所以数组为20)。

我的约束是:

  • 接收者无法在本地互相交谈
  • 我不想向服务器发送每个接收者收到的每个信号(很快就会记录太多的记录)
  • 我正在写 python mySql ,因为这就是我所知道的(noSQL可能是未来的实现)
  • 我不控制服务器,所以安排服务器端处理 很挑战(我认为)
  • 数组具有不确定的长度(因此数组而不是字段)

我的目标是拒绝对于发布数组的每个元素具有较低信号(即,相对更远离信标)的接收器。

我目前的做法是:

  • 将一组发布到数据库

  • 从同一个信标中查询该数据库中的任何集合(但不同 接收器)与发布集的时间窗口相交

    • 期望每个附近的接收器最多2套,因此10条记录将匹配查询
  • 将这些集合拉入2D阵列(在时间校正偏移量 窗口不完全相同)

  • zip(* lis)转换该数组
  • 找到每行中的最小元素,将其写为1,其余为 0
  • zip(* lis)返回到2D数组的原始形式
  • 通过更新将结果发回数据库中的“获胜者”字段 (这样我们保留原始信号读数)

我知道这让我暴露出一个问题,即多个接收器同时发布并覆盖彼此过滤的数组结果。

我怀疑这种方法可能存在其他问题,但我无法找到更好的方法。有更好的方法吗?

0 个答案:

没有答案