【问题标题】:Redundant Dictionaries, Simulated Database or Physical Database?冗余字典、模拟数据库还是物理数据库?
【发布时间】:2010-10-28 09:41:41
【问题描述】:

早上好,

目前,我需要一些比我更有经验的数据库问题的帮助。我需要使用两组 (String, Int32) 对。第一个有大约 160,000 对,第二个有大约 1,620,000 对。问题是最后一个集合的字符串的每个部分都包含在第一个集合中......也就是说,我考虑通过实现三个字典来模拟 RAM 内存中的数据库:

Dictionary<String, Int32> 存储一个字符串和类似它的“主键”, Dictionary<Int32, Int32> 将每个主键连接到所需的值 Dictionary<Tuple<Int32, Int32>, Int32> 存储一对主键和另一个值。

使用两个字典并存储冗余信息,程序分配了大约 200Mb 的 RAM。虽然这不是一个关键问题,但我想减少它。所以我尝试使用上面的三个字典,正如我所料,分配的内存减少了很多,大约 90Mb。但是,按字符串搜索时的查找性能降低了,所用时间大约是第一种更简单但冗余的方法的两倍。

所以现在我正在考虑将其实现为 SQLite 数据库。问题是查找时间:它应该尽可能快。使用这种数据库是否有可能获得类似于 RAM 访问时间的查找时间?

非常感谢。

【问题讨论】:

    标签: c# database sqlite


    【解决方案1】:

    可能。您的 RAM 数据库不处理任何 gbut 纯比较,因为它没有索引结构。到目前为止,您没有给出任何搜索时间....可能是通过正确使用一两个索引,您可以很好地击败您的字典时间。这里很大程度上取决于 RAM 中的特定查询行为和查询执行时间。没有这些信息,我们无话可说。

    一般来说,特定的数据结构也可以比通用数据库快很多。但是,它们的灵活性较差。真的取决于你如何在这里检索数据。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-14
      • 2011-01-17
      • 2015-01-23
      • 2019-12-07
      相关资源
      最近更新 更多