728x90
반응형

데이터베이스 7

[현문hyun답] MongoDB 에서 별도의 컬렉션으로 분리하는 것과 문서 내부에 저장하는 것 비교

서론MongoDB의 장점이자 단점이 될 수 있는 것은 문서 내부에 통으로 저장하는 방식으로 join으로 인한 성능 저하를 줄일 수 있다는 점이다. 이는 다시 말해 처음 설계에서 어떻게 할지 정하는 것이 더욱 중요하다는 얘기가 될 수도 있다. 데이터 무결성과 중복 사이에서 적절한 줄타기가 필요한 특징이다.그럼에도 불구하고, 별도의 컬렉션으로 분리하여 다른 컬렉션의 id를 참조해야하는 경우가 발생하기 마련이기 때문에, 두 방법을 비교해보는 글을 쓰게 되었다. 본론별도의 컬렉션으로 분리사용자주 추가되고, 자주 변경되는 데이터A와 B 데이터가 독립적으로 관리되어야 하는 경우다양한 필터링이나 분석이 필요한 경우장점데이터 중복을 줄일 수 있어 저장 공간을 효율적으로 사용별도의 문서로 관리되기 때문에 필요할 때만 쿼..

현문hyun답 2024.11.18

[현문hyun답] 언제 어떤 데이터베이스와 ORM/ODM을 사용하는게 좋을까? (2) - ORM/ODM

본론 - 2Mongoose개요MongoDB 전용 ODM장점MongoDB의 모든 기능을 활용할 수 있음스키마를 쉽게 정의하고 유효성 검사를 설정할 수 있음쿼리 전후에 미들웨어를 추가하여 로직을 쉽게 확장할 수 있음단점비동기 처리 방식이 TypeORM이나 Prisma에 비해 덜 직관적임쿼리 작성 시 코드가 복잡해 질 수 있음    Prisma개요Typescript ORM다양한 데이터베이스 지원타입 안정성을 제공하고 데이터베이스 스키마를 선언적으로 정의할 수 있음장점Typescript와 호환이 잘 되어 컴파일 시점에 오류를 잡을 수 있음체이닝을 통한 간결한 쿼리 작성 가능데이터베이스 스키마에 따라 자동으로 타입 생성단점MongoDB의 모든 기능을 지원하지 않음마이그레이션 충돌이나 관리가 복잡함생성된 쿼리가 최..

현문hyun답 2024.11.15

[현문hyun답] 언제 어떤 데이터베이스와 ORM/ODM을 사용하는게 좋을까? (1) - 데이터베이스

서론프로젝트를 하다보면 이 데이터베이스보다는 다른 게 더 적합할 것 같다 혹은 이 ORM은 내가 하는 작업에서는 불편한 점이 있다같은 생각이 들 때가 있다. 데이터베이스 별 특성은 알고 있어도 실제 프로젝트에 어떤 식으로 적용될 지와 적용되었을 때 실제로 어떨 지를 예시를 들어 같이 정리해보면 선택할 때 도움이 될 것이라 작성하게 되었다. 본론 - 1RDBMS (MySQL, MariaDB, PostgreSQL)개요데이터를 테이블 형식으로 구조화하여 저장하는 데이터베이스 시스템행과 열로 구성되는 테이블데이터 간의 관계를 정의주요 특징스키마 기반ACID 속성: 원자성, 일관성, 고립성, 지속성을 보장하여 데이터의 무결성 유지관계: 테이블 간의 관계를 설정할 수 있으며, 외래 키를 통해 데이터의 무결성 유지장..

현문hyun답 2024.11.14

[NoSQL/몽고DB] 몽고DB 완벽가이드 3판 - 1

서론 1. 투입된 프로젝트에서 기존에 몽고DB를 사용하고 있었음 2. 진행하던 프로젝트에서 몽고DB를 활용하는 기능 제작이 필요해짐 3. 2번의 프로젝트에서 기존 mariaDB를 몽고DB로 옮기자는 이야기가 나옴 4. 요즘은 스토리지가 싸서 정규화고 뭐고 중복으로 데이터 때려박는 NoSQL이 많이 사용된다는 교수님의 농담 온 세상이 몽고DB를 사용하는 것 같은 기분,,,까진 아닌데 앞으로도 몽고DB를 활용할 일이 많아질 것 같았고, 지금까지는 그때그때 조각조각 찾아보면서 해왔지만 한번쯤 정리하고 가야할 필요성을 느끼게 되었다. 책으로 공부하는게 익숙하고 편해서 책부터 찾아봤고, 처음부터 훑기에는 몽고DB 완벽가이드라는 책이 괜찮을 것 같아서 이 책으로 시작하게 되었다. 더이상 관계형DB를 고집하지 않아도..

데이터베이스 2023.03.23

[데이터베이스] 정규화란? 정규화의 이유와 종류

정규화란? 정규화(Normalization)은 관계형 데이터베이스의 설계에서 중복을 최소화하게 데이터를 구조화하는 프로세스 정규화의 이유? 중복을 배제하여 삽입, 삭제, 갱신 이상의 발생을 방지 각 릴레이션에 중복된 종속성을 여러개의 릴레이션에 분할 어떠한 릴레이션이라도 데이터베이스 내에서 표현 가능하게 함 데이터 삽입 시 릴레이션을 재구성할 필요성 감소 효과적인 검색 알고리즘 생성 가능 ※ 삽입, 삭제, 갱신 이상 - 삽입 이상(Insertion Anomaly): 데이터 삽입 시 의도와 다른 값들도 삽입됨 - 삭제 이상(Delete Anomaly): 데이터 삭제 시 의도와 다른 값들도 연쇄 삭제됨 - 갱신 이상(Update Anomaly): 속성값 갱신 시 일부 튜플만 갱신되어 모순 발생 정규화의 종류..

데이터베이스 2022.10.19

[현문hyun답] ORM이란? JPA, Sequelize 등을 쓰는 이유는?

서론 스프링부트로 개발 할 때는 처음 배울 때 JPA로 배웠기 때문에 자연스럽게 JPA를 적용했다. 그런데 Node.js로 개인 프로젝트를 진행하다보니 데이터베이스 구축과 관리가 아니라 개발을 하면서 쿼리문을 쓰는게 낯설게 느껴졌고 새삼스럽게 ORM의 존재를 인식하게 되었다. Node.js에도 역시 Sequelize라는 ORM이 있었고 이번 기회를 통해 ORM에 대해 정리해보는 시간을 갖기로 했다. ORM ORM(Object Relational Mapping)은 객체 지향 프로그래밍에서 객체로 관계형 데이터베이스를 관리하는 기술이다. 스프링의 JPA가, 노드js의 Sequelize가 대표적인 예이다. ORM을 사용하는 이유? 기존 개발 방식은 SQL로 데이터베이스를 관리하는 것이었다. 이런 방식의 개발은..

현문hyun답 2022.08.18

면접을 위한 CS 전공지식 노트: 4장 데이터베이스

4.1 데이터베이스의 기본 e.g., DBMS: MySQL / 응용프로그램: node.js 엔티티: 여러 개의 속성을 가진 명사. e.g., user: name, email, password, ... -> user: 엔티티, name, email, password, ...: 속성 엔티티 A가 혼자서는 존재하지 못하고 B의 존재 여부에 따라 종속적인 상태일 때 A를 약한 엔티티, B를 강한 엔티티라고 함. 릴레이션: 데이터베이스에서 정보를 구분하여 저장하는 기본 단위. RDBM에서는 테이블, NoSQL에서는 컬렉션이라고 함. ※ RDBMS - MySQL: 레코드 - 테이블 - 데이터베이스 ※ NoSQL - MongoDB: 도큐먼트 - 컬렉션 - 데이터베이스 속성: 릴레이션에서 관리하는 구체적이며 고유한 이..

728x90
반응형