다중 행 스키마로 전환하기
다중 행 스키마 구성은 데이터베이스 용량에 의해서만 경계가 지정되는 무제한의 데이터를 애플리케이션에 저장하는 것을 지원합니다. 애플리케이션은 전체 레코드 대신에 개별 필드를 읽을 수 있으며, 이는 불필요한 Java™ 오브젝트 직렬화를 피하여 성능을 개선하는 데 도움이 됩니다. 다중 행 스키마 구성을 사용하여 세션 오브젝트의 각 속성을 데이터베이스에 자체 행에 저장하도록 세션 관리 기능을 구성하십시오.
이 태스크 정보
남아 있는 유일한 실제 한계는 세션 속성 오브젝트의 크기입니다. 다중 행 스키마에는 잠재적으로 특정 사용 시나리오에서의 성능 장점이 있습니다. 예를 들어, 대량의 데이터가 세션에 저장되지만 HTTP 요청을 처리하는 지정된 서블릿 중에는 소량의 데이터에만 특정적으로 액세스하는 경우입니다. 이러한 시나리오에서는 불필요한 Java 오브젝트 직렬화를 피하는 것이 성능에 유익합니다.
더 큰 세션 레코드를 허용하는 것뿐만 아니라 다중행 스키마를 사용하면 성능 이득을 만들 수 있습니다. 그러나 다음 테이블에 표시된 대로 단일 행에서 다중 행 스키마로 전환하려면 약간의 작업이 필요합니다.
기본적으로 단일 세션은 세션을 보유하는 데 사용되는 데이터베이스 테이블에서 단일 행으로 맵핑됩니다. 이 설정을 사용하면 WebSphere® Application Server가 액세스할 수 있는 사용자 정의된 애플리케이션 특정 데이터의 양에 제한이 있습니다.
어떤 옵션이 애플리케이션의 필요에 가장 적합한지를 확인하는 동안 한 데이터베이스에는 직접 단일 행 사용을 구성하고 또 다른 데이터베이스에는 다중 행 사용을 구성하는 것을 고려하십시오. 사용된 데이터 소스를 전환하여 코드에서 이를 수행한 다음 성능을 모니터하십시오.
프로그래밍 문제 | 애플리케이션 시나리오 |
---|---|
단일 행 사용 이유 |
|
단일 행을 사용하지 않는 이유 | 세션당 저장된 데이터의 2MB 한계. |
다중 행 사용 이유 |
|
다중 행을 사용하지 않는 이유 | 데이터의 크기가 작으면 모든 것을 한 행에 저장할 수 있는 데도 다중 행 읽기라는 추가적인 오버헤드를 원하지 않을 것입니다. |
다중 행을 사용하는 경우에는 순환 참조를 방지하기 위해서는 애플리케이션 데이터 오브젝트에 서로에 대한 참조가 없도록 설계하십시오. 예를 들어, 두 개의 오브젝트 A와 B를 HttpSession.put(..) 메소드를 사용하여 세션에 저장하는 중이고, A에 B에 대한 참조가 포함되어 있다고 가정해 보십시오. 다중 행의 경우에는 오브젝트가 데이터베이스의 다른 행에 저장되므로, 오브젝트 A와 B가 나중에 검색될 때 A와 B 사이의 오브젝트 그래프가 저장된 것과 다릅니다. A와 B는 독립된 오브젝트로 작동합니다.