我目前正在开发一个项目,它将在一台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
任何线索高度赞赏。提前致谢
答案 0 :(得分:1)
字典应该可以正常工作。 Linq查询也可以。
如果它比单个表更复杂,我会考虑像MySql或SQL server compact这样的嵌入式数据库。
答案 1 :(得分:1)
此解决方案运行良好,加载时间应该几乎是瞬时的。目前10 MB的数据并不多,因此读取时间非常短,并且反序列化XML将非常快。
但要理解,内存数据库缺少RDBMS或noSQL解决方案带来的一些好处。最重要的是,在用户关闭程序或保存数据库之前,不会保留对数据库的更改。如果程序崩溃或系统断电,自上次保存以来对内存数据库所做的所有更改都将丢失。
显然,如果“表格”是只读的,那不是问题。