将数据写入数据库时,如果占时无法连接数据库时,怎样保存这些数据

wx_kang 发布于 09/23 09:33
阅读 547
收藏 1

通过java程序将数据存入数据库,当数据库占时无法连接或者其他原因无法将数据写入数据库时,这些数据应该怎么处理,才能保证这些数据不能够丢弃;是不是应该将数据通过file保存到本地,等到数据库正常再写入数据库?

    请问有没有更好的方法处理这样的问题。

加载中
0
JavaGG
JavaGG

你已回答了

wx_kang
wx_kang
啥意思呢,没看懂,哈哈
0
kakai
kakai

数据如果不是太频繁的插入,也就是数据量不是非常庞大的情况,可以考虑依据消息队列延迟写入数据库,消息队列也能一定程度的保证数据完整性,再或者使用redis,redis某种策略也能保证数据完整性,不过会影响缓存性能。

kakai
kakai
回复 @wx_kang : 保证数据完整性的都能把数据同步到磁盘,断电也不怕
wx_kang
wx_kang
这样的话,如果服务器断电了,数据不就全丢啦
0
冰峰雪座
冰峰雪座

存redis中,设置永久缓存,然后定时任务去扫描redis缓存,再存数据库,保存完毕再删除掉

0
KevinBlandy
KevinBlandy

返回给用户异常信息。告知用户存储失败,可以稍后再试。让用户自己处理。

0
花树堆雪
花树堆雪

使用消息队列,先放到消息队列,然后再保存到数据库

0
鲁鲁托马西

不要陷入一个死循环,程序这边提高稳定性,数据库可以用连接池,除非很频繁,不然失败让用户重试就好了。
你想如果磁盘满了,写不进去呢?你永远无法保证100%不丢数据。

0
sprouting
sprouting

直接放到MQ,做解耦

0
流浪汉8023
流浪汉8023

你应该问,数据库如何高可用。弄个主备,集群啥的不就可以了

0
燃烧的时光
燃烧的时光

引用来自“sprouting”的评论

直接放到MQ,做解耦

此方法稳妥,但也许好考虑消息队列的高可用

返回顶部
顶部