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

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

我的表格格式如下

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中没有函数,它只有方法。stackoverflow.com/a/16335031/1055241

从技术和历史上来说,GPRathour是正确的(如果你谈到Java语言),尽管你可以认为静态方法服务于函数的目的。无论如何,术语现在是一个相互矛盾的大混乱…

@gprathour是的…一个Java静态方法几乎是一个函数。我们不要陷入术语之争。

你能解释一下你想做什么以便让答案适应你的应用程序的上下文吗?

由于您有大量的数据以表格格式,您是否考虑使用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号。我强烈建议您添加一个单独的字段/列来用作键,特别是当您不熟悉数据库时。它们会稍微增加数据库的内存开销,但是作为回报,您不必担心识别唯一的行,并且可以快速返回到已经搜索过的行。

您可以选择要引入的数据-不要引入超过您需要的数据。

我非常支持这个想法,尽管我从问题描述中解释了进行处理的方法已经存在,因此并不是设计用于数据库的。所以这也需要重新设计现有的代码。

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

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

非常感谢你的建议。如果我要调用的函数在另一台服务器上,您能告诉我这个方法是否适用吗?

@Surjyanarayanapadhi如果您需要将500MB传递给另一个服务器进行方法调用,我会认真地建议您仔细研究一下您的体系结构。

不,您不希望通过某些RPC机制传递500MB。

@Tassobassoukos这不一定是一个架构问题。有很多应用程序需要传输大量数据作为其需求的一部分(例如视频流服务)。我建议您使用输入/输出流,这是用于数据传输的Java机制。使用流,您将有机会控制数据流,在发送/接收之前对其进行操作,等等。

@到目前为止,我知道有必要(我在98年在不同国家的气象模型的不同阶段之间转移了这个数量-有趣的时候)-只是作为一个函数调用做它是…次优,主要从内存使用的角度来看。

也可以考虑Java序列化!!

@Tassobassoukos首先需要做什么?我的意思是,除非必要,否则我将避免传递大约1/2 GB的数据。

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值