본문 바로가기
넓고 얕은 데이터베이스 지식

EAV 모델에 대해 간단히 알아보자

by 팡펑퐁 2023. 7. 23.
728x90

EAV(Entity-Attribute-Value) 모델

  • 일반적인 관계형 데이터베이스 모델은 엔터티의 속성을 포함하는 미리 정의된 열(column) 집합이 존재한다.
  • 예시를 살펴보자. 판매자가 과일을 등록하면 그에 대한 정보를 저장하는 테이블을 만든다고 가정하자.

 

일반적인 관계형 데이터베이스 테이블 구조

ID USER_ID FRUIT_NAME PRICE UPDATED_TIME
1 1 APPLE 1000 2023-07-22 12:34:56
2 2 BANANA 2000 2023-07-22 13:45:50
3 2 ORANGE 2000 2023-07-23 18:09:10
  • 위의 예시처럼 등록한 판매자 ID(USER_ID), 과일명(FRUIT_NAME), 가격(PRICE), 등록시간(UPDATED_TIME)을 데이터베이스에 저장하기 위해서는 해당 열(column)을 미리 정의해야 한다.
  • 그러나, 스키마가 자주 변경되는 데이터, 조직이 복잡한 데이터를 처리하기에는 전통적인 관계형 데이터베이스 모델은 한계가 존재한다.
  • 이를 보다 유연한 방식으로 저장할 수 있도록 하는 것이 EAV 모델이다.
  • EAV는 Entity-Attribute-Value의 줄임말이다.

 

Entity

  • 각 엔터티는 고유한 개체 및 인스턴스를 나타낸다.

Attribute

  • 엔터티의 속성이나 특성을 설명한다.

value

  • 특정 엔터티에 연결된 각 속성의 실제 데이터 항목이다.
  • 숫자나 문자열같이 단순할 수도 있지만 JSON 데이터처럼 복잡할 수도 있다.
  • Key(USER_ID):Value와 같은 구조라고 볼 수 있다.

 

EAV 모델 테이블 예시

ID USER_ID(entity) ATTRIBUTE VALUE UPDATED_TIME
1 1 FRUIT APPLE 2023-07-22 12:34:56
2 1 PRICE 1000 2023-07-22 12:34:56
3 2 FRUIT BANANA 2023-07-22 13:45:50
4 2 PRICE 2000 2023-07-22 13:45:50
5 2 FROM Philippines 2023-07-22 13:45:50
6 2 FRUIT ORANGE 2023-07-23 18:09:10
7 2 PRICE 1500 2023-07-23 18:09:10
8 2 TASTE_DESC {"GRADE": 5, "REVIEW": "A+.. 오렌지 넘 맛있당.."} 2023-07-23 18:09:10
  • 이와 같이 한 entity(user_id)에 대해 attrubute와 value가 묶여 한 세트로 저장되며, Entity 별로 데이터의 구조 차이가 있다.

 

 

EAV 모델의 장점

유연성

  • 변화하는 데이터 요구 사항에 매우 잘 적응한다.
  • 스키마를 변경하지 않고 새로운 속성을 추가하거나 수정할 수 있으므로 수시로 변하는 비즈니스 요구 사항을 쉽게 처리할 수 있다.

빈 데이터 처리

  • 엔터티에 다양한 속성을 가지고 있는 테이블일수록 null 또는 빈 값이 많을 확률이 높다.
  • 이때 EAV 모델을 사용하면 필요한 속성만 넣을 수 있으므로 데이터를 효율적으로 처리하여 스토리지 낭비를 줄일 수 있다.

간소화된 스키마

  • 스키마 변경이 비교적 덜 복잡해 새로운 데이터 구조에 적응할 때 마이그레이션의 난이도가 낮아진다.

동적 쿼리

  • 속성이 데이터로 저장되기 때문에 동적 쿼리가 가능하다.
  • 이를 통해 특정 기준에 유연한 사용자 정의 쿼리가 가능하다.

비정형 데이터 관리

  • 비정형 데이터를 처리할 때 단일 스키마 내에 다양한 데이터 유형을 수용하므로 쉽게 관리할 수 있다.

 

EAV 모델의 단점

검색 성능

  • EAV 모델의 데이터를 검색하는 것은 다중 조인 및 복잡한 쿼리의 필요성으로 일반적인 관계형 데이터베이스 구조에 비해 성능이 좋지 않다.

데이터 무결성 문제

  • EAV 모델 특성상 일관되지 않은 값이 한 컬럼에 저장될 수 있어 적절한 제약과 유효성 검사가 있지 않다면 잘못된 데이터 입력으로 이어질 수 있다.

복잡성 증가

  • 데이터 모델링 및 애플리케이션 코드가 복잡해지기 쉽다.

제한된 인덱싱 효율성

  • EAV 데이터베이스의 인덱싱은 데이터 세트의 규모가 클수록 효율성이 떨어진다.

 

 

결론

 EAV(엔터티-속성-값) 모델은 끊임없이 변화하는 데이터 구조를 관리하기 위한 유연성과 적응성을 제공한다. EAV 모델의 구현을 고려할 때는 애플리케이션의 특정 요구 사항을 신중하게 평가하여야 한다. 이를 위해서는 조직에 가장 적합한 데이터 저장 방법을 찾기 위해 잠재적인 장단점을 비교하는 것이 중요하다고 할 수 있겠다.

 

 

 

참고

chatGPT

728x90