database(23)
-
Chapter 1: Basic Aggregation - $match and $project
Shaping documents with $project The correct answers are the following: Once we specify a field to retain or perform some computation in a $project stage, we must specify all fields we wish to retain. The only exception to this is the _id field. $project implicitly removes all other fields once we have retained, reshaped, or computed a new field. The exception to this is the _id field, which we m..
2021.02.03 -
max_user_connection 초과라고? 내 코드에 문제가 있는 거 아닐까?
python - flask - mariadb를 사용하던 중 자꾸 max_user_connection을 초과하는 상황이 생겼다. 처음에는 timeout을 짧게 해서 오래된 프로세스를 강제종료 시켜야 하나 싶었다. 하지만 뭔가 찜찜했다. 명색이 많은 사람이 함께 쓰기 위해 존재하는 데이터베이스지 않은가? 아무리 root권한이 없다고 해도 timeout을 만지면서까지 user_connection을 해결하는건 좀 이상하지 않나? 역시 모든 문제는 나로부터 시작된 것. connection을 열기만 하고 닫지를 않아서 프로세스가 증식했던 것이다. 누수가 생기는 것은 아닌지 잘 확인하고 다닐 것! conn.close();
2021.02.01 -
[MongoDB University] 정리
파이프라인 : $match(일치모양골라내기) -> $project(형태변형) -> $group(단일파일로만들어전체에대한비율계산) Stages cannot be configured to produce our desired output. This is definitely not correct. Stages can be configured in almost any way we desire. Pipelines must consist of at least two stages. This is not correct. Pipelines must consist of at least one stage, and can have many stages. Documents flow through the pipeline, pass..
2021.02.01 -
Node X MySQL 오답 및 중점노트
1. 프론트에서 axios를 통해 데이터를 객체로 보내면, 백엔드에서도 같은 키 값으로 찾아야 한다. input 태그의 name 속성이 아니다. 2. 각 라우터의 controller에서 모델을 require 할 때, {}로 구조분해 할당을 하든지, 직접 경로를 파고들어 참조할지 확실히 하자. 3. html 템플릿에 for문 돌리는 것보다는 프론트js에서 처리하자. 4. 404처리는 에러가 아니라, 지금까지 위에서부터 처리되지 않은 라우터들을 모아서 처리해주는 것이라고 생각하는 일반 라우터이며, 여기서 next(error)를 한번 거쳐서 에러 라우터로 보내는 것이다. /* 이것은 에러 처리 라우터가 아님! 지금껏 나오지 않은 주소를 처리하는 라우터를 단지 404로 처리하는 것에 불과함! */ app.use..
2020.10.28 -
MySQL과 MongoDB 비교
MySQL MongoDB 관계형 다큐먼트형 모델 스키마 테이블 컬렉션 로우 다큐먼트 컬럼 필드 include aggregate(populate - ref) ASC .sort({ 필드명: 1 }) DESC .sort({ 필드명: -1 }) Op.gt , Op.ne , ... $gt: , $ne: , ... 데이터베이스명.update({바꾼 후 모양, where: {조건}}) 데이터베이스명.update({})
2020.10.27 -
[반정규화] 테이블 분할의 단점 (Feat. 정규화vs반정규화)
👍 테이블 분할이란? 정규화 != 테이블분할(반정규화의 방법 중 하나) 데이터의 무결성을 확보하기 위해서는 정규화를 실시하는 것이 일반적이지만, 오히려 정규화 때문에 쪼개진 테이블이 서로 연산하기 위해 트랜잭션이 증가하여 비용이 높게 청구된다면, 무결성을 포기하는 대신 반정규화를 실시하게 된다. 그런데 여기서 혼동의 우려가 있는데, 정규화도 테이블을 쪼개는 과정이지만, 반정규화에도 "테이블 분할"이라는 방식이 존재한다는 것이다. 그래서 차이점을 정확히 알아야 한다. "정규화"로서의 테이블 쪼개기와 "반정규화의 테이블 분할"로서의 테이블 쪼개기는 각각 유형이 따로 정해져 있다. 정규화로서의 테이블 쪼개기는 테이블이 원자성을 보유하거나, 부분함수종속성/이행함수종속성을 탈피하도록 각각의 단계에 맞추어 테이블을..
2020.08.03