存储序列化对象到Oracle数据库(最好是XML) c#
本文关键字:XML 对象 序列化 Oracle 数据库 存储 | 更新日期: 2023-09-27 18:17:36
在我开始写代码来处理这个问题之前,我想要一个关于什么是最好的方法的反馈。
这个问题背后的背景是我想为c#对象创建某种存储,以防程序崩溃和数据丢失。
我想存储一个序列化对象到数据库中,然后能够从ODP查询它。. NET成功反序列化并将其强制转换为相同的对象。
顺便说一下,序列化对象的数据在序列化后大约为50兆字节。用法:每天将存储一个序列化对象,每天最多可检索10次。
我的问题是,如果有人以前这样做过;
- 什么是最好的数据类型来存储它?(我正在考虑序列化成平面XML并将其存储为CLOB/BLOB字符串)
- 最快的方法是什么,或者我需要注意哪些步骤才能使其有效?
- 如果我使用c#序列化和反序列化,我能保证对象是相同的吗(问XML序列化在c#中有多可靠,我正在考虑使用JSon代替)
让我知道你们的想法!
谢谢!
如果您的对象主要是文本,在序列化数据之后(假设所有属性都是可序列化的,XML或JSON都可以),我建议将数据压缩成字节数组并将其存储为二进制。当你检索它的时候,你只需要解压它,然后反序列化它。文本压缩得非常好,尤其是XML,因此您可以将50MB压缩到10MB或更少。
根据你的评论,压缩绝对值得。如果每天只增加10MB左右,听起来不会对数据库产生负面影响——每年只增加几GB。