Back

Back/MySQL

MySQL Event Trigger

Stand_Up_Seoul 프로젝트를 진행하며 사용했던 MySQL 기능이다. 하루에 한 번 정해진 시간에 실행되도록 만드는 Event 처리가 필요했다. wearther 테이블과 population 테이블이 분석용으로 redshift로 이동함에 따라 DB단에서는 1주일치의 데이터만 필요하기 때문에 매일 삭제해 주는 Event를 추가해 주었다. 해당 Event Trigger를 사용함으로써 RDS의 과부하를 줄여줄 수 있었다. weather 테이블 구조 weather - 7일 치 데이터만 남기고 삭제 CREATE EVENT delete_old_weather_data ON SCHEDULE EVERY 1 DAY STARTS '2023-06-20 19:00' DO DELETE FROM weather WHERE cr..

Back/MySQL

MySQL Trigger

Review_count Trigger 만들어보기 테이블의 구조는 위와 같다. 사용자가 resaturant_review 테이블에 Insert, delete 할 때 Restaurant 테이블에 있는 review_count를 증감시키는 과정이 필요했다. (like도 동일하다) 해당방식을 Backend 단에서 따로 처리를 해줄 수 있겠지만 속도면에서 MySQL에서 직접 처리하는 것이 더 빠르며, 자동으로 처리 되기때문에 무결성 측면에서도 더 좋은 방식이다. restaurant_review Insert 업데이트 -- restaurant_review insert시 업데이트 DELIMITER // CREATE TRIGGER insert_restaurant_review_count AFTER INSERT -- INSER..

Back/MongoDB

MongoDB와 Python 연동하기

1. 윈도우에 MongoDB 설치 https://www.mongodb.com/try/download/community Try MongoDB Community Edition Try MongoDB Community Edition on premise non-relational database including the Community Server and Community Kubernetes Operator for your next big project! www.mongodb.com 다 기본값으로 설치해준다. 환경변수 설정 시스템 변수 -> Path -> 편집클릭 아래 그림과 같은 환경변수 추가 MongoDB 실행 윈도우 명령 프롬프트에서 Mongo 명령어 실행 실행 환경 저는 Pycharm으로 실행했습니다. ..

Back/MongoDB

Mongo DB 실습 - 3

쿼리 배열 find() 할 때 문서의 키에 대응하는 value 값에 쿼리문안에 요청한 값이 있으면 출력한다. $all 연산자는 2개 이상의 배열 요소가 일치하는 배열을 찾을 때 사용한다. 순서는 중요하지 않아 조회하는 "type" 키의 배열 값이 ["banana","apple" ~] , ["apple", "banana" ~ ] 모두 조회가 가능하다 전체 배열과 일치하는 문서를 조회할 경우 모든 요소의 인덱스 순번에 해당하는 배열내 요소의 값을 작성해서 정확히 일치하여야 함 배열 내의 특정 요소를 조회하기 위해선 "key:index" 구문을 이용하여 순서를 지정한다. "type" 키의 값에 "세 번째" 인덱스에 위치한 값을 조회 배열의 인덱스는 0부터 시작하기 때문에 2로 입력 $size 연산자는 특정 크..

Back/MongoDB

Mongo DB 이론 - 2

MongoDB MongoDB는 NoSQL 중에는 가장 사용량이 많은 데이터베이스이다. NoSQL이란 Not Only SQL으로 기존의 RDBMS의 한계를 극복하기 위해 만들어진 새로운 형태의 데이터저장소이다. MongoDB는 C++로 작성된 오픈소스 문서 지향(Document-Oriented)적 데이터베이스이며, 뛰어난 확장성과 성능을 유지한다. C, C++, C#, JAVA, Python 등 다양한 프로그래밍 언어를 드라이버를 통해 연동할 수 있고 이는 다양한 프로그래밍 언어를 통해 MongoDB의 데이터 갱신, 조회, 변경, 삭제 등 다양한 연산을 수행할 수 있다는 장점이 있다. 다만 MongoDB는 Join 연산이 불가능하기 때문에 Join이 필요 없도록 데이터를 설계하거나 내장문서를 여러 번 쿼리..

Back/MongoDB

Mongo DB 실습 - 2

문서 갱신 $addToSet 제한자 $addToSet 제한자는 배열을 집합처럼 처리하여 중복을 피하고, 입력할 수 있음 "type" 키에는 배열의 형태로 apple banana 값들이 입력되어 있고 $addToSet 제한자를 통해 orange 값을 입력하면, orange 값이 없기 때문에 중복을 피하여 입력됨. $each 제한자를 조합하여 고유한 값을 여러 개 추가 마지막 update시에 존재하지 않는 strawberry만 갱신된다. $pop 제한자 $pop 제한자는 배열의 양쪽 끝에서부터 요소를 하나씩 삭제함 값을 1로 부여하면, 배열의 마지막 요소부터 제거 값을 -1로 부여하면, 배열의 처음부터 요소를 제거 $pull 제한자 $pull 제한자는 배열 위치랑 상관 없이 주어진 조건에 맞는 배열 요소를 ..

Back/MongoDB

Mongo DB 실습 - 1

Mongo DB 설치 wget -qO - https://www.mongodb.org/static/pgp/server-4.4.asc | sudo apt-key add - echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/4.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.4.list sudo apt-get update sudo apt-get install -y mongodb-org MongoDB 패키지 설정 echo "mongodb-org hold" | sudo dpkg --set-selections echo "mongodb-org-serve..

Back/MongoDB

MongoDB 이론 - 1

데이터베이스란? 여러 사람에 의해 공유되어 사용될 목적으로 통합하여 관리되는 데이터의 집합 자료항목의 중복을 없애고 자료를 구조화하여 저장함으로써 자료 검색과 갱신의 효율을 높인 것 DBMS란? 데이터베이스를 관리하는 시스템 데이터베이스를 정의하고 질의어 SQL를 지원하는 등의 작업을 함 관계형 데이터베이스 RDBMS 데이터를 단순한 표(Relation)로 표현하는 형식의 데이터베이스 정형화된 데이터 항목들의 집합 비관계형 데이터베이스 NoSQL 시대가 변화하면서 데이터가 점점 편화함 내 계좌(-) -> 상대 계좌 (+) -> 전산상에 기록 -> 하나의 트랜잭션 원자성 Atomicity 부분적으로 실행되다가 중단되는 것을 방지하는 성질 정상적으로 송금이 되었으면 전상상에 기록이 되고, 아니면 처리되기 이..

Back/Django

6. 로그인 로그아웃 구현하기

6. 로그인 로그아웃 구현하기 직접 db로 구현할 수 있지만 복잡하다 장고에서 제공하는 라이브러리를 사용하면 쉽게 구현이 가능하다. 로그인, 로그아웃은 큰 범위이기 때문에 pybo에서 이어서 만들지 않고, 새로운 앱으로 만들어 준다. 터미널 창에 아래 명령어를 입력해 아래와 같은 디렉터리를 만들어 준다. cd mysite django-admin startapp common 세팅 설정 common 디렉토리를 앱으로써 인식하도록 config/settings.py에 추가해 준다. 마찬가지로 common과 연결된 url을 연결해 주기 위해서 config/urls.py에 추가해 준다 common 디렉터리에 url.py가 없기 때문에 만들고 아래 코드를 넣어준다. 로그인 페이지 링크 연결 로그인 버튼을 눌렀을 때 ..

Back/Django

5. 템플릿 필터 직접 만들어 보기 + 질문에 답변 개수 표시하기

이전 결과 사진을 보면 모든 값들이 다 1~10 사이로 보이는 것을 볼 수 있음. 게시글이 페이지마다 시작 인덱스가 1, 11, 21..처럼 페이지에 맞는 번호를 갖도록 하고자 함. 규칙 현재번호 = 전체건수 - 시작인덱스 - 현재 인덱스 +1 add 뒤에 오는 변수는 - 를 붙이지 못한다 그래서 규칙을 구현하는 데 있어서 아래와 같은 코드가 불가능하다. {{ question_list.paginator.count|add:-question_list.start_index|add:-forloop.counter0|add:1 }} 장고에서 add는 있는데 sub는 없어서 직접 만들어야 한다. sub를 만들어 준 후에 아래와 같은 코드로 적용해야 한다. {{ question_list.paginator.count|s..

잘잔디
'Back' 카테고리의 글 목록