我需要将键值对存储在数据库中,其中键是例如一个字符串和值可以是多种类型之一(整数,字符串,浮点数/日期,GUID,BLOB)。数据库是通过OLE DB访问的,所以我需要坚持“正常”类型。在数据库中存储不同的值类型
这些键可能涉及“存在”查询,值不涉及查询(即,我不会查询“值为17的所有键”)。其他键值对将在稍后添加。
我目前看到的以下选项:
1.序列化BLOB
序列化键值设置(此功能已经可用),并将其存储为单个斑点。
我遇到的唯一问题是,共享数据库时无法轻松更新单个值。目前它是一个问题(当前的一组值仅在数据库完全打开时更新),但似乎是未来访问的限制。
2.钥匙BLOB
一排将包括Key, Type, BLOB
存储的原始数据。会导致一些难以进行的转换和测试,但会允许稍后轻松扩展var类型。我不知道的开销是多么糟糕的storign BLOB的,但项目的数量为低(大约一打。
3.一列
一排将包括Key, Type, int, double, sting, blob
,类型将表示使用哪个列。看起来可怕给我,但也至少是“自虐”。
4.一列每
(只用一行)设定。我没有真正考虑到这一点。
想法?评论?其他a pproaches?
您的应用程序如何知道保存和加载时的值是什么类型?它在问价值之前是否知道它,即事先知道只有一个整数值才有意义?这确实推动了一些选择。 – Mark
是的,它事先知道。基本上,它被密钥(隐含地)定义,例如,关键“DBDefaultNodeID”将始终是“GUID”。但是,未知的密钥应该不会受到影响。 – peterchen