我可以合理地使用Dictionary(整数,结构)而不是RDBMS数据库吗?

时间:2010-11-20 18:09:00

标签: database linq

我目前正在开发一个项目,它将在一台PC上为一个用户一次使用一个小表(总共小于10兆字节)。 (但当然会安装在很多电脑上)。

我说小,因为10 MB看起来像我PC上当前可用内存的1/300(!)

在该表中,我将存储XML Document形状的字符串或每个2到4 KB的元素。

试图避免RDBMS的巨大开销和困难的安装过程,我的问题是:

将表作为字典(Key,Value)运行是否合理,我将创建,更新和删除项目以及我将执行LINQ查询?

加载(反序列化)时间是否与连接说SQL Server紧凑版数据库所需的时间相当?

我是否能够LINQ查询项目的值部分,例如:

Dim Results = from r in myDictionnary
              where r.Value like "*mySearchString*"
              Select r

for each aChunk in Results

    dim xChunk as xElement = xElement.parse(aChunk)
    etc...

next

任何线索高度赞赏。提前致谢

2 个答案:

答案 0 :(得分:1)

字典应该可以正常工作。 Linq查询也可以。

如果它比单个表更复杂,我会考虑像MySql或SQL server compact这样的嵌入式数据库。

答案 1 :(得分:1)

此解决方案运行良好,加载时间应该几乎是瞬时的。目前10 MB的数据并不多,因此读取时间非常短,并且反序列化XML将非常快。

但要理解,内存数据库缺少RDBMS或noSQL解决方案带来的一些好处。最重要的是,在用户关闭程序或保存数据库之前,不会保留对数据库的更改。如果程序崩溃或系统断电,自上次保存以来对内存数据库所做的所有更改都将丢失。

显然,如果“表格”是只读的,那不是问题。