【问题标题】:whether or not to use sqlite/spatialite on Android with only 29k rows是否在只有 29k 行的 Android 上使用 sqlite/spatialite
【发布时间】:2016-07-13 18:54:06
【问题描述】:

我试图弄清楚是否在只有 29k 行的 Android 上使用 sqlite/spatialite。每次用户移动到 100 米以外时,我只需要找到离用户最近的位置,大约每 10 分钟一次。我觉得运行查询空间数据库而不是循环集合和计算距离可能是矫枉过正。在这种情况下,什么时候使用数据库是大材小用?

【问题讨论】:

  • ... only 29k rows仅限。你是认真的吗?
  • Best.Comment.Ever.
  • 仅在其不是大数据的情况下,据我所知,计算 29k 行的距离不需要那么长时间。是的,我认真地发布了这个寻求帮助......
  • 29000 行不是大数据吗?你一定是在开玩笑。任何超过 10/12 行(最多 2 列,或者我会说 5 行或更少)的内容都应该存储在数据库中。可以选择 CSV 文件,但是!然后它不再可搜索。
  • 我只需要找到离用户最近的位置。所以它要么我使用哈希图并计算距离,要么使用空间和查询距离。

标签: android sqlite spatial-query spatialite spatial-data


【解决方案1】:

这并不过分。如果您不希望您的用户讨厌该应用程序,您实际上可能需要将这些数据存储在某个地方。

在手机上运行一个恒定的进程会不断消耗手机的系统资源。消耗资源会杀死手机电池。人们不喜欢会耗尽手机电池的应用程序。重复执行对 Web 服务端点的这么多记录的查询似乎也不是最好的主意,因为它会吃掉用户的数据计划。用户往往也不喜欢这样。

活动内存中的 29K 记录可能比您应该考虑的要消耗更多的电话资源,除非您正在做一些非常非常特别的事情。

如果您的数据没有改变,那么数据库并不是存储和查询数据的唯一方法。中间的某个地方可能有更好的解决方案,但我不希望消耗不必要的用户数据计划和/或电池寿命分配的好结果。

【讨论】:

  • 感谢这个有用的答案。我的意思是它将存储为 json 或 csv 并在运行时加载。但是后来我认为将其存储在哈希图中所需的内存量与数据库相同或更少。我目前让它在数据库中运行。只是想看看我怎样才能减少资源,虽然也许哈希图会更轻。
  • 您可能会觉得这很有帮助:stackoverflow.com/questions/7067798/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-23
  • 1970-01-01
  • 2015-08-25
相关资源
最近更新 更多