【问题标题】:Virtual Database in Memory内存中的虚拟数据库
【发布时间】:2010-02-19 13:21:08
【问题描述】:

想象一下:

我有一个包含 57,000 个项目的表格,我经常在我的应用程序中使用这些项目来确定目标组等内容。

除了每天查询数据库 300,000 次之外,对于一个几乎不会更改其数据的表,有没有办法将其信息存储在我的应用程序中并直接轮询内存中的数据?或者,我是否必须为每一行创建某种自定义数据类型并迭代测试每一行,以检查我想要的结果?

经过一番谷歌搜索,我能找到的最接近的是内存数据库

谢谢你, - 西奥

【问题讨论】:

    标签: c# asp.net memory iis-7 .net-2.0


    【解决方案1】:

    SQLite 支持内存表。

    【讨论】:

    • 谢谢你,我已经找到了,但我还是给你答案
    【解决方案2】:

    对于您将要查询的 57,000 个项目(并希望立即可用),我不建议只实现简单的缓存。对于这么多项目,我要么推荐分布式内存缓存(即使它只是一台机器),例如 Memcache、Velocity 等,要么按照您最初使用内存数据库的想法。

    此外,如果您使用任何成熟的 ORM,例如 NHibernate,您可以实现它以将客户端用于分布式缓存工具,几乎不需要任何工作。许多主要客户都有 NHibernate 实现,包括 Memcache、Velocity 和其他一些。这可能是一个更好的解决方案,因为您可以使用它只缓存它真正使用的数据,而不是它可能需要的所有数据。

    【讨论】:

      【解决方案3】:

      阅读Caching

      听起来这是应用程序级别的数据而不是用户级别的数据,因此您应该查看“Caching Application Data

      这里是some samples of caching datatables

      【讨论】:

      • 缓存的问题是您只能存储单个值,以免出现内存问题。这会在稍后搜索结果时产生问题
      【解决方案4】:

      如果您只需要一直使用相同的键查找行,那么简单的Dictionary<Key, Value> 很可能就是您所需要的。对我来说,57,000 个项目听起来并不多,除非每一行都包含大量数据。但是,如果您需要按不同的列进行搜索,内存数据库很可能是您的最佳选择。

      【讨论】:

      • 这不是数据量,而是我需要有条件地访问它,一直,还有很多列要检查。
      猜你喜欢
      • 1970-01-01
      • 2018-07-09
      • 2013-06-24
      • 2021-07-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-21
      • 2023-03-17
      相关资源
      最近更新 更多