Programming/Database 16

트리구조 DB 설계 방법 - 클로저 테이블(Closure Table)

계층 구조를 가지는 데이터는 개발에서 너무나 자주 접하게 되며, 또 잘 설계되어야 효율적으로 사용할 수 있는 구조인데요. 때문에 한번 잘 정리해놓으면 좋겠다 싶어서 공부한 내용입니다. 해당 포스팅은 트리 구조의 데이터베이스를 설계하는 방식 중 '클로저 테이블(Closure Table)' 방식에 대해서 살펴보고, 직접 구현해본 내용입니다. Closure Table 'SQL Anti Patterns' 도서에 수록된 클로저 테이블은 '계층 구조를 저장하는 단순하고 우아한 방법'으로 정의되어 있습니다. 아래에서 자세하게 살펴보겠지만 클로저 테이블은 조상-자손 관계에 대한 경로뿐만 아니라 트리의 모든 경로를 저장하는데요. obj_table과 clo_table을 통해 자세한 내용 살펴보겠습니다. (기본적인 클로저 ..

DB 데이터베이스 인덱스(Index) 기본 개념과 설명

1. 인덱스(Index)란? Index는 RDBMS(관계형 데이터베이스 관리 시스템)에서 테이블에 대한 검색 속도를 높여주는 자료 구조를 말하며, 테이블 내에 1개의 컬럼 혹은 여러 개의 컬럼을 이용하여 생성합니다. 특정 테이블의 컬럼을 인덱싱(Indexing)하면 검색을 할 때 테이블의 레코드를 전부 다 확인하는 것이 아니라 인덱싱 되어있는 자료 구조를 통해서 검색되기 때문에 검색 속도가 빨라지는 것입니다. Index는 빠른 검색 속도뿐만 아니라 레코드 접근에 대한 효율적인 순서 매김 동작에 대한 기초를 제공합니다. 인덱스를 설명할 때는 책을 통해서도 많이 비유되는데, 인덱스는 책에서 '목차'라고 생각할 수 있습니다. 책에서 정보를 찾을 때도 원하는 카테고리를 목차에서 찾고, 목차에 있는 페이지 번호를..

데이터베이스 연동 원리 JDBC, DataSource, Connection Pool

JDBC, Connection Pool, DataSoucre 개념과 원리 살펴보기 각각의 WAS에서 돌아가는 여러 개의 프로젝트들이 하나의 DB에 있는 데이터를 사용할 때 'Dirty Read', 'Non Repeatable Read', 'Phantom Read' 같은 문제점이 발생할 수 있다는 것을 알게 되고, 문제를 해결하기 위한 여러 가지 방법을 찾아보면서 Spring Boot에서 DB와 연결되어 데이터를 주고받는 동작 원리에 대한 이해가 부족하다고 느껴서 정리하게 된 내용입니다. 먼저 JDBC JDBC는 Java Database Connectivity의 약자로 스프링 프레임워크를 사용하기 전에 일반 Java 언어에서 DB 연결을 위해 사용하는 것으로 자바와 데이터베이스를 연결하기 위한 Java 표..

트랜잭션에 락을 사용하는 경우 (격리 레벨 Isolation Level)

트랜잭션(Transaction)의 이론적 개념과 특성, 먼저 트랜잭션의 이론적 개념은 데이터베이스 관리 시스템(DBMS)에서 '데이터를 조작하는 최소한의 작업(unit of work)'을 이야기합니다. 그리고 트랜잭션은 'ACID'라는 특성을 보장해야 하는데요. 원자성(Atomicity) - 원자 단위로서 더 이상 쪼갤 수 없는 논리적 최소 단위임을 말합니다. - 한 트랜잭션 내에서 실행한 작업들은 하나로 간주하는 것으로 모두 성공하거나 모두 실패해야 합니다. (All or Nothing) 일관성(Consistency) - 트랜잭션이 성공했다면 데이터베이스는 항상 일관성 있는 상태로 유지되어야 한다는 것을 말합니다. 격리성(Isolation) - 동시에 실행되는 트랜잭션들이 서로 영향을 미치지 않도록 격..

JPA와 Spring Data JPA 구분하기

해당 포스팅은 JPA에 대해 세부적으로 다루기보다는 전체적인 개념과 함께 JPA와 Spring Data JPA를 구분하는데 초점을 두었습니다. 참고 부탁드리겠습니다. - ORM(Object Relational Mapping) JPA에 대해 알아보기 전 더 큰 개념인 ORM 부터 간단하게 살펴보겠습니다. 객체 관계 매핑(Object Relational Mapping)이란? 객체와 관계형 데이터베이스의 데이터를 ORM 프레임워크가 중간에서 자동으로 매핑해주는 것을 말합니다. (대부분의 대중적인 언어에는 ORM 기술이 존재) 객체를 객체대로 설계하고, 관계형 데이터베이스는 관계형 데이터베이스대로 설계했을 때 객체 모델과 관계형 모델 간의 불일치가 존재하는데, 이때 ORM을 통해 객체 간의 관계를 바탕으로 SQ..

NoSQL mongoDB란? (+ macOS mongoDB 설치 명령어)

- NoSQL SQL이 없다는 의미의 No가 아닌 'Not Only SQL'라는 의미로 기존 RDBMS(관계형 데이터베이스)의 한계를 극복하기 위해 만들어진 새로운 형태의 데이터베이스입니다. 빅데이터를 다룰 때 RDBMS만으로 트래픽을 감당하기 어려워져서 이를 해결하기 위해 만들어진 것으로 NoSQL은 더 유연한 방법을 통해 데이터를 관리하는 방식으로 소프트웨어 개발에 혁신으로도 불립니다. NoSQL을 사용하는 곳 중 잘 알려진 회사로는 여행 예약 사이트인 Expedia가 있습니다. * RDBMS(Relational Database Management System) 관계형 데이터베이스 관리 시스템 행과 열로 된 2차원의 Table로 데이터를 관리하는 시스템으로 Oracle, Mysql, MariaDB 등..