저스틴 케이브 (Justin Cave)는 이것이 중복 데이터로 이어질 수 있다는 것이 맞지만 실제로는 데이터베이스 설계 방식에 달려 있습니다.
전체 객체를 얼룩으로 직렬화하는 방법은 대부분의 사람들이 생각하는 것만 큼 터무니 없습니다. 실제로 일부 응용 프로그램의 경우 /programming//a/12644223/1121352에서 설명한 것처럼 이것이 가장 좋은 디자인 일 수 있습니다 .
실제로 객체를 직렬화하면 적어도 두 가지 이점이 있습니다.
1- 불일치 불일치 줄이기 : 특히 많은 클래스와 사용자 정의 유형을 사용하는 경우 일부 Java 유형은 SQL에서 사용할 수 없으므로 Java 객체에서 SQL로 앞뒤로 변환하는 것은 큰 번거 로움과 모호함을 유발할 수 있습니다.
2- 스키마의 유연성 향상 . 실제로 관계형 스키마는 동일한 구조를 공유하는 데이터에 실제로 유용하지만 단일 클래스 내의 일부 개체가 런타임 조건에 따라 다른 속성을 가질 수있는 경우 관계형 스키마가 워크 플로를 크게 방해 할 수 있습니다.
따라서이 접근법에는 분명히 이점이 있습니다 (적어도이 두 가지이지만 필자가 인용하지 않은 다른 것). 물론 지불해야 할 막대한 비용은 거의 모든 관계형 스키마 이점을 잃는 것입니다.
그러나 데이터베이스를 신중하게 디자인하면 두 가지 이점을 모두 누릴 수 있습니다. 각 개체에 고유 한 특성을 사용하여 관계형 스키마 (예 : 고유 키 열)를 설정 한 다음 개체를 Blob에 저장할 수 있습니다 . 이런 방식으로 객체 속성에 의해 정의 된 고유 식별자가 주어지면 객체를 빠르게 검색 할 수 있으며 중복성을 줄이면서도 충돌 불일치를 없애고 Java 객체의 완전한 유연성을 유지할 수 있습니다.
참고로, 일부 DB 제조업체는 PostSQL 및 PostgreSQL 의 JSON 데이터 유형과 같은 관계형 및 객체 모델을 함께 결합 하여 관계형 열과 마찬가지로 JSON을 직접 처리 할 수 있도록 SQL3 및 OQL (Object (제한된) 오브젝트 지원을 SQL에 추가하기위한 조회 언어).
결국 이것은 관계형 모델과 객체 모델 사이의 디자인과 타협의 문제입니다.
주석을 읽은 후 / EDIT : 물론 데이터를 검색 할 수 있어야하는 경우 ( "조회 가능") 데이터를 Blob으로 저장해서는 안됩니다. 그러나 데이터의 일부 가 검색 가능 하지 않고 일종의 메타 데이터 인 경우이 데이터 부분을 Blob 내부의 객체로 저장하는 것이 좋습니다. 특히이 메타 데이터의 구조가 유연한 경우 객체에서 객체로 변경할 수 있습니다.