Database Silverlight隔离存储和加载大文件

Database Silverlight隔离存储和加载大文件,database,windows-phone-7,isolatedstorage,Database,Windows Phone 7,Isolatedstorage,在WindowsPhone7应用程序中,我想查询使用存储的一个大XML文件(城市列表)。如果这样做,文件是否会加载到内存中(>5个月)?如果是,我还有什么其他解决方案 编辑: 更多细节。我想使用自动完成盒(http://www.jeff.wilcox.name/2008/10/introducing-autocompletebox/),但我不想使用web服务(这是固定数据,不需要联机),而是想查询文件/数据库/独立存储。。。我有一个固定的城市名单。我在评论中说是40k,但最后似乎接近1k行。您是

在WindowsPhone7应用程序中,我想查询使用存储的一个大XML文件(城市列表)。如果这样做,文件是否会加载到内存中(>5个月)?如果是,我还有什么其他解决方案

编辑:


更多细节。我想使用自动完成盒(http://www.jeff.wilcox.name/2008/10/introducing-autocompletebox/),但我不想使用web服务(这是固定数据,不需要联机),而是想查询文件/数据库/独立存储。。。我有一个固定的城市名单。我在评论中说是40k,但最后似乎接近1k行。

您是否可以选择使用Web服务,而不是使用isolatedstorage进行此操作。。。或者你的应用程序是为离线方式设计的


查询Web服务、wcf或支持json的Web服务非常简单,而且维护起来会更容易:)

与其拥有一个包含所有数据的大文件,还不如将其分解为许多小文件。(每个城市一个?)


如果需要的话,您可以有一个单独的文件来保存它们的索引。或者,根据文件的命名,您可以使用
IsolatedStorageFile.GetFileNames
获取所有文件的列表。

我将创建自己的文件格式,例如,在字段之间使用分隔符,每个记录一行。 这样,您就可以逐行读取文件,使数据结构充满以下优点:

  • 无需将整个文件拉入内存
  • 无XML开销(在桌面应用程序中,这可能不是问题,但在电话环境中,5 MB的文本文件可能会变得更小)
  • 愚蠢的例子:

    New York City; 12345
    Berlin; 25635
    ...
    
    编辑:如果卷没有那么大,您不需要任何形式的索引或按需加载。我会像上面所说的那样存储城市-每行一条记录-将它们加载到列表中,并使用LINQ选择您需要的项目。这可能会很快,并使您的应用程序响应速度非常快


    在这种情况下,在我看来,XML并不是这项工作的最佳工具。您的结构非常简单,用XML存储可能会使文件大小增加一倍,这是移动设备的一个问题,也会减慢解析速度,这也是本例中的一个问题。

    我将在我的应用程序中为其他内容使用Web服务,但在本例中,它是一个城市列表。这是相当固定的,我不打算在未来添加任何城市,并将其存储在本地以保证快速访问。我想把它和自动完成的BoxFair配对。。然后,您可以考虑将其分解为更小的文件,每个城市一个,并使用IsolatedStorageFile.getFileName列出所有文件并选择适当的城市,这将比查询单个文件更快:)正如我对Matt所说的,城市就是信息。我有40k行,每行只有两列(zipcode和city name)。所以40k文件似乎不对,我不认为这将是我要找的。我的sqlite数据库中有不到40k条记录(计划为我的wp7应用程序将其转换为xml),每行都包含城市名称和邮政编码。所以不确定40k文件是不是你的mind@Thomas没有40k文件不是最好的选择。(但如果你有关于少数城市的大量数据,它可能会。)26基于城市名称第一个字母的文件可能会起作用。。。我希望能够进行简单的选择,比如xxx*语句我不认为这有“hacky”,但对每一个都有它自己的:-)我仍然相信在嵌入式设备中优化性能和存储非常重要。顺便说一句,如果您在列表中加载您的城市(例如),那么使用Linq您可以执行您需要的所有Select查询。