필요에 따라 파일에서 컬렉션으로 데이터를 로드하는 가장 효율적인 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/2434971

문제

나는 사용자가 잠재적으로 수천 줄의 여러 파일을 구문 분석할 수 있도록 하는 Java 프로젝트를 진행 중입니다.구문 분석된 정보는 다른 개체에 저장된 다음 컬렉션에 추가됩니다.

GUI는 이러한 모든 개체를 한 번에 로드하고 메모리에 보관할 필요가 없으므로 파일에서 데이터를 로드/언로드하여 사용자가 요청할 때만 데이터가 컬렉션에 로드되도록 하는 효율적인 방법을 찾고 있습니다. .

나는 지금 단지 평가 옵션일 뿐입니다.또한 데이터의 하위 집합을 컬렉션에 로드하고 이를 GUI에 표시한 후 이전에 관찰한 데이터를 다시 로드하는 가장 좋은 방법인 경우도 생각해 보았습니다.파서를 다시 실행/컬렉션 채우기/GUI 채우기?아니면 컬렉션을 메모리에 유지하거나 컬렉션 자체를 직렬화/역직렬화하는 방법을 찾으시나요?

일종의 데이터 필터링이 수행되면 데이터 하위 집합을 로드/언로드하는 것이 까다로울 수 있다는 것을 알고 있습니다.ID를 기준으로 필터링한다고 가정하면 새 하위 집합에는 이전에 분석된 두 하위 집합의 데이터가 포함됩니다.전체 데이터의 마스터 복사본을 메모리에 보관하므로 문제가 되지 않습니다.

나는 대량의 데이터를 처리할 때 Google 컬렉션이 훌륭하고 효율적이며 많은 일을 단순화하는 방법을 제공하므로 컬렉션을 메모리에 유지할 수 있는 대안을 제공할 수 있다는 것을 읽었습니다.이것은 단지 일반적인 이야기입니다.어떤 컬렉션을 사용할지에 대한 질문은 별개의 복잡한 문제입니다.

이러한 유형의 작업에 대한 일반적인 권장 사항이 무엇인지 알고 계십니까?비슷한 시나리오로 어떤 일을 했는지 듣고 싶습니다.

필요한 경우 더 구체적인 내용을 제공할 수 있습니다.

도움이 되었습니까?

해결책

다음과 같이 데이터베이스를 애플리케이션에 내장할 수 있습니다. HSQLDB.이렇게 하면 처음에 파일을 구문 분석한 다음 SQL을 사용하여 간단하고 복잡한 쿼리를 수행할 수 있습니다.

HSQLDB(HyperSQL DataBase)는 최고의 SQL 관계형 데이터베이스 엔진 Java로 작성되었습니다.JDBC 드라이버가 있습니다. 거의 완전한 ANSI-92 SQL을 지원합니다. (BNF 트리 형식) 및 많은 SQL : 2008 향상. 메모리 및 디스크 기반 테이블을 제공하고 임베디드 및 서버 모드를 지원하는 작고 빠른 데이터베이스 엔진을 제공합니다..또한 다음과 같은 도구가 포함되어 있습니다. 명령줄 SQL 도구 및 GUI로 사용 쿼리 도구.

다른 팁

수많은 데이터, 많은 파일이 있고 메모리가 부족한 경우 파일의 초기 스캔을 수행하여 인덱싱 할 수 있습니다. 파일을 라인 피드별로 레코드로 나누고 레코드를 읽는 방법을 알고 있다면 바이트 위치별로 레코드를 색인 할 수 있습니다. 나중에, 특정 Indeces 세트를 읽으려면, 읽어야 할 바이트 범위를 찾아 파일의 입력 스트림에서 읽을 수있는 바이트 범위를 찾아 빠르게 조회 할 수 있습니다. 더 이상 해당 항목이 필요하지 않으면 GCED가됩니다. 당신은 당신이 힙에 필요한 것보다 더 많은 품목을 가지고 있지 않을 것입니다.

이것은 간단한 솔루션입니다. 더 많은 기능을 제공 할 라이브러리를 찾을 수 있다고 확신합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top