我需要將鍵值對存儲在數據庫中,其中鍵是例如一個字符串和值可以是多種類型之一(整數,字符串,浮點數/日期,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