본문 바로가기

ComputerScience/Database9

[Database] 일반상식 1. DBMS DBMS는 DataBaseManagementSystem의 약자로 사용자가 데이터에 관한 정보를 가능한 효율적이고 효과적으로 구성하는 것으로 복원 및 검색을 할 수 있도록 하는 응용프로그램의 모음이다. 즉, 데이터의 집합인 데이터 베이스를 더 체계적으로 관리하고 이용할 수 있게 해주는 소프트웨어 시스템을 말한다. 1-1) RDBMS RDBMS의 R은 Relational의 약자로 관계형 데이터 모델에 기초를 둔 RDB를 생성하고 수정 하고 관리 하는 소프트웨어이다. 테이블 끼리 서로 연관되어 있어 일반 DBMS보다 효율적으로 데이터를 저장, 구성 및 관리할 수 있다. 정규화를 통해 데이터의 중복성을 최소화 하며 트랜잭션을 수행하는 것이 더 쉽다. 데이터의 원자성, 일관성, 격리 및 내구성을 유.. 2021. 6. 23.
[Database] InnoDB MySql을 사용할 때 아무 생각없이 사용하는 InnoDB에 대해서 알아보려고 한다. 1. InnoDB 장점 MySQL의 대표적인 데이터베이스 엔진이다. 트랜잭션-세이프 스토리지 엔진이다. commit, rollback, 장애복그 row-level locking, 외래키 등 많은 기능을 지원한다. 다수의 사용자, 동시접속 퍼포먼스를 제공한다. 높은 퍼포먼스가 필요한 대용량 사이트에 적합하다 단점 Deadlock 발생 NODE간 데이터 체크로 인해, Deadlock 발생 가능성이 존재 많은 자원 소모 대용량 처리를 하게 된다면, 순간적으로 많은 자원을 소모한다. 데이터 복구의 어려움 단순하게 파일 백업으로 복구를 하는게 아니라, 특정한 방법을 사용하여 복구해야한다. 2021. 6. 22.
[DataBase] 7. ORM 1. ORM(Object Relational Mapping) 객체와 관계형 DB를 자동으로 매핑해주는 것으로 객체와 관계(RDB)를 매핑해 주는 것을 말한다. 객체지향은 클래스를 관계형 DB는 테이블을 사용한다. 객체와 관계형 DB의 불일치가 존재하는데 이 때 ORM을 통해 객체간의 관계를 바탕으로 SQL을 자동으로 생성하여 불일치를 해결한다. 즉, ORM을 사용하면 SQL문을 작성할 필요없이 객체를 통해 간접적으로 데이터베이스를 조작할 수 있게된다. 1) 장점 객체지향적인 코드 ORM을 이용하면 SQL문이 아닌 클래스의 메서드를 통해 데이터베이스를 조작할 수 있어, 개발자가 객체 모델만 이용하여 프로그래밍 하는 데 집중 할 수 있다. SQL문을 사용하며 같이 필요한 선언문, 할당, 종료 등 부수적 코드.. 2021. 6. 4.
[DataBase] 6. 조인(JOIN) 1. 조인 JOIN이란 RDB에서 일반적을 많이 사용하며, 정규화를 통해 분리된 데이터 베이스에서 원하는 결과를 도출하기 위해 여러 테이블을 조합하는 것을 JOIN이라고 한다. JOIN을 통해 관련된 컬럼을 기준으로 행을 합쳐주는 연산을 할 수 있다. 2. 조인의 종류 1) INNER JOIN INNER JOIN은 가장 많이 사용되는 조인으로 2개의 테이블을 합쳐 새로운을 만들고 이중 A의 기준값과 B의 기준값( 예를들어 A의 PK와 B의 FK)이 일치하는 것에 대해 결과를 도출하는 것이다. 2) OUTER JOIN 외부조인은 크게 3가지로 나눌 수 있다. [1] LEFT OUTER ( A에 따라 B의 컬럼을 추가해 놓은 것 ) A테이블의 모든 데이터에 대해 B테이블과 매칭이 되는 레코드를 포함하는 조인.. 2021. 6. 3.
[DataBase] 5. 파티셔닝/ 샤딩 1. 파티셔닝(Partitioning)/샤딩(Sharding) 데이터베이스를 여러개로 나누어 분산시키는 기술용어로, 서비스 크기의 증가에 따라 DB의 크기가 증가하면서 성능을 향상시키기 위한 것이다. 자료가 매우 많아지면서 하나의 DBMS가 여러개의 테이블을 관리하기에는 성능적으로 문제가 생겼고 이에 따라 테이블을 나누어 관리하는 방법이 파티셔닝, 데이터베이스를 여러개 사용하는 방법이 샤딩이다. 1) 파티셔닝 큰 테이블이나 인덱스를 관리하기 쉬운 크기로 분리하는 방법 [1] 파티셔닝 방법 Horizontal Partitioning( 수평 파티셔닝 ) 수평 즉, 데이터의 개수를 기준으로 나누어 파티셔닝하는 방법이다. 하나의 테이블을 대상으로 튜플(행)의 개수가 많아지면 여러개의 테이블로 분산하여 저장하는 .. 2021. 6. 3.
[DataBase] 4. 정규화 2. 정규화( Nomalization) 정규화의 기본 목표는 테이블간 중복된 데이터를 허용하지 않는다는 것이다. 이로써 무결성(정확성/일관성 보장)을 유지할 수 있으며, DB저장용량 또한 줄일 수 있다. 정규화는 또한 이상문제들을 해결하기 위해 속성(컬럼)들 끼리 종속관계를 분석하여 여러 테이블로 나누는 과정이라고 표현 할 수 있다. 테이블을 여러개로 분해하면 속도는 느려질 수 있지만, 각종 이상문제들을 해결하기위해 정규화가 필요하다. - 이상문제 종류 삽입이상 데이터를 저장할 때 원하지 않는 정보가 함께 삽입되는 경우 삭제이상 튜플 삭제 시 유지되어야 되는 정보도 함께 삭제되는 경우 갱신이상 중복되는 튜플 중 일부 속성만 갱신되어 모순이 발생하는 경우 1) 제 1정규화 (도메인 원자값) 테이블의 컬럼이.. 2021. 6. 3.
[DataBase] 3. 스키마 1. 스키마 스키마란 데이터베이스의 구조와 제약조건에 관해 전반적인 명세를 기술한 것이다. 자세하게 살펴보면 다음과 같다. 개체의 특성을 나타내는 속성(Attribute) 속성들의 집합으로 이루어진 개체(Entity) 개체 사이에 존재하는 관계(Relation)에 대한 정의 이들이 유지해야 할 제약조건들을 기술한 것이다. DB에 저장되는구조를 나타내는 데이터 베이스 구조를 스키마라 한다. 스키마는 데이터 사전(Data Dictionary)에 저장된다. *데이터 사전 : 시스템 전체에서 나타나는 데이터 항목들에 대한 정보를 지정한 중앙 장소로, 이 정보에는 항목을 참조하는데 사용되는 식별자, 항목에 대한 엔티티의 구성요소, 항목이 저장되는 곳, 항목을 참조하는 곳 등을 포함 현실 세계의 특정한 한 부분의 .. 2021. 6. 3.
[DataBase] 2. 트랜잭션(Transaction) 1. 트랜잭션 트랜잭션은 끊김없이 한번에 처리해야하는 업무의 단위를 의미한다. 데이터베이스에서의 트랜잭션은 데이터베이스의 상태를 변화시키기 위해서 수행하는 작업의 단위를 말한다. 트랜잭션을 설명할 때 가장 대표적인 예시가 은행업무이다. 다음은 트랜잭션의 개념이 들어가지 않은 업무 처리의 예이다. A가 자신의 계좌에서 B에게 송금을 하려고 한다. 송금을 하는 중 네트워크에 문제가 생겨 A의 잔고는 줄었지만 B에게 입금이 되지 않았다. 이럴 경우를 대비하여 A의 통장에서 금액이 빠진 후 B의 통장에 입금이 된 것이 확인 된다면 작업을 마치는 것을 트랜잭션이라고 한다. 만일 중간에 오류가 발생했다면 거래를 처음 상태로 복구시켜야 한다. 즉, 작업 처리에있어서 안정성을 확보하는 것을 말한다. 트랜잭션을 정리하면.. 2021. 5. 31.