写在文章开头
你好,我叫sharkchili,目前还是在一线奋斗的Java开发,经历过很多有意思的项目,也写过很多有意思的文章,是CSDN Java领域的博客专家,也是Java Guide的维护者之一,非常欢迎你关注我的公众号:写代码的SharkChili,这里面会有笔者精心挑选的并发、JVM、MySQL数据库专栏,也有笔者日常分享的硬核技术小文。
问题简介
我们直接引入本文要探讨的问题,现在要求用最快的速度把10亿条左右的数据存到数据库中,对应的该实现有着以下几个要求:
- 每条数据转为数据库数据大约
1k
。 - 数据都存在
txt
文档中,需要进行解析后才能存到数据库中。 - 所有数据对应的文档都存在
Hdfs
或S3
分布式文件存储里。 - 数据被分到100个文件中,通过文件的后缀确定这些数据的批次。
- 要求保证有序导入,数据尽可能不重复。
- 存储的数据库是
MySQL
。
分析问题点
针对需求整理分析,我们对该功能提出以下几个问题点:
- 如何插入?是批量插入还是逐条插入?
- 这种数据量是否需要考虑一下分库分表?
- 插入时是用串行插入数据表还是并行插入数据表?
- MySQL存