programming (124) 썸네일형 리스트형 Node-Sequelize-Mysql (3) Mysql 로컬 db docker 띄우기 1. MYSQL workbench 다운로드 https://dev.mysql.com/downloads/workbench/ MySQL :: Download MySQL Workbench Select Operating System: Select Operating System… Microsoft Windows Ubuntu Linux Red Hat Enterprise Linux / Oracle Linux Fedora macOS Source Code Select OS Version: All Windows (x86, 64-bit) Recommended Download: Other Downloads: Windows (x86, 64-bit), M dev.mysql.com 2. docker desktop 설치 docker .. Node-Sequelize-Mysql (2) Sequelize 설치 1. mysql, sequelize, sequelize-cli 모듈 설치 $ npm i --save sequelize mysql2 // 모듈 설치 $ npm i -g sequelize-cli // 콘솔에서 sequelize 명령 가능하게 하는 모듈 $ sequelize init // 필요한 파일과 디렉토리를 자동 설치 초기 세팅 폴더 및 파일 생성됨 폴더 및 파일들의 간략한 설명만 하고 실제 세팅은 뒤에서 진행 config.json sequelize 모듈을 DB 환경과 연결 시키는 용도 편의상 js로 변경하여 사용한다 export default { development: { username: "root", password: "hello1234!", database: "DEV-HELLO-WEB", host.. Node-Sequelize-Mysql (1) ORM 개념 orm 사용해 봅시다 ORM 개념 ORM 이란 Object Relational Mapping : 객체-관계 매핑 객체와 관계형 데이터베이스(RDB) 데이터를 자동으로 매핑해주는 툴 mysql로 tb_member이라는 테이블을 만들어서 데이터 관리를 한다 orm으로 Member 객체를 만들어서 sql 쿼리 없이 테이블을 객체처럼 관리한다 객체지향 프로그래밍은 클래스(Class) 개념을 사용하는데, 중간중간 RDB의 테이블 개념이 이질적인 현상을 해소할 수 있다. → 전체적으로 객체지향(Class)로 프로그래밍이 가능 장점 객체 지향적인 코드로 전체적으로 직관적이고, 비즈니스 로직에 집중할 수 있게 해준다 재사용 및 유지보수의 편리성이 증가한다 DBMS에 대한 종속성이 줄어든다 (DB 솔루션과 상관없다) 단.. HMAC : API 통신 클라이언트 무결성 검증 방법 HMAC : Hash-based Message Authentication Code 해쉬 기반 메시지 신원확인 코드 클라이언트 👉 API 서버에 보내는 "요청자의 신원과 메시지의 무결성을 검증하기 위한 해쉬 문자열" HMAC 만드는 방법 HMAC는 인증을 위한 Secret Key와 임의의 길이를 가진 Message를 해시함수를 이용해서 생성 해시함수로 MD5, SHA-256등 일반적인 함수 사용가능 각 알고리즘에 따라 다른 고정 길이의 MAC(=해시문자열 = 코드)이 생성된다 만약 중간에 해커가 코드를 가로채서 동일한 요청을 계속 보낸다면 (Reply attack), 이를 방지하기 위해서 MAC을 생성할 때 timestamp를 추가해서 사용하는 방법이 있다 API 서버는 해당 메시지가 생성된 시간을 알 수.. [JS] 비동기 프로그래밍 Callback -> Promise -> Async-await 비동기 프로그래밍에 대해서 정확하게 알지 못하고 늘 주변만 뱅뱅 돌면서 의미도 모르는 채로 기계처럼 사용해왔다. 회사에서 코드리뷰도 하고, 다른사람이 하던 작업을 넘겨 받아 리팩토링도 하면서 내가 그동안 얼마나 빈약한 개념을 가지고 있었는지 새삼 깨닫게 되었다. 당장 움직이지 않는 손가락이 너무 답답해서 이번에야 말로 비동기 프로그래밍을 이해해보자는 생각으로 정리를 해보았다. Sync & Async Sync JS 는 Sync → 동기적으로 작동 hoisting이 된 이후부터 코드가 작성된 순서대로 실행된다 async 비동기, 언제 코드가 끝날 지 모른다 끝날 때까지 기다리지 않음 ex) setTimeout - callback 함수 Callback Sync callback console.log('1') f.. [DB] 테이블간의 관계성 만들기 기존에 수영장 정보 테이블을 만들었었다 링크참조: https://tacit.tistory.com/147 [DB] CREATE 로 테이블 만들고 INSERT 해보기 create database playground; use playground; CREATE TABLE swimming_pool ( idx int NOT NULL AUTO_INCREMENT COMMENT '수영장 고유번호', title varchar(20) NOT NULL COMMENT '수영장 이름', type tinyint.. tacit.tistory.com 이제 수영장 강사, 강습, 직원 등 추가적인 정보들을 위한 테이블을 만들고, 서로 관계성을 연결시켜보자 먼저 강사정보 테이블 CREATE TABLE trainer ( `idx` int N.. [DB] INDEX 1. Index 란 색인, 빨리 찾기 위한 자료구조, 추가적인 작업공간과 저장공간을 할당한다. 데이터와 데이터의 위치를 저장 2. 장점 select update delete 성능이 향상된다 인덱스를 사용하지 않는 컬럼을 조건절에 검색시, 해당 테이블을 full scan 한다 시스템 부하를 줄일 수 있다 3. 단점 인덱스를 관리하기 위한 추가적인 공간 (약 10%) 이 필요하다 추가 작업이 필요하다 인덱스를 잘못 사용하는 경우 오히려 성능이 저하된다 -> 테이블 rows가 적은 경우는 인덱스를 타고 찾는게 오히려 느려짐 -> update, delete의 경우 데이터를 삭제해도 기존의 인덱스는 삭제하지 않고, '사용하지 않음' 처리를 해주기 때문에, 만약 update, delete가 빈번하게 발생하는 테이블.. [DB] 문자형 컬럼을 탐색하는 방법 1. LIKE 연산자 컬럼에 저장된 문자열 중에서 비슷한거 찾아줘 2. 부분 문자열 검색에 사용되는 패턴 % : *(아스타) 역할하는 와일드카드, 아무나 길이 제한 없이 다 _ : 한자리 모두 같은 결과를 뱉는다. ESCAPE : 검색하고 싶은 문자 자체가 '%' 이거나 '_' 일때 특수문자를 스트링 취급하라고 알려주기 substr 연산을 사용하여 맨 첫글자가 뭐인것, 이런식으로도 검색가능 단, 해당 컬럼에 인덱스를 걸어둔 경우 그 컬럼에 대해서 연산을 한 결과로 검색을하면, 인덱스를 타지 못한다(성능저하) [DB] 집계함수 종류와 각각의 역할 집계함수는 여러행으로부터 하나의 결과값을 반환하는 함수이다. 주로 통계적인 데이터 (총합, 평균, 최대, 최소 등)을 구할 때 사용한다 1. COUNT select count(*) from tb_member where gender = 'female'; 남자들 중에서 member_name 중복을 제거한(동명이인 제거) 카운트 수 select count(distinct member_name) from tb_member where gender = 'male'; 2. MIN/MAX select MAX(member_age) from tb_member; string 값이 저장되는 컬럼에도 사용 가능 -> 사용시 알파벳 사전순서 select MIN(country) from tb_member; 3. AVG(평균), S.. [DB] CREATE 로 테이블 만들고 INSERT 해보기 create database playground; use playground; CREATE TABLE swimming_pool ( idx int NOT NULL AUTO_INCREMENT COMMENT '수영장 고유번호', title varchar(20) NOT NULL COMMENT '수영장 이름', type tinyint unsigned DEFAULT 0 COMMENT '수영장 타입 0:국공립, 1:사설', sido varchar(30) DEFAULT NULL COMMENT '주소 시/도', gugun varchar(30) DEFAULT NULL COMMENT '주소 구/군', road_name varchar(30) DEFAULT NULL COMMENT '주소 도로명', deatil_juso varc.. 이전 1 ··· 3 4 5 6 7 8 9 ··· 13 다음