【问题标题】:How to handle very very large amount of data in Android?如何在 Android 中处理非常大量的数据?
【发布时间】:2016-03-24 09:41:05
【问题描述】:

我有一个数据库,其中包含 2 500 000 行 13 位数字(最后多一点 - 4 000 000) 用户必须查找该数据库中是否存在 13 位数字,所有这些都在他的安卓手机上,没有任何互联网连接。那么你建议如何处理这个问题?

我想过在 Android 上使用 SQLITE。

你有什么建议?

【问题讨论】:

  • 乍一看,数据库是您的最佳选择。它会很小(ish)并且足够快地执行查询。没有互联网连接显然意味着您无法更新此数据库(除非您计划在有连接时进行同步)。也可以在没有数据库的情况下确定数字是否符合模式。即,数字通过了 Luhn 测试,或者在特定范围之间,等等。
  • 当我说“没有连接”时,我想说我不能在服务器端进行搜索,但是是的,每周都会在数据库中添加 2000 条引用。这是一个“EAN13”数据库,所以没有任何数字模式。
  • 我认为你只需要一部非常大的手机
  • @lelloman 我想我在刚刚发布的答案中涵盖了您的担忧
  • ...这不是问题,只是讽刺^_^

标签: android performance sqlite


【解决方案1】:

这个在cmets中添加有点太多了,我就在这里添加吧。

4,000,000 行整数并不多。假设整数将使用带符号整数的最大大小(8 字节),您的数据库将是:

4000000 * 8 / 1024 / 1024 = ~30.5mb

这很大,但不会破坏游戏。

现在还假设每个数字需要完整的 8 个字节。我们知道我们希望每个条目存储 13 位数字,因此 6 字节整数列就足够了:

4000000 * 6 / 1024 / 1024 = ~23mb

【讨论】:

  • 请注意,我删除了关于 TEXT 列的部分。对于每个字符,我忽略了将 4 个字节乘以 13。
【解决方案2】:

SQLite 将是设备上大型数据集的最佳存储选择。确保尽可能使用正确的 SQLite 查询来获取所需的数据,而不是使用通用查询并在自己的代码中进行处理。

【讨论】:

    【解决方案3】:

    嗨,d3cima 可能回答得太晚了,但它可以帮助其他人。我自己的境界是最好的选择。

    Realm

    Realm 的开发人员友好型平台可以轻松构建反应式应用、实时协作功能和离线优先体验。

    优势:

    • 比 SQLite 快(正常情况下比原始 SQLite 快 10 倍) 操作)

    • 易于使用

    • 为您处理对象转换

    • 便于动态创建和存储数据

    我用我的项目是 10 倍以上然后是 Sqlite。

    【讨论】:

      猜你喜欢
      • 2011-09-26
      • 1970-01-01
      • 1970-01-01
      • 2015-03-02
      • 1970-01-01
      • 1970-01-01
      • 2014-10-13
      • 2017-09-23
      • 1970-01-01
      相关资源
      最近更新 更多