2014-02-08 3 views
0

기본적으로 사용자가 브라우저에서 그래프를 만들 수있는 웹 응용 프로그램을 개발 중입니다. 서버에서 그래프는 기본적으로 노드 목록이고 각 노드에는 가장자리 목록이 있습니다. 사용자가 생성하거나 삭제하는 각 노드 또는 에지는 Ajax를 통해 서버에 전달되므로 서버는 Java 객체로 표시되는 동일한 그래프를 구성 할 수 있습니다. 이 응용 프로그램은 데스크톱 버전의 웹 버전입니다. 그래서 나는 그래프를 "저장"하는 옵션을 사용자에게 제공하고 싶습니다. 내 초기 아이디어는 사용자가 저장 버튼을 클릭 할 때 데이터베이스에 객체를 유지하지만이 경우 사용자 세션에 그래프를 유지해야합니다.전체 그래프를 Java HttpSession에 저장할 수 있습니까?

그래서 http 세션 내에 그래프 (노드와 에지의 집합 임)를 저장할 수 있습니까? 아니면 원하는 것을 얻기위한 더 좋은 방법이 있습니까?

Obs : 데이터베이스에서 그래프를 직접 조작하려고합니다. 즉, 그래프가 항상 유지되고 사용자 세션이 만료되면 아직 저장되지 않은 경우 데이터베이스 그래프를 삭제합니다.

+1

서버의 대화 상태를 유지하는 것은 항상 확장성에 부정적인 영향을 미치며 더 많은 서버 리소스를 제공해야합니다. 나는 당신이 클라이언트에서 완전한 그래프의 상태를 유지하고 있다는 것을 이해한다. 이미 달성했다면 사용자가 그래프를 저장하지 않는 한 서버와 상호 작용하면 안된다고 생각합니다. – Ralf

+0

그 가능성을 고려하지 않았다고 생각합니까? 나는 그것을 정확하게 할 수는 없지만, 나는 그것을 거의 만들 수있다. 감사. –

답변

1

답변은 앱의 규모에 따라 다릅니다. 당신이 세션에서 정보를 저장하는 모든 동시 사용자

에 대한 세션을 유지하기에 충분한 메모리가 하나 개의 서버가있는 경우

이 할 수있는 가장 쉬운 방법입니다. 그래프가 직렬화 가능하고 Servlet (또는 J2EE) 컨테이너가 나머지를 차지하도록하십시오. 데이터에 대한 일부 사용자 정의 알고리즘을 구현하면 httpsession 지속성을 지원할 수 있습니다.

당신이 성장 경우 앞에 부하 분산 장치와 하나 개 이상의 서버가 나 그래프가 메모리에 맞지 않는 경우입니다

큰. DB 또는 파일러 중 일부 공유 저장 장치에 저장하고 키 조회로 검색하십시오. 1~2킬로바이트 완전히 HTTP 쿠키에 넣어으로 당신이 당신의 전체 그래프를 압축 할 수있는 방법을 찾을 경우

멋진 트릭을

를 DB/파일 조회를 최소화하고 메모리에 최근 그래프를 캐시 끈적 세션을 사용하는 것이 좋습니다, 브라우저가 모든 요청에 ​​대해 귀하에게 답장을 보냅니다. 귀하의 서버는 무국적이며 DB가없고 세션 유사성 문제가 없습니다.

+0

내 응용 프로그램이 이미 데이터베이스를 사용할 준비가 되었다면 지금 그렇게하는 것이 가장 좋습니다. –

+1

1 개 이상의 서버를 배포해야만 DB에 신경 쓰지 않을 것입니다. –

+0

사용자가 그래프를 광범위하게 조작해야하므로 내 서버가 많은 요청 (많은 공통 사이트 이상)을 받게됩니다. 데이터베이스를 다룰 때 병목 현상이 될 수 있다고 생각하십니까? –

관련 문제