728x90

스마트웹앱콘텐츠전문가/데이터베이스 42

Oracle 호환 RDBMS, 티베로 SQL의 모든 것

티베로(Tibero)는 한국 TmaxSoft에서 개발한 관계형 데이터베이스 관리 시스템(RDBMS)으로, Oracle과의 높은 호환성을 자랑하며 기업 환경에서 주로 사용됩니다. 특히 비용 효율성과 성능 면에서 주목받는 DBMS입니다. 이번 글에서는 티베로 SQL의 주요 특징과 활용 방법에 대해 구체적으로 알아보겠습니다.   티베로의 주요 특징 1. Oracle 호환성티베로는 Oracle SQL 및 PL/SQL과 높은 호환성을 제공하여 기존 Oracle 환경에서 쉽게 전환할 수 있습니다. 이로 인해 Oracle에서 Tibero로의 마이그레이션이 용이하며, 개발자와 관리자가 기존 기술을 활용할 수 있습니다. 2. 성능 최적화티베로는 다중 인스턴스와 다중 스레드 아키텍처를 지원하여 대규모 데이터 환경에서도 우..

PostgreSQL에서 테이블과 뷰만 조회하는 쿼리 작성법: 오라클과의 차이점

프로그램을 개발할 때 데이터베이스에 대한 메타정보를 조회하는 쿼리를 작성하는 일이 많습니다. 특히 테이블의 이름, 설명, 또는 주석을 가져오는 경우가 흔합니다. 오라클에서는 ALL_TAB_COMMENTS와 같은 시스템 테이블을 통해 테이블에 대한 설명을 쉽게 조회할 수 있지만, PostgreSQL에서는 그 방식이 조금 다릅니다. PostgreSQL은 메타데이터를 pg_class, pg_description 등의 시스템 테이블을 통해 제공합니다.이번 글에서는 PostgreSQL에서 테이블과 뷰에 대한 메타정보를 조회하는 방법을 소개합니다. 오라클에서 작성한 쿼리를 PostgreSQL에 맞게 변환하는 과정과 그에 맞는 최적화 방법을 다룹니다.     1. 오라클 쿼리에서 PostgreSQL 쿼리로의 변환 오..

PostgreSQL에서 테이블 조회 오류 해결: 스키마 지정 및 대소문자 처리 방법

PostgreSQL에서 "ERROR: relation 'table' does not exist"라는 오류 메시지가 발생하는 경우, 이는 특정 테이블이나 객체를 찾을 수 없다는 의미입니다. 이 문제는 여러 원인으로 발생할 수 있으며, 주로 스키마 지정, 대소문자 문제, 그리고 테이블이 실제로 존재하지 않다는 문제로 나누어 설명할 수 있습니다. 이 게시글에서는 PostgreSQL에서 이 오류가 발생하는 원인과 이를 해결할 수 있는 방법을 자세히 설명하겠습니다.    1. 스키마 지정 문제 PostgreSQL에서 테이블은 여러 스키마에 존재할 수 있습니다. 기본적으로 pg_class 테이블을 조회할 때, 스키마를 지정하지 않으면 기본적으로 public 스키마에서만 조회하려고 시도합니다. 이 경우, 테이블이 다..

Oracle ALL_TAB_COLUMNS와 PostgreSQL information_schema 비교

데이터베이스 관리 시스템(DBMS)을 선택할 때, Oracle과 PostgreSQL은 두 가지 매우 인기 있는 시스템입니다. 이 두 시스템은 여러 면에서 비슷하지만, 동시에 많은 차이점이 존재합니다. 그 중 하나는 데이터 사전 뷰와 관련된 구조입니다. Oracle의 ALL_TAB_COLUMNS 뷰에서 제공하는 COLUMN_ID와 같은 정보를 PostgreSQL에서는 어떻게 사용할 수 있을까요? 이 글에서는 Oracle의 COLUMN_ID와 PostgreSQL에서 이와 대응되는 컬럼에 대해 알아보겠습니다.   Oracle의 ALL_TAB_COLUMNS 테이블 Oracle에서 ALL_TAB_COLUMNS는 모든 사용자가 접근할 수 있는 테이블과 해당 테이블의 열에 대한 정보를 제공하는 중요한 뷰입니다. 이 ..

information_schema를 활용한 PostgreSQL 데이터베이스 객체 관리 및 조회

PostgreSQL은 오픈소스 관계형 데이터베이스 관리 시스템(RDBMS)으로, 데이터베이스 내에서 발생하는 다양한 작업을 효율적으로 처리하는 강력한 기능을 제공합니다. 그 중 하나가 바로 information_schema입니다. information_schema는 PostgreSQL을 포함한 대부분의 관계형 데이터베이스에서 제공하는 표준 스키마로, 데이터베이스 객체에 대한 중요한 메타데이터를 조회하는 데 사용됩니다. 이 글에서는 information_schema가 무엇인지, 그리고 이를 활용하여 데이터베이스의 테이블, 컬럼, 제약 조건 등 다양한 정보를 어떻게 조회할 수 있는지 설명합니다.  information_schema란 무엇인가? information_schema는 데이터베이스의 메타데이터를 표..

MariaDB에서 인덱스 삭제하는 방법과 성능 최적화 팁

MariaDB는 데이터베이스 성능 최적화를 위해 인덱스를 사용합니다. 인덱스는 데이터를 빠르게 검색하고, 쿼리 성능을 높이는 데 중요한 역할을 합니다. 그러나 잘못된 인덱스나 불필요한 인덱스는 오히려 성능을 저하시킬 수 있습니다. 이때 불필요한 인덱스를 삭제하면 데이터베이스의 성능을 최적화할 수 있습니다. 본 문서에서는 MariaDB에서 인덱스를 삭제하는 방법에 대해 자세히 설명합니다.   1. MariaDB에서 인덱스란 무엇인가? 인덱스는 데이터베이스 테이블의 데이터를 빠르게 검색하기 위해 사용되는 데이터 구조입니다. SQL 쿼리가 실행될 때, 데이터베이스는 인덱스를 이용해 데이터를 더 효율적으로 찾을 수 있습니다. MariaDB에서는 B-Tree 기반의 인덱스를 기본적으로 사용합니다. 하지만 인덱스를..

[MySQL]좌표 사이의 거리 구하기

(참고 : Mysql 8.0 이상 버전 이상, mariadb에서도 사용가능) ST_Distance_Sphere 함수를 사용하면 두 좌표의 거리(최단거리)를 계산할 수 있습니다. ○ ST_Distatnce_Sphere(g1 : geomerty, g2: geometry)Point형은 geomerty형에 포함되므로, g1과 g2에 Point형을 넣어서주면 됩니다.    테스트)영등포역과 신길역 사이의 거리 구하기영등포역(위도 : 37.515432857597176, 경도 : 126.90741709757052) 신길역(위도 :  37.51673842335889, 경도 : 126.91843287025256)     사용예시) 두 지점간의 거리 : 982m결과값의 단위는 M(Meter)입니다. 네이버, 카카오등의 포..

테이블 안에서 원하는 데이터 복사

행를 추가할 때, 동일한 테이블 내에서 원하는 데이터를 복사해서 그 값을 그대로 사용할 수는 없을까??? 당연히 사용할 수 있습니다. 방법은 다음과 같습니다. 기본적인 형태) INSERT INTO '테이블명' SELECT '컬럼1', '컬럼2','컬럼3',... FROM '테이블명' WHERE '조건' 예시) name age nickname hong 10 honghong kong 12 kongkong [test 테이블] 1) test 테이블에서 name이 hong인 행 데이터(name, age, nickname)를 그대로 새로운 행에 복사할 경우 INSERT INTO test SELECT name, age, nickname FROM test WHERE name = 'hong'; 2) test 테이블에서 ..

[PostgreSQL]GROUP BY JSON

GROUP BY 구문에서 사용할 수 있는 함수들이 여러 가지가 있겠지만, 흔히 알려진 것은 집계함수 입니다. 평균(AVG), 최대(MAX), 최소(MIN) 등.... 그 외에도, xxx_agg() 라고 하는 함수도 사용할 수 있습니다. PostgreSQL에서 지원하는 agg 함수는 json_object_agg, array_agg, string_agg 등이 있습니다. 1. json_object_agg() : 해당 그룹 안에 있는 요소를 키, 값 형태로 출력하고 싶을 때 사용합니다.(JSON 형태로 출력) id point subject A1 10 A B1 20 B B2 30 B C1 40 C > select subject, max(point), json_object_agg(id, point) from tab..

[PostgreSQL]있으면 UPDATE, 없으면 INSERT

조건에 맞는 데이터가 있으면 UPDATE, 없으면 INSERT 하는 것을 흔히 'UPSERT' 라고 표현을 합니다. 오라클에서는 merge into ~, mysql에서는 ~ on duplicate on key update ~ 를 사용해서 UPSERT를 하듯 PostgreSQL에서도 UPSERT를 사용할 수 있습니다. 사용 방법은 간단합니다. 이 구문만 따라 해주면 됩니다. ( V9.5 이상에서 사용) INSERT INTO 'TABLE' (COL1, COL2, ...) VALUES (VAL1, VAL2, ...) ON CONFLICT(COL1, COL2) DO UPDATE SET COL1 = VAL1, .. 주의) ON CONFLICT 안에 들어 가는 칼럼들은 해당 테이블의 Constraints(예: 유니..

728x90