我正在使用NHibernate的SQL Server 2008作爲應用程序。在應用程序中,我需要創建一個Info類的多個對象,並在多個地方使用它。我還需要將該對象存儲在數據庫中。在數據庫中存儲對象
Info類有多種類型。
儲存信息類的這些對象我有兩個選擇
- 存儲類
- 商店該類作爲字符串的細節的序列化obejct。
什麼是存儲在數據庫中存儲過的值作爲多個字符串序列化對象的優勢在哪裏?
-RAM
我正在使用NHibernate的SQL Server 2008作爲應用程序。在應用程序中,我需要創建一個Info類的多個對象,並在多個地方使用它。我還需要將該對象存儲在數據庫中。在數據庫中存儲對象
Info類有多種類型。
儲存信息類的這些對象我有兩個選擇
什麼是存儲在數據庫中存儲過的值作爲多個字符串序列化對象的優勢在哪裏?
-RAM
如果你的序列化對象存儲到數據庫:
我您存儲多個字符串,您:
我一定會用關係規範化的形式存儲字符串,然後在.net中構建相應的類生成器。
我肯定會儲存記錄和字段,而不僅僅是代表對象的當前狀態字節(二進制或文本或XML)的塊。
它當然取決於您的業務實體(在您的情況下,信息類)的複雜性,但我真的會避免將其序列化版本保存在1列。
如果您將所有屬性分解到字段中,您可以更好地查詢具有特定值的記錄,並且可以更輕鬆地處理新列和發佈。
例如你在數據庫中保存xaml屬性?而不是保存類,並防止自我創建xaml文件? – 2011-03-08 11:17:20
不,我的意思是,如果你有屬性/字段名稱,姓氏和出生日期的類人,你保存在一個記錄與字段:名稱varchar,姓氏varchar,BirthDate日期時間。我根本不是在談論XAML。 – 2011-03-08 11:21:12
序列化對象(XML) 如果將該類存儲爲XML。你將能夠通過使用Xquery來搜索類的方位。如果你想搜索(有或沒有條件),這種方式是可行的。更重要的是,您可以創建XML列的索引。 XML索引將使您的應用程序更快。
AS字符串 如果您沒有bussines登錄來查看課程內容。
那麼以規範化和關係的方式展開所有屬性也將允許索引像往常一樣,我敢打賭查詢在int或varchar列上比在XML數據列上快得多,這也可能具有不同的實現和查詢語法取決於在數據庫服務器上。 – 2011-03-08 11:23:25
你有沒有想過使用像NHibernate或EntityFramework的OR映射器,而不是創建自己的持久層? – Fionn 2011-03-08 11:10:14
@Fionn - 我們也在使用NHibernate。 – Ram 2011-03-08 11:11:09