1. ORM
1) ORM(Object-Relational Mapping)
- 객체 지향 프로그래밍 언어와 관계형 데이터베이스 간의 데이터를 매핑하고 연결하는 기술
2) 특성
- ORM을 사용하면 데이터베이스 테이블과 객체를 일치시키기 위한 별도의 SQL 쿼리를 작성할 필요 없이, 객체를 통해 데이터베이스를 조작 가능
- ORM은 데이터베이스 스키마를 추상화하여 객체와 관련된 데이터에 접근성을 높여 쉽게 관리할 수 있게 해줌
3) 상세
- 객체 지향 프로그래밍은 클래스를 이용하고 관계형 데이터베이스는 테이블을 이용하는데 객체 모델과 관계형 모델 간의 불일치가 존재
- ORM을 이용해서 데이터베이스 접근을 프로그래밍 언어의 관점에서 맞출 수 있고 객체 간의 관계를 바탕으로 SQL을 자동으로 생성하여 불일치를 해결
- SQL 문을 직접 작성하지 않고 엔티티(데이터베이스의 정보 단위)를 객체로 표현할 수 있다.
- 이를 통해 테스트에 용이한 애플리케이션을 제작 가능
- 즉, 가독성/생산성/유지보수가 용이해짐
2. SQL, NoSQL
1) SQL
- 관계형 데이터베이스(RDBMS)를 다루는 언어
- 정형화된 데이터를 다루는데 집중
- 데이터가 테이블 형태로 구성되며, 각각의 테이블은 행(Row)과 열(Column)로 구분
- 데이터의 일관성과 무결성 유지, 데이터 중복 방지 등을 위해 엄격한 스키마(Schema)로 구성
- 쿼리 명령어를 통해 데이터 관리
- 수직적 확장이 용이(서버의 성능 향상 등)
2) NoSQL
- SQL을 제외한 데이터베이스는 NoSQL이며 비관계형 데이터베이스를 다루는 언어
- 비정형화된 데이터를 다루는데 집중
- 데이터가 문서(Document) 형태로 구성되며, 각각의 문서는 필드(Field)와 값(Value)으로 구분
- 스키마가 유연하여 필요에 따라 데이터 구조를 동적으로 변경 가능
- 수평적 확장(Scalability)이 용이(서버 확장 등)
- 다양한 유형의 데이터베이스를 제공 : 키-값(Key-Value), 문서(Document), 그래프(Graph) 등의 형태로 데이터를 저장 및 조회 가능
3) 결론
- SQL의 경우 명확한 스키마, 데이터의 무결성 보장, 관계를 통해 중복없는 데이터. 조인으로 인하여 복잡해질 수 있음
- 관계를 맺고있는 데이터가 자주 변경되는 애플리케이션, 스키마가 명확하여 변경의 여지가 적을 경우 유리
- NoSQL의 경우 유연한 구조로 인하여 데이터 구조가 자유로움. 중복된 데이터를 계속 업데이트해야하며 이로 인해 수정이 불편함
- 데이터 구조 파악이 힘들거나 변경/확장의 여지가 있는경우, 조회가 잦지만 데이터 변경은 적은 경우, 다뤄야 할 데이터가 많은 경우 등에 유리
- 각각의 특성에 맞게 선택하여 사용
'항해14기 본과정 > 항해14기 WIL(제출용)' 카테고리의 다른 글
[항해 14기] 7주차 WIL (FE/BE 협업 회고) (0) | 2023.05.14 |
---|---|
[항해 14기] 6주차 WIL (CORS) (0) | 2023.05.08 |
[항해 14기] 4주차 WIL (Restful API, package.json) (0) | 2023.04.23 |
[항해 14기] 3주차 WIL (Express 미들웨어, RESTful) (0) | 2023.04.17 |
[항해 14기] 2주차 WIL (JS - ES) (0) | 2023.04.06 |