2011-01-29 4 views
0

내 사용자의 모든 검색 내역을 추적하여 다시 표시해야합니다. 검색 항목 당 한 행은 빨리 저장하고 커지기 때문에 저장하지 않는 것이 가장 좋습니다. 이런 종류의 데이터를 저장하기 위해 어떤 다른 기술이 있습니다. 이것은 한 번 쓰고 항상 읽습니다. 검색 기록이 여러 페이지에 표시됩니다.검색 기록 - 스키마 제안?

답변

1

비즈니스 요구를 soluton과 잠재적 인 기술적 인 문제 (즉, 데이터베이스 성능)와 구분하여 시작하겠습니다.

비즈니스 요구 사항은 문제를 분명히 밝혀야하며 예상되는 결과는 무엇입니까? 예를 들어 모든 검색 기록을 유지해야하지만 UI의 눈에 잘 띄는 부분에만 최신 50을 표시해야합니다. 검색 히스토리의 나머지는 어떤 형태의 그룹핑 (I.E., 년 및 월)으로 표시 될 수 있으며, 별도의 스크린/리포트로부터 UI 내에 만 표시 될 수있다.

이 필요성을 이해하면 가장 간단하고 가장 적합한 해결책을 제시합니다. 트랙에서 성능이 문제가되는 경우 항상 데이터를 세로 또는 가로로 분할 할 수 있습니다. 최신 50 개의 검색만을 유지하는 위의 예제를 사용하면 아카이브 된 검색에 대한 최신 및 현재 정보와 다른 테이블을 포함하는 하나의 테이블로 다중 테이블 솔루션을 작성할 수 있습니다. 그런 다음 아카이브 된 검색 기록을 XML 데이터 유형의 일부 양식으로 저장할 수 있습니다.

희망이 있습니다.

+0

내가 아는 한 XML 데이터를 질의 할 수 없습니까? 이렇게하면 보관 된 데이터가 올바른 테이블로 다시 옮겨 질 때까지 낭비가 될 것입니다. – SeanD

1

빠르게 커지면 어떨까요? 얼마나 큰가? 얼마나 느린가?

1 억 개의 행을 포함하는 테이블에서 100 개의 행을 검색하는 데 걸리는 시간을 테스트 해 보셨습니까? 인덱스에 대해 얼마나 알고 있습니까? 정규화 된 디자인 정보 스타 스키마 설계 정보

+0

100 행이 아닙니다. 누구든지 검색하거나 입력 한 모든 단어를 로깅하는 것은 평생입니다. Iam이 뭔가를하기 전에 이러한 요구 사항에 가장 적합한 디자인을 찾고 있습니다. – SeanD

관련 문제