2013-06-02 3 views
5

내 응용 프로그램의 데이터 모델에 대해 좋은 제정 방식을 찾고 있습니다. 대부분의 스레드는 전자 상거래 제품에 중점을두고 있으며 시나리오는 다소 다릅니다.단일 테이블 상속, EAV 또는 NoSQL?

목표는 고객으로부터받은 항목을 저장하고 다시보고하는 것입니다. 초기 보고서는 간단한 목록입니다 (이들은 귀하의 항목과 키/값 쌍입니다). 나는 컬렉션 전체에 대한 미래의 쿼리를 준비하기 위해 EAV가 좋은 접근 방법이라는 것을 확신하지 못합니다.

각 항목은 (되풀이) 유형이며 각 항목에는 유연한 양의 키/값 쌍이 있습니다. 약 15 개의 항목 유형이 있으며 빠르게 성장하지는 않습니다. 키/값 쌍

양은 4 (20) 사이에, 낮은 및 은 항목 유형에 기초하지 (필요에 따라)이지만, 고객의 상품에 속하는 것이다.

고객이 분명히하기 위해 다른 사용자가 색상 또는 대체 ID를 저장하려는 항목의 상태를 저장하도록 할 수 있습니다. 그것은 정말로 달려 있습니다. 그래서 나는 어쨌든 각 항목 유형이 그 고객의 모든 키/값을 얻을 것이므로 어쨌든 내 세트에 NULL 값을 가질 가능성이 높습니다. 그게 내게 생각합니다 단일 테이블 상속 (NULL 값 포함)은 허용되지만, 고객이 원하는 키의 이름을 결정할 것이기 때문에 일종의 매핑으로 field_1 field_2 등이되어야합니다. 나에게 맞는 것 같지 않은가?

고객 항목 및 키/값 모음은 일반적으로 20보다 많고 < 500이므로 고객 당 데이터 세트가 엄청나지 않습니다.

응용 프로그램 자체 (고객 및 원하는 필드 생성)를 위해 MySQL에서 (반) EAV로 이동하지만 실제 수집 된 항목 레코드를 '문서'로 NoSQL 데이터베이스로 이동하는 것이 좋은 방법 일 수 있습니다 (Redis et 모두) 추가 처리가 필요하십니까?

또는 RDBMS에서 해결할 수 있거나 해결해야 할 사항이 복잡합니까?

나는 또한 http://backchannel.org/blog/friendfeed-schemaless-mysql을 보았습니다.이 숫자는 해결책이 될 수 있지만 내 번호가 너무 낮기 때문에 확실하지 않습니다.

답변

10

당신이 열거 한 세 가지 접근 방식 모두에서 프로젝트를 수행 한 결과 나는 당신에게 어렵고 빠른 방향을 제시 할 수는 없다는 것을 알았지 만 앞으로 나아가고 올바른 접근 방식을 택할 수있는 조언을 해줄 수 있습니다.

팁 :

  1. 당신이 할 수있는 경우에 기술을 혼합하지보십시오. 개인적인 경험을 통해 나는 이것이 매우 어렵다는 것을 알았습니다. 또한 규모가 큰 큰 사이트를 자주 읽으므로 항상 아키텍처를 간단하게 유지해야한다는 언급이 있습니다. 그들은 MySQL과 MongoDB와 같은 것을 혼합하여 시작하여 간단하게 MongoDB를 도용합니다.

  2. 귀하의 질문은 약간의 마비로 고통 받고있는 것 같습니다. "XYZ를 할 수는 있지만 ABC는 불가능합니다." 나는 당신의 시스템에 관한 몇 가지 포인트/사실을 고친 다음 시제품을 만들기 시작할 것을 제안한다. 당신은 좋은 생각을 가지고있는 것 같지만, 당신이 건축하기 시작할 때까지 그들이 얼마나 좋은지 모를 것입니다.

  3. 모든 결정을 내리는 것이 중요합니다.솔루션의 처음 80 %는 아마도 매우 쉽고 빠를 것입니다. 마지막 20 %는 타협으로 구성 될 것이며 꽤 추악 할 것입니다. 그냥 준비하고 괜찮을거야. 내 경험에서

  4. 는 문서 데이터베이스 (NoSQL에) 접근 방식은 여전히 ​​위험의 비트입니다. 문서 개발의 견고한 해를 마침으로써 가장 어려운 것은 데이터를 모델링하는 것이 었습니다. 그 길을 가고 싶다면 데이터 모델링을 공부하십시오. 그것은 당신에게 많은 고통을 덜어 줄 것입니다.

+0

귀하의 통찰력을 가져 주셔서 감사합니다. 포인트 2에 관해서는 어떤 문제가 라인 아래로 요구되는지 전혀 모른다. 지금은 EAV에서 완벽하게 할 수있는 목록으로 충분합니다. NoSQL이 SQL보다 나은 것을 해결할 수 있을지 궁금해하는 것은 알 수없는 시나리오입니다. 기본적으로 요점 3입니다. NoSQL을 사용하는 것은 마법의 해결책이 아니라는 것을 알고 있습니다. 나중에 추후에 해당 형식으로 내보낼 수 있다고 생각합니다. – MattW