데이터베이스 서버는 다음과 같은 이유로 존재합니다:
성능: 데이터베이스 서버는 데이터를 효율적으로 관리하고 처리할 수 있는 최적화된 환경을 제공합니다. 데이터베이스 서버는 고성능 하드웨어, 데이터 캐싱 및 인덱싱 기술, 병렬 처리 및 최적화된 쿼리 실행 계획 등을 활용하여 데이터 액세스와 처리 속도를 높이고 복잡한 쿼리의 처리를 효율적으로 수행할 수 있습니다.
동시성 관리: 데이터베이스 서버는 여러 사용자 또는 클라이언트 애플리케이션이 동시에 데이터베이스에 액세스하는 상황에서 동시성을 관리합니다. 서버는 트랜잭션 관리 및 락 획득과 해제와 같은 메커니즘을 사용하여 여러 사용자 간의 충돌을 방지하고 데이터 일관성을 유지합니다.
보안: 데이터베이스 서버는 데이터를 보호하기 위한 다양한 보안 기능을 제공합니다. 인증, 암호화, 접근 제어 등의 기술을 사용하여 데이터의 무단 액세스를 방지하고 데이터의 기밀성을 보호합니다. 또한 데이터베이스 서버는 로깅 및 감사 기능을 제공하여 데이터 액세스 및 변경 이력을 기록하고 추적할 수 있습니다.
관리 용이성: 데이터베이스 서버는 데이터베이스 관리 작업을 단순화하고 자동화하는 기능을 제공합니다. 데이터베이스 서버는 데이터의 백업 및 복원, 성능 모니터링, 인덱스 및 통계 관리, 용량 계획 등을 지원하여 데이터베이스 관리자가 데이터를 효율적으로 관리하고 유지할 수 있도록 도움을 줍니다.
확장성: 데이터베이스 서버는 대규모 데이터 및 사용자 요구 사항에 대한 확장성을 제공합니다. 서버는 분산 데이터베이스 아키텍처를 통해 데이터를 분산하고 여러 서버 간에 작업을 분산시키는 등의 방식으로 처리량과 성능을 확장할 수 있습니다.
데이터베이스 서버의 주요 목표는 데이터의 안전성, 일관성, 효율성, 보안성을 보장하고, 다수의 사용자가 동시에 데이터에 액세스할 수 있는 환경을 제공하는 것입니다.
그래서 서버에 접속하려면 이것을해야하지만 이것을 실제로 하기는 힘들고 자기 서버안에 데이터베이스를 찾게 되고 이게 로컬 호스트입니다.
이 로컬호스트는 자기컴퓨터 주소이므로 자기자신이여서 인터넷연결이 필요없다. 이것은 가상으로 ip연결되었다를 표현한 것이므로 ip주소는 고정이다. 이주소는 예약되어 있어서 할당 할 수 없다.
포트는 전담 창구를 의미하고 80번 http(웹서버 호스트), 20번 ftp, 23번 원격서비스를 의미한다.
RDBMS& NoSQL
RDBMS
위에서 DBMS는 사용자와 데이터베이스 사이에서 사용자의 요구에 따라 정보를 생성해주고 데이터베이스를 관리해 주는 소프트웨어라고 설명을 했습니다. 또한 기존의 RDBMS에서의 저장 방식은 SQL에 의해 저장되고 있으며 정해진 스키마에 따라 데이터를 저장하여야 합니다. RDBMS에는 DBMS앞에 R이 붙어 있습니다. 이 R은(Relational)의 약자로 RDBMS는 관계형 데이터베이스 관리 시스템을 의미합니다. 이름과 같이 RDBMS는 RDB를 관리하는 시스템이며 RDB는 관계형 데이터 모델을 기초로 두고 모든 데이터를 2차원 테이블 형태로 표현하는 데이터베이스입니다.
관계형 데이터베이스(RDMBS)는 아래와와 같이 구성된 테이블이 다른 테이블들과 관계를 맺고 모여있는 집합체로 이해할 수 있습니다.
NoSQL
NoSQL이란(Not Only SQL)의 약자로 말 그대도 위에서 설명한 RDB 형태의 관계형 데이터베이스가 아닌 다른 형태의 데이터 저장 기술을 의미하고 있습니다. 또한 NoSQL에서는 RDBMS와는 달리 테이블 간 관계를 정의하지 않습니다. 데이터 테이블은 그냥 하나의 테이블이며 테이블 간의 관계를 정의하지 않아 일반적으로 테이블 간 Join도 불가능합니다.
NoSQL은 점점 빅데이터의 등장으로 인해 데이터와 트래픽이 기하급수적으로 증가함에 따라 RDBMS에 단점인 성능을 향상시키기 위해서는 장비가 좋아야 하는 Scale-Up의 특징이 비용을 기하급수적으로 증가시키기 때문에 데이터 일관성은 포기하되 비용을 고려하여 여러 대의 데이터에 분산하여 저장하는 Scale-Out을 목표로 등장하였습니다.
NoSQL을 하면 가장 유명한 Document 기반의 MongoDB를 많이 떠올리지만 MongoDB는 NoSQL한 종류로 NoSQL은 하기와 같이 다양한 형태의 저장 기술을 지원하고 있습니다.
이 다양한 형태의 저장기술은 RDBMS 스키마에 맞추어 데이터를 관리해야 된다는 한계를 극복하고 수평적 확장성(Scale-out)을 쉽게 할 수 있다는 장점을 가지고 있습니다.
3. NoSQL의 유형
NoSQL은 워낙 다양해서 어떻게 분류하느냐에 따라 10가지의 유형도 넘게 분류해볼 수 있다. 다만 여기서는 그중 유명하고 대표적인 유형을 살펴보고 관련된 제품도 알아보기로 한다.
3.1. Column-based
기존의 SQL은 레코드라고 하는 행 단위로 데이터를 저장한다. 이뜻은 실제 메모리 내에서 레코드가 순차적으로 배열되어 있다는 것을 의미한다.
하지만 Column-based(이하 “열 기반”) 유형은 SQL이 테이블의 데이터를 행 단위로, 다시 말해 레코드 단위로 디스크 내에 연속적으로 저장하는 것과 달리 열 별로 연속적으로 저장하는 것을 특징으로 한다.
행 대신 열로 데이터를 저장하는 것은 특정 상황에서 매우 유용할 수 있다. 가령 열이 100개쯤 되는 데이터베이스에서 어느 레코드의 특정 한 부분만을 수정해야 할 때, 기존의 데이터베이스는 필요하지 않은 모든 열을 다 질의한다. 반면 열 기반에서는 필요한 열의 데이터만 로드하면 되기 때문에 행의 수가 같을 경우 필요한 I/O 작업이 줄어든다.
또 한 열에 들어가는 데이터는 형식이 일관되기 때문에 DB 내의 한 블록은 동일한 유형의 데이터를 보유하게 된다. 이때 블록 데이터에는 데이터의 유형에 맞게 압축 인코딩을 적용하여 디스크 공간을 절약하는 성능을 낼 수도 있다.
대표적인 제품으로는 AWS Redshift, Accumulo, Cassandra 등이 있다. 이중 Cassandra는 페이스북이 사용하고 있어 더 알려졌다.
3.2. Document-oriented
Document-oriented(이하 “문서 지향”) 유형은 “문서”라는 핵심 개념을 정의한다. 문서 지향 유형은 문서를 포장되고(encapsulated) 인코드된 데이터로 이해한다. 이때 데이터에 적용가능한 인코딩은 XML, YAML 등이 있는데 요즘은 JSON 인코딩이 자주 사용된다. 다시 말해 사용자에게 익숙한 JSON 객체로 문서(레코드)를 구성하는데 이들은 데이터베이스 내에서 자신을 특정하는 unique key를 가지고 있다.
SQL에서 레코드들을 테이블로 구성하듯이, 문서 지향 유형에서도 문서들을 특정 기준으로 구성하고 분류한다. 이때 사용할 수 있는 기준으로는 아래와 같은 것들이 있다.
- 테이블처럼 단순 집합(Collection)
- 태그
- 문서에 대한 메타데이터
- 디렉토리 계층 구조
문서 지향에서는 테이블을 구성하는 기준이 다양하기에 단순한 테이블을 넘어서 다양한 구조로 데이터베이스를 구성할 수 있다는 장점이 있다. 예를 들어 어떤 회사의 조직도를 데이터베이스화하기 위해서 각 문서를 디렉토리 계층 구조로 구성해 데이터베이스를 만들 수 있다.
대표적인 제품으로는 MongoDB, IBM Domino, CouchDB 등이 있다.
3.3. Key-Value
Key-value 유형은 연관배열(Associative array)을 데이터 모델로 사용한다. 연관배열은 map, dict 라는 이름의 자료구조로 주요 언어에서 제공하고 있어 우리에게도 친숙한 개념이다. 이 유형에서 데이터는 여러 Key, value 쌍을 모은 Collection(또는 테이블)으로 표현되는데 이때 키는 한 collection에서 한 번만 등장할 수 있다.
대표적인 제품으로는 Oracle NoSQL Database, Apache Ignite, Dynamo 등이 있다.
3.4. Graph
이 세상의 모든 것은 그래프다. 소셜 네트워크도 그래프고, 회사의 조직도도 그래프고, 내 사지의 연결된 모양도 그래프다. 그래프 유형은 노드들의 관계를 표현하는 그래프를 데이터 모델로 하며 질의 언어도 노드(Node)와 에지(Edge) 등 그래프의 개념을 활용한다.
이 유형의 장점은 데이터들의 관계를 중요시해서 저장된 데이터들이 에지로 직접 연결될 수 있어 데이터 질의 시 특정 노드와 관련된 데이터를 한 번의 OP로 획득(Retrieve) 가능하다는 점이다.
대표적인 제품으로는 IBM DB2, Neo4j 등이 있다.
'리눅스 > 리눅스 연습(fedora, ubuntu)' 카테고리의 다른 글
GUI 화면으로 바뀔 경우 문제 해결 (0) | 2023.07.21 |
---|---|
3부 12. 리눅스에서도 사용할 수 있는 웹 서버(HTTP 통신, API 규칙) (0) | 2022.07.28 |
3부 9장 네임 서버, 로드밸런싱(최신기술) (0) | 2022.07.25 |
3부 SSH 통신 방법 (0) | 2022.07.25 |
2부 7장 셀의 기본 (0) | 2022.07.25 |