데이터베이스는 데이터를 저장하고 관리하기 위한 체계적인 방법을 제공하는 컴퓨터 시스템
테이블 형태로 데이터를 저장하고 SQL(Structured Query Language)을 사용하여 데이터를 검색하고 조작하는 데이터베이스 유형
대규모 데이터를 처리하는데 적합하며, 데이터의 일관성과 무결성을 보장한다.
데이터베이스 내의 데이터는 중복을 최소화하여 일관성을 유지하며, 데이터를 업데이트하거나 삭제할 때 다른 테이블 간의 연관성을 유지하여 무결성을 보장
Ex. Oracle, MySQL, Microsoft SQL Server
관계형 데이터베이스와는 다른 형태의 데이터 모델을 사용하는 비관계형 데이터베이스 유형
대량의 비정형 데이터를 다루는 데에 적합하며, 수평적 확장성을 강조
데이터를 컬렉션(collection), 문서(document), 그래프(graph) 등의 형태로 저장
수평적 확장이 가능하도록 설계되어 있다. Ex. MongoDB, Cassandra, Couchbase, Redis, Amazon DynamoDB
대규모 분산 시스템에서 사용되며, 대량의 비정형 데이터를 저장하고 처리하는 데에 적합
디스크 대신 메모리(RAM)를 사용하여 데이터를 저장하고 처리하는 데이터베이스
주로 실시간 데이터 처리나 대규모 데이터 처리 등의 분야에서 사용
하지만, 메모리 데이터베이스는 메모리 크기에 제한을 받기 때문에 대용량 데이터 처리에는 적합하지 않다.
또한, 메모리에 데이터를 저장하기 때문에 시스템에 장애가 발생하면 데이터가 손실될 가능성이 있다.
Ex. Redis, Memcached, Apache Ignites
여러 대의 컴퓨터에 데이터를 분산하여 저장하고, 이를 중앙 집중식으로 관리하는 데이터베이스
분산 데이터베이스는 대규모 데이터 처리를 위해 설계되어 있으며, 여러 대의 서버를 사용하여 데이터를 처리하므로 단일 서버에 비해 처리량이 향상될 수 있다.
분산된 데이터를 병렬적으로 처리할 수 있기 때문에 빠른 데이터 처리 속도를 보장할 수 있다.
분산 데이터베이스는 서버 간 통신을 필요로 하므로 네트워크 대역폭의 한계나 네트워크 장애 등이 발생할 경우 데이터 접근 속도가 저하될 수 있다
데이터 일관성 등의 문제를 해결하기 위한 추가적인 구현이 필요하다
Ex. Oracle RAC, Apache Cassandra, MongoDB
데이터베이스의 구조를 설계하는 과정
스키마 디자인은 데이터베이스의 정확성, 일관성, 유지보수성 등을 결정하는 중요한 요소
테이블의 속성(Column)을 적절하게 설계하고, 테이블 간의 관계(Relationship)를 정의하여 데이터를 효율적으로 저장하고 관리할 수 있도록 한다.
개체와 그들 간의 관계를 시각적으로 나타내는 모델링 도구
데이터베이스의 구조와 관계를 쉽게 이해할 수 있으며, 효율적인 데이터 저장과 검색이 가능한 스키마를 설계할 수 있다.유형 1. 일대일(One-to-One): 한 테이블의 레코드가 다른 테이블의 레코드와 하나씩 대응하는 관계 2. 일대다(One-to-Many): 한 테이블의 레코드가 다른 테이블의 여러 레코드와 대응하는 관계 3. 다대다(Many-to-Many): 한 테이블의 레코드가 다른 테이블의 여러 레코드와 대응하고, 다른 테이블의 레코드도 한 테이블의 여러 레코드와 대응하는 관계