mysql

Elasticsearch

[Elasticsearch] 03. db연동하기

전차수들에서 엘라스틱 서치를 세팅하고 노리 형태소 분석기도 적용했습니다. 이제 데이터베이스에 있는 값을 엘라스틱 서치와 연동해서 검색해 봅시다. 일반적으로 엘라스틱 서치는 로그스태시를 사용하여 디비와 연동을 하지만, 버전을 맞춰줘야 하고 설정파일도 만져줘야 하는 등 까다롭고 m1에서 호환이 잘되지 않는 단점이 있습니다. 결국엔 로그스태시도 계속 켜놓은 상태로 일정 시간 주기로 스케줄링을 해주는 원리로 돌아가기에 배치서버 만들어서 돌리는 것과 성능에는 별 차이가 없기도 하고, 직접핸들링 하는 게 저는 더 편하기 때문에 로그스태시 같은 배치서버를 직접 만들겠습니다. 1. 서버 세팅 node 서버에 express 프레임워크 세팅해서 진행하겠습니다. 서버세팅법과 crud 부분은 아래의 링크를 참고해 주세요. h..

Elasticsearch

[Elasticsearch] 01. 검색엔진

검색엔진을 구현할때는 다양한 방법이 있습니다. 그 중에서 mysql like, mysql full-text-scan, elasticsearch 등이 있습니다. 1. MySQL Like 일반적으로 mysql 등의 디비에서 키워드를 검색할때는 like연산자를 이용하여 일치하는 값을 검색합니다. 그러나 like연산자를 이용하는 방식은 단어 또는 구문에 대한 검색에는 어느정도 한계가 있습니다. 만약 '크림 파스타' 라는 데이터가 있고, 유저가 "크림파스타" 라고 검색을 한다면 결과값은 나오지 않을 것입니다. 결과값이 나오게 하려면 select * from search_warming where REPLACE(keyword, " ", "") LIKE "%크림파스타%” 이런식으로 조회를 해야 결과가 나올 것 입니다...

Database/mysql

[MySQL] 메모리 낭비 없이 전화번호 저장

int 형으로 전화번호를 적재하는 컬럼을 생성하고, 전화번호 01012345678 을 저장하면 1012345678 로 변환되어 저장된다. 그래서 보통 데이터 타입을 varchar 로 선언하는 경우가 많은데, zerofill 설정을 해주면 값이 없으면 공백을 0으로 채워주기 때문에 01012345678가 정상적으로 출력된다. 그리고 전화번호는 절대 음수가 될 일이 없으므로 UNSIGNED-ZEROFILL 으로 설정해준다. 예시 : alter table user modify column number int(11) unsigned zerofill not null; 이 방식으로 하면 vachar 보다 메모리를 절약할 수 있어서 효율적이다.

Database/mysql

[MySQL] Count 성능 비교

쿼리문 성능 볼 수 있는 명령어는 EXPLAIN 1. count(*) over() as 2. (select count(*) from TABLE) as count + group by 결론 => 서브쿼리 없이 count(*) over() as 하는 것이 성능이 더 좋음

Java

[Java] 3. JWT와 bcrypt 적용하기

JWT와 bcrypt를 사용하기 위해 pom.xml에 // bcrypt관련 org.springframework.security spring-security-web 5.5.2 // JWT관련 io.jsonwebtoken jjwt 0.9.1 com.googlecode.json-simple json-simple 1.1.1 이 내용을 추가합니다. 자바 새 버전에서는 이것도 추가해야 jwt오류가 안난다네요. org.glassfish.jaxb jaxb-runtime 2.3.2 JWT와 bcrypt를 사용하기 위해 service 폴더에 JWTManager.java와 Bcrypt.java 파일을 만들어줍니다. Bcrypt부터 진행하겠습니다. Bcrypt.java package daily.coding.service; i..

Java

[Java] 2. RestController 작성

세팅된 환경이 잘 켜지는지 확인해봅시다. 디렉토리는 밑줄 친 demo까지 이동해야 합니다. 터미널에 아래 명령어를 입력합니다. ./mvnw spring-boot:run 짜잔 에러가 나네요. 포트가 없어서 그러니 포트 설정을 해줍니다. application.properties 파일로 이동합니다. 다른 언어에서 .env파일과 같은 역할입니다. 자신의 디비 정보를 입력해주세요. 그래도 에러가 날거에요 pom.xml에 mysql을 추가해줘야하기 때문입니다. mysql mysql-connector-java runtime 이 부분을 추가해줄게요. 다시 서버를 실행해보면 제대로 실행되는 것을 확인할 수 있네요. 이제 crud를 작성하기 위한 디렉토리 세팅을 하겠습니다. demo>src>main>java|daily|c..

Java

[Java] 01. 시작하기(Spring Boot With VSCode)

spring boot로 Java를 시작해보겠습니다. 에디터는 vscode를 사용하였습니다. 폴더명은 crud로 하여 프로젝트를 생성했습니다. 스프링 부트를 사용하기 위한 vscode extensions을 설치합니다. 저는 요정도로 설치하도록 하겠습니다. 스프링 부트 확장팩은 crud 작성에 필요한 @RequiestMapping 기능을 제공합니다. ctrl + shift + p 를 눌러 Command palette를 엽니다. 'Spring initalizr: Create a Maven Project' 를 선택합니다. 버전을 선택합니다. (아무옵션도 붙지 않는 버전을 선택해야 합니다.) 저는 안정된 버전중에 제일 최신버전인 2.5.3 선택하겠습니다. 언어는 당연히 Java겠죠 그룹아이디를 지정합니다. dai..

Node.js/TypeScript

[Node.js] express + TypeScript로 회원가입 구현

타입스크립트 맛보기 연습을 해보겠습니다! 우선 프로젝트 폴더하나 생성하고, package.json을 작성해볼까요 package.json { "name": "TypeScript", "version": "0.0.1", "main": "app.ts" } 타입스크립트로 만들 프로젝트니 main은 당연히 js가 아니라 ts파일이겠죠 app.ts를 파일을 생성하세요. 미리 필요한 내용을 작성해두겠습니다. import express from 'express'; import cors from 'cors'; const app = express(); app.use(cors()); app.use(express.json()); app.use(express.urlencoded({ extended: false })) app.li..

Node.js/MyTodoList

[Node.js] 01. 시작하기(express)

Node.js와 React를 이용하여 나만의 Todolist를 만들어봅시다. Todolist를 이용하면 기본적인 데이터 처리 기능 CRUD(create, read, update, delete)를 구현할 수 있으므로 모든 API 시작과 끝을 맛볼 수 있게 됩니다. 학습목록 NodeJS MySQL Express Sequelize React 1. 환경세팅 에디터는 vscode를 이용하도록 하겠습니다. 없으신 분들은 설치하시면 됩니다. 제가 사용하는 vscode extension에 관한 정보는 추후에 업데이트 하도록 하겠습니다. node와 mySQL도 자신의 환경에 맞게 설치합니다. 2. 원하는 위치에 MyTodolist폴더를 생성합니다. 저는 onedrive때문에 바탕화면이 아닌, user 디렉토리 안에 my..

hyun_ji
'mysql' 태그의 글 목록