2012-09-27 3 views
3

고정 된 간격으로 텍스트를 보내는 응용 프로그램을 디자인하고 있습니다. 이 간격 동안 응용 프로그램은 데이터를 수집하여 임시로 버퍼에 저장 한 후 데이터베이스에 저장합니다.자바에서 데이터 전송 버퍼의 일반적인 구현은 무엇입니까?

나는 그들을 메모리에 저장하려고하지 않습니다.

현재 H2 임베디드 데이터베이스를 사용하려고합니다.

Java에서 버퍼 구현에 일반적으로 사용하는 것은 무엇입니까? 일반 텍스트 파일? 로그 파일?

+0

버퍼는 일반적으로 파일 시스템에 쓰거나 데이터베이스에 저장하는 대신 * 사용됩니다. 왜 메모리 내 버퍼를 사용하지 않는가? –

+0

일반적으로 메모리에 버퍼링하여 충분한 메모리가 있는지 확인하십시오. 오랜 시간 동안 저장하는 매우 많은 양의 데이터에 대해서만 파일이나 데이터베이스를 사용합니다. –

+0

내 응용 프로그램은 실행중인 다른 프로그램의 통계 수치를 수집하여 많은 양의 데이터를 생성 할 수 있습니다. – janetsmith

답변

0

메모리 버퍼는 응용 프로그램 요구 사항에 따라 다릅니다. 예를 들어 응용 프로그램이 안정적이어야하며 문제가 발생하여 충돌이 발생할 경우 복구를 관리하면 파일을 사용하는 것이 더 나은 방법이며 일부 데이터가 아직 처리되지 않은 경우 복구 할 수 있습니다.

MOM (Message oriented middlware) 옵션도 있습니다.이 솔루션은 안정성을 필요로하지 않으며 많은 데이터 교환 만 있으면 MOM을 사용할 필요가없는 등 신뢰성을 포함한 많은 이점을 제공합니다. 귀하의 의견을 읽은 후

+0

JMS가 과도하게 보인다. 내 응용 프로그램은 실행중인 프로그램의 정보를 수집하는 작은 유틸리티 프로그램입니다. – janetsmith

+0

예, 그렇기 때문에 작은 응용 프로그램이라면 MOM이 필요하지 않습니다. –

1

, 나는 당신의 문제에 대한 구현이 될 수 있다고 생각한다

는 에 모두 StringBuilder를 보관, 필요한 모든 정보를 수집 곳에서 트랜잭션 서비스를 만들고 정보와 마지막으로 명확를 보내 데이터베이스의 내용, 문제가 발생하면 데이터베이스가 정보를 보존합니다. 즉 안정적인 서비스.

다중 스레드를 사용하여 정보를 복구하는 경우 StringBuilder가 동기화되지 않으므로 솔루션에 StringBuilder에서 작동하는 다중 스레드가있는 경우 클래스를 내부적으로 동기화하거나 StringBuffer를 사용하는 것을 잊지 마십시오 (스레드 안전하지만 느린).

이 정보가 도움이되기를 바랍니다.