【发布时间】:2011-09-15 13:51:21
【问题描述】:
我已经使用通用列表和 Linq 实现了一种内存数据库类型,它由 ASP.NET 应用程序使用。在内存中构建这个数据库大约需要 45 秒(它是从数据库构建的),因此我们试图将 ASP.NET 应用程序池回收次数减少到每天凌晨 1:00 一次,以避免工作进程在中间进行回收一天,旋转 45 秒重建数据库。
我想将我们的内存数据库移动到与 ASP.NET 工作进程隔离的另一个进程,但我不确定如何让 ASP.NET 应用程序中的对象与一个单独的进程对话数据库。我应该使用 TCP 侦听器类型的东西吗?我知道 IIS 曾经能够托管库并通过远程处理使它们可用...这仍然可能吗?
如果您想知道我为什么要费心使用内存数据库,那是因为它为多面搜索应用程序提供了动力。使用 Linq 和内存列表比每次搜索都访问数据库要快很多数量级。
提前感谢您的任何建议。
【问题讨论】:
-
但是进程间通信比数据库查询快吗?
-
@Matt,如果数据库在网络上并被其他应用程序使用,我认为在同一台机器上的进程上的 IPC 应该更快。
-
内存数据库中的其他数据库或内置的asp.net caching都没有满足性能要求吗?
-
如果您在同一台机器上,IPC 非常快。数据库查询,尤其是在访问磁盘时,比内存访问慢数百倍,即使有 IPC 开销。
-
Matt - 分面搜索不适合传统的关系数据库模型。这就是我使用基于内存数据库的自定义对象的原因。
标签: .net asp.net database memory tcp