2011-08-31 1 views
2

저는 다양한 소스 (Facebook Opengraph, XML Feeds 등)에서 들어오는 서로 다른 이름의 장르 (공포, 코미디 등)를 취하고 데이터를 줄이기 위해 우리의 웹 앱용 작업을 할당 받았습니다 아래로 "마스터"테이블.여러 소스/피드의 다양한 데이터를 어떻게 매핑하거나 통합합니까?

예를 들어 "액션"이라는 장르가 있고 피드 중 하나에 "액션/어드벤처"라는 장르가 있습니다. 대신, 나는 "Action/Adventure"영화에 "Action"마스터 장르를 할당하는 편이 좋을 것입니다.

하드 코딩 된 해시 맵을 작성하려고 생각했습니다. 우리는 다음과 같은 언어를 사용합니다 :

languages = { "en_US" => "English", "en_GB" => "English" } 

더 좋은 방법을 알고있는 사람이 있습니까? 아마도 데이터베이스의 조회 테이블에 의존해야합니까? 건배!

+3

이것은 나에게 좋은 방법 인 것 같습니다. 물론 그것은 모두 귀하의 요구 사항에 달려 있습니다. 다른 사람 (코더가 아닌)이 일부 인터페이스를 통해 맵핑을 추가 할 수있게하려면 조회 테이블이 더 쉬울 수도 있습니다. – mfonda

+0

잠재적으로 매핑을 다른 사용자가 액세스 할 수있게하는 훌륭한 점 (심지어 "기타"가 동료 직원이거나 심지어 사용하기 쉬운 인터페이스를 통해 자신이더라도) –

답변

2

여기에있는 트릭은 소스 식별자와 함께 원본 지정을 ​​유지하는 것입니다. 그런 다음 소스 지정과 대상 기본 지정간에 맵을 작성한 다음이를 정적으로 변환할지 또는 쿼리/뷰를 동적으로 변환할지 결정할 수 있습니다.

2

필자는이 데이터를 모두 사용하기 위해 무엇을 사용하고 있는지에 달려 있다고 생각합니다. Randy는 원래 데이터를 어떤 식 으로든 보존해야한다는 점에서 올바르지 만, 프로덕션 데이터베이스에있을 필요는 없지만 텍스트 파일이나 다른 준비 데이터베이스 일 수있는 임시 형식 일 수 있습니다. 내가 여러 소스에서 복잡한 ETL을 수행하고있을 때 오프 주제에 약간가는 위험을 무릅

...

보통 I는 2 단계 프로세스를 사용합니다. 첫 번째 단계는 모든 입력을 하나의 형식으로 통합하는 것입니다. CSV 또는 XML 파일이거나 준비 데이터베이스에있을 수 있습니다.

거기에서 프로덕션 또는 마스터 데이터베이스로 데이터를로드하는 두 번째 프로세스가 있습니다. 이점은 일단 가져 오기 (또는 "로드") 코드가 완성되면, 잠재적으로 복잡한 비즈니스 로직 등을 모두 갖게되면 다시 만지면됩니다. 새로운 데이터 소스가 온라인 상태가되면 새로운 형식의 코드를 작성하여 보편적 인 형식으로 만들어야합니다. 이 형식이되면 가져 오기 프로세스에서 올바르게 처리됩니다.

데이터를 변환 (또는 변환)하는 방법은 ETL 시스템에서 많이 사용하는 것에 따라 달라집니다. 준비 데이터베이스를 사용하는 경우 테이블에 넣는 것이 좋습니다. 원시 데이터에서 보편적 인 형식으로 이동할 때 일반적으로이 변환을 수행하려고합니다.

+0

Brilliant. 이 두 가지 대답은 내가 찾고있는 것입니다. 둘 다 올바른 것으로 상을 수는 없습니까? 또한이 ETL 개념이 과거에 나를 피하는 방법을 모르겠습니다. 나는 약간의 독서를해야한다! 건배. –

관련 문제