스터디노트
-
Mongoose스터디노트/DB 2022. 3. 28. 11:13
Mongoose MongoDB ODM(Object Document Mapper) 예시 연결 (database.js) import Mongoose from "mongoose"; export async function connectDB() { return Mongoose.connect(url, options); } export function useVirtualId(schema) { schema.virtual('id').get(function() { return this._id.toString(); // this._id는 object이므로 toString해준다. }); schema.set("toJSON", {virtuals : true}); // id정보 json에 포함 schema.set("..
-
Express에서 유용한 내부, 외부 Middleware스터디노트/Back-end 2022. 3. 24. 10:25
내부 Middleware express.json() : Rest API에서 req.body를 파싱할 때 사용 express.urlencoded() : HTML Form이라는 UI요소에서 발생된 request를 body로 자동으로 파싱 (SSR 구현에 유용) express.static() : public에 있는 리소스에 대해서 접근이 가능하게 함 참고자료 : https://expressjs.com/en/4x/api.html#express import express from "express"; app.use(express.json()); app.use(express.urlencoded({extended : false})); app.use(express.static("public") 외부 Middleware ..
-
MongoDB스터디노트/DB 2022. 3. 22. 11:47
MongoDB란? Document Type의 데이터베이스 하나의 데이터는 문서형태(Object 형태)로 저장 관련있는 데이터는 Collection이라는 그룹안으로 저장됨 하나의 데이터를 독립적으로 생성해야함 MongoDB 시작하기 (MongoDB Atlas) MongoDB Atlas : 클라우드상의 MongoDB SignUp -> Organization 생성 -> Project 생성 -> Database 설정 -> Security 설절 (Database Access, Network Access) -> Cluster Connect (Connect your application) MongoDB Driver 설치 (Node.js) 참고자료 : https://docs.mongodb.com/drivers/node..
-
ALGORITHM=INPLACE, LOCK=NONE으로 테이블 변경하기스터디노트/DB 2022. 2. 16. 16:16
크기가 큰 테이블에 컬럼이나 인덱스를 추가할 때 테이블의 크기가 큰 경우 락 타임이 길어진다. ALGORITHM, LOCK절을 사용하면 락을 걸지 않고 컬럼이나 인덱스를 추가/삭제할 수 있다. ALTER TABLE tbl_name ADD COLUMN column_name column_definition, ALGORITHM=INPLACE, LOCK=NONE; ALTER TABLE tbl_name CHANGE old_col_name new_col_name data_type, ALGORITHM=INPLACE, LOCK=NONE; 참고자료 https://dev.mysql.com/doc/refman/5.6/en/innodb-online-ddl-operations.html
-
MSA란???스터디노트/CS & 기본기 2022. 2. 2. 10:47
MSA란?? Microservice Architecture 하나의 큰 어플리케이션을 만들기 위해 잘게 쪼개 여러개의 어플리케이션을 합치는 것 Monolithic과 상반되는 개념 MSA의 장점 배포가 용이하다. 서비스별로 개별 배포가 가능하기 때문에 전체 서비스를 중단할 필요가 없다. 확장에 용이하다. 장애 대응에 용이하다. 특정 장애가 전체 서비스에 영향을 미칠 경우가 적다. MSA의 단점 성능적인 측면 비용이나, Latency가 증가하게 된다. 테스트/트랜잭션 측면 서비스가 분리되어 있기 때문에 테스트/트랜잭션 복잡도가 높다. 데이터 관리 측면 서비스 별로 데이터를 관리하기 때문에 한번의 조회로 전체 데이터를 가져오기 힘들고 정합성 등을 검증하기 관리하기 어렵다.
-
Restful API 특징스터디노트/CS & 기본기 2022. 2. 1. 11:11
Restful API란?? 클라이언트 -> 서버 -> DB 형식으로 클라이언트에서 request를 보내고 요청한 데이터에 맞는 response를 보내는 형식 URL 형식으로 CRUD에 대한 요청을 처리한다. POST : Create GET : Read Put : Update Delete : Delete Restful API의 원리원칙 클라이언트와 서버가 분리되어야한다 Stateless 해야한다. Token 등 3자 인증방식으로 관리하므로 session을 사용하지 않는다 (Stateful이 아니다) Cashable 해야한다. 계층적으로 관리되어야한다. 클라이언트 -> 컨트롤러 -> 서비스 -> 레파지토리 -> DB 구조 같이 인접한 노드끼리는 통신이 되지만 건너뛰면서 통신은 하지 않는다.