【问题标题】:Best way to store data (in-memory) that will be filtered?存储将被过滤的数据(内存中)的最佳方式?
【发布时间】:2016-08-19 21:06:19
【问题描述】:

我需要存储一组项目(内存中的 C# 类型),其中包含多个字段,例如:语言、所有者、密钥等。我希望以允许快速过滤的方式存储这些。例如。我可能想要所有具有 language = "en" AND key = "key1" 的条目。它不会经常被过滤,它的大小可能约为 10k 条目,一个简单的列表/字典就足够了吗?我很好奇如何解决这个问题,因为更大的列表会被更频繁地过滤。

【问题讨论】:

  • 要么在 C# 中重新实现 indexing,要么只使用 DB
  • DB 不是一个选项(编辑了我的问题)。
  • 您可以使用内存中的SQLite DB。
  • @Martheen SQLite 什么时候在内存中?上次我检查它使用了一个文件。
  • 至少since 2010 编辑:自2003 以来一直在那里

标签: c# algorithm sorting data-structures filtering


【解决方案1】:

如果将其存储在内存中就足够了,并且过滤的变体不多,您可以创建一个基于字典的数据结构。

另一个不使用经典关系数据库的解决方案是使用 Lucene.net,这是一个非常快速的搜索引擎库。虽然它有一个陡峭的学习曲线和一个有改进空间的文档;-) https://www.nuget.org/packages/Lucene.Net/

或者 - 只需使用经典数据库并注意正确设置索引。

【讨论】:

  • 感谢您的意见。存储在内存中就足够了,并且没有那么多变体(它将像我在帖子中给出的示例一样)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-07-19
  • 2020-07-09
  • 2018-12-01
  • 2013-09-10
  • 2014-07-28
  • 2012-05-10
  • 2011-11-26
相关资源
最近更新 更多