我有一種情況,我需要存儲一些數據,這些數據不會......真正適合數據庫表。這有點太抽象了,我沒有足夠的知識來分解它,以致它可以分解成表格和列。有問題的對象是System.Linq.Expressions.Expression<T>
。是否可以在數據庫中使用反序列化的文件引用?
我發現使用MetaLinq
這種序列化到XML的一種手段。它運行得非常好,雖然它產生的xml過於肥胖,但我有點期待這很像表達式那樣複雜。一個溫和的表達結果約19 kb。
所以我的想法是對文件使用gzip壓縮。這工作得很好,它可以節省大約2kb。
那麼,我的實際問題是:這是不好的做法或「危險」的做法基本上是使用一個表列引用的文件名反序列化的對象?就像我會有一個表格表,它會有一個文件名,當表達式被調用時它會執行gzip解壓縮,反序列化它,並返回對象。
這似乎是一個理想的解決方案,但它需要大量的文件I/O和很多不同的壓縮/荏苒/系列化的。我想知道如果我能得到更有經驗的數據庫管理員的意見。我正在使用Fluent nHibernate
作爲我的ORM映射器。
甲骨文實際上允許一個通過[BFILE數據類型](http://www.dba-oracle.com/t_bfile_external_lob.htm)引用外部文件中的表。 AFAIK SQL Server不執行此操作;但您應該注意到通過[XML Data Type](http://msdn.microsoft.com/zh-cn/library/ms189887.aspx)將XML數據存儲到表中是完全可能的。 – rsenna 2011-04-06 18:19:00
@rsenna:謝天謝地,自SQL Server 2008以來,MSSQL提供了一個像Oracle的BFILE數據類型的系統。在MSSQL的情況下,它通過[FILESTREAM](http://msdn.microsoft.com/en-us/library/cc949109.aspx)完成。最好的部分是,您可以通過T-SQL或直接通過SMB **和**訪問它,備份數據庫時將備份它。 – Joshua 2011-04-06 20:23:54
@Joshua:謝謝你的信息,不知道。 – rsenna 2011-04-07 16:11:32