[SQL] 데이터베이스 EAV의 장점 / 단점 및 대안
SQL데이터베이스 EAV의 장점 / 단점 및 대안
나는 (무제한 허용) 사용자 정의 필드와 값을 허용하는 데이터베이스 솔루션을 찾고있다. 언뜻보기에, EAV는 잘 맞는 것 같았다하지만 일부 읽은 후 나는 확실히 더 이상하지 않다.
EAV의 장점과 단점은 무엇입니까?
사용자 정의 속성 / 필드와 값을 허용하는 다른 데이터베이스 방법이 있습니까?
해결법
-
==============================
1.이것은 철저한 대답으로 간주하지만, 몇 가지 포인트 주제에 대한이어야한다.
이것은 철저한 대답으로 간주하지만, 몇 가지 포인트 주제에 대한이어야한다.
질문은 또한 [SQL] 태그가되기 때문에, 내가 일반적으로 관계형 데이터베이스가 EAV 모델을 사용하여 데이터를 저장하기에 적합하지 않은, 그런 말을 할 수 있습니다. 당신은 여전히 SQL에 EAV 모델을 디자인 할 수 있습니다,하지만 당신은 관계형 데이터베이스 줄 것이라고 많은 장점을 희생해야합니다. 뿐만 아니라 당신은 값에 대한 참조 무결성, 사용 SQL 데이터 형식을 적용하고 필수 속성을 적용하지만, 심지어는 아주 기본적인 쿼리를 작성하는 것은 어려운 일이 될 수 있습니다 할 수 없습니다. 사실, 이러한 한계를 극복하기 위해 여러 가지 EAV 솔루션 대신 당신이 상상할 수있는, 단점을 많이 가지고 관련 테이블과 결합의 데이터 복제에 의존하고 있습니다.
당신이 정말로 "속성을 무제한 허용"스키마가 디자인을 필요로하는 경우, 당신의 최선의 방법은없는 NoSQL 솔루션을 사용하는 아마. 관계형 데이터베이스에 EAV 상대의 약점도 NoSQL의 대안에 적용하더라도, 당신은 기존의 SQL 데이터베이스를 달성하기 어려운 추가 기능을 제공됩니다. 예를 들어,이 확장 성 문제의 어떤 종류를 해결하기 위해 설계되었습니다 간단하기 때문에 보통되는 NoSQL 데이터 저장소는 관계형 데이터베이스보다 훨씬 쉽게 확장 할 수 있습니다, 그들은 의도적으로 어렵게 확장 할 기능을 떨어졌다.
(아마존, 구글과 마이크로 소프트에서 제공하는 것과 같은) 많은 클라우드 컴퓨팅 플랫폼은 속성의 임의의 번호가 지정된 개체와 연관 될 수있는 EAV 모델을 기반으로 데이터 저장소를 특징으로한다. 클라우드에 애플리케이션을 배포하는 것을 고려하는 경우에 큰 공급 업체 간의 치열한 경쟁은 매우 높은 수준으로 가치를 선정 비율을 추진하고 있기 때문에, 당신은, 비즈니스 이점뿐만 아니라 기술적 인으로이 모두를 고려할 수 있습니다 지속적으로 기능에 밀어 금융 및 구현 비용을 밀어.
-
==============================
2.posgtres hstore http://www.postgresql.org/docs/9.0/static/hstore.html에서보세요 이 단점의 대부분없이 정확하게 당신이 원하는 것을 할 것입니다
posgtres hstore http://www.postgresql.org/docs/9.0/static/hstore.html에서보세요 이 단점의 대부분없이 정확하게 당신이 원하는 것을 할 것입니다
-
==============================
3.스트림 플랫폼은 스트림 (실제로는 도메인 모델의), 필드 및 지정 기관에 따라 다른 방법을 제안한다.
스트림 플랫폼은 스트림 (실제로는 도메인 모델의), 필드 및 지정 기관에 따라 다른 방법을 제안한다.
-
==============================
4.예를 들어 사용자가 새 필드를 원할 때, 데이터베이스에 해당 열을 추가 : 하나 개의 대안은 사용자 입력을 기반으로 데이터베이스 스키마를 변경하는 것입니다.
예를 들어 사용자가 새 필드를 원할 때, 데이터베이스에 해당 열을 추가 : 하나 개의 대안은 사용자 입력을 기반으로 데이터베이스 스키마를 변경하는 것입니다.
from https://stackoverflow.com/questions/2224234/database-eav-pros-cons-and-alternatives by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] JDBC를 사용하는 경우 SQL 문에 대한 로깅을 설정하는 방법 (0) | 2020.05.02 |
---|---|
[SQL] PostgreSQL의 행으로 변환 열? 바꾸어 놓다? (0) | 2020.05.02 |
[SQL] PIVOT 0 출력 (NULL) 값을 대체하는 방법 (0) | 2020.05.02 |
[SQL] 파일에 대한 확인은 SQL 서버에 존재 여부? (0) | 2020.05.02 |
[SQL] MySQL은 INSERT INTO ... VALUES과 SELECT (0) | 2020.05.02 |