【问题标题】:In Memory Database内存数据库
【发布时间】:2009-03-07 00:52:27
【问题描述】:

我正在使用 SqlServer 来驱动 WPF 应用程序,我目前正在使用 NHibernate 并预读取所有数据,因此出于性能原因对其进行了缓存。这适用于单个客户端应用程序,但我想知道是否有一个内存数据库可供我使用,以便我可以在同一台机器上的多个应用程序之间共享信息。理想情况下,这将位于我的 NHibernate 堆栈之下,因此我的代码不必更改。实际上,我希望将我的数据库从服务器上的传统格式移动到客户端上的内存数据库。

注意我只需要选择功能。

【问题讨论】:

    标签: database nhibernate in-memory in-memory-database


    【解决方案1】:

    如果您甚至需要将所有信息加载到内存中,我会感到非常惊讶。我这样说是因为,作为一个例子,我目前正在开发一个 Web 应用程序,该应用程序(由于各种原因)在许多页面上加载了数千条记录。这是 PHP + MySQL。即便如此,它也可以在 100 毫秒内完成并渲染页面。

    在你走这条路之前,请确保你必须这样做。首先使您的数据库尽可能高性能。现在显然这包括诸如拥有适当的索引和调整数据库之类的事情,但即使是本末倒置。

    首先,您需要确保拥有一个良好的关系数据模型:一个适合执行高性能查询的模型。这既是艺术也是科学。

    另外,您可能喜欢 NHibernate,但 ORMs are not always the best choice。例如,在某些极端情况下,手工编码的 SQL 会非常出色。

    现在假设您有一个良好的数据模型,并假设您已经优化了索引和数据库参数,然后您已经正确配置了 NHibernate,那么只有这样您才应该考虑将数据存储在内存中当且仅当性能仍然是个问题

    为了正确看待这一点,我需要这样做的唯一时间是在需要每天执行数百万笔交易的系统上。

    避免内存缓存的一个原因是它增加了很多复杂性。您必须处理缓存到期、对底层数据存储的独立更新、使用同步还是异步更新、如何为客户端提供一致的(如果不是最新的)数据视图、如何处理等问题具有故障转移和复制等功能。需要付出巨大的复杂性成本。

    假设您已完成上述所有操作并且仍然需要它,在我看来您需要的是缓存或网格解决方案。这是overview of Java grid/cluster solutions,但其中许多(例如Coherence、memcached)也适用于.Net。 .Net 的另一个选择是Velocity

    需要指出和强调的是,只有在没有任何外部更新数据库并且只有一个启用 NHibernate 的进程(除非集群解决方案)时,像 NHibernate 这样的东西才是一致的。如果两台不同 PC 上的两个桌面应用程序都在使用 NHibernate 更新同一个数据库,那么缓存将根本不起作用,因为持久性单元根本不会知道另一个正在做的更改。

    【讨论】:

    • 惊讶,非常惊讶,大量数据+动画=视频输出,我需要我能得到的所有速度。
    • 哦,这当然不是不可能的,只是不太可能。在我的经验中。所以你可能需要在内存中缓存。如果缓存的数据被更新并且这些更新需要传播,那么 NHibernate 的多个实例将无法工作(尽管有集群)。
    【解决方案2】:

    http://www.db4o.com/可以成为你的朋友!

    【讨论】:

      【解决方案3】:

      Velocity 是由 Microsoft 设计的进程外对象缓存服务器,尽管目前它只是 CTP 形式,但它几乎可以满足您的需求。

      我相信memcached也有包装器,也可以用来缓存对象。

      【讨论】:

        【解决方案4】:

        您可以使用 HANA,快递版。您可以download it for free,它是内存中的、柱状的,并允许进一步的分析功能,例如文本分析、地理空间或预测。您还可以使用 ODBC、JDBC、node.js hdb 库、REST API 等进行访问。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-11-06
          • 1970-01-01
          • 2011-01-18
          • 2019-03-11
          • 1970-01-01
          • 2017-06-16
          • 2010-10-27
          • 2010-09-17
          相关资源
          最近更新 更多