探讨:关于中小量数据的备份,再此提供一种解决方案
再此提供一种备份还原,方式,谨拿出来和大家探讨,寻求更好解决办法
需求:某人事管理系统,需要定期对某一个员工的联系人资料-->联系人资料(跨必须热播资料表)及联系人对应的电话(人员电话表),进行备份操作。
难点:1.由于用户较多,且每个用户的联系人资料大多在1000人左右,而且可能会备份多次,将会造成大量的冗余数据。
2.正常情况下所有用户的联系人在数在100万左右,电话则大约200万,如果直接进行备份的话,数据异常庞大,恢复操作
将异常缓慢,且~管理不方便。
3.存在联系人-》联系人电话的 1对多 对应关系。
解决方案:1.采用xml方式表示 人员-》电话一对多对应关系
2.将所有需要备份的数据转换为xml (采用XStream转换,之前项目一直使用,技术比较成熟)
3.将转换后的xml进行压缩 (采用jdk uitl工具包中GZIPOutputStream 压缩)
4.将压缩后的数据存储为CLOB格式(Oracle 11g数据库)
实施: 由于是现实中正在开发的项目,所以只提供部分修改后的代码,但也足够大家摸索使用了,请大家理解,再此主要提供该问题的思路,技术不是难点。
1.xStream 采用Anotation注解方式转换xml
2.压缩率问题:800+个联系人,转换为xml后,字符数为93万+,压缩后为9.1万左右,压缩率10倍+
3.存储方式,CLOB类型在存储时和普通String Number 类型,不同,具体可Google.
需求:某人事管理系统,需要定期对某一个员工的联系人资料-->联系人资料(跨必须热播资料表)及联系人对应的电话(人员电话表),进行备份操作。
难点:1.由于用户较多,且每个用户的联系人资料大多在1000人左右,而且可能会备份多次,将会造成大量的冗余数据。
2.正常情况下所有用户的联系人在数在100万左右,电话则大约200万,如果直接进行备份的话,数据异常庞大,恢复操作
将异常缓慢,且~管理不方便。
3.存在联系人-》联系人电话的 1对多 对应关系。
解决方案:1.采用xml方式表示 人员-》电话一对多对应关系
2.将所有需要备份的数据转换为xml (采用XStream转换,之前项目一直使用,技术比较成熟)
3.将转换后的xml进行压缩 (采用jdk uitl工具包中GZIPOutputStream 压缩)
4.将压缩后的数据存储为CLOB格式(Oracle 11g数据库)
实施: 由于是现实中正在开发的项目,所以只提供部分修改后的代码,但也足够大家摸索使用了,请大家理解,再此主要提供该问题的思路,技术不是难点。
1.xStream 采用Anotation注解方式转换xml
@XStreamAlias("TEMPCLASS")
public class TEMPCLASS //类名的注解方式
@XStreamAlias("T_TEST_PROPERTY")
private String T_TEST_PROPERTY;//普通属性注解方式
@XStreamImplicit(itemFieldName = "tellist")
private List<tel> tellist;//1对多部分注解方式
//电话部分的同普通属性注解方式
2.压缩率问题:800+个联系人,转换为xml后,字符数为93万+,压缩后为9.1万左右,压缩率10倍+
//部分代码
GZIPOutputStream gzip = new GZIPOutputStream(xxxxx);
gzip.write(str.getBytes("UTF-8"));
3.存储方式,CLOB类型在存储时和普通String Number 类型,不同,具体可Google.
...全文
相关推荐
实验二十五:内部FLASH模拟EEProm,flash实训,C,C++
STM32F030内部FLASH模拟EEProm
RAID技术全程指南
该书详细介绍了RAID的关键技术。其中还包括了RAID 0, 1, 2, 3, 4, 5 的创建步骤
newGazz
gazzStore
对等价无穷小量代换的思考
对等价无穷小量代换的思考,郑立飞,,本文通过例子阐明了利用等价无穷小量代换在求极限时会遇到的问题,并通过泰勒公式,回答了在有加减的情况下不能随便使用等价无穷
hxd019d传输小量数据
通过hxd015d自由传输数据,由于该模块限制,只能传输固定码,在该代码中做出更改,可自由传输,小量数据,I2C通讯


