database 7

[Database] PostgreSQL - Transaction

이번 시간에는 PostgreSQL 에서 트랜젝션이 어떻게 동작하고 어떠한 특성을 가지고 있는지 알아보겠습니다. 개요트랜잭션은 BEGIN 혹은 START TRANSACTION 을 사용하여 명시적으로 생성하고 COMMIT 혹은 ROLLBACK 을 사용하여 종료할 수 있습니다. 명시적 트랜잭션 외부의  SQL 문은 자동으로 단일 문 트랜잭션을 사용합니다. 모든 트랜잭션은 백엔드 ID와 각 백엔드에 로컬로 순차적으로 할당된 번호, 즉 localXID 로 구성된 고유한 VirtualTransactionId 로 식별됩니다. 예를 들어, 가상 트랜잭션 ID 4/12532 의 백엔드 ID 는 4이고 localXID 는 12532 입니다. PostgreSQL 클러스터 내의 모든 데이터베이스에서 사용하는 글로벌 카운터에서..

Database 2024.07.18

[Database] PostgreSQL - Index

지난 시간에는 PostgreSQL 에 대한 보안 정책에 대해 알아보았습니다. 이번 시간에는 PostgreSQL의 Index 에 대해 알아보겠습니다.개요아래와 비슷한 테이블이 있다고 가정해봅시다.CREATE TABLE test1 ( id integer, content varchar); 그리고 해당 테이블을 사용하는 애플리케이션 쪽에서 다음과 같은 쿼리를 수없이 요청했다고 가정해봅시다.SELECT content FROM test1 WHERE id = constant; 만약 기본적인 세팅만 되어있다면, 시스템은 모든 일치하는 항목을 찾기 위해 test1 테이블 전체를 한 줄씩 스캔해야 할 것입니다. test1 에 행이 많고 그러한 쿼리에 의해 반환되는 행이 몇 개에 불과하다면, 이것은 분명히 비효율..

Database 2024.07.18

[Database] PostgreSQL Commands - DCL

개요지난 시간에는 PostgreSQL 데이터베이스의 DML 에 대해서 알아보았습니다. 이번 시간에는 PostgreSQL의 DCL 및 권한 관리 부분에 대해서 알아보겠습니다.Privileges (권한)데이터 개체가 생성되면 해당 개체에는 소유자가 할당됩니다. 소유자는 일반적으로 생성문을 실행한 역할입니다. 대부분의 개체 종류에 대해 초기 상태는 소유자(혹은 슈퍼 어드민) 만 개체에 대한 모든 권한을 가지고 있습니다. 다른 역할에서 개체를 사용할 수 있도록 하려면 권한이 부여되어야 합니다. SELECT, INSERT, UPDATE, DELETE, TRUNKATE, REFERENCE, TRIGER, CREATE, CONNECT, TERIVE, EXECURE, USE, SET, ALTER SYSTEM 등등 다양..

Database 2024.07.18

[Database] PostgreSQL Commands - DML

개요지난 시간에는 PostgreSQL 데이터베이스의 DDL 에 대해서 알아보았습니다. 이번 시간에는 PostgreSQL의 DML에 대해서 알아보겠습니다.Inserting Data기본적인 문법은 다음과 같습니다.INSERT INTO products VALUES (1, 'Cheese', 9.99); 테이블의 열 순서와 반드시 일치하게 데이터를 작성해야하는 방식이기 때문에 불편할 수 있습니다. 다음과 같이 열 이름을 명시적으로 선언하여 해당 문제를 해소할 수 있습니다.INSERT INTO products (product_no, name, price) VALUES (1, 'Cheese', 9.99);INSERT INTO products (name, price, product_no) VALUES ('Cheese'..

Database 2024.07.17

[Database] PostgreSQL Commands - DDL

개요지난 시간에는 PostgreSQL의 간략한 개요와 특징에 대해서 알아보았습니다. 이번 시간에는 PostgreSQL에서 제공하는 SQL Commands 들을 알아보고 간략하게 실습해보는 시간을 가져보겠습니다.테이블 기초CREATE: 테이블, 인덱스, 뷰, 시퀀스 등과 같은 새로운 데이터베이스 개체를 만드는 데 사용됩니다.// 출처: https://www.postgresql.org/docs/current/sql-createtable.htmlCREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } | UNLOGGED ] TABLE [ IF NOT EXISTS ] table_name ( [ { column_name data_type [ STORAGE { PLAIN | EXTE..

Database 2024.07.15

[Database] RDB

개요데이터베이스의 기초에 대해서 학습해봤던 지난 시간에 이어, 데이터베이스 종류 중에서 중요한 부분을 차지하고 있는 관계형 데이터베이스 (RDB) 에 대해서 알아보겠습니다. 관계형 데이터베이스, RDB 란?관계형 데이터베이스는 데이터가 하나 이상의 열과 행의 테이블(또는 '관계')에 저장되어 서로 다른 데이터 구조가 어떻게 관련되어 있는지 쉽게 파악하고 이해할 수 있도록 사전 정의된 관계로써, 데이터를 구성하는 정보 모음입니다. 관계는 이러한 테이블 간의 상호작용을 기반으로 설정되는 여러 테이블 간의 논리적 연결입니다. RDB 의 주요 개념구조테이블(Tables): RDB에서 데이터는 행과 열로 구성된 테이블에 저장됩니다. 각 테이블은 Business Entity(예: 고객, 주문)를 나타내며 테이블의 ..

Database 2024.07.04

[Database] 데이터베이스의 기초

개요다양한 종류의 개발 프로젝트를 진행하면서 뗄래야 뗄 수 없던 것이 있었습니다. 바로 데이터베이스입니다. 프로젝트를 진행하면서 이해 관계자 혹은 기획자의 비즈니스 요구 사항을 분석하고 이를 소프트웨어 요구 사항으로 분리, 그리고 데이터 스키마 설계를 하는 과정은 너무나 당연한 수순이 되었습니다. 하지만 RDB, NoSQL, In-memory DB 등등 다양한 형태의 데이터베이스를 알게 되면서 각각의 상황에 따라 적합한 형태의 데이터베이스를 선택하는 것이 Well-designed Architecture를 설계함에 있어서 매우 중요하다는 것을 깨닫게 되었습니다. 그에 따라 기존에 알고 있던 데이터베이스의 지식들을 정리해보고자 합니다. 데이터베이스란?데이터베이스는 구조화된 정보 또는 데이터의 조직화된 모음으..

Database 2024.07.02