[TIL] 엘리스 SW 엔지니어 트랙 Day 031
글 작성자: 망고좋아
반응형
📖 오늘 배운 내용 - 2021.12.04
- MongoDB
- 대용량 데이터를 처리하기 유리하다.
- 스키마를 정의하는 과정 없이 빠르게 데이터베이스를 구축할 수 있다.
- NoSQL 데이터베이스에 속한다.
- Mongoose ODM
- MongoDB의 Collection에 집중해 관리하도록 도와주는 패키지이다.
- 간단하게 데이터베이스와 연결 상태를 관리할 수 있다.
- Code-Level에서 스키마를 정의하고 관리할 수 있다.
- Query
- populate
- Sequelize ORM
📝 MongoDB
📝 Mongoose ODM
📝 Express.js + Mongoose ODM
📝 Sequelize ORM
- Object-Relational Mapping
- MySQL, PostgreSQL 등의 RDBMS를 이용하는 간단한 방법이다.
- ODM이 단순히 모델에 집중하여 관리하는 것에 반해, ORM은 테이블 관계와 쿼리 등의 기능을 더욱 단순화하는 용도로 주로 사용한다.
📕 ORM을 사용해서 DB 연결
const sequelize = new Sequelize('database', 'username', 'password', {
host: 'localhost',
dialect: 'mysql'
});
- sequelize도 연결을 관리하는 간단한 방법을 제공한다.
- mongoose가 MongoDB만 연결이 가능한 데에 반해 sequelize는 MySQL, PostgreSQL, SQLite 등 다양한 RDBMS에 연결 가능하다.
📕 Sequelize ORM을 통해 스키마 작성
const User = sequelize.define('User', {
name: {
type: DataTypes.STRING(10),
allowNull: false
},
age: {
type: DataTypes.Integer,
}
}, {});
- sequelize는 define을 통해 Schema를 생성한다.
- mongoose.Schema와 유사하지만 sequelize는 Schema가 DDL도 생성해 준다.
📕 스키마 작성 - 관계 정의
User.hasMany(Post);
Post.belongsTo(User);
Foo.belongsToMany(Bar);
Bar.belongsToMany(Foo);
- sequelize를 이용하면 테이블 간의 관계를 Code-Level로 관리할 수 있다.
- 이를 이용하면 외래키 설정과 제약조건까지 DDL로 생성해 준다.
- 또한 다대다 관계 설정을 통해 relation table도 자동으로 생성해 준다.
📕 쿼리
User.findAll({
where: {
name: 'elice',
age: {
[Op.lt]: 20,
[Op.gte]: 10,
},
},
include: User,
});
- Operator를 이용해 SQL 쿼리를 코드로 작성 가능하다.
- 스키마의 관계 설정을 한 경우, include를 사용하여 자동으로 join 쿼리 생성 가능하다.
📕 Synchronization
sequelize.sync();
- define된 model 데이터를 바탕으로 DDL을 자동으로 실행해 준다.
- 직접 데이터베이스에 접속하여 테이블 생성 및 관리를 할 필요가 없다.
- 자동으로 생성된 DDL을 따르지 않으면 테이블 관리가 어려워진다.
💡 오늘 깨달은 것
- 이전에 mysql을 배운 경험이 있어서 몽고db와 비교하면서 공부할 수 있었다. 확실히 몽고가 직관적이면서 간편하다.
- 유튜브에서 Node.js, express, mongoDB를 사용해서 간단한 CRUD 게시판을 구현하는 영상 보면서 감을 익혀보려고 한다.
- 지금까지 html, css, js, nodejs, express, mongodb에 대해서 이론적인 부분과 간단한 실습을 통해서 학습했는데 일주일 뒤에 시작할 프로젝트에서 잘 사용할 수 있을지 걱정이다. 그것보다 같은 팀원들에게 피해를 끼치는 게 아닌지 걱정스럽다. 이러한 걱정의 해결 방법으로는 연습밖에 없는 거 같다...! 1인분은 꼭 해결해 보자!!!
반응형
'프로그래밍 > Today I Learned' 카테고리의 다른 글
[TIL] 엘리스 SW 엔지니어 트랙 Day 033 (0) | 2021.12.09 |
---|---|
[TIL] 엘리스 SW 엔지니어 트랙 Day 032 (0) | 2021.12.08 |
[TIL] 엘리스 SW 엔지니어 트랙 Day 030 (0) | 2021.12.07 |
[TIL] 엘리스 SW 엔지니어 트랙 Day 029 (0) | 2021.12.07 |
[TIL] 엘리스 SW 엔지니어 트랙 Day 028 (0) | 2021.12.02 |
댓글
이 글 공유하기
다른 글
-
[TIL] 엘리스 SW 엔지니어 트랙 Day 033
[TIL] 엘리스 SW 엔지니어 트랙 Day 033
2021.12.09 -
[TIL] 엘리스 SW 엔지니어 트랙 Day 032
[TIL] 엘리스 SW 엔지니어 트랙 Day 032
2021.12.08 -
[TIL] 엘리스 SW 엔지니어 트랙 Day 030
[TIL] 엘리스 SW 엔지니어 트랙 Day 030
2021.12.07 -
[TIL] 엘리스 SW 엔지니어 트랙 Day 029
[TIL] 엘리스 SW 엔지니어 트랙 Day 029
2021.12.07