我处于C#(它将作为Windows服务运行)内存缓存设计的初始阶段。预计一旦投入生产,平均可以容纳近百万个物体(各种类型)。某些缓存项目的大小可能高达10MB(或更多)。 我考虑了各种数据存储解决方案,现在我决定使用DataTable或SQLite内存中的实例作为缓存存储。在这一点上我的问题是内存中缓存 - SQLite vs System.Data.DataTable
- 你认为一个DataTable的性能将与这么多的记录数?
- 你觉得和SQLite的解决方案会是一个矫枉过正?(由于SQLite是设计成一个“数据库”,我可能不是真的想所有这些数据库相关的水暖活动)
性能是最高优先级我。
编辑
添加一些细节。
- 这些缓存项不只是键值对,他们有两个 (截至目前),性质(固定和锁定的项目),这会影响 其可用性。每个查找将包括所有三个 属性。
- Memcached已经考虑过了,但在这一点上,这不是一个 选项,主要是由于我们的SLA限制(这就是我可以说的关于 它)。
- 并非所有项目都是10MB大小。
- 我非常肯定,这些项目中的很多将仅仅是 数字和小字符串值。
- 我相信RAM的可用性不是问题。
由于提前, 詹姆斯
这真的取决于您的查询要求。如果您需要相对复杂的临时查询,您可能需要使用SQLite解决方案。但是,如果每个查询都要使用键/索引,那么DataTable应该足够了。 – rossipedia
你有10,000,000MB的RAM? –
在作为服务运行的内存缓存中?像memcached?为什么重新发明轮子?如果你的第一个想法是在内存中使用数据表或SQL数据库,那么你不会这么做。 – Chris