개발자
먼저 바보같은 질문에 사과드립니다. ㅎㅎ "일반적으로", 데이터를 하나의 entity에 몰아서 db에 넣지 않고 정규화 과정을 거치고 데이터들의 관계를 만들어서 db 에 넣잖아요. 근데, 문득 들은 생각은, 굳이 데이터간에 관계를 만들고 분리해서 저장해야 하나가 궁금점입니다. 오히려 분리된 데이터를 취합할 때 join을 사용하면서 실행속도에 손해가 생길 수 도 있고, entity를 분리하고 entity의 크기를 작게 만들면 해당 entity에 접근하는 속도가 빨라질 순 있겠지만, 지금 우리의 컴퓨터 속도를 생각하면 별 차이가 없을 거 같기도 해서요. 관련해서 구글에 검색해보긴 했지만, 원하는 대답을 찾을 순 없었습니다 ㅠㅠ 혹시 관련해서 나누고 싶은 이야기가 있으면 감사하겠습니다. 좋은 하루 되세요 ~.~
답변 3
좀 단편적으로 생각해서 이야기해보겠습니다. 물론 제가 깊은 인사이트가 있는 실력있는 개발자는 아닙니다만, 테이블에 여러 데이터를 정규화 하지 않고 넣는다고 하면, 수정이 빈번할 경우 테이블에 lock이 많이 걸리고, 따라서 퍼포먼스의 하락으로 이어진다고 생각합니다. 또한, 정규화를 잘 해두었다고 가정했을 때, 실제 row를 업데이트하여 발생하는 사이드 이펙트를 방지할 수 있다고 생각합니다
익명
작성자
2023년 04월 17일
오 그 부분은 생각하지 못했습니다. 답변 감사드려요. 많은 식견을 얻었습니다
비록 짧은 식견이지만. DB설계 작업의 기초를 한번 다시 생각해보심이 좋을 것 같습니다. 대부분 조인으로 인한 성능하락은 그만큼 데이터의 원소화 과정과 데이터 집합의 정규화 및 추후 데이터 확장 라인에 대한 폭포수 모델의 충분한 고려를 통하지 않았기 때문입니다. 이런 문제로 현업에서는 N:M 구조의 황당한 테이블 관계를 N:1:M 구조로 키테이블을 생성하면서까지 튜닝을 하기도 합니다. 도움되시길 바랍니다.
익명
작성자
2023년 04월 18일
오 답변 감사드립니다. 덕분에 많은 식견을 얻었습니다.
RDBMS에서 데이터들이 관계를 가져야 하는 이유는 데이터의 일관성, 무결성, 가독성 및 효율성을 유지하기 위함입니다. 이러한 목적을 달성하기 위해 데이터를 정규화하고 관계를 설정합니다. 관계형 데이터베이스의 주요 이점은 다음과 같습니다. 1. 중복 제거: 정규화를 통해 데이터의 중복을 제거하면 저장 공간을 절약할 수 있고, 데이터의 일관성을 유지할 수 있습니다. 데이터가 중복되어 있으면, 데이터를 업데이트할 때 일관성 문제가 발생할 수 있습니다. 2. 데이터 무결성: 관계형 데이터베이스에서는 기본 키, 외래 키, 고유성 제약 조건 등을 사용하여 데이터의 무결성을 보장합니다. 이를 통해 잘못된 데이터가 입력되거나 관계가 깨지는 것을 방지할 수 있습니다. 3. 쿼리의 유연성: 관계형 데이터베이스에서는 조인을 사용하여 여러 테이블 간의 관계를 쉽게 표현할 수 있습니다. 이를 통해 다양한 쿼리를 작성할 수 있고, 데이터를 필요에 따라 쉽게 추출할 수 있습니다. 4 보안: 테이블 및 열 수준의 권한을 설정하여 데이터에 대한 접근을 제한할 수 있습니다. 이를 통해 데이터의 보안을 유지할 수 있습니다. 그러나, 관계형 데이터베이스에는 몇 가지 단점이 있습니다. 1. 성능: 조인을 사용하면 쿼리 성능이 저하될 수 있습니다. 데이터베이스가 커지고 데이터가 많아질수록 이 문제는 더욱 심각해집니다. 2. 확장성: 관계형 데이터베이스는 수평적 확장에 어려움이 있습니다. 일반적으로 수직적 확장을 통해 성능을 개선하지만, 이는 높은 비용을 수반합니다. 따라서, RDBMS의 이점과 단점을 고려하여 데이터의 특성과 애플리케이션의 요구 사항에 따라 적절한 데이터베이스를 선택해야 합니다. 최근에는 NoSQL 데이터베이스가 인기를 얻고 있으며, 이들은 관계형 데이터베이스의 한계를 극복하고자 설계되었습니다. 하지만 NoSQL 데이터베이스는 데이터의 일관성, 무결성 및 관계를 관리하는 데 있어약점이 있을 수 있습니다. 따라서, 각 데이터베이스의 장단점을 고려하여 프로젝트의 요구사항에 맞는 적절한 데이터베이스를 선택하는 것이 중요합니다. 예를 들어, 데이터가 크게 중복되지 않고, 간단한 쿼리가 대부분인 경우 NoSQL 데이터베이스를 사용하여 성능 및 확장성 문제를 완화할 수 있습니다. 반면, 데이터의 일관성 및 무결성이 중요한 경우 RDBMS를 사용하여 데이터의 관계를 관리하는 것이 좋습니다. 요약하면, RDBMS에서 데이터들이 관계를 가져야 하는 이유는 데이터의 일관성, 무결성, 가독성 및 효율성을 유지하기 위함입니다. 그러나, 관계형 데이터베이스의 성능 및 확장성 한계로 인해 프로젝트의 요구사항과 데이터 특성에 따라 NoSQL 데이터베이스와 같은 대안을 고려할 수도 있습니다. 이러한 결정은 전체 시스템의 요구사항, 데이터의 특성, 예상되는 쿼리 유형 등을 고려하여 결정해야 합니다.
커리어리 AI 봇의 답변을 평가해 주세요!
지금 가입하면 모든 질문의 답변을 볼 수 있어요!
현직자들의 명쾌한 답변을 얻을 수 있어요.
이미 회원이신가요?
지금 가입하면 모든 질문의 답변을 볼 수 있어요!