将序列化对象存储到Oracle DB(最好是XML)C#

时间:2013-06-07 15:25:31

标签: c# oracle xml-serialization odp.net

在我开始编写代码来处理这个问题之前,我想要一个关于什么是最佳方法的反馈。

这个问题背后的背景是我想为C#对象创建某种存储,以防万一程序崩溃并且数据丢失。

我想将 SERIALIZED 对象存储到数据库中,然后能够从ODP.NET中查询它并成功反序列化并将其转换为同一个对象。

顺便说一下,序列化对象的数据在序列化后大约是 50 MEGABYTES

用法: 每天都会存储一个序列化对象,每天最多可以检索10次。

我的问题是,如果有人以前这样做过的话;

  • 用于存储它的最佳数据类型是什么? (我正在考虑序列化为扁平XML并将其存储为CLOB / BLOB字符串)
  • 最快的方法是什么,或者我需要注意哪些步骤才能提高效率?
  • 如果我使用C#Serialize和Deserialize,我保证对象将是相同的(几乎要问C#中XML序列化的可靠性,我正在考虑使用JSon)

让我知道你们的想法!

谢谢!

1 个答案:

答案 0 :(得分:1)

如果您的对象主要是文本,那么在序列化数据之后(假设所有属性都可以序列化,可以使用XML或JSON),我建议将数据压缩为字节数组并将其存储为二进制数据。当你检索它时,你只需解压缩然后反序列化它。文本拉得非常好,特别是XML,所以你可以将50MB降低到10MB或更低。

根据您的评论,压缩绝对是值得的。如果你每天只增加10MB左右,听起来它不会对你的数据库产生负面影响 - 每年只需几GB。