'Back-End'에 해당되는 글 288건

  1. 2023.08.19 PostgreSQL 버전 업그레이드시 주의점
  2. 2023.08.17 PostgreSQL과 오라클의 차이점
  3. 2023.08.16 PostgreSQL 12버전과 13버전의 차이
  4. 2023.08.15 PostgreSQL 11버전과 12버전의 차이
  5. 2022.11.29 오라클 -> MySQL SQL 마이그레이션
  6. 2022.06.06 Dbeaver 연결시 에러 (public key retrieval is not allowed)
  7. 2021.01.17 Spring Boot Batch 구조 1
  8. 2020.12.22 토비의 스프링 1-1 (간단한 DAO 만들기)

PostgreSQL 버전 업그레이드시 주의점

Back-End/Data Base 2023. 8. 19. 18:21
728x90
반응형

PostgreSQL 버전 업그레이드는 데이터베이스 시스템의 안정성과 성능을 향상시키는 중요한 작업입니다. 

그러나 업그레이드 과정에서 데이터 손실이나 시스템 장애를 방지하기 위해 몇 가지 주의 사항을 염두에 두어야 합니다. 

아래는 PostgreSQL 버전 업그레이드시 주의해야 할 사항들입니다.

백업: 업그레이드 전에 모든 데이터베이스를 백업해야 합니다. 데이터베이스가 손상되거나 문제가 발생해도 백업을 

통해 데이터 복구가 가능합니다.

문서 확인: 새 버전의 PostgreSQL 릴리스 노트와 문서를 정확하게 확인하고, 어떤 변경 사항이 있는지,

어떤 새로운 기능이 도입되었는지를 파악해서 적용할 부분에 적용을 해야 합니다.

테스트 환경 구축: 실제 운영 환경에 직접 업그레이드하기 전에 테스트 환경을 구축하고 업그레이드 과정을 

테스트하세요. 데이터베이스의 동작과 성능을 확인하여 잠재적인 문제를 발견할 수 있습니다.

하위 호환성 확인: 새 버전과 기존 버전 간의 하위 호환성을 확인하세요. 

특히 애플리케이션 코드와의 호환성을 검토하여 새 버전에서 예상치 못한 문제가 발생하지 않도록 조심하세요.

확장 기능 업그레이드: PostgreSQL의 확장 기능들도 업그레이드가 필요할 수 있습니다. 

각 확장 기능에 대한 문서를 참조하여 업그레이드 과정을 따라가세요.

성능 테스트: 업그레이드 이후에 시스템의 성능을 모니터링하고 문제가 발생하지 않는지 확인하세요.

시간 계획: 업그레이드는 시간이 걸릴 수 있습니다. 적절한 시간을 선택하여 업그레이드를 수행하세요. 시스템 부하가 적은 시간대를 고려하는 것이 좋습니다.

지원 및 커뮤니티 참조: 업그레이드 과정에서 문제가 발생하면 PostgreSQL 커뮤니티와 관련 지원 자료를 

참조하십시오. 경험 있는 개발자나 DBA에게 도움을 요청하는 것도 좋은 방법입니다.

 

728x90
반응형
:

PostgreSQL과 오라클의 차이점

Back-End/Data Base 2023. 8. 17. 18:11
728x90
반응형

1. 라이선스 및 비용: PostgreSQL은 오픈 소스 프로젝트로, 무료로 사용하고 수정할 수 있습니다.
오라클은 상용 제품으로 라이선스 비용이 발생하며, 큰 기업에게는 상당한 비용 부담이 될 수 있습니다.

 

2. 라이선스 모델: PostgreSQL은 PostgreSQL 라이선스를 따르며, 오픈 소스 커뮤니티의 협력을 통해 개발되고

유지보수됩니다. 오라클은 프로프리어터리(상용) 라이선스를 따르며, 오라클 공식에서 개발 및 지원됩니다.

 

3. 기능 및 확장성: 오라클은 대규모 엔터프라이즈 환경에서 사용하기 위해 많은 기능과 확장성을 제공합니다.

복잡한 트랜잭션 처리, 병렬 처리, 클러스터링 등을 지원합니다.
PostgreSQL도 많은 기능과 확장성을 제공하지만, 몇몇 엔터프라이즈 기능은 오라클에 비해 제한적일 수 있습니다.

 

4. SQL 호환성: 둘 다 SQL 표준을 따르지만, 오라클과 PostgreSQL 간에는 특정 SQL 문법 및 기능에서

차이가 있을 수 있습니다.

 

5. 설치 및 관리: PostgreSQL은 일반적으로 설치 및 관리가 상대적으로 쉽고 간단합니다.
오라클은 설정 및 관리에 일부 복잡한 과정이 필요할 수 있습니다.

 

6. 용도와 적합성: PostgreSQL은 중소규모부터 대규모까지 다양한 규모의 프로젝트에 적합하며, 특히 중소기업이나

개발자 커뮤니티에서 널리 사용됩니다.
오라클은 대규모 엔터프라이즈 환경에서 주로 사용되며, 고성능, 고가용성, 보안 등에 중점을 둡니다.

 

7. 성능: 오라클은 대량 데이터 처리와 고성능 환경에 최적화된 기능을 제공하므로, 대규모 트랜잭션 처리나

데이터 분석에 강점을 가질 수 있습니다.
PostgreSQL도 높은 성능을 제공하지만, 오라클의 성능과 비교할 때 환경 및 사용 사례에 따라 성능 차이가

발생할 수 있습니다.

728x90
반응형
:

PostgreSQL 12버전과 13버전의 차이

Back-End/Data Base 2023. 8. 16. 18:03
728x90
반응형
  1. 성능 개선 및 최적화 :
    • PostgreSQL 13은 성능을 향상시키는 몇 가지 최적화를 포함합니다. 더 나은 쿼리 실행 계획 생성, 쿼리 실행의 개선, 쿼리 최적화 관련 몇 가지 업데이트가 포함됩니다.
  2. B-Tree 성능 향상 :
    • PostgreSQL 13에서는 B-Tree의 성능을 향상시키는 몇 가지 개선 사항이 있습니다. 특히, 범위 조건을 사용하여 쿼리의 성능이 개선되었습니다.
  3. 승격된 범위만 (UPGRADED RANGE TYPES) ​​:
    • PostgreSQL 13은 범위 데이터 유형의 개선된 변수를 도입하여 더 가능성 있는 범위 조작 및 쿼리를 지원합니다.
  4. pg_stat_statements 개선 :
    • 실행 통계를 수집하는 pg_stat_statements 모듈은 PostgreSQL 13에서도 개선되었습니다. 상대적으로 쿼리 성능이 더 실제적으로 실행됩니다.
  5. 저작권 공지 추가 :
    • PostgreSQL 13에서는 데이터베이스 서버의 메시지에 대해 공지가 포함되도록 변경되었습니다.
  6. pg_dump 및 pg_restore 개선 :
    • 백업 및 복원 도구인 pg_dump와 pg_restore는 PostgreSQL 13에서도 다양한 개선이 이루어졌습니다. 백업 및 복원이 더 많이 진행됩니다.
  7. BRIN 처리 성능 향상 :
    • PostgreSQL 13에서는 범위를 데이터로 만든 블록 레인지(BRIN)의 성능이 향상되었습니다.
  8. 기타 기능 개선 및 보안 업데이트 :
    • PostgreSQL 13은 여러 가지 기능 개선 및 보안 업데이트도 포함합니다. 예를 들어, 보안 관련 패치 및 충전이 됩니다.
728x90
반응형
:

PostgreSQL 11버전과 12버전의 차이

Back-End/Data Base 2023. 8. 15. 16:57
728x90
반응형
  1. 성능 개선 및 최적화 :
    • PostgreSQL 12는 성능을 향상시키는 몇 가지 중요한 최적화를 포함했습니다. 예를 들어, 보다 효율적인 저전력 실행 계획 생성, 저감 쿼리 실행의 개선 등이 있습니다.
  2. 복구 기능 개선 :
    • PostgreSQL 12는 B-tree 연금의 성능과 관련된 여러 가지 개선을 가져왔습니다. 쿼리 스캔 및 쿼리 성능 개선을 위한 현행 관련 개선 사항이 있습니다.
  3. JSON 기능 강화 :
    • PostgreSQL 12에서는 JSON 데이터 처리에 대한 여러 가지 개선 사항이 추가되었습니다. JSON 복구를 사용한 데이터 추출 및 조작이 개선되었습니다.
  4. 복제 ID :
    • PostgreSQL 12에서는 REPLICA IDENTITY 옵션이 도입되어 논리적 복제에서 업데이트된 행을 레플리카로 보내는 방법을 더 일반적으로 제어할 수 있게 되었습니다.
  5. 연결 제한 :
    • PostgreSQL 12에서는 호스트 당 최대 연결 수를 미리 정의할 수 있는 기능이 추가되어 연결 수를 관리하는 데 도움을 줍니다.
  6. CUBE, ROLLUP 및 GROUPING SETS 확장 :
    • 데이터 큐브 및 등록을 지원하는 쿼리에 대한 GROUP BY Ch의 기능이 확장되었습니다. GROUPING SETS를 사용하여 다양한 수준을 한 번에 생성할 수 있습니다.
  7. pg_stat_statements 확장 :
    • pg_stat_statements 모듈은 모니터의 실행 통계를 저장하고 분석하는 데 도움을 주는데, PostgreSQL 12에서는 이 모듈이 개선되었습니다.
  8. PL/SQL 확장 :
    • PostgreSQL 12에서는 PL/SQL과 유사한 기능을 제공하는 PL/pgSQL 언어의 몇 가지 새로운 기능이 추가되었습니다.
  9. 검색 기능 개선 :
    • PostgreSQL 12는 전체 텍스트 검색 엔진 pg_trgm과 관련된 여러 가지 개선을 포함했습니다.
  10. 보안 및 내구성 강화 :
    • 새로운 버전은 보안 패치 및 버클 수정을 포함하여 데이터베이스 시스템의 안정성을 강화하는 데에도 도움이 됩니다.
728x90
반응형
:

오라클 -> MySQL SQL 마이그레이션

Back-End/Data Base 2022. 11. 29. 22:30
728x90
반응형

1. 일부 매칭되는 문법 정리

오라클 My SQL
VARCHAR2 VARCHAR
NUMBER INT
DATE DATETIME
SYSDATE CURRENT_TIMESTAMP

 

2. 시퀀스 생성

 

오라클에서는 시퀀스를 지원하지만, MySQL에서는 시퀀스 기능이 별도로 존재하지 않기때문에, 다음과 같이 사용합니다.

 

ㄱ. 시퀀스를 사용할 테이블 생성

CREATE table SPRING.SEQUENCES
(
NAME VARCHAR(32)

 

, CURRVAL BIGINT UNSIGNED
)
 

ㄴ. 시퀀스를 생성 할 프로시저 생성

create procedure SPRING.create_sequence (in the_name text)
modifies sql data
deterministic
begin
delete from SEQUENCES where name = the_name;
insert into SEQUENCES values(the_name, 0);
end;

 

ㄷ. 생성 한 시퀀스의 다음 값을 가져오는 함수 생성

create function SPRING.nextval (the_name varchar(32))
returns bigint unsigned
modifies sql data
deterministic
begin
declare ret bigint unsigned;
update SPRING.SEQUENCES set currval = currval + 1 where name = the_name;
select currval into ret from SPRING.SEQUENCES where name = the_name limit 1;
return ret;
end

 

ㄹ. 만들어야할 시퀀스를 시퀀스 테이블에 생성

 

call SPRING.create_sequence('ADMIN_BNO');

 

 

ㅁ. Insert 문에서 시퀀스 사용 예시

 

SPRING.nextval('ADMIN_BNO') FROM DUAL 등을 사용해서 시퀀스를 사용

728x90
반응형
:

Dbeaver 연결시 에러 (public key retrieval is not allowed)

Back-End/Problems 2022. 6. 6. 10:26
728x90
반응형

Dbeaver 접속시 public key retrieval is not allowed 에러가 발생할 경우에 다음과 같이 설정해주면 해결이 된다.

 

1. db 우클릭 Edit Connection 선택

 

2. Driver properties 클릭

 

3. allowPublicKeyRetrieval 옵션 TRUE로 변경

 

 

728x90
반응형
:

Spring Boot Batch 구조

Back-End/Spring boot Batch 2021. 1. 17. 11:27
728x90
반응형

Spring Boot Batch 의 장점


1. 대용량 데이터 처리에 최적화


2. 수동처리하지 않아도 되도록 자동화


3. 예외사항과 비정상 동작에 대한 방어기능


4. 반복적인 작업 프로세스를 이해하면 비지니스 로직에 집중 가능




Spring Boot Batch 사용시 주의 사항


1. 최대한 단순화해서 복잡한 구조와 로직을 피해야 함


2. 스프링 부트는 배치 스케쥴러를 제공하지 않아서, 스케쥴링 기능은 스프링에서 제공하는 쿼치 프레임워크 등을 이용해야 합니다.




Spring Boot Batch 구조


일반적으로 읽기, 처리, 쓰기의 3단계로 이루어져 있습니다.


 

  1. 읽기 (read) : 데이터 저장소 (일반적으로 데이터베이스) 에서 특정 데이터 레코드를 읽습니다.


  2. 처리 (processing) : 원하는 방식으로 데이터를 가공/처리 합니다.


  3. 쓰기 (write) : 수정된 데이터를 다시 저장소 (데이터베이스)에 저장 합니다.



처리 단계는 읽기 -> 처리 -> 쓰기의 순서로 이루어져 있습니다.



이것을 그림으로 도식화하면 아래와 같습니다.


- JOB -


JOB는 배치 처리 과정을 하나의 단위로 만들어 표현학 객체이고, 전체 배치 처리에 있어서 최상단 계층에 위치해 있습니다.


위에서 하나의 Job안에는 여러 Step가 있고, 스프링 배치에서 Job 객체는 여러 Step 인스턴스를 포함하는 컨테이너 입니다.


Job 객체를 만드는 빌더는 여러개가 있는데, 여러 빌더를 통합하여 처리하는 공장인


JobBuilderFactory로 원하는 Job를 쉽게 만들수 있습니다.





 

  - ItemReader -


  Step의 대상이 되는 배치 데이터를 읽어오는 인터페이스 입니다.


  File, Xml Db등 여러 타입의 데이터를 읽어올 수 있습니다.




  - ItemProcessor -


  ItemProcess는 ItemReader로 읽어 온 배치 데이터를 변환하는 역할을 수행합니다.


  이것을 분리하는 이유는 다음과 같습니다.


  비즈니스 로직의 분리 - ItemWriter은 저장역할을 수행하고, ItemProcessor은 로직 처리만 수행해 역할을 분리해서 읽어온 배치 데이터와 

  

  쓰여질   데이터의  타입이 다를경우에 대응할 수 있게 하기 위함




 - ItemWriter -


  배치 데이터를 저장


  일반적으로 DB나 파일에 저장합니다.


  제네릭으로 원하는 타입을 받고 writer() 메서드는 List를 사용해서 저장한 타입의 리스트를 매개변수로 받습니다.





- JobInstance -


JobInstance는 배치 처리에서 Job가 실행될때 하나의 Job의 실행 단위 입니다.


만약 하루에 한번씩 배치 Job가 실행된다면 어제와 오늘 실행된 Job를 JobInstance라고 부를 수 있습니다.


각각의 JobInstance는 하나의 JobExecution을 갖는 것은 아니고, 오늘 Job를 실행했지만 실패했다면 다음날 동일한 JobInstance를 가지고 또 실행합니다.


그 이유는 Job 실행이 실패하면 JobInstance가 끝난것으로 간주하지 않기 때문입니다.


또한 그러한 이유로 JobInstance는 어제 실패한 JobExecution과 오늘 성공한 JobExecution 두가지를 갖게 됩니다.


즉 JobExecution은 여러개 가질 수 있다는 뜻입니다.




- JobExecution -


JobExecution은 JobInstance에 대한 한 번의 실행을 나타내는 객체입니다.


또한 JobExecution 인터페이스를 보면 Job 실행에 대한 정보를 담고 있는 도메인 객체가 있고,


JobExecution은 JobInstance, 배치 실행상태, 시작 시간, 끝난 시간, 실패했을 때 메시지 등의 정보를 담고 있습니다.




- JobParameters -


JobParameters는 Job가 실행될때 필요한 파라미터들을 Map 타입으로 지정하는 객체 입니다.


JobParameters는 JobInstance를 구분하는 기준이 되기도 합니다.


JobParameters와 JobInstance는 1 : 1 관계 입니다.




-Step-


Step는 실질적인 배치 처리를 정의하고, 제어 하는데 필요한 모든 정보가 있는 도메인 객체 입니다.


Job를 처리하는 실질적인 단위로 쓰입니다.


모든 Job에는 1개 이상의 Step가 있어야 합니다.




-StepExecution-


Job에 JobExecution Job 실행 정보가 있다면 Step에는 StepExecution 이라는 Step 실행 정보를 담는 객체가 있습니다.




-JobRepository-


JobRepository는 배치 처리 정보를 담고 있는 저장소 입니다.


어떤 Job가 실행되었느면 몇 번 실행되었고 언제 끝났는지 등 배치 처리에 대한 메타데이터를 저장합니다.


예를 들어 Job 하나가 실행되면 JobRepository에서는 배치 실행에 관련된 정보를 담고 있는 도메인 JobExecution을 생성합니다.





출처


https://cheese10yun.github.io/spring-batch-basic/

728x90
반응형
:

토비의 스프링 1-1 (간단한 DAO 만들기)

Back-End/Spring 2020. 12. 22. 05:00
728x90
반응형


사용자 정보를 JDBC API를 통해 DB에 저장하고 조회할 수 있는 DAO 만들기



 

 - DAO -


 DAO (Data Access Object) 는 DB를 사용해 데이터를 조회하거나 조작하는 기능을 전담하도록 만든 오브젝트를 말한다. 




User 클래스 만들기 (사용자 정보 - id, name, password를 저장한 클래스)



 

 package springbook.user.domain;


 public class User {

String id;

String name;

String password;


public String getId() {

return id;

}


public void setId(String id) {

this.id = id;

}


public String getName() {

return name;

}


public void setName(String name){

this.name = name;

}


public String getPassword() {

return password;

}


public void setPassword(String password) {

this.password = password;

}

  }




User 정보가 담길 테이블을 생성


 

  create table users (

id varchar(10) primary key,

name varchar(20) not null,

password varchar(10) not null

  )





 

  자바빈


 자바빈은 원래 비주얼 툴에서 조작 가능한 컴포넌트를 말합니다. 


 자바의 주력 개발 플랫폼이 웹 기반의 엔터프라이즈 방식으로 바뀌면서 비주얼 컴포넌트로서 자바빈은 인기를 잃어 갔지만,


 자바빈의 몇 가지 코딩 관례는 JSP 빈, EJB와 같은 표준 기술과 자바빈 스타일의 오브젝트를 사용하는 오픈소스 기술을 통해 계속 이어져 왔다.


 디폴트 생성자 : 자바빈은 파라미터가 없는 디폴트 생성자를 가지고 있어야 한다.


 프로퍼티 : 자바빈이 노출하는 이름을 가진 속성을 프로퍼티라고 한다. 프로퍼티는 set로 시작하는 수정자 메소드 (setter) 와 get로 시작하는

               get으로 시작하는 접근자 메소드 (getter) 를 이용해 수정 또는 조회할 수 있다.




JDBC를 이용하는 작업의 일반적인 순서. (DB 연결)


1. DB연결을 위한 Connection을 가져옵니다.


2. SQL을 담은 Statement를 만듭니다.


3. 만들어진 Statement를 실행합니다.


4. 조회의 경우 SQL 쿼리의 실행 결과를 ResultSet로 받아서 정보를 저장할 오브젝트에 옮겨줍니다.


5. 작업중에 생성된 Connection, Statement, ResultSet 같은 리소스는 작업을 마친 후 반드시 닫아줍니다.


6. JDBC API가 만들어내는 예외 (exception) 를 잡아서 직접 처리하거나, 메소드에 throws를 선언해서 예외가 발생하면 

메소드 밖으로 던지게 합니다.




-계속-

728x90
반응형
: