All Category

공개범위 설정
Table
   
기본채널
Table
   
카테고리
Table
   
공개범위
[전체]전체 공개
Table
   
위치정보
[전체]나만 보기
Table
   
다운로드
[전체]로그인 공개
Table
   
슬라이드
Table
   
시작고정
Table
   
사진정보
0
Date: 2021-03-24
2021
March
24

[5]. Database




인간은 아주 오래 전에 정보를 저장하기 시작했다. 고대에는 관공서, 도서관, 병원 및 비즈니스 조직에 의해 정교한 데이터베이스 시스템을 개발했으며 이러한 시스템의 기본 원칙 중 일부는 오늘날에도 사용되고 있습니다.


DBMS는 컴퓨터가 발명된 이후 데이터의 수집/갱신/조회의 효율화를 위한 수단의 한가지로 DBMS가 큰 역활을 담당해 왔며 시대에 따라서 그 발전 방향이 바뀌어 왔다

2000년데 이전까지는 RDBMS시대로 데이터에 ACID의 정합성 및 효율화의 시기였다면, 2000년대 이후로는 Big Data가 시대의 흐름에 맞춰 NoSQL DBMS가 생겨나기 시작 했으며, NoSQL의 단점을 보완한 NewSQL로도 발전을 하고 있다

RDBMS/NoSQL/NewSQL는 모두 장단점을 가지고 있으며 각각의 상황에 맞는 역활들을 충분히 가지고 있다, 그러므로 시스템 상황에 맞는 DBMS를 선택 사용하면 된다.








[1]. 데이터 베이스의 탄생과 발전 역사 (A Brief History of Database Management)

1. RDBMS(SQL)

  • 1962 : 톰 길번(Tom Kilburn)

    - 랜덤 액세스 디지털 스토리지, 가상 메모리 및 멀티 프로그래밍을 포함한 초기 컴퓨터 디자인에 기여했으며, 이 아이디어는 DBMS의 버퍼 캐시를 관리하기 위한 알고리즘의 토대가 됐다.


  • 1963 : 찰스 바크만(Charles W. Bachman) 

    - 제너럴 일렉트릭(GE)에서 데이터를 독립적으로 관리하기 위해 IDS(Intergrated Data Store)를 만들었으며, 이는 최초의 상용DBMS로 평가 받는다 

- 1960년대 에는 코볼 언어의 개발/데이터베이스 인터페이스 표준화를 진행했던 CODASYL의 네트워크 모델IBM의 IMS라는 계층 적 모델 두가지가 공존했지만, 이후 IBM의 IDS가 상업적 성공을 거두면서 네트워크 모델은 도태되었다.


  • 1964 : IBM-ISAM개발(시스템/360)

    - IBM은 시스템/360을 개발하면서 ISAM(Indexed Sequential Access Method)인덱스의 개념을 처음으로 도입,이후 VSAM, B 트리 인덱스로 변형되고 발전했는데, 이는 데이터를 최초로 구조화했다는데 그 의미가 있었다.

 

  • 1968 : 번 와츠(Vern Watts)

    - IBM의 번 와츠(Vern Watts) 등 IBM 연구진과 공동으로 계층형 DBMS를 개발하기 시작했으며, 최초의 계층형 DB(IMS/DB 개발)개발 성공

 

  • 1970 : E. F. 코드(Codd) 박사

    - IBM연구소의 수학자인 E. F. 코드(Codd) 박사는 수학적 관점에서 데이터관리를 효율적으로 관리하기위해 관계 대수의 원리를 이용해 저장하고 조회하면 된다는 아이디어를 논문으로 발표


  • 1973 : IBM에서 System-R 프로젝트 시작 

  - SQL이 처음 만들어짐


  • 1974 : 마이클 스톤브레이커(Michael Stonbraker)

    - Buerkeley에서 잉그레스(Ingres) 프로젝트로 RDBMS연구 시작, 잉그레스 프로젝트는 이후 소스가 오픈됐고, 이후 개발되는 많은 DBMS의 모태가 됐다

    (Ingres, Postgres95, PostgresSQL, VectorWise, Monet DB,Netezza, Greenplum, Redshift, Illusta, DATAllegro, Aster Database)

  

  • 1976 : 오라클 설립(SDL)

    E. F. 코드 박사의 논문의 영향으로 SDL이라는 회사를 설립

    - 밥 마이너(Bob Miner)

    - 래리 엘리슨(Larry Ellison)

    - 에드 오티스(Ed Oates)


  • 1976 : 피터 첸(Dr. Peter Pin-Shan Chen)

엔터티 관계 모델(ER 모델) 처음 개발



  • 1977 : 밥 마이너(Bob Miner)

    - 오라클 Ver.1 개발



  • 1979 : 패트리시아 G. 셀링거(Petricia G. Celinger )

    - 코스트 기반 옵티마이저(Cost Based Optimizer) 개발


  • 1979 : 짐 그레이(Jim Gray)

    -트랜잭션 처리 설계

 

  • 1984 : 밥 엡스타인(Bob Epstein)

   - 사이베이스를 설립

    

  • 1992 : 밥 마이너(Bob Miner)

   - 오라클 Ver.7 발표


  • 1995 : [오픈소스] MySQL 버전1 개발


  • 1996 : [오픈소스] 포스트그레SQL 

- Postgres95는 SQL의 해석기에 SQL질의어를 추가하여 PostgresSQL으로 변경





2. NoSQL

  • 2009 : [오픈소스] 몽고DB(mongo)



  • 2008 : [오픈소스] 카산드라(cassandra)

    - 마스터리스(masterless)의 P2P 분산 DB


  • 2010 : [오픈소스] 카우치베이스(Couchbase)

    - 별도의 드라이버 없이 HTTP/REST 프로토콜로 통신


  • 2011 : [오픈소스] 하둡(Hadoop)

    - HDFS 분산처리 Big 데이터 프레임워크





3. NewSQL


  • 2005 : ScaleDB

- 반관계형(semi-relational) 데이터 모델, ACID 지원


  • 2007 : Clustix

- 반관계형(semi-relational) 데이터 모델, ACID 지원


  • 2014 : 코크로치 랩스(CockroachDB)

   - 반관계형(semi-relational) 데이터 모델, ACID 지원


  • 2015 : 볼트(VoltDB)

   - 반관계형(semi-relational) 데이터 모델, ACID 지원

    

  • 2017 : 스페너(Spanner)

   - 반관계형(semi-relational) 데이터 모델, ACID 지원












[2]. 관계형 데이터베이스 관리 시스템의 계보(Genealogy of Relational Database Management Systems) - 1/2








[3]. 관계형 데이터베이스 관리 시스템의 계보(Genealogy of Relational Database Management Systems) - 2/2

RDBMS 특징

  • 장점

   - 보안성과 안정성이 좋음

   - 일관성과 신뢰성이 높음

   - 동시성이 가능함

   - 복잡한 쿼리가 수행이 가능(복잡한 비즈니스 로직 처리가 가능함)

    

  • 단점

   - 대용량 데이터에 대한 워크로드가 발생

   - 대량 데이터의 실시간 분석에 맞지 않음

   - 상대적으로 고비용


  • 트랜잭션을 위한 ACID 지원 : 트랜잭션 커밋(Commit)을 위한 필요속성인 ACID( 원자성, 일관성, 고립성, 지속성)을 지원

   - 원자성(Atomicity) : 트랜잭션과 관련된 작업들이 부분적으로 실행되다가 중단되지 않는 것을 보장하는 능력

   - 일관성(Consistency) : 트랜잭션이 실행을 성공적으로 완료하면 언제나 일관성 있는 데이터베이스 상태로 유지

   - 고립성(Isolation) : 트랜잭션을 수행 시 다른 트랜잭션의 연산 작업이 끼어들지 못하도록 보장

   - 지속성(Durability) : 성공적으로 수행된 트랜잭션은 영원히 반영되어야 함








[4]. NoSQL / NewSQL 데이터베이스 관리 시스템의 계보 (Genealogy of NoSQL/NewSQL Database Management Systems)

NoSQL 특징

  • 장점

- 대용량 데이터에 적합함

- 데이터 추가가 유연함

- 용량 대비 비용이 좋음

  

  • 단점

- 트랜잭션을 지원하지 안아 높은 수준의 데이터 정합성을 필요로 분야에서는 사용할수 없음

- SQL과 같은 표준 언어가 없다

- 보안이슈가 RDBMS보다는 낮음

  

   

   

NewSQL 특징

  • 장점

- 대규모 트랜잭션을 감당할수 있는 분산처리 기술과 이키텍처

- RDBMS의 트랜잭션 기능을 포함하고, NoSQL의 확정성과 가용성을 가지고 있음


  • 단점

   - RDBMS나 NoSQL의 SQL보다 복잡하다

- 표준이 없음


  • 비잠금 동시성 제어

   - 데이터 무결성 처리를 위해 지원하는 트랜잭션 동시제어 잠금처리와 관련해 기존 방식과는 다른 Non-locking 구조를 지원

   - 락을 걸지않고 단일 스케줄을 통해 동시성 제어를 한다.


  • 노드 단위 고성능

   - 각 단일 DBMS 서버 노드 단위로 확장해 고성능 보장

   - 네트워크를 통한 처리가 없고 Node 단위로 확장하여 성능을 높일 수 있다.


  • 병렬, 비공유 아키텍쳐

   - 병렬적으로 수행해서 데이터를 고성능으로 처리 할 수 있어야하고, 분산 처리 시 데이터가 각 서버에 중복되지 않고 독립적으로 존재해야 한다.

   - CPU, RAM, DISK 같은 하드웨어 자원을 서로 공유하지 않고 개별적으로 사용한다.

   

  • Partitioning/Sharding

- Sharding를 통해 Scale-out을 지원한다.

- Sharding : 같은 테이블 스키마를 가진 데이터를 다수의 데이터베이스에 분산하여 저장하는 방법, 읽기 또는 검색 속도를 높일수 있다

- Partitioning : 테이블 데이터 에서 컬럼의 값을 기준으로 분할



  • Concurrency Control : MVCC(Multi Version Concorrencty Control) 기법 적용

- NewSql은 트랜잭션에 의해 데이터 갱신이 발생 할때, 생성된 사본에 데이터를 갱신하는 연산을 수행하므로 다른 트랜잭션에 영향을 끼치지 않으면서 빠른 성능을 구현이 가능하다



  • Crash Recovery 

- 서버의 Node단위로 운영하면서 하나 이상의 노드에 문제가 생길경우, 데이터를 복구하고 상태를 유지하는 것이 가능하다.

- Disk Raid 1과 비슷한 개념이다. 물리적인 디스카 하나가 고장 나면 다른 Disk(미러링된)의 데이터로 운영 및 복구가 가능하다, 다른점은 NewSQL Database는 여러개의 Node에 중복(미러링) 데이터를 Read할때 정해진 블록으로 여러 Node에서 분산해서 읽어 오기때문에(Disk의 병목현상을 극복) 읽기 속도가 빠르다


  • In-Memory DB : 실시간 저장 및 처리를 위해서 인메모리 DB 아키텍처이다.

- 모든 NewSql이 인메모리 DB는 아니지만, 대부분 지원한다.






















URL : http://www.epari.net/@architecture/vlink/b/bX
목록
도움이 되는 유익한 내용이었다면 힘이 될 수 있는 댓 글을 남겨주세요.
4
0
  • 뎃글달기
Upload
v
Name Type Size