【问题标题】:Store huge amount of data in assembly在汇编中存储大量数据
【发布时间】:2013-02-06 23:41:56
【问题描述】:

我正在尝试制作一个可以在多个程序中使用的程序集。 大会包含大量国家和该国大量城镇。 国家的数据不是什么大问题,因为我只计算了 249 个国家,但我也有大量的城镇数据。

例如,法国有近 50.000 个城镇。 比利时有近2500个城镇。 英国近 150.000 个城镇。 ...

我已经拥有了我需要的所有数据,但我的问题是。我不知道如何将数据存储在我的程序集中。 - 我尝试了 XML,但加载 xml 会给我带来性能问题。加载数据需要很长时间。 - 我尝试了一个 MS Access 数据库,但是当我尝试将数据保存在我的程序集中时,数据存储在我的程序集之外的数据库中。这意味着那不是我的解决方案。 - 我尝试将数据直接加载到脚本中的数组中,但我的 Visual Studio 整天都在加载,检查我输入的数据,但我不能再使用它了

谁能给我一种在我的程序集中存储数据而不会出现这些性能问题的方法?

欢迎任何帮助。

我使用 C# 语言使用 Visual Studio 2010

【问题讨论】:

  • 您为什么要尝试将数据“保留在”您的程序集中? (您知道用户从程序集中提取数据仍然是微不足道的,因此您没有以任何方式保护数据?)
  • 您是否总是需要加载所有数据? XML 有多大? “太长”有多长?
  • 任何内存数据库,例如 SQLite?
  • “一种在我的程序集中存储数据而不会出现这些性能问题的方法”的答案是 - 您极不可能加载 200K 项(每项 1Kb 提供 200Mb 数据)-不考虑性能...

标签: c#


【解决方案1】:

如果您决定将其硬编码到一个程序集中,您可以使用包含每个国家/地区的多个 Dll。

如果您只需要访问 France 文件,您可以只创建 France 类的实例而不是整个世界。

【讨论】:

    【解决方案2】:

    将所有数据保存在程序集中并不是一个好主意。 1. 它使它变得非常大。 2. 更新困难。

    如果您担心其他人在您的程序集之外看到数据库或 xml 文档中的信息,您应该研究一些基本的加密。

    编辑: 1. 拥有一个非常大的程序集不是一个好主意,因为必须将所有这些信息不必要地加载到内存中。这是假设程序每次运行时都不需要 100% 的信息。

    【讨论】:

    • 您确实应该详细说明在这种大小的程序集中包含数据是一个坏主意的原因。
    • 不需要编辑。其固定数据。这就是为什么我想把它放在一个程序集中。
    【解决方案3】:

    您可能希望改为查看地理编码。我曾经使用过一个 dat 文件,其中包含一堆美国邮政编码和该信息。我确信其他地方也存在类似的情况。

    不过,您可能只想看看 google 地理编码。

    【讨论】:

    • 您能否详细解释一下地理编码是什么以及它有什么帮助?
    • 这听起来更像是评论而不是答案。
    • @DavyQuyo - 如果你有这么多数据,你真的应该寻找基于数据库的解决方案。另一个解决方案是解决您加载数据的方式。
    • 我的意思是作为评论进入。对不起
    • 到目前为止,每个人都同意在程序集中存储这种数据不是一个好主意,甚至是不可能的。我想我坚持遵循每个人给我的建议。
    猜你喜欢
    • 1970-01-01
    • 2011-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-28
    • 2016-10-23
    相关资源
    最近更新 更多