【问题标题】:Most efficient data storage最高效的数据存储
【发布时间】:2011-03-08 12:12:53
【问题描述】:

我需要转换/转换/处理TransXchange 数据转储以减小数据大小,因为某些 xml 文件可能高达 400 MB。我有以下选择:

  • Sqlite 数据库
  • CSV 文件
  • 二进制序列化
  • ?

减小文件大小以使其可用于 Windows Phone 7 应用程序的最佳方法是什么?

编辑:我将创建允许用户指定来源和目的地的旅程规划应用程序。然后应用程序将呈现可用的服务。在下面,我们的移动宽带覆盖率参差不齐,因此我的目标是进行离线应用。

【问题讨论】:

  • 应用程序真的需要一直访问所有数据吗?如果没有,最好让 Web 服务按要求处理原始数据,然后仅将严格必要的数据发送给 WP7 客户端。
  • 在 400MB XML 文件上使用类似 Zip 压缩的东西会很糟糕 - 因为您必须解压缩整个文件才能读取它。使用一些自定义的二进制压缩可能会起作用 - 但你也可以存储在二进制中......

标签: c# .net windows-phone-7 storage


【解决方案1】:

此分析非常适合向您展示序列化的时间:http://www.eugenedotnet.com/2010/12/windows-phone-7-serialization-comparison/

对于大小...很容易猜到二进制小于 sqlite(或 Sterling),而后者又小于 CSV

但是,如果您正在查看在手机上处理 400MB 的数据...那么我会说您做错了 - 将处理转移到服务器(到云?)然后查看摘要手机上的结果 - 想想“瘦客户端”。

(在所有这些行话之后,现在去洗我的嘴!)

【讨论】:

  • 感谢您提供很好的比较链接。我怀疑二进制序列化的大小效率最高,但我认为它不会是最快的。
  • 如果您打算在手机上存储这么多数据,那么您将需要考虑快速随机访问该数据以及有效的压缩大小。出于这个原因,我会考虑使用像 Sterling 这样的数据库,或者使用某种带有某种索引的自定义固定大小的二进制记录。
【解决方案2】:

主要问题是您将如何处理这些数据。

如果你只需要存储数据和文件就可以了,那么二进制序列化+压缩(zlib、lzo...)将是最好的。

CSV 对你没有任何好处.. 可能会比 XML 占用更多。

数据库(例如,Sqlite)是最昂贵的存储术语,但您可以更轻松地管理和搜索数据。

【讨论】:

  • 我不同意 - 数据库占用的空间应该少于 CSV 或 XML - 因为它应该以二进制形式存储(但我同意这取决于数据库的编写和配置情况)
  • 我也不同意 CSV 会比 XML 占用更多 - 通常 XML 非常臃肿,因为它具有所有这些标签 - 例如单个数字可能存储为 12.2313452
  • 是的,不太明白 CSV 会比 XML o.O 占用更多空间
猜你喜欢
  • 2021-05-11
  • 1970-01-01
  • 2012-10-23
  • 1970-01-01
  • 1970-01-01
  • 2021-07-31
  • 1970-01-01
  • 2019-07-07
  • 2015-02-04
相关资源
最近更新 更多