DataBase: 데이터를 모아 구조적으로 통합해 놓은 것을 말한다.
여기서 데이터란? 간단명료하게 얘기하면 자료다.
현재 운영되는 방식
오늘날 운영되고 있는 가장 일반적인 유형의 데이터베이스에서 데이터는
일반적으로 처리 및 데이터 쿼리를 효율적으로 수행하기 위해
일련의 테이블에서 행과 열로 모델링되고 있다.(데이터에 액세스 및 관리 등을 용이하게 해준다.)
대부분의 데이터베이스는 데이터 작성 및 쿼리에 SQL(Structured Query Language)을 사용한다고 한다.
구성
- 데이터: 데이터베이스는 데이터의 집합체입니다. 데이터는 보통 구조화된 형태로 저장되며, 이를 테이블, 레코드, 필드 등의 용어로 표현할 수 있습니다.
- 스키마(주로 관계형 데이터베이스에서만): 데이터베이스의 스키마는 데이터의 구조, 속성, 관계 등을 정의하는 체계.
데이터베이스에 저장된 데이터를 해석하고 조작하는 데 필요한 중요한 역할을 함. - 쿼리 언어: 데이터베이스에서 데이터를 검색하고 조작하는 데 사용되는 언어.
- 보안: 데이터베이스는 중요한 비즈니스 정보를 담고 있기 때문에, 보안이 매우 중요한 요소입니다.
데이터베이스는 대개 액세스 제어, 인증, 암호화 등의 보안 기능을 제공합니다. - 백업 및 복원: 데이터베이스는 시스템 장애, 실수 등으로부터 보호하기 위해 백업 및 복원 기능을 제공한다.
이를 통해 데이터의 안전성과 신뢰성이 유지될 수 있다. - 인덱싱: 데이터베이스에서 데이터를 검색할 때, 인덱싱을 사용하여 검색 속도를 향상시켜준다.
- 동시성 제어: 데이터베이스는 다수의 사용자가 동시에 데이터를 업데이트하거나 검색하는 경우, 이를 제어하기 위한 기능을 제공하여 데이터 일관성을 유지할 수 있게 된다.
특징
- 데이터 중심성(Data-centricity): 데이터베이스는 데이터가 중심이 되는 시스템입니다.
데이터의 생성, 저장, 수정, 검색, 삭제를 효과적으로 처리할 수 있도록 설계되어 있습니다. - 동시성(Concurrency): 데이터베이스는 여러 사용자가 동시에 데이터를 사용할 수 있는 환경을 제공합니다.
이러한 환경에서 발생하는 데이터의 일관성 유지 등의 문제를 해결하기 위해 동시성 제어 기술이 필요합니다. - 영속성(Persistence): 데이터베이스는 데이터를 영구적으로 보존할 수 있습니다.
따라서 데이터베이스에 저장된 데이터는 시스템이 종료되어도 유지됩니다. - 데이터 독립성(Data Independence): 데이터베이스는 데이터와 응용 프로그램을 독립적으로 설계할 수 있는 환경을 제공합니다. 데이터의 논리적 구조와 물리적 구조를 분리함으로써 응용 프로그램의 유지 보수나 대규모 데이터의 이전 등을 용이하게 합니다.
- 보안성(Security): 데이터베이스는 데이터의 무단 접근, 변조, 파괴 등을 방지하기 위한 보안 기능을 제공합니다.
사용자 인증 및 권한 관리, 데이터 암호화 등이 그 예입니다. - 일관성(Consistency): 데이터베이스는 데이터의 일관성을 유지하기 위한 기능을 제공합니다.
일관성 있는 데이터를 유지하기 위해 제약 조건, 트랜잭션 처리 등이 필요합니다. - 효율성(Efficiency): 데이터베이스는 대량의 데이터를 효율적으로 처리할 수 있도록 설계되어 있습니다.
인덱스, 쿼리 최적화 등의 기술을 활용하여 빠른 데이터 처리가 가능합니다.
유형
1. 관계형 데이터베이스(RDBMS) - Oracle, MySQL, PostgreSQL
- 데이터를 표 형태의 테이블(table)로 표현합니다.
- 각 테이블은 컬럼(column)과 로우(row)로 이루어져 있습니다.
- 테이블 간에 관계를 설정하여 데이터를 저장하고 관리합니다.
- SQL(Structured Query Language)을 사용하여 데이터를 조작합니다.
- 트랜잭션(Transaction) 처리를 지원하여 데이터 무결성을 보장합니다.(작업 도중 에러 시 원상복귀)
2. 비관계형 데이터베이스(NoSQL) - MongoDB, Cassandra, Redis
- 데이터를 테이블 형태가 아닌 다른 형식으로 저장합니다. (예: 문서(document), 그래프(graph), 키-값(key-value) 등)
- 스키마가 유연하게 처리되어 데이터의 형식 변화에 유연하게 대처할 수 있습니다.
- 수평적 확장(Scaling-out)에 용이하며, 분산 시스템으로 구성될 수 있습니다.
- 다양한 API를 사용하여 데이터를 조작합니다. (예: MongoDB에서는 JavaScript 기반의 쿼리 언어를 사용)
- 트랜잭션 처리가 지원되지 않는 경우가 많습니다.
'Java 공부한 것' 카테고리의 다른 글
트랜잭션 (0) | 2023.03.31 |
---|---|
ERD(객체관계도) (0) | 2023.03.31 |
상속 (0) | 2022.12.27 |
객체지향 프로그래밍(이라 쓰고 클래스에 대해서) (0) | 2022.12.19 |
조건문 (0) | 2022.12.15 |