处理大量数据和数组的最佳方法是什么?

时间:2018-03-21 02:02:58

标签: java mysql arrays jpa

我正在处理一个处理大量数据的java项目。更具体地说,它处理了很多矢量对象。每个矢量对象包含以下属性:

public class Vector{
    private final int dimension;
    private short[] sparseOffsets;
    private boolean isSparse;
    private float[] coordinates;

    ...
}

这个矢量对象上的数组可能变得非常大(我们说的是每个大小为10,000),我们一次处理数百万个向量。显然,由于这些矢量对象的数量和数组的大小,我的内存已耗尽。我尝试序列化它们但经过一周的等待后,代码仍在序列化这些矢量对象。

我正在考虑用JPA实现MySQL数据库。我的第一个问题是,这是处理这些大量数据的理想途径吗?

第二个问题是,我如何将这些大数组存储在数据库中?

我找到了一个关于员工对象的示例,该员工对象包含一系列员工课程并使用一对多关系。它看起来像这样: enter image description here

所以基本上我会将这些数组转换为arraylists并使用@ElementCollection标记。这是将这些大数组存储在数据库中的好方法吗?

1 个答案:

答案 0 :(得分:1)

没有一个单一的最好的'这里的方式;但数据库的全部意义在于处理大量数据,并只读入您当前需要处理的内容。

不要期望在这篇文章中有完整的教程,因为这是不可能的,但我从三个表开始:一个基表持有标量信息,如' isSparse'和'维度',但最重要的是,' id'对于那个向量。然后是另外两个表,它们提供了' id' - > ' sparseOffset'并且' id' - > '坐标'

我是一名数据库新手,所以欢迎专家进行更正,但希望这会给你一个起点。