首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Java实现订单数据导出自定义文件格式二进制数据

背景

现有系统中已经有每天定时备份当日成交订单数据到数据库,但是为了数据更安全一些,会单独备份到文件系统上一份,这样可以把2份数据互为备份,如果一侧发现数据丢失,可以去另外一份中去查找丢失的数据。

实现

由于订单数据量比较大,最多的时候每天会有几百几千万条数据,如果把订单数据以字符串形式存储为文本文件的话, 会占用很多的存储空间。为了节省磁盘空间, 写成二进制数据文件会节省部分空间。 java中写二进制文件的话,可以有多种方式, 我采用的是使用RandomAccessFile读写二进制文件流。

首先定义了一些常类。如下;

主要定义了数据类型,方便后面读写使用。

紧接着定义了一个通用的文件头定义,FileStruct,针对每种数据类型都有一个对应的文件对象,主要包括索引文件、数据文件对象及当前写指针的偏移量位置。

然后定义一个文件脚手架类,FileUtils,主要提供写文件的一些方法。

真正的实现类,MarketOrderIndexUtils, 主要是针对某一种数据类型,进行数据保存到文件操作。具体逻辑和数据定义进行硬性绑定,这里是第一版本的实现,后续通过注解反射实现的时候,会脱离硬编码实现。 定义如下:

这样就把数据写入到二进制文件里面去了。

后续再把读取,也就是dump的操作代码写出来,主要通过文件头实现文件合法校验,挨个读取数据后,把对象创建出来。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20200901A0K26R00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券