将大量数据缓存到磁盘中

时间:2011-04-21 10:26:26

标签: c# database caching synchronization

我需要在磁盘上缓存大量数据。 只要数据库发生更改,就会从数据库中检索数据并将其缓存在磁盘上。我将使用后台进程继续使用数据库检查缓存数据,并在需要时对其进行更新。

我想知道在磁盘上组织缓存数据的最佳方法是什么,这样从缓存中写入和读取可以更快。 另一个线程将用于从数据库中获取一些新数据并将其缓存在磁盘上。我还需要处理两个线程之间的同步。(一个是更新现有的缓存数据,另一个是将新获取的数据写入缓存。) 请建议一种策略,用于组织缓存上的数据以及线程之间的同步。

3 个答案:

答案 0 :(得分:1)

SQL Server有一种称为XML表的东西。这些表基于磁盘中的物理XML文件。您可以将磁盘中的XML数据映射/链接到SQL Server中的表。对于用户而言,它是无缝的,换句话说,他们将这些表视为常规表。

除了关于在磁盘上缓存大量数据的技术/哲学讨论之外,这只是一个想法......

答案 1 :(得分:1)

您是否关心数据的一致性?电源故障?

内存映射文件以及可能需要的随意刷新

您是否需要对数据进行索引访问?

您可能需要设计一些B树实现或B +树实现。这样可以有效地检索索引数据,并提供更好的块级锁定。

http://code.google.com/p/high-concurrency-btree/

答案 2 :(得分:0)

作为替代答案,我自己的B+Tree implementation将整齐地解决这个问题,作为IDictionary< TKey,TValue>的完全托管代码(C#)实现。它是一个单文件键/值存储,它是线程安全的并且针对并发性进行了优化。它是专门为此目的而构建的,用于提供直写缓存。