내 응용 프로그램의 데이터 모델에 대해 좋은 제정 방식을 찾고 있습니다. 대부분의 스레드는 전자 상거래 제품에 중점을두고 있으며 시나리오는 다소 다릅니다.단일 테이블 상속, 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을 보았습니다.이 숫자는 해결책이 될 수 있지만 내 번호가 너무 낮기 때문에 확실하지 않습니다.
귀하의 통찰력을 가져 주셔서 감사합니다. 포인트 2에 관해서는 어떤 문제가 라인 아래로 요구되는지 전혀 모른다. 지금은 EAV에서 완벽하게 할 수있는 목록으로 충분합니다. NoSQL이 SQL보다 나은 것을 해결할 수 있을지 궁금해하는 것은 알 수없는 시나리오입니다. 기본적으로 요점 3입니다. NoSQL을 사용하는 것은 마법의 해결책이 아니라는 것을 알고 있습니다. 나중에 추후에 해당 형식으로 내보낼 수 있다고 생각합니다. – MattW