언급한 것들 이외에도 다양한 명령어가 있고, SQL의 특징을 세부적으로 다룰 수는 있지만 그것은 따로 포스팅하기로 하고 MySQL과 관계형 데이터베이스에 대해서 더 알아보겠습니다.
RDBMS을 통해 데이터를 저장, 수정, 삭제 및 검색을 할 수 있습니다
이 관계형 데이터베이스에는 두 가지 특징이 있습니다
첫번째는 데이터가 정해진 데이터 스키마에 따라 테이블에 저장된다는 점입니다
@Entity()
export class Feed {
@PrimaryGeneratedColumn('increment')
id: number;
@Column('varchar')
title: string;
@Column({ type: 'mediumtext' })
content: string;
@CreateDateColumn()
createdAt: Date;
@UpdateDateColumn()
updatedAt: Date;
@DeleteDateColumn()
deletedAt: Date;
}
두번째로, SQL에서 데이터는 관계를 통해 여러 테이블에 분산됩니다
관계
를 사용합니다@ManyToOne(() => User, { onDelete: 'CASCADE', eager: true })
user: User;
장점
단점
그렇다면 관계형DB가 아닌 NoSQL은 어떤 특징이 있을까요?
반대로 NoSQL에는 관계도 없고 스키마도 없습니다
백엔드 단에서 스키마를 정해줄 수는 있지만, SQL에서는 스키마를 따르지 않으면 데이터 추가를 차단하는데 반해, NoSQL에서는 다른 구조의 데이터들을 같은 컬렉션에 추가할 수 있습니다
조인이라는 개념이 존재하지 않기 때문에 조인할 필요없이 모든 것을 갖춘 문서를 작성해야하는 것이 NoSQL입니다
따라서 조인을 잘 사용하지 않고 자주 변경되지 않는 데이터일 때 NoSQL을 사용하면 상당히 효율적이라고 할 수 있습니다
컬렉션간의 조인을 하고 싶다면 데이터가 중복되어 서로 영향을 줄 위험이 있습니다
장점
단점
SQL 사용이 좋을 경우
NoSQL 사용이 좋을 경우
import mongoose from 'mongoose';
const userSchema = new mongoose.Schema(
{
name: String,
email: String,
phone: String,
personal: String,
prefer: String,
pwd: String,
og: Object,
},
{ versionkey: false },
);
export const User = mongoose.model('User', userSchema); //collection 만들기
mysql은 일단 오픈 소스이기에 무료로 사용할 수 있고 가장 널리 알려진 표준 SQL 형식을 사용한다는 점에서 RDB를 공부하는 입장에서 도입하기 가장 적합하다고 판단했습니다
세부적인 장점은
단점
추가