데이터베이스

Oracle vs PostgreSQL 문법, 차이점

SK_MOUSE 2023. 4. 21. 15:52
반응형

Oracle, PostgreSQL 차이점

  1. Oracle 에서 '' 은 null 이지만, PostgreSQL 에서는 '' 는 '' 이고, null 은 null이다.
  2. Oracle 은 VARCHAR2 인데 반해, PostgreSQL 은 Varchar 이다.
  3. PostgreSQL 은 Schema 를 지원하고, Oracle 은 User 가 Schema 를 포함하는 개념이다.
  4. 첫 번째 파라미터 값이 null 인 경우, 두 번째 파라미터 값을 return 하고, 그렇지 않은 경우 첫 번째 파라미터 값을 return 한다.
     PostgreSQL 에서 '' 은 null 이 아니라는 것에 주의해야 한다. PostgreSQL 에서 nvl 과 완벽하게 일치하는 결과를 얻기 위해서는 case when 구문을 사용해야 한다. Oracle 과 PostgreSQL 에서 null 의 차이는 이 글의 앞부분을 참고한다.
  5. PostgreSQL 은 decode 함수를 지원하지 않기 때문에 case when 구문을 사용해야 한다.
  6. PostgreSQL 은 dual 이 없지만, from 절을 생략할 수 있다.
  7. Oracle 은 text 자료형을 지원하지 않는다.
  8. PostgreSQL 에서 index 를 생성할 때 text_pattern ops 옵션을 추가해야 하는 경우도 있다.
  9. Oracle 에서 Index Scan 으로 실행되었던 sql 이 PostgreSQL 에서는 Seq Scan (Full Table Scan) 이 될 수 있다.
반응형

Oracle, Postgre 문법(동일)

※문자열은 따옴표( ' )로 처리해야 충돌을 피할수있다.

SELECT 문

SELECT COLUMN_1 ,COLUMN_2
FROM TABLE_NAME
WHERE COLUMN_1 = 'SK_MOUSE';

 

UPDATE 문

UPDATE
	TABLE_NAME
SET
	COLUMN_1 = VALUE1,
	COLUMN_2 = VALUE2
WHERE
	조건;

INSERT 문

INSERT INTO
	TABLE_NAME
(
	COLUMN1,
    	COLUMN2
)
VALUES
(
	VALUE1,
    	VALUE2
);

 

* Spring에서 Mybatis 주의사항

insert, update, delete에는 resultType이 없고

row의 개수를 반환한다고 한다.

 

insert의 경우는 삽입된 행의 개수를 반환

update의 경우는 수정에 성공한 행의 개수를 반환(실패시 0 반환)

delete의 경우는 삭제한 행의 개수를 반환

 


상용vs오픈소스

오픈소스의 트랜드가 2021년을 기점으로 상용을 넘어섰다

 

 

비교

Oracle

성능이 좋고, 기능이 많은데 비싸다.
그래서 나는 사용할 일이 없을 것 같다.

  • 대규모 데이터베이스를 지원한다.
  • 고성능 트랜잭션 처리를 제공하여 속도가 빠르다.
  • SQL문을 실행하는 가장 효율적인 방법을 선택한다. 비용을 최소화하기 위해 테이블과 인덱스를 분석한다.

PostgreSQL

오픈 소스로 무료로 사용 가능하다.

  • 다양한 join 방법을 제공한다.
    - nested loop join, hash join, sort merge join
    - 결합 할 데이터가 많을 때는 hash, sort merge join
    - 데이터가 이미 정렬 되어 있는 경우에는 sort merge
    - 그렇지 않으면 hash join 추천sort merge join
    조인의 대상범위가 넓을 경우 발생하는 Random Access를 줄이기 위한 경우나 연결고리에 마땅한 인덱스가 존재하지 않을 경우 해결하기 위한 조인 방안
    양쪽 테이블의 처리범위를 각자 Access하여 정렬한 결과를 차례로 Scan하면서 연결고리의 조건으로 Merge하는 방식
  • hash join
    해시값을 이용하여 테이블을 조인하는 방식
  • update를 할 때, 과거 행을 삭제하고 변경된 데이터를 가진 새로운 행을 추가하는 형태라서 update가 느리다.
  • 처리 속도를 빠르게 하기 위해 여러 CPU를 활용하여 쿼리를 실행한다.
  • 데이터베이스 클러스터 백업 기능을 제공한다.클러스터 : 디스크로부터 데이터를 읽어오는 시간을 줄이기 위해 자주 사용되는 테이블의 데이터를 디스크의 같은 위치에 저장시키는 방법

읽기, 쓰기 속도가 중요하고 데이터를 검증해야 하는 대규모 시스템에서 널리 사용된다.
빈번한 update 성격일 경우 성능, 불안정 하지만 insert 위주 성격일 경우에는 적합하다.
복잡한 쿼리를 실행해야하는 시스템에서 가장 잘 사용 된다.
동시성을 효율적으로 처리하여 매우 높은 수준의 동시성을 달성한다.

반응형