Database 4

데이터베이스 설계 시 테이블 id INT or BIGINT?

한 프로젝트를 진행하던 중 id 타입을 왜 BIGINT를 썼는지에 대한 질문을 받았다. 프로젝트 규모가 커졌을 경우를 대비해 큰 타입을 썼다고는 답변을 했지만, 그 핑계로 너무 습관적으로 BIGINT를 써오지 않았나 반성을 하게 되었다. 그래서 id 타입에 대해 한 번 파헤쳐보겠다. INT의 범위 INT의 범위는 4바이트이므로 -2147483648 ~ 2147483647의 범위를 갖지만, 대부분의 경우 id에 음수를 사용하지 않기 때문에 UNSIGNED 속성을 지정하면, 0 ~ 4294967295의 범위를 갖는다. 당연한 이야기겠지만, 테이블에 42억 개의 데이터가 들어갈 일이 절대 없다면 BIGINT를 쓸 필요가 없고, 심지어는 경우에 따라서 그보다 더 작은 타입들(MEDIUMINT, SMALLINT,..

Database 2021.12.16

[MySQL] 게시글 검색(제목->내용->태그 순)

최근 커뮤니티 기능을 가진 서버를 개발하다보니, 게시글 검색 기능을 구현하게 되었다. 요구조건은 아래와 같다. - 검색결과는 제목->내용->키워드 순으로 배열 - 제목, 내용, 키워드로 검색된 내용을 각각 최신순으로 나열 요구조건을 딱 보자마자 든 생각은 쿼리 수행시간이 얼마나 될까 하는 걱정이였다. 그래서 나중에 쿼리 수행시간을 테스트하기로 하고, 요구사항 대로 쿼리문을 짜보았다. SELECT * FROM board WHERE title rlike '테스트' AND title rlike '키워드' ORDER BY t2.board_id DESC UNION SELECT * FROM board WHERE content rlike '테스트' AND content rlike '키워드' ORDER BY c2.bo..

Database 2021.12.03

MySQL 기초 2

연습 환경 구성 연습용 샘플 데이터베이스 다운로드 https://dev.mysql.com/doc/index-other.html MySQL :: Other MySQL Documentation Other MySQL Documentation This page provides additional documentation. There's even more available on these extra pages: MySQL Server Doxygen Documentation Title HTML Online MySQL Server (latest version) View Expert Guides Language Title Version HTML Onlin dev.mysql.com 터미널에서 MySQL에 접속한 뒤 다운..

Database 2021.11.10

MySQL 기초 1

MySQL - 가장 널리 사용되고 있는 관계형 데이터베이스 관리 시스템(RDBMS)이다. - 오픈소스이며, 다중 사용자와 다중 스레드를 지원한다. - 여러 프로그래밍 언어를 위한 다양한 API 제공 - 오픈소스 라이센스를 따르지만, 상업적으로 사용할 때는 상업용 라이센스 구입 필요 SQL은 DBMS에 실행할 수 있는 명령의 종류에 따라 DDL, DML, DCL 3가지로 구분된다. DDL(Data Definition Language) DML(Data Manipulation Language) DCL(Data Control Language) 데이터 정의 언어 데이터 조작 언어 데이터 제어 언어 데이터베이스, 테이블, 뷰, 인덱스 등의 데이터베이스 개체를 생성/삭제/변경하는 역할 데이터를 조작(선택, 삽입, 수..

Database 2021.11.10