c# - 使用内部数据结构作为内存数据库是一种好方法吗?

标签 c# .net database in-memory-database

我正在开发一个非常小规模的程序,主要是使用单词首字母来搜索完整的字符串和附加的额外信息,包括程序内 CRUD 操作。由于只有约 10k 个字符串要搜索,我更愿意使用内存方法来加快搜索速度(因为大多数查询是 SELECT )。

简单地使用像 List<myobject> data 这样的东西是不是一个好方法?并做这样的事情:data.Where((s => s.text.Substring(0,3) == expected)); ?当我使用这种方法时,我可以对数据库优化(如索引)做些什么吗?

最佳答案

长话短说
我建议评估您的要求。如果使用简单的 List<>满足您的要求,并且您对分析应用程序的性能结果感到满意,然后使用它。如果不考虑使用内存数据库。


数据库检索数据速度足够快的主要原因之一是 Index .当您使用常见的 C# 数据结构时,您会错过此功能。我认为如果你处理的记录数量很少,那么你就不会遇到性能问题,但如果你有很多记录,那么你应该考虑使用 in memory databases . 请记住,所选数据库可能不支持您希望的数据索引方式,或者您有复杂的查询,而索引并不能提高它们的性能。

如果你只有键和相应的值,那么看看 RedisStackExchange.Redis .

要考虑的另一件事是并发性!数据库通常支持从多个线程访问数据,并处理同一数据的多个读取器或写入器。您可以使用 thread-safe collections in .NET但是您必须做很多工作才能获得内置于数据库中的功能。

关于c# - 使用内部数据结构作为内存数据库是一种好方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36905994/

相关文章:

c# - 数据导入 - Excel 到 SQL Azure?

c# - 是什么导致mysql中的kill查询

java - 发布者和订阅者是否在同一个线程上

c# - 从字符串中匹配英语词典单词

javascript - 平面文件数据库系统,特别适用于 javascript

mysql - 从 Sql 数据库迁移到 NoSql 数据库的限制

c# - 在 C# 和 C 之间传递对象

c# - 通过 Rx 正确使用多种资源

c# - 如何检查 .NET DLL 是否已注册?

sql-server - 从 SQLite 导出到 SQL Server