24DAY 백엔드

24DAY 백엔드 - 7DAY 관계형 데이터 베이스

bonschicken 2021. 2. 11. 10:34
728x90

관계형 데이터 베이스 

정의: 테이블로 이루어져 있으며, 이 테이블은 키(key)와 값(value)의 관계를 나타냅니다.

 

특징 : 데이터의 종속성을 관계로 표현할 수 있습니다.

  1. 데이터의 분류, 정렬, 탐색 속도가 빠릅니다.
  2. 오랫동안 사용된 만큼 신뢰성이 높고, 어떤 상황에서도 데이터의 무결성을 보장해 줍니다.
  3. 기존에 작성된 스키마를 수정하기가 어렵습니다.
  4. 데이터베이스의 부하를 분석하는 것이 어렵습니다.

 

1. postgreSQL

PostgreSQL(포스트-그레스-큐엘 [Post-Gres-Q-L]로 발음)은 객체-관계형 데이터베이스 시스템(ORDBMS)으로, 엔터프라이즈급 DBMS의 기능과 차세대 DBMS에서나 볼 수 있을 법한 많은 기능을 제공하는 오픈소스 DBMS다. 실제 기능적인 면에서는 Oracle과 유사한 것이 많아, Oracle 사용자들이 가장 쉽게 적응할 수 있는 오픈소스 DBMS가 PostgreSQL이라는 세간의 평 또한 많다.

 

PostgreSQL은 관계형 DBMS의 기본적인 기능인 트랜잭션과 ACID(Atomicity, Consistency, Isolation, Durability)를 지원한다. 또한 ANSI SQL:2008 규격을 상당 부분 만족시키고 있으며, 전부를 지원하는 것을 목표로 현재도 기능이 계속 추가되고 있다.

또한 PostgreSQL은 기본적인 신뢰도와 안정성을 위한 기능뿐만 아니라 진보적인 기능이나 학술적 연구를 위한 확장 기능도 많이 가지고 있다. PostgreSQL의 기능을 대략적으로 열거해 보더라도 상당히 많은 기능을 가지고 있음을 알게 된다.

  • Nested transactions (savepoints)
  • Point in time recovery
  • Online/hot backups, Parallel restore
  • Rules system (query rewrite system)
  • B-tree, R-tree, hash, GiST method indexes
  • Multi-Version Concurrency Control (MVCC)
  • Tablespaces
  • Procedural Language
  • Information Schema
  • I18N, L10N
  • Database & Column level collation
  • Array, XML, UUID type
  • Auto-increment (sequences),
  • Asynchronous replication
  • LIMIT/OFFSET
  • Full text search
  • SSL, IPv6
  • Key/Value storage
  • Table inheritance

이외에도 엔터프라이즈급 DBMS의 다양한 기능과 새로운 기능을 자랑하고 있다.

 

PostgreSQL 한계(버전 13.2)

 

항목 한계점 설명
데이터베이스 크기 무제한  
데이터베이스 수 4,294,950,911  
relations per database 1,431,650,303  
relation size 32 TB with the default BLCKSZ of 8192 bytes
테이블당 최대 레코드 개수 limited by the number of tuples
that can fit onto 4,294,967,295
pages
 
테이블당 최대 컬럼 개수 1600  
최대 컬럼 크기 1 GB  
테이블당 최대 인덱스 개수 무제한  
columns per index 32 can be increased by recompiling PostgreSQL
partition keys 32 can be increased by recompiling PostgreSQL
     

 

프로세스 구조

 

클라이언트는 인터페이스 라이브러리(libpg, JDBC, ODBC 등의 다양한 인터페이스)를 통해 서버와의 연결을 요청(1)하면, Postmaster 프로세스가 서버와의 연결을 중계(2)한다. 이후 클라이언트는 할당된 서버와의 연결을 통해 질의를 수행(3)한다.

 

퀴리 수행 절차

클라이언트로부터 질의 요청이 들어오면 구문 분석 과정(1)을 통해 Parse Tree를 생성하고 의미 분석 과정(2)를 통해 새로운 트랜잭션을 시작하고 Query Tree를 생성합니다.

이후 서버에 정의된 Rule에 따라 Query Tree가 재 생성(3)되고 실행 가능한 여러 수행 계획 중 가장 최적화된 Plan Tree를 생성(4)한다. 서버는 이를 수행(5)하여 요청된 질의에 대한 결과를 클라이언트로 전달하게 됩니다.(그림 6).

서버의 쿼리 수행 과정에서는 데이터베이스 내부의 시스템 카탈로그가 많이 사용되는데, 사용자가 함수나 데이터 타입은 물론 인덱스 접근 방식 및 RULE 등을 시스템 카탈로그에 직접 정의할 수도 있다. 따라서 PostgreSQL에서는 이것이 기능을 새로 추가하거나 확장하는데 있어 중요한 포인트로 활용됩니다.

데이터가 저장되는 파일들은 여러 개의 페이지들로 구성되며, 하나의 페이지는 확장 가능한 slotted page 구조를 가집니다.

 

 

2. MySql

 

MySQL은 가장 널리 사용되고 있는 관계형 데이터베이스 관리 시스템(RDBMS: Relational DBMS)입니다.

 

MySQL은 오픈 소스이며, 다중 사용자와 다중 스레드를 지원합니다.

또한, C언어, C++, JAVA, PHP 등 여러 프로그래밍 언어를 위한 다양한 API를 제공하고 있습니다.

 

MySQL은 유닉스, 리눅스, 윈도우 등 다양한 운영체제에서 사용할 수 있으며, 특히 PHP와 함께 웹 개발에 자주 사용됩니다.

MySQL은 오픈 소스 라이센스를 따르기는 하지만, 상업적으로 사용할 때는 상업용 라이센스를 구입해야만 합니다.

 

MySQL의 장점

MySQL이 가지는 장점은 다음과 같습니다.

 

1. 오픈 소스 라이센스를 따르기 때문에 무료로 사용할 수 있습니다.

2. 다양한 운영체제에서 사용할 수 있으며, 여러 가지의 프로그래밍 언어를 지원합니다.

3. 크기가 큰 데이터 집합도 아주 빠르고 효과적으로 처리할 수 있습니다.

4. 널리 알려진 표준 SQL 형식을 사용합니다.

5. MySQL 응용 프로그램을 사용자의 용도에 맞게 수정할 수 있습니다.

 

3. Maria DB

MariaDB 오픈 소스 관계형 데이터베이스 관리 시스템(RDBMS)이다. MySQL과 동일한 소스 코드를 기반으로 하며, GPL v2 라이선스를 따릅니다. 오라클 소유의 현재 불확실한 MySQL의 라이선스 상태에 반발하여 만들어졌으며, 배포자는 몬티 프로그램 AB(Monty Program AB)와 저작권을 공유해야 합니다.이것은 MySQL과 높은 호환성을 유지하기 위함이며, MySQL API와 명령에 정확히 매칭하여, 라이브러리 바이너리와 상응함을 제공하여 교체 가능성을 높이고자 입니다. 마리아 DB에는 새로운 저장 엔진인 아리아(Aria)뿐만 아니라, InnoDB를 교체할 수 있는 XtraDB 저장 엔진을 포함하고 있다.이것은 트랜잭션과 비트랜잭션 엔진 그리고 미래에 나올 MySQL 판에 대응하고자 함일 것이다.

마리아 DB의 주요 개발자는 MySQL과 몬티 프로그램 AB를 설립한 몬티 와이드니어스(Michael Monty Widenius)이다. 그는 이전에 자신의 회사, MySQL AB를 썬 마이크로시스템즈에 10억 달러에 판매를 한 적이 있으며, 마리아 DB는 그의 둘째 딸인 마리아의 이름을 딴 것이다.

 

MySQL과의 호환성

마리아DB는 MySQL과 소스코드를 같이 하므로 사용방법과 구조가 MySQL과 동일하다.이름만 다르지 명령어나 사용방법 (5.5까지) 모두 MySQL과 동일합니다. 편의를 위해 마리아DB는 동일한 MySQL 버전과 바이너리 드롭인 교체를 지원한다. 예를 들어, MySQL 5.1은 마리아DB 5.1과 5.2, 5.3과 호환됩니다. MySQL 5.5는 마리아DB 5.5와 호환되는 식입니다. 이것은 다음과 같은 것을 의미합니다.

  • 데이터와 테이블 정의 파일(.frm) 파일이 바이너리 호환이 됩니다.
  • 모든 클라이언트 API, 프로토콜 그리고 구조가 동일합니다.
  • 모든 파일이름과 바이너리, 경로, 포트, 소켓 그리고 기타 등등이 동일합니다.
  • 모든 MySQL 커넥터(PHP, Perl, 파이썬, 자바, .NET, MyODBC, Ruby, MySQL C 코넥터 등)가 마리아 DB와 동일하게 작동한다. PHP5에는 알아둬야할 약간의 설치 문제가 있습니다.

근본적인 차이점은 마리아DB는 GPL v2 라이선스를 따르는 순수한 오픈소스 프로젝트이기에 오라클로부터 자유롭습니다. 마리아DB의 모든 코드는 GPL, LGPL, LPGL, BSD의 라이선스로 만들어져 있다. 누구나 필요로 하면 커뮤니티를 통해 마리아DB를 내려받아 쓸 수 있다.

  • 리눅스에서는 이러한 완전한 호환성으로 인해 {\displaystyle {\mathsf {mariadb}}}에대해서 mysql과 구별하기위해{\displaystyle {\mathsf {mysql{\color {green}{d}}}}}로 mysql.server는mysqld_safef로 각 각 대응되어 사용되도록 표현하기도한다.

성능

마리아DB 커뮤니티는 MySQL과 비교해 애플리케이션 부분 속도가 약 4~5천배 정도 빠르며, MySQL이 가지고 있는 모든 제품의 기능을 완벽히 구현하면서도 성능 면에서는 최고 70%의 향상을 보이고 있다고 주장한다.

기능

기존에 MySQL 엔터프라이즈에서 플러그인으로 제공한 쓰레드풀 기능이 내장됐으며, 스토리지 엔진을 활용한 샤딩 기술을 제공한다. 즉, MySQL의 오픈소스 버전을 넘어 (5.5까지) 모든 버전을 대체할 수 있는 특징들을 갖추고 있다.

  • 가상 컬럼 - 5.2에서 추가
  • Table 제거 - 5.2에서 추가
  • 스토리지 엔진 지정 CREATE TABLE - 5.2에서 추가
  • GIS 기능 지원 - 5.3 이상
  • 멀티 소스 리플리케이션 - 10.3 이상
  • SHOW EXPLAIN - 다른 쓰레드에서 작동되는 EXPLAIN 플랜 제시

 

4. MS SQL 특징

 

1). 정보의 보호 측면

  • 투명한 데이터 암호화
  • 키 관리의 기능의 확장
  • 감사

2. 고가용성 측명

  • 데이터베이스 미러링 기능을 통해 저렴한 고가용성 데이터 베이스를 구현 가능
  • 로그 스트림 압축
  • 데이터 페이지의 자동 복구

3. 시스템 중지 없이 CPU 추가

  • CPU 및 메모리를 SQL Server가 작동 중인 상태에서 추가 가능
  • 현재의 서비스를 중단하지 않은 상태로 시스템 자원을 확장할 수 있음

4. 성능과 확장성 측명

  • 리소스 관리자
  • 예측 가능한 퀴리 플랜
  • 데이터 압축
  • 백업 압축

2). 생산성

SQL Server는 관리를 위한 시간과 비용을 최소화하여 생산성을 높일 수 있게 지원합니다.

개발자는 .Net Framwork 및 visual Studio를 활용하여 응용프로그램을 손쉽고 강력하게 개발가능합니다.

 

1.관리성

  • 정책관리
  • 효율적인 설치
  • 데이터 컬렉션

2. 빠른 개발 환경 지원

  • ADO.NET Entity Framework
  • LINQ(언어 통합 쿼리)

3. 다양한 데이터 형식의 지원

  • DATETIME/ DATE / TIME
  • HIERARCHY ID
  • FILESTREAM 데이터와 FILETABLE
  • 통합되고 뛰어난 성능의 전체텍스트 검색
  • 스파스 열
  • 큰 사용자 정의 타입
  • 공간 데이터 타입

3) 지능적

SQL Server는 사용자에게 지능적 정보를 제공하는 포괄적인 솔루션을 제공합니다.

 

1. 각종 데이터의 통합

  • 테이블의 파티션 분할
  • 스타 조인 쿼리 최적화
  • GROUPING SETS
  • 변경 데이터 추적
  • MERGE SQL 구문

2. 관련 보고서 제공

  • Repoting Services의 기능
  • 마이크로소프트 오피스와 통합

 

 

 

5. oracle

 

1. Oracle Management Server

 - 중앙 집중 방식으로 Administration monitoring이 가능하고, Multiple databases를 튜닝 가능합니다.

 - 다른 Admin User들과 공유가 가능합니다.

2. Oracle Change Manager

 - 변경 Plan을 작성하고 실제 구현하기 전에 변경 사항의 효과를 볼 수 있습니다.

 - 생산 시스템을 방해하지 않습니다.

3. Administrative Alerts

 - 오류가 발생하면 오라클은 이메일이나 설정되어 있는 계정으로 연락을 줄수 있습니다.

 - 경고는 예정된 가동 정지 시간 동안 차단 될 수 있습니다. 

4. Capacity Planning

 - 업그레이드 관리자의 계획을 돕기 위해 사용 패턴을 추적할 수 있습니다.

 - 병목 현상을 쉽게 파악 할 수 있습니다.

5. Query Optimizer

 - 쿼리 최적화 프로그램으로 오라클은 SQL문을 실행하는 가장 효율적인 방법을 선택합니다.

 - Cost 비용을 최소화하기 위해 테이블과 인덱스를 분석 합니다. (Oracle 10g 이상부터는 Cost_Base)

 

 



출처: https://ora-sysdba.tistory.com/entry/Oracle-인가-MySQL-인가 [Welcome To Ora-SYSDBA]

출처: d2.naver.com/helloworld/227936