목록DBMS (38)
코딩항해기

블록PL/SQL 소스 프로그램의 기본 단위로 선언부, 실행부, 예외처리부로 구성된다. 블록은 이름이 있는 블록과 익명 블록으로 구분되며, 함수, 프로시저, 패키지 등이 익명 블록에 속한다. 블록 구조이름부 (없을 시 익명함수)IS (AS)선언부 (DECLARE Optional)BEGIN실행부 (BEGIN END mandatory)EXCEPTION예외 처리부 (Optional)END; PL/SQL 블록 내에서는 한 문장이 종료될 때마다 세미콜론을 통해 구분하며, END 뒤에 세미콜론을 통해 블록이 끝났다는 것을 명시한다. Declarative Section (선언부)변수, 상수, CURSOR, USER_DEFINE Exception 등을 선언한다.Executable Section (실행부)SQL, 반복분,..

SQL관계형 DB에 저장된 데이터에 접근하기 위해 사용하는 표준 언어이다.(SELECT, UPDATE, INSERT와 같은 데이터 조작 쿼리) PL/SQLOracle’s Procedural Language extension to SQL의 약자로, SQL문을 사용하여 프로그램을 작성할 수 있도록 확장해놓은 오라클의 절차적 언어이다. PL/SQL문은 블록 구조로 되어 있고, PL/SQL 자신이 컴파일 엔진이 가지고 있다.(DECLARE, EXCEPTION, LOOP 등 절차적 프로그래밍) SQL*PLUSSQL, PL/SQL을 실행할 수 있는 환경을 제공하는 오라클의 툴이다.SQL*PLUS의 명령어는 SQL 명령어와 다르다. 정리SQL은 데이터를 조작하는데 주로 사용되는 쿼리언어이고 PL/SQL은 응용 프..

MERGE문조건을 비교해서 테이블에 해당 조건에 맞는 데이터가 없으면 INSERT, 있으면 UPDATE를 수행하는 문장이다. 기본적인 형태가 INSERT UPDATE인 것이며, INSERT DELETE 조합을 사용하기도 한다. 즉, 조건에 따라 어떤 수행할 내용을 결정하는 문법이다. 주로 두 개 이상의 테이블 간의 데이터를 조작하거나 동기화할 때 유용하다. 오라클 9i부터 MERGE 문을 사용할 수 있으며, DELETE 절은 10g부터 사용할 수 있다. MERGE문 문법MERGE INTO [스키마.]테이블명USING (update나 insert될 데이터 원천) ON (update될 조건)WHEN MATCHED THEN SET 컬럼1 = 값1, 컬럼2 = 값2, ... WHERE update조건 [DELE..

데이터베이스 객체의 종류테이블데이터를 담고있는 객체뷰하나 이상의 테이블을 연결해 마치 테이블인 것처럼 사용하는 객체인덱스테이블에 있는 데이터를 빠르게 찾기 위한 객체시노님데이터베이스 객체에 대한 별칭을 부여한 객체시퀀스일련번호 채번을 할 때 사용되는 객체함수특정 연산을 하고 값을 반환하는 객체프로시저함수와 비슷하지만 값을 반환하지는 않는 객체패키지용도에 맞게 함수나 프로시저를 하나로 묶어놓은 객체 시노님 Synonym시노님은 동의어라는 뜻으로 데이터베이스 객체는 각자 고유한 이름이 있는데 이 이름에 대한 별칭을 만드는 것이 시노님이다. 시노님에는 Public 시노님과 Private 시노님이 있다. Public 시노님은 데이터베이스의 모든 사용자가 접근할 수 있으며, Private 시노님은 특정 사용자에..

N+1 문제N+1 문제는 ORM을 사용할 때 발생하는 대표적인 성능 문제다. 하나의 쿼리로 N개의 데이터를 가져온 후, 연관된 데이터를 가져오기 위해 N번의 추가 쿼리가 발생하는 현상을 말한다. 예시게시글과 댓글의 관계를 예로 들면, 한 게시글에는 여러 개의 댓글이 달릴 수 있는 일대다 관계일 때,더보기@Entitypublic class Post { @Id @GeneratedValue private Long id; private String title; @OneToMany(mappedBy = "post", fetch = FetchType.LAZY) private List comments;}@Entitypublic class Comment { @Id ..

ACID데이터베이스에서 ACID는 트랜잭션이 안전하게 수행된다는 것을 보장하기 위한 성질을 나타내는 약어다. 각각 Atomicity(원자성), Consistency(일관성), Isolation(격리성), Durability(지속성)를 의미한다. 이 네 가지 특성은 데이터베이스의 무결성을 보장하는 핵심 요소이다. Atomicity (원자성)원자성은 트랜잭션의 작업이 모두 성공하거나 모두 실패해야 함을 의미한다. 예시는 계좌 이체 상황이다.try { // 트랜잭션 시작 connection.setAutoCommit(false); // A계좌에서 돈을 출금 String debitQuery = "UPDATE accounts SET balance = balance - ? WHERE ac..

데이터 로딩 전략의 기본 개념데이터베이스 프로그래밍에서 Lazy Loading과 Eager Loading은 데이터를 불러오는 두 가지 주요 전략이다. 각각의 전략은 고유한 특징과 사용 사례를 가지고 있으며, 애플리케이션의 성능과 사용자 경험에 큰 영향을 미친다. Lazy Loading Lazy Loading은 데이터가 실제로 필요한 시점에 로드하는 방식이다. 처음에는 기본 데이터만 로드하고, 관련 데이터는 실제로 요청이 있을 때 추가로 로드한다. 이는 마치 책의 목차를 먼저 보고, 관심 있는 페이지를 필요할 때 펼쳐보는 것과 같다. 초기 로딩 시간을 단축할 수 있다는 장점이 있지만, 여러 번의 데이터베이스 호출이 발생할 수 있다는 단점도 존재한다. // Lazy Loading 예시const user =..

ORM Object-Relational MappingORM은 객체 지향 프로그래밍 언어를 사용하여 호환되지 않는 유형의 시스템 간의 데이터를 변환하는 프로그래밍 기술이다. 객체와 관계형 데이터베이스의 데이터를 매핑하는 것을 의미한다. ORM을 사용하면 SQL 쿼리 없이 데이터를 데이터베이스에 편하게 저장하고 관리할 수 있다. 데이터베이스 설계와 비즈니스 로직사이의 간극을 줄여주는 중요한 역할을 수행한다. ORM의 사용은 코드의 가독성을 높이고, 유지 보수를 용이하게 하며, 데이터베이스와의 결합도를 낮줘 개발 과정을 더욱 효율적으로 만들어 준다. ORM은 다양한 프로그래밍 언어와 프레임워크에서 지원된다. Java의 Hibernate, Python의 SQLAlchemy, Ruby의 ActiveRecord 등..

PostgreSQLPostgreSQL은 확장 가능성 및 표준 준수를 강조하는 객체-관계형 데이터베이스 관리 시스템(ORDBMS)의 하나이다. BSD 허가권으로 배포되며 오픈소스 개발자 및 관련 회사들이 개발에 참여하고 있다. 데이터베이스 서버로서 주요 기능은 데이터를 안전하게 저장하고 다른 응용 소프트웨어로부터의 요청에 응답할 때 데이터를 반환하는 것이다. 소규모의 단일 머신 애플리케이션에서부터 수많은 동시 접속 사용자가 있는 대형의 인터넷 애플리케이션(또는 데이터 웨어하우스용)에 이르기까지 여러 부하를 관리할 수 있으며 macOS 서버의 경우 PostgreSQL은 기본 데이터베이스이다. 객체 관계 데이터베이스 ORDBMS객체지향 데이터베이스 모델을 가진 관계형 데이터베이스 관리 시스템을 의미한다. 소프..

MongoDB오픈소스 비관계형 데이터베이스 관리시스템으로, 테이블과 행 대신 유연한 문서를 활용해 다양한 데이터 형식을 처리하고 저장한다. RDBMS를 필요로 하지 않으므로, 사용자가 다변량 데이터 유형을 손쉽게 저장하고 쿼리할 수 있는 탄력적인 데이터 저장 모델을 사용할 수 있다. 이 점은 개발자의 데이터베이스 관리를 간소화하고 확장성을 갖춘 크로스 플랫폼 및 서비스 환경을 구축한다. MongoDB는 문서 또는 문서 컬렉션이 기본 단위로, 이진 JSON형식으로 지정되어 다양한 데이터를 저장하고 분산처리할 수 있다. 동적 스키마 설계를 활용하기 때문에 유연성을 확보해 데이터 레코드를 생성하고 집계를 통해 문서 컬렉션을 쿼리하며, 대량의 정보를 분석한다. MongoDB는 C++로 작성된 오픈소스 문서지향(..