2014-06-25 2 views
1

나는 엄청난 양의 데이터를 처리하는 자바 함수가 500MB가 될 수도있다. 이 500MB의 데이터를 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 

를 다음과 같이 표 형태 인 자바 내가 사람들을 위해 필요한 API있다.

  1. 데이터를 Java 객체 (각 클래스는 같은 클래스의 객체)로 변환합니다. 그런 다음 객체를 Java 함수에 배열로 전달하십시오.
  2. 표 형식의 데이터에서 XML 문서를 준비하고 XML 문서를 Java 기능에 전달하십시오. inside java function은 XML 문서에서 객체를 추출합니다.
  3. 표 형식의 데이터를 파일로 저장하고 파일을 java 함수의 인수로 입력하십시오.

내가 생각하는 이러한 아이디어는 3 가지 방법의 장단점을 제시하거나 새로운 방법을 제안 할 수 있다면 나에게 감사 할 것입니다.

+0

좋은 답변을 제공하기 위해서는 훨씬 더 세부적인 내용이 필요합니다. 어디에서 데이터를 가져 옵니까? 그 기능은 무엇입니까? – Henry

+0

나는 당신이 당신의 아이디어를 시험해보아야한다고 생각한다. 수행하려는 처리 조!에 따라 다 (니다. –

+0

당신을 바로 잡기 위해, Java에는 아무런 기능이 없습니다. ** 메소드 ** 만 있습니다. http://stackoverflow.com/a/16335031/1055241 – gprathour

답변

1

배열을 전달하면 데이터 복사가 필요 없으며 최대한 효율적으로 참조가 전달됩니다. 배열에 대한 수정은 참조 된 배열에서 수행됩니다. 아무것도 반환 할 필요가 없습니다.

+0

제안에 감사드립니다. 내 전화 기능이 다른 서버에있는 경우이 방법을 적용 할 수 있는지 알려 주시기 바랍니다. –

+2

@SurjyaNarayanaPadhi 메소드 호출을 위해 500MB를 다른 서버에 전달해야하는 경우 아키텍쳐에 대해 자세히 살펴 보는 것이 좋습니다. –

+0

아니요, 일부 RPC 메커니즘을 통해 500MB를 전달하고 싶지는 않습니다. – Tarik

1

파일 또는 스트림에서 데이터를 읽는 경우 파일을 메모리에 매핑 할 수 있습니다. 따라서 전체 파일을 읽지는 않습니다. 살펴보기 here

1

많은 양의 데이터가 테이블 형식이므로 Java DB (데이터베이스)를 사용 해본 적이 있습니까? 이것이 어떤 종류의 처리를 하느냐, 얼마나 오래 개발해야하는지, 그리고 데이터베이스/SQL을 얼마나 잘 알고 있는지에 달려 있지만, 행과 데이터베이스별로 데이터를 읽는 것처럼 들린다. 이 작업을 수행하는 좋은 방법입니다. 특히 많은 양의 데이터가 필요합니다. 자바 트레일에서 http://docs.oracle.com/javase/tutorial/jdbc/overview/index.html

을 :

JDBC API는 그 수있는 자바 API이다

그것을 사용하는 방법에 대한 단계, 자바 트레일 여기 JDBC API에 대한 정보가 모든 종류의 테이블 형식 데이터, 특히 관계형 데이터베이스에 저장된 데이터에 액세스합니다. 명심해야 할

몇 가지 : 당신은/알고 SQL 또는 다른 쿼리 언어를 배울 필요가

  • .
  • XML 파일에서 계획하고있는 것과 비슷한 구조를 사용할 수도 있지만 데이터베이스 구조를 설계하고 빌드해야합니다.
  • KEYS! 키는 ID 번호와 같이 데이터베이스의 각 행에 대한 고유 한 식별자입니다. 특히 데이터베이스를 처음 사용하는 경우 키로 사용할 별도의 필드/열을 추가하는 것이 좋습니다. 그것들은 데이터베이스의 메모리 오버 헤드를 약간 늘리지 만 그 대가로 고유 행을 식별하는 것에 대해 걱정할 필요가 없으며 이미 검색 한 행으로 빠르게 되돌아 갈 수 있습니다.
  • 가져올 데이터를 선택하여 선택할 수 있습니다. 필요 이상으로 가져 오지 마십시오.
+0

질문 아이디어에서 처리 방법이 이미 존재하므로 데이터베이스에서 작동하도록 설계되지 않았지만이 아이디어를 많이 지원합니다. 따라서 기존 코드도 재 설계해야합니다. – Gimby

0

Java 함수/메소드로 데이터 처리를 고려하는 경우 데이터 덩어리를 한꺼번에 처리하도록 고려하십시오. 다시 Chunk의 크기는 10KB로 시작하는 것과 같은 계산을 기반으로 결정하고 성능을 확인하고 계산할 수 있습니다. 실행 환경에 따라 다릅니다. file/stream/Database에서 데이터 청크를 가져 오는 방법에는 여러 가지가 있습니다. (원격 서버 인 경우에도 마찬가지입니다.) 더 좋은 제안을 얻으려면 문제에 대한 자세한 정보를 게시해야합니다.

관련 문제