我从外部应用程序获取数据:
class DataItem { public string key; public int Attribute1; public string Attribute2; }
一个线程将其存储在集合中。 其他线程(3-10)按键(90%)和属性(10%)查询集合。
如果我的收藏中有 10、100、1000 多个项目,实现这个的最佳方法是什么?
最佳答案
如果你真的想要一个内存数据库那么Sqlite使用 managed data provider将是你最好的选择。但是,我怀疑在这种情况下你会接受 ConcurrenctDictionary .这个集合可以轻松处理 1000 多个项目和并行访问它的多个线程。使用此集合的注意事项是您只能为集合中的每个条目指定一个键。您可能需要为要查找的每个属性使用单独的集合。话又说回来,如果按属性查找的频率不够高,那么您可以选择枚举整个集合来查找匹配的属性,而无需单独的集合。
关于.net - 需要非常快速的线程安全收集或内存数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6075901/