데이터베이스 14

[MySQL] Stored Function 에서 많이 하는 실수 방지하기

MySQL FunctionMySQL 함수는 MySQL 서버에 내장되어 있는 Built-in Function과 사용자가 직접 C/C++ 언어로 개발해서 플러그인 할 수 있는 User Defined Function 이 존재합니다.그리고 Stroed Function 이 존재하는데요. MySQL Function 종류Built-in FunctionUser Defined Function(UDF)Stored Function Stored FunctionStored Function는 기본적으로 DETERMINISTIC, NOT DETERMINISTIC 로 구분할 수 있습니다.반드시 둘 중 하나의 속성만 가지게 됩니다. DETERMINISTIC(확정적)동일 상태와 동일 입력으로 호출동일한 결과를 반환여기서 입력은 함수의 ..

[MySQL] left join 아무생각 없이 사용하고 있는 것은 아니지?

inner join 과 left join 개념 체크!아래와 같은 테이블이 존재한다고 합시다! memberidnameteam_id1세웅12임하33민영24민주25소영16영민null7영소null teamidname1서버 개발팀2클라이언트 개발팀3디자인팀 inner joininner join 은 테이블의 교집합을 반환합니다.즉, 테이블간에 모두 존재하는 결과만 반환하게 됩니다.예를 들어 member 와 team 테이블이 존재할 때 inner join을 사용하게 되면, 현재 존재하는 team에 속해있는 member 만 반환하게 됩니다.select m.id, m.name, m.team_id, t.name from member minner join team t on t.id = m.team_id; idnameteam..

[MySQL] 페이징 쿼리 작성하기

페이징 쿼리?데이터 전체를 조회하지 않고, 원하는 데이터만 전체 데이터에서 부분적으로 나눠서 데이터를 조회 및 처리하는 방법DB 및 Application Server의 Resource(CPU, Memory, Netwrok…) 사용 효율이 증가!Application 단의 처리 시간이 단축되는 효과! limit, offset을 사용하는 경우 오히려 DBMS 서버에 더 많은 부하를 발생시킨다.일반적으로 DB 서버에서 제공하는 limit, offset 구문을 사용하는 경우가 대다수!limit, offset을 사용하는 경우 오히려 DBMS 서버에 더 많은 부하를 발생시킨다.select * from table limit 500 offset 0;select * from table limit 500 offset 500..

[MySQL] count(*) 과 count(distinct)

많은 사람들이 select * 보다 select count(*) 이 더 빠를 것으로 생각합니다. 🤨그런데, 일반적으로 둘의 성능이 비슷하게 측정되는 경우가 훨씬 많다고 합니다.왜냐하면, 서비스 구현 요건상 select * 쿼리는 limit 조건이 있기 때문입니다.반면에 select count(*) 쿼리는 limit 조건 없이 실행되는것이 일반적 입니다…! 그리고 요즘 orm을 대부분 사용하는데, orm을 사용하다보면 단순히 레코드 건수를 확인하는 쿼리를 작성했을뿐인데,부하가 훨씬 높은 select count(distinct(id)) 같은 쿼리를 실행하는 경우가 있습니다. select count(*)과 select * 성능아래의 쿼리의 경우에는 2개의 쿼리는 동일한 성능을 내게 됩니다.select cou..

[MySQL] VARCHAR vs TEXT

이번에는 VARCHAR 와 TEXT에 대해서 알아봅시다! 🙌 공통점문자열 속성 값을 저장최대 65,535 bytes 까지 저장 가능 차이점VARHCAR 타입 컬럼에는 지정된 글자 수 만큼만 데이터 저장 가능VARCHAR(100) → 100글자 이하만 저장 가능TEXT 타입 컬럼은 인덱스 생성 시 반드시 Prefix 길이 지정 필요CREATE INDEX ix_text_column ON table (text_column(100));TEXT 타입 컬럼은 표현식으로만 디폴트 값 지정 가능CREATE TABLE tb1 (col TEXT DEFAULE ‘abc’) → 에러 발생CREATE TABLE tb1 (col1 TEXT DEFAULT (’abc’)) → 생성 가능 일반적인 사용 형태길이가 짧으면 VARCHA..

[MySQL] CHAR vs VARCHAR

제가 개발을 하면서 DB에 가장 많이 사용하는 타입이 CHAR, VARCHAR 입니다.그런데 CHAR와 VARCHAR의 공통점과 차이점에 대해서 정확하게 알지 못한 상태로가변이면 VARCHAR, 고정이면 CHAR를 사용하면 된다! 정도로 이해하고 사용했습니다.더 이상 이렇게 살면 안될거 같아 정리해야겠다는 마음이 들어서 포스팅을 작성하게 되었습니다. CHAR의 VARCHAR 간단 소개먼저 간단하게 공통점과 차이점에 대해서 정리해보겠습니다!공통점문자열 저장용 컬럼최대 저장 가능 문자 길이 명시 가능! (byte 수가 아님!!)CHAR(10), VARCHAR(10)은 모두 10글자 까지 저장 가능차이점CHAR는 값의 실제 크기에 관계없이 고정된 공간 할당VARCHAR는 값의 실제 크기에 맞게 공간 할당최대 ..

[Elasticsearch] Elasticsearch 검색 심화 풀 텍스트 쿼리(Full Text Query)

Elasticsearch 검색 심화 풀 텍스트 쿼리(Full Text Query) 여기에 작성한 모든 내용은 Elastic 가이드 북를 참고하여 작성했습니다. 더 자세한 내용을 알고싶으면 해당 링크로 이동해주세요.^^ 🔍 검색? 데이터 시스템의 검색은 수 많은 데이터 중에서 조건에 부합하는 데이터로 범위를 축소하는 행위 라고 합니다. 인터넷 쇼핑몰에 상품이 1,000만개가 있을 때 검색창에 "무선 이어폰" 이라고 입력해서 시스템에 있는 전체 1,000만개의 상품들 중 무선 이어폰과 연관된 상품만 추려내는 과정을 검색이라고 할 수 있습니다. 검색 엔진 설정에 따라 상품명이 정확히 "무선 이어폰" 인 것만 보여줄지, “애플 무선 이어폰" 처럼 전체 상품명 중에 검색어를 포함하기만 하면 보여줄지, 가격, 출시..

[Elasticsearch] 초간단 REST API를 사용한 Elasticsearch CRUD

Elasticsearch의 진가 검색 기능 사용해보기(+벌크 API) 여기에 작성한 모든 내용은 Elastic 가이드 북를 참고하여 작성했습니다. 더 자세한 내용을 알고싶으면 해당 링크로 이동해주세요.^^ 벌크 API(_bulk API) 검색 기능을 사용하기 위해서는 데이터가 있어야겠죠? 이전 시간에 우리는 PUT 메소드를 이용하여 인덱스와 도큐먼트를 생성하는 방법을 배웠습니다. 그런데 이렇게 요청 1개당 1개의 도큐먼트를 생성하는 것은 불편합니다. 여러 명령을 한번에 수행할 수는 없을까? 🤔 여러 명령을 배치로 수행하기 위해서 _bulk API의 사용하면 됩니다! _bulk API로 index, create, update, delete의 동작이 가능하며 delete를 제외하고는 명령문과 데이터문을 한 ..

[Elasticsearch] 초간단 REST API를 사용한 Elasticsearch CRUD

😽 초간단 REST API를 사용한 Elasticsearch CRUD여기에 작성한 모든 내용은 Elastic 가이드 북를 참고하여 작성했습니다.더 자세한 내용을 알고싶으면 해당 링크로 이동해주세요.^^  Elasticsearch와 Kibana 설치를 완료했으면, 이제 실습을 진행해 볼까요^^??2023.12.13 - [데이터베이스/0 + Elasticsearch] - [Elasticsearch] ✂️ 10분 컽 초간단 Elasticsearch + kibana 설치 매뉴얼 Kibana에 접속하고메뉴 > Management > Dev Tools 로 이동합니다.  URL 구조Elasticsearch에서는 단일 도큐먼트 별로 고유한 URL을 갖고 있습니다.https://://_doc/ CreateElastic..

[Elasticsearch] ✂️ 10분 컽 초간단 Elasticsearch + kibana 설치 매뉴얼

Elasticsearch + kibana 설치 macOS Local 설치를 기준으로 설명 드립니다.^^ 다운로드 Elastic 제품 다운로드 페이지로 접속합니다. Elastcisearch와 Kibana를 다운로드 합니다. 8.1.0 버전을 다운 받습니다. https://www.elastic.co/downloads/past-releases#elasticsearch https://www.elastic.co/downloads/past-releases#kibana 운영체제에 알맞은 플랫폼을 설치합니다. 압축 해제 다운로드 받은 파일을 압축 해제 합니다. Desktop에 es8 폴더를 만드고 해당 위치로 압축해제한 폴더를 이동시킵니다. 폴더명을 아래와 같이 변경합니다. 터미널 창을 열고 해당 위치로 이동합니다. ..