2012-09-11 3 views
-1

이것은 정확하게 질문이 아니지만이 문제에 대한 의견을 찾고 있습니다.xml 열이있는 mysql 테이블 구조?

저는 회사에서 첫 작업을하고 있습니다. 그들은 저에게 mysql db 전체 텍스트 검색을 최적화하도록 요청했습니다.

이제 데이터베이스 구조를 보자 마자 얼굴 표정이 그대로 바뀌 었습니다.

자동차 부품 데이터베이스이며 1 테이블과 3 열 (ID, part_number, xml)을 가지고 있습니다.

나는 이것을 이해하지 못하거나 아니면 ALL을 쓰려고하는 것일까? 나는 열정적 인 XML 텍스트 안에 각기 다른 제품에 대한 모든 정보를 말하고 있는가? 나는 그것을 얻지 못하고, 명확한 설명을 원한다. 제품마다 다른 정보 (예 : 색상, 크기, 제조업체 등)를 각기 다른 열에 넣지 않았습니까? 또는 객체 기반 비 관계형 DB (Mongo와 같은)를 사용합니까? 이 항목을 사용하여 XML 텍스트의 "전체 텍스트"검색이 관련 항목을 반환하도록하려면 '일반적인'방법입니까?

나는 정말 어리 석고 받아 들일 수 없거나 DB가 완전한 의미가 아니라는 것을 나에게 알려주십시오.

미리 감사드립니다.

+1

질문을 더 명확하게 설명하려면 http://sqlfiddle.com/과 같은 것을 사용해야합니다. –

답변

0

다른 부품의 속성 수는 끝이없는 목록이며 일부는 많은 부품에서 공통적이며 일부는 그렇지 않은 것이 있습니다. 속성 당 컬럼을 넣으려고하면 수천 개의 컬럼으로 끝납니다 - 일부 RDBMS - 드문 드문 한 컬럼/테이블에서이를 처리 할 기술적 인 부분이 있습니다.

또 다른 대안은 part_id, attribute, value를 저장하는 속성 테이블로 속성을 정규화하는 것입니다. 매우 큰 키 - 값 테이블이되어 급격히 커질 것이며 그 중 일부는 다른 유형 일 수 있으며 상당히 클 수 있습니다. 그들은 또한 복제 할 것이므로 다시 정상화하고 다른 유형에 대한 값 필드가 여러 개 있거나 변형 데이터 유형을 저장해야하는 고통스러운 성과 및 무시 무시한 시나리오의 토끼 구멍에 빠져 있다는 것을 깨닫게 될 것입니다.

마지막 대안은 필드/스토어 XML을 FTS로 보내는 것입니다. 이는 사용자가 선택한 사람을 찾은 것입니다.

누군가가 관계형 저장소에있는 동안 RDBMS에서 처음으로 볼 수는 있지만 마지막 순간은 아닐 수도 있습니다. 제한 사항 내에서 원래 작성자와 다르게 수행 할 방법을 고려하십시오. RDBMS의).

이질적인 속성을 가진 항목에 대한 속성 정보를 저장하는 것은 항상 문제가됩니다. 과거의 모든 세 가지 옵션을 보았습니다.

+0

자주 사용되는 검색 기준 중 가장 많이 사용되는 검색 기준을 파악하고 나머지는 XML로 유지하는 것이 더 좋지 않습니까? 여전히 모든 품목에 대한 이름, 제조업체, 크기, 무게, 비용이 있습니다. – svz

+0

잠재적으로 이러한 열은 빠르게 확장되고 종종 수행됩니다. 그것은 YMMV 상황이며 내가 직면 한 데이터를 모른 채 선택을하지 않을 것입니다. XML이 고정 된 스키마를 따르는 경우 적어도 관리가 더 쉬울 수 있지만, 그것이 사실인지 여부는 의문의 여지가 없습니다. – Andrew

+0

스핑크스를 전체 텍스트 검색에 사용하는 경우,이 경우 70MB의 xml 데이터를 사용하는 것이 가능한 솔루션이라고 생각하십니까? 이것은 내가 빠른 검색을 가능하게하기 위해 현재 생각하고있는 것입니다. –

0

글쎄, 당신이 묘사 한 것처럼 어리석은 것처럼 보입니다. 그것에 대해 아무 것도 모르는 채로 데이터 구조를 수정하는 것에 대해 말하기는 어렵지만, 전체 텍스트 검색이 더 좋다고 생각합니다.