C#:用于存储大型复杂数据的方法?

时间:2015-11-26 22:47:01

标签: c#

我正在尝试存储一个软件" Calender"(根据日期保存和浏览的复杂日志)。

我尝试使用.ini和xml,但是当应用程序尝试读取整个文件以查找100天内的特定日期的信息时(或者看起来似乎如此),花了差不多9秒才能获得5个变量500个变量。实际文件的大小最终可能每天超过40个变量。

另外,我宁愿不为每一天制作一个文件,这似乎有点不专业和杂乱。

我在问这个问题,知道是否有其他方法可以保持快速和整洁。数据包括不同类型的变量和不同数量的变量。我知道我有点过度使用日志记录,但程序需要日志来完成它的工作

3 个答案:

答案 0 :(得分:1)

如果必须存储数据,则必须是文件或数据库(本地或远程),我会选择SQLite,它会以单个文件结尾,但您可以使用SELECT查询数据,加入,等等。

编辑: 如果包含此包,则可以使用c#中的SQLite3: https://www.nuget.org/packages/System.Data.SQLite/

您需要学习一些SQL,但之后您只需使用以下内容:

select Message from Logs where Date > '2015-11-01' and Date < '2015-11-25';

比乱用XML更容易,更快速,更清晰,并且不会加载整个文件。

答案 1 :(得分:1)

如上所述,SQLite将提供很大的可能性。既然你(一般地),并且可能不是很多人在这里就能编写一个与那些人一样高效的数据库管理系统。

https://www.sqlite.org

答案 2 :(得分:1)

使用RDBMS的全部意义,因为它处理文件的效率要高得多。

SQL Lite重量轻,易于部署。但请记住,

  

SQLite一次只支持一个编写器(意味着执行   个人交易)。 SQLite在何时锁定整个数据库   它需要一个锁(读或写),只有一个作者可以持有一个   一次写锁。由于它的速度,这实际上不是问题   对于低到中等大小的应用程序,但如果你有更高的音量   写入(每秒数百)然后它可能成为瓶颈。   参考this question

如果这是企业级应用程序要求,我会选择基于Azure Table存储的解决方案,这对于这种情况是相同的。