2009-10-19 5 views
0

CSV에서 부동산 MLS (다중 리스팅 서비스) 데이터를 가져 와서 데이터베이스에 삽입하는 앱을 만들려고합니다. CSV 구문 분석을 처리했지만 데이터베이스를 효율적으로 만드는 데 문제가 있습니다. 문제는 MLS 데이터 제공자가 많은 통지없이 속성 요소의 형식을 빠르게 변경하는 것으로 알려져 있다는 것입니다. 따라서 데이터와 1to1을 일치시키는 테이블 하나를 사용하면 향후 데이터를로드하는 데 문제가 발생할 수 있습니다.MLS 데이터베이스 스키마

대부분의 개발자는 각 요소를 단일 행에 넣었습니다. IE 현재 설정 :

id = int 
property_id = longint 
element_key = char 
element_value = text 

상상할 수 있듯이 이것은 약 80 개 이상의 요소가있는 1000 개의 속성에서 매우 느립니다.

더 효율적으로 만들 수 있지만 데이터베이스를 유연하게 유지하려면 어떻게해야합니까?

그리고 예, memcache에 대해 알고 있고 사용 계획을 세우고 있습니다.

답변

1

데이터 제공 업체를 통제 할 수있는 방법이 없으면 데이터 제공 업체는 자비를 베푸는 것입니다. 이것은 현재 약 50 년 동안 데이터베이스 작업의 단점이었으며 곧 변경 될 가능성은 거의 없습니다. CSV의 사용은 근원적 인 문제와 거의 관련이 없습니다.

그렇게 말하지는 않았지만 데이터의 형식뿐만 아니라 데이터의 의미도 의심 스럽습니다.

가장 좋은 방법은받은 형식으로 CSV 데이터를 기록하는 하나 이상의 스테이징 테이블을 만드는 것입니다. 제공자가 당신을 바꿀 때마다이 테이블을 변경할 준비를하십시오. 그런 다음이 데이터를 기본 테이블에 적합한 양식으로 변환하는 절차를 작성하고 변환 된 데이터를 기본 테이블에 복사하십시오. 이 절차는 정기적 인 유지 보수가 필요하지만 공급자가 제공 한 변경 사항을 충족시키기 위해 더 많은 정보 저장 기능을 추가 할 필요가없는 한 기본 테이블이 더 안정적으로 유지됩니다.

변화하는 입력을 따라 가기 위해서는 데이터베이스가 완전히 동적이어야하며, EAV와 같은 일부 모델은 데이터의 논리 구조를 완전히 모르고 있습니다. 이 무지는 EAV가 매우 역동적 일 수있게하지만, EAV 데이터를 의미있는 정보로 바꾸려고 시도 할 때 혼란을 야기 할 것입니다.

+1

스키마가 매우 동적 인 경우 NoSQL 데이터 저장소가 EAV보다 더 적합 할 것입니다. 동일한 성능, 적은 오버 헤드 (물론 대부분의 동일한 문제) – Tao

+0

아래의 데이터 무결성 문제에 대한 좋은 설명입니다. 소위 EAV 모델. http://stackoverflow.com/a/4843859/369278 –

0

정말 당신이 데이터로 무엇을하고 싶은지에 따라 다릅니다. 전체 텍스트 인덱서를 더한 문서 스타일 데이터베이스만으로도 충분할 수 있습니다 (실제로는 지속적으로 memcache 형식을 사용합니다). 모든 항목 데이터를 단일 행/문서에 저장하고 필요할 때 압축을 풀면됩니다.

아마도 일부 자료 here이 유용 할 수 있습니다.