C# 最有效的数据存储

C# 最有效的数据存储,c#,.net,windows-phone-7,storage,C#,.net,Windows Phone 7,Storage,我需要转换/转换/处理数据转储,以减少数据的大小,因为一些xml文件可能高达400 MB。我有以下选择: Sqlite数据库 CSV文件 二进制序列化 ? 减少文件大小以便在Windows Phone 7应用程序中使用的最佳方法是什么 编辑:我将创建旅程规划应用程序,允许用户指定来源和目的地。然后,应用程序将显示可用的服务。在down under,我们的移动宽带覆盖率参差不齐,因此我的目标是实现离线应用 主要的问题是你将如何处理这些数据 如果您只需要存储数据和文件,那么二进制序列化+压缩(z

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

  • Sqlite数据库
  • CSV文件
  • 二进制序列化
  • ?
减少文件大小以便在Windows Phone 7应用程序中使用的最佳方法是什么


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

主要的问题是你将如何处理这些数据

如果您只需要存储数据和文件,那么二进制序列化+压缩(zlib、lzo…)将最有效

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


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

主要的问题是你将如何处理这些数据

如果您只需要存储数据和文件,那么二进制序列化+压缩(zlib、lzo…)将最有效

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


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

此分析非常适合显示序列化的时间:

对于大小。。。很容易猜测二进制文件比sqlite(或Sterling)小,后者又比CSV小

然而,如果你想在手机上处理400MB的数据。。。然后我会说你做了错误的事情——将处理工作分包到服务器(到云端?),然后在手机上查看摘要结果——想想“瘦客户端”


(听了这么多行话,我现在就去洗嘴!)

这个分析非常适合向您展示序列化的时间安排:

对于大小。。。很容易猜测二进制文件比sqlite(或Sterling)小,后者又比CSV小

然而,如果你想在手机上处理400MB的数据。。。然后我会说你做了错误的事情——将处理工作分包到服务器(到云端?),然后在手机上查看摘要结果——想想“瘦客户端”


(听了这么多行话,我现在就去洗嘴!)

应用程序真的需要一直访问所有数据吗?如果不是这样,最好web服务能够根据需要处理原始数据,然后只向WP7客户端发送严格必需的数据。在400MB XML文件上使用类似Zip压缩的方法是不好的,因为您必须解压缩整个文件才能读取它。使用一些自定义的二进制压缩可能会起作用,但是您也可以存储在二进制中……应用程序是否真的需要始终访问所有数据?如果不是这样,最好web服务能够根据需要处理原始数据,然后只向WP7客户端发送严格必需的数据。在400MB XML文件上使用类似Zip压缩的方法是不好的,因为您必须解压缩整个文件才能读取它。使用一些自定义的二进制压缩可能会起作用,但您也可以存储在二进制中……我不同意,数据库应该占用少于CSV或XML的空间,因为它应该存储在二进制中(但我同意这取决于数据库的编写和配置情况)此外,我不同意CSV会比XML占用更多的空间——一般来说,XML非常臃肿,因为它有所有这些标签——例如,单个数字可能存储为12.2313452是的,不太清楚CSV会比XML占用更多的空间。o.OI不同意——数据库应该比CSV或XML占用更少的空间——因为它应该以二进制形式存储(但我同意这取决于数据库的编写和配置情况)我也不同意CSV会比XML占用更多的空间——一般来说,XML非常臃肿,因为它有所有的标签——例如,一个数字可能存储为12.2313452是的,我不太明白CSV会比XML o.OThanks占用更多的空间来链接到伟大的比较。我怀疑二进制序列化会是最有效的大小,但我认为不会ULD是最快的。如果您打算在您的手机上存储大量的数据,那么您将需要考虑对该数据的快速随机访问以及有效的压缩大小。为此,我将考虑使用像斯特林这样的数据库,或者使用某种类型的自定义固定大小的二进制记录,使用某种索引。我认为二进制序列化将是最有效的,但我认为它不是最快的。如果你打算在你的手机上存储这么多的数据,那么你会想考虑对数据的快速随机访问以及有效的压缩大小。Sterling或在使用某种定制的固定大小二进制记录和某种索引时。