C# 内存缓存中-SQLite vs System.Data.DataTable
我正处于设计C#中内存缓存(将作为windows服务运行)的初始阶段。一旦投入生产,预计平均可容纳近一百万个对象(各种类型)。某些缓存项的大小可以达到10MB(或更大)。 我考虑了各种数据存储解决方案,现在我决定使用DataTable或SQLite内存实例作为缓存存储。在这一点上,我的问题是C# 内存缓存中-SQLite vs System.Data.DataTable,c#,.net,sqlite,caching,datatable,C#,.net,Sqlite,Caching,Datatable,我正处于设计C#中内存缓存(将作为windows服务运行)的初始阶段。一旦投入生产,预计平均可容纳近一百万个对象(各种类型)。某些缓存项的大小可以达到10MB(或更大)。 我考虑了各种数据存储解决方案,现在我决定使用DataTable或SQLite内存实例作为缓存存储。在这一点上,我的问题是 有这么多记录,您认为DataTable的性能如何 你认为使用SQLite解决方案是一种过分的做法吗?(因为SQLite是作为“数据库”设计的,我可能并不真的想要所有与数据库相关的管道活动) 对我来说,表现是
詹姆斯:糟透了。数据包速度慢,占用大量内存,对于大型项目来说不会发生神奇的变化。
2:你告诉我们 你考虑过用一本简单的字典吗?你知道,键/值对
答案实际上取决于您计划如何使用缓存。如果每个项目都是1 MB,则表示1 TB的内存。
您有1 TB的内存用于此目的?
固态磁盘上的数据库可能是更好的设计 DataTable很大而且很慢 您将如何查找这些项目?
您将拥有一把完整的钥匙吗?
你会有足够的记忆吗?
如果是的话,请查字典 这实际上取决于您的查询要求。如果您需要相对复杂的即席查询,您可能希望使用SQLite解决方案。但是,如果每个查询都要使用键/索引,那么DataTable就足够了。您的内存缓存中是否有10000000000B的RAM?作为服务运行?像memcached?为什么要重新发明轮子?尤其是当您的第一个想法是在内存中使用数据表或SQL数据库时,无论是否在内存中,您都不会正确地使用它。