반응형

저장 프로시저 (Stored Procedure) 

프로시저는 SQL Server에서 제공되는 프로그래밍 기능이며, 쿼리 문의 집합체라고 볼 수 있다.

간단하게로는 SELECT, INSERT, UPDATE, DELETE 등의 DQL, DML을 사용할 수 있으며,

조금 더 나아가서 IF 문이나 DECLARE, SET 등의 프로그래밍 문법을 사용할 수도 있다.

 

장점 및 단점

장점

  • 보안성 향상
    • 프로시저 단위로 실행 권한을 부여할 수 있기 때문에, 기본적인 보안 사고에 대처가 유연한 편이다.
  • 네트워크 소요 시간 절감
    • 쿼리를 다중으로 실행하는 경우, 한번의 호출을 통해 다중의 쿼리가 실행되기 때문에 네트워크에 대한 부담과 소요 시간을 줄일 수 있다.
  • 운영 배포 용이성
    • 별도의 WAS 서버 재기동 없이 SP 수정으로 조회, 수정, 추가 등의 가벼운 소스 변경 등이 가능하여, 긴급 배포 등이 용이하다.

단점

  • 낮은 처리 성능
    • 프로시저의 경우 성능이나 최적화가 부족하여 수행 능력이 떨어지며, 특히 문자열이나 숫자 연산에 사용하면 JAVA, C 등에 비해서 효율이 좋지 않다.
  • 디버깅 및 유지보수의 어려움
    • 배포, 버전 관리 등에 대한 이력 관리가 힘들다. (별도의 Description 사용)
    • SP가 수정되는 경우 현재 운영 중인 서비스에 영향도 분석이 어렵다.
    • APP에서 SP를 호출하여 사용하는 경우 문제가 생겨도 해당 이슈에 대한 추적이 힘들다. (별도의 에러 테이블 사용)

프로시저 생성, 수정, 삭제

기본적인 생성 방식은 다음과 같다.

 

USE [DB명]
GO

CREATE PROCEDURE [dbo].[프로시저명] (@파라미터명 NVARCHAR(10), @파라미터명2 int)
AS
BEGIN
    -- 사용할 쿼리
    SELECT 1 FROM test
END
GO

 

사용할 DB명과 프로시저명을 입력하여 사용하며, 파라미터의 경우 필요한 경우 자료형과 함께 입력하여 사용한다.

BEGIN과 END 사이에는 사용할 쿼리나, 프로그래밍 문법을 사용하여 실행할 수 있다.

 

수정의 경우, 생성과 기본 방식은 동일하며, CREATE가 아닌 ALTER를 사용하여 수정한다.

다만, 해당 SP의 경우 가장 기본적인 문법으로 현업에서는 아래와 같은 디스크립션을 추가하기도 한다.

 

USE [DB명]
GO

/*=============================================
    작성자: 개발새발
    생성날짜: 2021-09-13
    업데이트날짜: 2021-09-13
    설명: 프로시저 기본 생성 방식
    exec 프로시저명 'TEST', 1
=============================================*/

ALTER PROCEDURE [dbo].[프로시저명] (@파라미터명 NVARCHAR(10), @파라미터명2 int)
AS
BEGIN
    -- 사용할 쿼리
    SELECT 1 FROM test
END
GO

 

삭제는 DROP 구문을 사용하여 삭제할 수 있다.

 

DROP PROCEDURE 프로시저명

 

프로시저 조회 및 실행

프로시저 조회는 sp_helptext를 사용하여, 텍스트 형식으로 결과를 표기할 수 있다.

 

sp_helptext 프로시저명

 

어떤 툴에서 DB를 연결하여 사용하느냐에 따라 다른데, 기본적으로 사용하는 SSMS (SQL Server Management Studio)에서는 GUI를 통해 저장 프로시저 스크립팅으로 CREATE, ALTER, DROP 등의 문법을 자동으로 생성해주며,

인텔리제이에서 데이터베이스를 연결하는 경우 SQL Generator (Ctrl + Alt + G) 통해 프로시저를 조회하는 것이 더 간단하다.

 

프로시저 실행은 exec 구문을 사용하여 해당 프로시저를 사용할 수 있다. 실행할 SP의 입력할 파라미터가 존재하는 경우, 순차적으로 해당 파라미터를 입력하면 정상적으로 실행된다.

 

exec 프로시저명 'TEST', 1
반응형
반응형

UF (Universal Forwarder) 란 ?
Splunk Enterprise로 데이터를 보내기 위해 로그 등의 데이터를 수집할 서버 설치하는 간소화된 Splunk이다.

리소스 사용량은 3% 내외지만, 데이터 전송량이 늘어날 경우 늘어나며 데이터 전송 속도의 제한이 기본적으로 존재하기 때문에 리소스 사용량을 마냥 신뢰할 수 없다는 것이 함정이다.

 

UF 설치 방법

U/F는 기존 Splunk 설치 파일과 별도의 설치 파일을 해당 OS에 알맞게 Splunk 사이트에서 다운로드하여 설치하면 된다.

https://www.splunk.com/en_us/download/previous-releases/universalforwarder.html

 

universalforwarder

 

www.splunk.com

사이트 주소에 접속하여 파일을 다운로드 한 뒤, 

https://kairuen.tistory.com/9

 

Splunk 설치 및 설정

Splunk란? 스플렁크(Splunk)는 웹 기반 인터페이스를 통해 데이터 수집, 검색, 분석 및 모니터링을 위한 비정형 데이터 분석 솔루션이다. 현업에서는 주로, 보안 혹은 관제를 위한 빅데이터 솔루션으

kairuen.tistory.com

기존 Splunk 설치 방법과 동일하게 설치 및 설정을 진행하면 된다.

 

U/F 설정

기본적으로 U/F에서는 conf 파일을 수정하여, 데이터 수집 및 전달, 속도 제한 등의 설정이 가능하다.

경로는 $SPLUNK_HOME/etc/system/local 으로 들어가서 해당 파일명으로 생성한 뒤 아래 내용을 필요에 맞게 설정하면 된다.

 

outputs.conf (데이터 전송 설정)

[tcpout]

defaultGroup = <target_group> : 인덱스로 보낼 그룹명 지정

[tcpout:<target_group>]

server = [<ip>|<servername>]:<port> : 인덱스로 보낼 IP 및 포트 지정

[tcpout-server://<ip address>:<port>] : 인덱스로 전송

 

inputs.conf (데이터 수집 설정)

[default]

host = <string> : 데이터 전송 시, 호스트명

index = <string> : 데이터 전송 시, 저장할 인덱스

source = <string> : 데이터 전송 시, 소스 설정

sourcetype = <string> : 데이터 전송 시, 소스 타입 설정

[monitor://<path>] : 모니터링할 폴더 및 파일 지정

_TCP_ROUTING = <tcpout_group_name> : 모니터링 후 데이터 전송할 그룹

 

limit.conf (U/F 제한 설정)

[thruput]

maxKBps = <integer> : 데이터 전송 속도 설정 (기본 256 Kbps) - 대부분 빅데이터를 구축하기 위함이므로 설정 변경 필요

 

등의 파일을 기본적으로 설정해주면 된다.

이러한 설정 이외에도 여러 가지 conf가 존재하며 각 설정 하위에도 추가적인 설정은 존재하지만, 기본적인 데이터 전송은 위의 설정만 추가하여도 가능하다.

반응형

'개발새발 > Splunk' 카테고리의 다른 글

Splunk 설치 및 설정  (0) 2021.05.26
반응형

Spring Boot를 작업하다보면, 간혹 해당 에러에 대해서 확인할 수 있다.

별도의 설정을 하지 않는다면, Spring Boot에서는 Hikari가 기본적으로 제공되는데, 해당 기본 세팅이 연결한 DBMS 세팅과 차이가 존재하여, Connection 에러가 뜨는 것이라고 볼 수 있다.

 

java.sql.SQLException: Connection.setNetworkTimeout cannot be called on a closed connection
        at org.mariadb.jdbc.internal.util.exceptions.ExceptionMapper.getSqlException(ExceptionMapper.java:277) ~[mariadb-java-client-2.4.4.jar!/:na]
        at org.mariadb.jdbc.MariaDbConnection.setNetworkTimeout(MariaDbConnection.java:1700) ~[mariadb-java-client-2.4.4.jar!/:na]
        at net.sf.log4jdbc.sql.jdbcapi.ConnectionSpy.setNetworkTimeout(ConnectionSpy.java:1120) ~[log4jdbc-log4j2-jdbc4.1-1.16.jar!/:na]
        at com.zaxxer.hikari.pool.PoolBase.setNetworkTimeout(PoolBase.java:556) [HikariCP-3.4.2.jar!/:na]
        at com.zaxxer.hikari.pool.PoolBase.quietlyCloseConnection(PoolBase.java:133) [HikariCP-3.4.2.jar!/:na]
        at com.zaxxer.hikari.pool.HikariPool.lambda$closeConnection$1(HikariPool.java:447) [HikariCP-3.4.2.jar!/:na]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) ~[na:1.8.0_252]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) ~[na:1.8.0_252]
        at java.lang.Thread.run(Thread.java:748) ~[na:1.8.0_252]

 

우선, 설정을 변경하기 전에 DB에 설정된 값을 확인하여야하는데, 해당 SQL을 통해 확인할 수 있다.

 

SHOW variables LIKE '%time%'

 

 

해당 SQL을 사용시, 아래와 같은 결과 값을 볼 수 있으며 여기서 두 가지의 데이터를 매핑 시키면 된다.

 

DB HikariCP
wait_timeout max-lifetime
connect_timeout connection-timeout
  • max-lifetime : 커넨션의 최대 유지 시간 설정. 사용중인 커넥션은 maxLifetime에 상관없이 제거되지않고, 사용중이지 않을 때만 제거된다. 0으로 설정하면 무한 lifetime이 적용되지만, idle-timeout 설정되어 있는 경우에는 적용되지 않는다. (default: 1800000 (30분))
  • connection-timeout : pool에서 커넥션을 얻어오기전까지 기다리는 최대 시간. 허용가능한 시간을 초과하면 SQLException이 발생하며, 설정가능한 가장 작은 시간은 250ms 이다. (default: 30000 (30초))

해당 데이터의 시간을 확인하고, DB의 경우는 초(seconds) 단위 HikariCP의 경우 밀리세컨드(millisecond) 단위를 사용하기 때문에 변환기를 사용하거나 혹은 계산하여 HikariCP에 설정할 시간을 계산한 뒤에 1~2초 정도 적게 설정하면 된다

계산이 다 끝난 경우에는 properties 파일에 해당 데이터를 입력하면 해당 에러를 해결할 수 있다.

 

spring.datasource.hikari.connection-timeout=58000
spring.datasource.hikari.max-lifetime=580000
반응형
반응형

코딩 스타일

 

코딩에는 각 사람의 습관이나 스타일이 묻어 나오는 경우가 많다. 다만, 혼자 개발하는 경우가 아닌 협업하는 경우 코드의 가독성 등을 위해 변수명, 클래스명, 괄호 등의 스타일을 통일하는 경우가 존재하는데 몇 가지의 스타일의 경우 보편적으로 용어 및 스타일이 정해져 있다.

 

코딩 스타일 (괄호)

 

대표적인 코딩 스타일에는 BSD, K&R, GNU 3가지가 존재한다. 대부분은 언어 혹은 IDE 별로 기본 포맷팅이 정해져 있으나, 개인의 선호에 따라 다르기도 하기 때문에 가볍게 보고 넘어가면 좋을 듯하다.

 

BSD

if (a = b)
{
    return result;
}

비주얼 스튜디오의 기본 포맷팅으로 사용되는 방식이다. GNU와 비슷하지만, 들여 쓰기가 없고 K&R처럼 수평으로 길게 사용 가능하다.

 

K&R

if (a = b) {
    return result;
}

이클립스에서 기본 포맷팅으로 사용되는 방식이다. 자바, 자바스크립트, C++ 등에서 주로 볼 수 있으며, 반복문 등 사용 시에도 코드량이 줄기 때문에 출판되는 개발 책 등에서도 자주 확인할 수 있다. 한눈에 많은 코드를 볼 수 있고, 수평으로 길게 사용 가능하다.

 

GNU

if (a = b) 
    {
        return result;
    }

BSD와 비슷한 방식이지만, 들여 쓰기가 존재하여 수평으로 조금 더 좁게 사용하여야 한다.

 

표기법

 

표기법의 경우 변수, 함수명, 클래스명 등을 작성할 때, 일괄적인 규격을 정하기 위하여 존재하며 괄호 등의 코딩 스타일과 달리 협업할 때는 정해진 규격대로 변수명, 함수명 등을 해당 프로젝트에 정해진 표기 법대로 작성해야 되는 경우가 많다.

 

카멜 표기법 (Camel Case)

첫 문자의 첫 글자는 소문자로 표기하고, 그 이후 연결되는 문자들은 첫 글자를 대문자로 표기한다. 문자의 형태 때문에, 단봉낙타 표기법이라고도 하며, 변수명, 함수명 등에 자주 사용된다.

ex) helloWorld

 

파스칼 표기법 (Pascal Case)

모든 문자의 첫 글자를 대문자로 표기한다. 쌍봉낙타 표기법이라고도하며, 클래스명에 자주 사용된다.

ex) HelloWorld

 

스네이크 표기법 (Snake Case)

모든 문자의 첫 글자를 소문자로 표기하며, 각 문자들은 언더바(_)로 이어서 사용한다. 변수명, 함수명, 데이터 타입 등에 사용되며, DB에서 자주 사용한다.

ex) hello_world

 

케밥 표기법 (Kebab Case)

하이픈(-)로 단어를 연결하는 표기법이다. 주로 HTML, CSS, URL 등에서 자주 사용되며, 변수나 함수 등에서는 하이픈을 못 쓰게 하는 경우도 존재한다.

ex) hello-world

 

헝가리안 표기법 (Hungarian Notation)

접두어에 자료형을 붙여서 표기하며, 현재는 잘 사용되지 않는다.

ex) strHelloWorld

 

이 외에도 사실 들여 쓰기나 공백, 주석 등 다양한 코딩 스타일이 존재하지만 해당 부분은 각 개인의 스타일에 맞춰서 개발을 진행하거나 혹은 협업 시 해당 규격에 맞춰서 작성을 진행하기 때문에 상황에 맞춰서 작업을 진행하면 크게 문제없이 개발을 진행할 수 있으리라 생각된다.

반응형

'개발새발 > 기타' 카테고리의 다른 글

SQL Injection이란?  (0) 2024.05.24
반응형

Splunk란?

 

스플렁크(Splunk)는 웹 기반 인터페이스를 통해 데이터 수집, 검색, 분석 및 모니터링을 위한 비정형 데이터 분석 솔루션이다. 현업에서는 주로, 보안 혹은 관제를 위한 빅데이터 솔루션으로 사용된다. 자체적으로 다양한 앱을 지원하는데 오늘은 기본적인 설치 방법에 대해서 알아보고자 한다.

 

Splunk 사양

 

구분 CPU Memory Disk OS
최소 요구 사항 2+ GHz
6코어 2소켓+
12GB+ RAID 0 or 1+0 64bit

Splunk는 주로 빅데이터를 위한 서버에 구축하기 때문에, 요구하는 최소 사양의 경우는 위와 같다.

 

Tip

 

추가적인 팁으로는 추후 클러스터링 환경을 구축하게 되는 경우 서로 다른 성능의 하드웨어를 붙이게 되는 경우 가장 낮은 성능의 하드웨어에 맞춰서 성능이 평준화되기 때문에, 동일한 성능의 하드웨어로 환경을 구축하는 것이 좋다.

또한, Disk의 RAID 구성의 경우 0 or 1+0를 사용하나, 0의 경우 Mirroring을 하지 않기 때문에, 이후 추가적인 하드웨어 작업을 하는 경우 기타 추가 작업이 필요하여 1+0의 경우 하드웨어만 장착하면 기타 추가 작업 없이 증설이 가능하다.

 

Linux 설치 방법

 

리눅스에서 스플렁크를 설치하기 전에 우선, 별도의 계정 생성이 필요하다.

 

 

  • -d : 계정의 홈 디렉토리
  • -s : 사용 shell 지정
  • splunk : 계정명

 

위와 같이 별도의 계정 생성을 하는 이유는 root로 스플렁크를 설치하거나 실행하는 경우 파일 등이 실행 권한 문제로 인해 정상적으로 작동하지 않는 경우가 존재하기 때문에 위와 같이 별도의 계정 생성 이후 해당 계정에서 스플렁크를 설치 및 작동하기 위함이다.

 

계정 생성을 마치면, 리눅스에 대한 별도 환경 설정이 필요하다. 이유는 다음과 같은데, 리눅스 시스템의 경우는 다중 사용자를 염두에 두고 만들어진 시스템이고, 기본적으로 허용되는 리소스 한계가 너무 낮기 때문에 빅데이터 시스템을 구축하기에 문제가 있어서 변경이 필요하다.

 

ulimit

 

file size open files max user processes data segment size
ulimit -f ulimit -n ulimit -u ulimit -d

해당 시스템 명령어를 쳐서 값이 작은 경우에는 해당 시스템 환경에 맞춰서 값을 올려주어야 한다. 변경해야 하는 위치는

/etc/security/limits.conf 이다.

 

위와 같은 설정이 마무리되었으면, https://www.splunk.com/en_us/download/previous-releases.html 해당 페이지에서 Splunk 인스톨러를 받을 수 있다.

리눅스의 경우 rpm / tgz / deb 세 가지 파일이 존재하는데, 각각 아래의 명령어로 설치하면 된다.

 

rpm deb tgz
rpm -ivh splunk-8.1.4-Linux-x86-64.rpm deb -i splunk-8.1.4-Linux-x86-64.deb tar xzvf splunk-8.1.4-Linux-x86-64.tgz

 

Splunk 초기 실행

 

위와 같은 명령어로 Splunk를 설치하는 경우 실행 및 편리성을 위해 부팅 시 자동 실행 되게 설정이 가능하다.

  • /opt/splunk/bin/splunk start --accept-license

명령어를 통해, splunk를 최초 실행해주고, 아래와 같은 명령어를 통해 부팅 시 자동 실행을 켜준다.

  • root 계정 : /opt/splunk/bin/splunk enable boot-start
  • splunk 계정 : /opt/splunk/bin/splunk enable boot-start -user splunk

한 시스템에 2개 이상의 splunk를 실행하는 경우에는 마지막 실행한 자동 실행 명령만 init.d에 등록되며, 2개 이상 부팅 시 자동 실행을 키려면 별도의 쉘 작성이 필요하다.

 

Windows 설치 방법

 

Windows 서버의 경우는 더 쉽게 설치할 수 있다.

https://www.splunk.com/en_us/download/previous-releases.html 에서 msi 파일을 다운로드한 뒤, 해당 파일을 실행시켜주면 설치할 수 있다.

 

 

 

 

 

기본적인 설치 경로 변경, 설치 계정 설정, 관리자 아이디 비밀번호 생성 등의 설정을 마치면 정상적으로 설치를 완료할 수 있다.

 

Tip

 

윈도우에서 설치하는 경우 스플렁크를 윈도우 서비스로 등록되어 제어판 - 관리도구 - 서비스에서 실행, 중지, 자동 실행 설정이 가능하다. (Splunkd Service)

Splunk를 초기 실행할 때는 윈도우에서 관리자 모드로 실행하여 권한 문제가 없도록 하는 것이 안정적이다.

 

Splunk 실행

 

모든 설치를 마친 이후에는 http:localhost:8000 으로 접속하여, 웹 인터페이스에 접속할 수 있다.

Splunk는 웹 기반 인터페이스이기 때문에, 기본적인 모니터링 등의 작업은 웹에서 진행할 수 있으며, Splunk 실행 시, 권장하는 브라우저는 Chrome 이다.

반응형

'개발새발 > Splunk' 카테고리의 다른 글

UF (Universal Forwarder) 설치 및 conf 설정  (0) 2021.06.08
반응형

Lombok이란?

Getter/Setter/ToString과 같은 매서드를 자동으로 생성/연결해주는 자바 라이브러리로 사용 시 코드량을 줄이는데 도움을 받을 수 있다.

 

설치 방법

홈페이지에 접속하여, 원하는 버전을 선택한 이후 Maven 탭의 dependency 내용을 복사하여, pom.xml에 입력하면 된다.

https://mvnrepository.com/artifact/org.projectlombok/lombok 

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.18.20</version>
    <scope>provided</scope>
</dependency>

위와 같은 형태로, 보통은 버전 정보만 본인이 사용하려고 하는 버전으로 입력해주면 된다.

 

Lombok은 @Data 어노테이션을 사용하여 getter, setter 생성자를 자동으로 생성할 수 있지만, 별도의 jar 파일을 다운로드하지 않으면 어노테이션은 사용할 수 있으나 생성자가 생성되지 않는 것을 확인할 수 있다. 

package com.land.domain;

import java.sql.Date;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@AllArgsConstructor
@NoArgsConstructor
public class Member {
	private Long idx;
	private String userId;
	private Date regDate;
	private Date modDate;
}

 

해당 문제를 해결하기 위하여, 별도의 jar 파일을 다운로드하여 설정하여야한다.

 

두 가지 방법이 존재하는데, 

  • https://projectlombok.org/all-versions 에서 원하는 버전을 다운로드하여서 jar 파일을 사용하거나,
  • Maven을 이용해 다운로드한 경우 maven repository 내 lombok 디렉토리에 jar 파일을 찾는다. (사용자\사용자명\.m2\repository\org\projectlombok\lombok\버전)

위와 같이 jar 파일을 다운로드하면, cmd (명령 프롬프트)를 실행하여 jar 파일을 실행시킨다.

 

Specify location을 클릭하여, STS(eclipse) 실행 파일을 선택한 뒤에, Install / Update를 누르면 정상적으로 lombok을 설치할 수 있다.

 

 

정상적으로 설치되는 경우, @Data 어노테이션을 설정하면, Outline에 정상적으로 getter 및 setter 등이 생성되는 것을 확인할 수 있다.

 

 

에러 해결

위와 같이 설정을 하는 경우 대부분 lombok 라이브러리를 정상적으로 사용할 수 있으나, 사용이 되지 않는 경우 STS가 설치된 폴더로 들어가서 SpringToolSuite4.ini 파일을 실행하여 -vmargs 아래 위치에 설정을 추가하면, 정상적으로 라이브러리를 사용할 수 있다.

 

-javaagent:lombok.jar
-Xbootclasspath/a:lombok.jar

 

혹은 아래와 같이, lombok.jar 파일의 위치를 직접 지정하여 설정하는 것도 가능하다.

 

-javaagent:C:\DEV\sts-4.5.1.RELEASE\lombok.jar

 

반응형

'개발새발 > Spring Boot' 카테고리의 다른 글

Spring Boot에서 JS 사용 및 설정  (0) 2022.09.23
Spring Boot 프로젝트 설정 방법  (0) 2021.05.19
반응형

DB에서 데이터를 제거할 때 사용하는 것은 주로 DELETE, TRUNCATE, DROP 세 개의 명령어를 사용한다.

 

우선 사용 방법에 대해서 먼저 알아보자면, 아래와 같다.

 

DELETE

 

DELETE TABLE [테이블명] WHERE [컬럼명] = [컬럼]

 

TRUNCATE

 

TRUNCATE TABLE [테이블명]

 

DROP

 

DROP TABLE [테이블명]

 

사용 방법은 매우 간단한 편이고 모두 데이터 삭제를 위한 명령어지만 각각 차이점이 존재한다.

 

DELETE

데이터는 지워지지만 테이블 용량이 줄어들지 않는다.

조건 식을 통해 원하는 데이터만 삭제가 가능하다.

COMMIT 명령어를 사용하기 전이라면, ROLLBACK을 통해 데이터 복구가 가능하다.

내부적으로 한 줄씩 제거하기 때문에, 처리 속도가 상대적으로 느리다.

삭제 행수를 반환한다.

 

TRUNCATE

용량이 줄어들고, 인덱스 등도 삭제된다.

테이블은 삭제되지 않고 데이터만 삭제된다.

조건 식이 불가능하며, 데이터 전체를 삭제한다.

자동 COMMIT이 되는 명령어이기 때문에, 데이터 복구가 불가능하다.

삭제 행수를 반환하지 않는다.

 

DROP

테이블 자체를 제거한다.

자동 COMMIT이 되는 명령어이기 떄문에, 데이터 복구가 불가능하다.

 

위와 같은 차이 때문에, 각 명령어는 상황에 맞는 활용이 필요하며 운영 서버에서 사용 시 각별한 주의를 요구한다.

반응형

'데이터베이스 > Mysql' 카테고리의 다른 글

Auto Increment 설정 및 값 초기화  (0) 2021.05.18
반응형

Spring Boot란?

 

기존 스프링 프레임워크 프로젝트들의 복잡한 설정 및 라이브러리 버전 등의 문제를 완화하여, 간단하게 프로젝트를 생성할 수 있는 라이브러리이다.

기본적으로 사용자가 자주 설정하는 기본 설정들을 포함하고 있으며, 기존 web.xml, ServletContext.xml, rootContext.xml 설정 등을 기존처럼 복잡하지 않게 설정 가능하다.

 

Spring Boot 프로젝트 시작

 

 

IDE(개발 툴 - Spring Tools)를 사용하는데, Spring Starter Project를 눌러 새 프로젝트를 생성할 수 있다.

 

 

Name, Type, Packaging, Java Version, Group, Package 등을 설정하고, Next를 눌러 다음 작업으로 넘어갈 수 있다.

  • Name : 프로젝트 명
  • Type : Maven / Gradle 등 라이브러리 관리 도구
  • Packaging : Jar / War
  • Java Version : Project에서 사용할 자바 버전
  • Group : GroupId 자신의 프로젝트를 식별해주는 고유 아이디
  • Artifact : ArtifactId 버전 정보를 생략한 이름으로, 보통 프로젝트 명과 동일

 

프로젝트의 기본 개요를 설정 이후, Spring Starter project Dependencies에서는 pom.xml에서 설정할 의존성 항목 중 자주 쓰는 항목들을 미리 선택하여 설정할 수 있다.

(프로젝트 생성 시에 생략하고 이후 pom.xml에서 직접 추가하여도 차이가 없다.)

각자 개발 환경 및 설정에 맞춰서 해당 의존성은 추가 및 제거가 가능하다.

  • Spring Boot DevTools : 개발의 편의를 위한 도구 지원 (Property 캐싱 설정, 자동 재시작, LiveReload 등)
  • Lombok : Getter/Setter, ToString의 메서드를 자동으로 만들어주는 라이브러리
  • MyBatis Framework : 프로그램 코드와 SQL을 분리하여, 자바의 관계형 데이터베이스 프로그래밍을 좀 더 쉽게 할 수 있게 도와주는 프레임워크
  • MariaDB Driver : DB 연결을 위한 드라이버 (MariaDB)
  • Spring Web : Spring MVC를 사용한 RESTful 서비스를 개발

Finish를 클릭하여, 마무리하면 자동적으로 Build가 이루어지며 프로젝트가 생성된다.

반응형

'개발새발 > Spring Boot' 카테고리의 다른 글

Spring Boot에서 JS 사용 및 설정  (0) 2022.09.23
Lombok 설치 및 STS 연동  (0) 2021.05.22
반응형

RDBMS에선 데이터를 쌓는데 Primary Key가 설정된 컬럼에 한하여 데이터 생성 시, 자동으로 숫자가 증가하게 하는 설정이 가능하다.

설정하는 방법은 간단하며, 테이블 생성 시 증가될 컬럼에 auto_increment를 입력하면 된다.

 

테이블을 생성할 DB에 아래와 같은 형식으로 auto_increment를 설정할 수 있다.

다만, 여기서 주의할 사항은 auto_increment의 경우는 PK로 지정된 컬럼만 사용 가능하고 그 외에는 에러가 발생한다.

CREATE TABLE land.`user` (
	idx bigint(20) auto_increment NULL,
	CONSTRAINT user_pk PRIMARY KEY (idx)
)

 

이런 형태로 테이블을 생성하여, 데이터를 쌓다보면 idx (키 값)이 1씩 늘어나는 것을 볼 수 있는데,
1, 2, 3 중에 3을 삭제하고 재 생성하는 경우 3이 생성되는 게 아닌 4부터 데이터가 생성되는 것을 볼 수 있다.

이러한 것을 방지하거나 혹은 재정리하기 위해 auto_increment 값을 초기화할 필요가 있다.

ALTER TABLE land.user AUTO_INCREMENT = 3;

해당 문장같은 형태로 ALTER문을 사용하여, 강제로 원하는 키 값을 지정해줄 수 있다.

ALTER TABLE land.user AUTO_INCREMENT = 1;
SET@COUNT = 0;
UPDATE land.USER SET idx = @COUNT:=@COUNT+1

다른 방식으로 auto_increment를 1부터 재조정하면서 여태 idx 값들을 전체적으로 재조정할 수도 있다.

 

크게 어려운 방법은 아니지만 idx 값은 현업에서는 다른 테이블과 연동될 수 있기 때문에, 전체적인 값 조정은 데이터를 매핑시키는데 조금 위험도가 존재하므로 조심스럽게 다룰 필요가 있다.

반응형

'데이터베이스 > Mysql' 카테고리의 다른 글

데이터 삭제 (DELETE, TRUNCATE, DROP)  (0) 2021.05.20

+ Recent posts