2013-03-24 4 views
0

많은 정보가 담긴 새로운 글로벌 웹 사이트에 대한 프로젝트를 시작합니다. 이 모든 정보는 현지화되어야합니다. 나는 꽤 많은 사이트를 만들고 대부분이 하나 이상의 언어로만 구성되어 있지만 많은 현지화를하지 않았습니다.성능 고려 사항 다중 언어 사이트

국가, 도시, 저장, 제품 및 제품 생산 :

우리는 다음과 같은 데이터를 가정합니다.

엔티티 저장소, 제품 및 제품 생성자에서 데이터를 현지화 할 수 있습니다. 나라의 언어는 필수적이지만 그 옆에 N 개의 추가 언어를 추가 할 수 있습니다. 이 정보는 다른 국가의 사람들에게 정보를 표시하는 데 사용되며이 정보를 검색해야합니다.

내 첫 번째 아이디어는 지역화 된 테이블 당 하나의 ID와 어쩌면 일부 지역화 가능 메타 데이터를 만든 다음 부모 테이블, 국가 코드 및 지역화 된 필드에 대한 참조가있는 하위 테이블을 만드는 것입니다.

이 구조로 인해 조인이 발생할 수 있으며 성능에 나쁜 영향을 미칠 수 있습니다. 누구든지이 구조에 대한 경험이 있습니까? 고려해야 할 사항이 있습니까? 더 나은 방법이 있습니까?

+0

사이트 로컬 리 제이션에 유용합니다. (들판의 라벨 등). 이것은 내용에 관한 것이고 그것은 최선의 방법이 아닙니다. 제안 해 주셔서 감사합니다. 이 아이디어에서 흥미로운 점은 자주 바뀌지 않는다는 사실 때문에 데이터베이스의 모든 언어 자료를 데이터베이스에로드하는 것입니다. – Patrick

답변

1

먼저 퍼포먼스와 관련하여 몇 가지 조인을 던지는 것에 대해 걱정할 필요가 없습니다. 우리가 말했듯이, 조숙 한 최적화는 모든 악의 근원입니다. 먼저 깨끗한 디자인을 만든 다음 성능에 대해 걱정하십시오.

정말로해야 할 일은 정확히 무엇을 현지화하고 왜 그럴까요? LedgerSMB에서 우리가하는 것은 정확히 당신이 제안하는 것입니다. 즉, 사실이있는 테이블 (있는 경우), 그리고 번역이 포함 된 테이블입니다.

모든 것이 잘 작동하도록 유지하는 열쇠는 실제 쿼리 수를 줄이는 것에 대해 생각하는 것입니다. 60 개 정도의 문자열을 가져온 다음 응용 프로그램에서 처리하는 결합을 실행하는 것이 하나의 방법입니다. 성능 측면에서 보면 이 많고 DB에 60 개의 서로 다른 쿼리를 보내어 각각 1 개의 문자열을 가져 오는 것이 나쁘다.

메인 문자열을 .po 파일 등으로 유지하고 해당 지역화 프레임 워크를 사용하십시오. 이것은 둘 중 하나가 아닙니다.

+0

고마워, 너의 제안은 나를 궤도에 다시 데려왔다. 먼저 이상적인 상황으로 가버린 다음 좋은 성능 트릭을 따라갑니다. – Patrick

관련 문제