关于方法:什么是将大量数据传递给java函数的有效方法?

Whats the efficient way to pass huge data to a java function?

我有一个Java功能,对海量数据进行操作可以是500兆字节。我必须把这个500兆字节的数据传递给Java函数,并在处理Java函数后返回数据。

我的表格格式如下

1
2
3
4
col1  col2 col3 col4 col5 col6
 3     5    2     5    1   6
 7     5    6     8    3   8
 5     3    7     9    8   1

我几乎没有什么想法,但不知道哪一个是有效的,以及如何实现像我需要哪些Java API。

  • 将数据转换为Java对象(每行一个对象为同一类)。然后将对象作为数组传递给Java函数。
  • 从表格数据中准备XML文档,并将XML文档传递给Java函数。Java函数内部从XML文档中提取对象。
  • 将表格数据保存到文件中,并将文件作为参数输入到Java函数中。
  • 这些想法在我的头脑中,如果有人能提供上述3种方法的利弊或建议一些新的方法,我会很感激。


    由于您有大量的数据以表格格式,您是否考虑使用Java数据库(数据库)?当然,这取决于您要做什么样的处理,需要开发多长时间,以及您对数据库/SQL的了解程度,但听起来您要逐行读取数据,数据库是一种很好的方法,尤其是对大量数据而言。

    这里有关于JDBC API的信息,关于如何使用它:如何使用它:HTTP://DOCS.Oracle .COM/JavaSe/TutoRale/JDBC/ OutVIEW/NETXX.HTML

    从Java路径:

    The JDBC API is a Java API that can access any kind of tabular data, especially data stored in a Relational Database.

    要记住的一些事情:

    • 您必须了解/学习SQL或其他查询语言。
    • 您将不得不设计并构建数据库的结构,尽管您可能可以使用与XML文件中计划的结构类似的结构。
    • 钥匙!键是数据库中每行的唯一标识符,如ID号。我强烈建议您添加一个单独的字段/列来用作键,特别是当您不熟悉数据库时。它们会稍微增加数据库的内存开销,但是作为回报,您不必担心识别唯一的行,并且可以快速返回到已经搜索过的行。
    • 您可以选择要引入的数据-不要引入超过您需要的数据。


    如果您正在从一个文件或流中读取数据,那么您可以将该文件映射到内存中。所以它不会读取整个文件。看看这里


    传递数组只会传递一个不涉及任何数据复制的引用,因此它是尽可能高效的。对数组的任何修改都将在引用的数组上完成。无需退货。


    如果您正在考虑通过Java函数/方法处理数据,请考虑立即处理数据块。同样,您可以根据一些计算确定块的大小,比如从10KB开始,然后查看性能和计算结果。这取决于执行环境。有几种方法可以从文件/流/数据库(即使是远程服务器)中获取数据块。您需要发布有关问题的更多详细信息,以获得更好的建议。