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。
这些想法在我的头脑中,如果有人能提供上述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开始,然后查看性能和计算结果。这取决于执行环境。有几种方法可以从文件/流/数据库(即使是远程服务器)中获取数据块。您需要发布有关问题的更多详细信息,以获得更好的建议。