글을 읽어보다가 이해하기 어렵지 않게 글을 작성해주신 우아한테크코스(배달의 민족의 우아한형제들 그룹 내 프로그램)에게 감사의 말을 표시합니다. https://tecoble.techcourse.co.kr/post/2023-11-06-zero-downtime-deployment-2/ 데이터베이스 복제하기(리플리케이션) 2 - 테코와 알아보는 대규모 데이터 관리 테코의 고민 2 - 이벤트에 어떤 내용을 기록해야 해? GTID… tecoble.techcourse.co.kr 여기서는 데이터를 기록하는 시점에서 사용하는 UUID, RAND 와 같은 내용부터 시작하여 SQL 실행, 그리고 데이터가 레플리카로 복제되는 단위동안에 일어나는 액션들과 그 구성들에 대한 구체적인 기술이 되어있어서 MySQL 엔진에 관심이 많..
1. 왼쪽에서 문자열 자르기 left(컬럼명 또는 문자열, 왼쪽에서 잘라낼 문자열의 길이) 사용예 : SELECT left("https://abbo.tistory.com", 5) 결과 : https 사용예 : SELECT left("https://abbo.tistory.com", 8) 결과 : tory.com 사용예 : SELECT left("20211203", 4) 결과 : 2021 사용예 : SELECT left("20211203", 6) 결과 : 202112 2. 중간에서 문자열 자르기 substring(컬럼 또는 문자열, 시작위치, 길이); 사용예 : SELECT substring("https://abbo.tistory.com", 3, 5) 결과 : tps:/ 사용예 : SELECT substri..
동적 쿼리 (dynamic sql) : 자바에서 넘어오는 파라미터에 따라 sql 문의 형식이 변경되는 구조입니다. 쿼리를 전체적으로 보았을 때 자주 사용하는 부분은 where절 내이지만 from절에서도 사용 가능합니다. 이 경우 로 감싸주는 데 주의해야 할 점이 있습니다. 1. null 체크 and table_name.id = #{id} and table_name.id = #{id} and table_name.id = #{id} 2. 문자 비교 and table_name.id = #{id} 3. 문자열 비교 and table_name.id = #{id} and table_name.id = #{id} and table_name.id = #{id} 아래는 사용해도 적용되지 않는 방법들입니다. 경우를 찾아보니..
app.js const server = app.listen(port, () => { console.log('Server is started. port ${port}.'); }); const db = { database: "dev", connectionLimit: 10, host: "192.168.0.1", user: "root", password: "1111" }; const dbPool = require('mysql').createPool(db); app.post('/api/login', async (req, res) => { }); 데이터베이스에 연결 준비를 합니다. sql.js module.exports = { findAllUser: { query : `select * from user` }, fi..
MySQL을 사용하면서 동적 쿼리를 생성하여 사용하는 경우가 더럿 있습니다. 동적 쿼리는 기존의 .xml 방식을 사용하면 등의 태그를 사용해야 하기에 소스의 양이 매우 길어집니다. (이런 예시가 있죠. goodteacher.tistory.com/249) 04. MyBatis - 동적 쿼리 동적 쿼리 이번 포스트에서는 MyBatis가 가진 멋진 기능중 하나인 동적 쿼리 작성에 대해 살펴보자. 동적 쿼리는 상황에 따라 분기 처리를 통해 SQL을 동적으로 만드는 것이다. 특정 Continent에 속한 goodteacher.tistory.com 자바 소스 내의 SQL 클래스를 사용하면 동적 쿼리를 자바 소스로 만들어서 하나의 쿼리로 여러 개의 기능에서 사용할 수 있도록 만들 수 있습니다. 예를 들어서 쿼리가 짜..
Author: 니용 MongoDB 설치경로: https://www.mongodb.com/try/download/community Download MongoDB Community Server Download the Community version of MongoDB's non-relational database server from MongoDB's download center. www.mongodb.com 위와같은 화면이 뜨면 선택하게 됩니다. Complete : 지정된 경로로 설치 Custom : 원하는 경로에 설치 저는 원하는 경로가 따로 없어 Complete를 선택했습니다. MongoDB Compass는 MySQL Workbench와 같은 DB Tool의 일종입니다. 상대적으로 UI가 잘되어 있습니..
Author: 니용 MySQL에서 함수를 만들어보는 연습을 하려고 합니다. 대개는 많은 함수를 제공해주고 있지만 정작 필요할 때 일일이 찾아보기 번거로운 함수도 있지요. DATE_FORMAT 전에 들어가는 파라미터의 VARCHAR(String) 값을 null을 체크하기 위해 일일이 이렇게 사용해야 해요. SELECT YEAR( IF( (#{date} IS NULL) OR (#{date} = '') OR (LENGTH(#{date}) = 0) // 조건식 , CURRENT_DATE() // 조건식이 true 인 경우 , #{date} // 조건식이 false 인 경우 ) AS YEAR 그래서 함수를 생각해보았습니다. DELIMITER $$ DROP FUNCTION IF EXISTS IS_BLANK; // ..
Author: 니용 이번 글에서 다룰 내용은 MySQL에서 TABLE JOIN 할 수 있는 쿼리 중 LEFT OUTER JOIN입니다. 보통 INNER JOIN을 많이 사용하는 것으로 알고 있는데, INNER JOIN의 문제점은 여러 테이블 중 단 한 개에 테이블에 ROW가 존재하지 않는다면 데이터가 출력이 되지 않습니다. 쿼리로 표현하면 이와 같은 방식이죠. SELECT A.*, B.*, C.* FROM TABLE_A A, TABLE_B B, TABLE_C C WHERE 1 = 1 AND A.SEQUENCE = B.SEQUENCE AND A.USER_ID = C.USER_ID AND B.ROLE IS NOT NULL AND C.ARTICLE_COUNT > 0 (1) 1. OUTER JOIN 종류 대개 ..