SQL의 종류
SQL 데이터베이스의 종류 :
- MySQL : 오픈 소스 기반으로 대부분의 웹 애플리케이션에서 사용됩니다.
- Oracle : 대규모 기업에서 사용되며, 보안, 성능, 안정성 등에 대한 높은 요구 사항을 갖추고 있습니다.
- PostgreSQL : 고성능, 안정성, 확장성이 뛰어나며, 무료이며 오픈소스 입니다.
- Microsoft SQL Server: 윈도우 플랫폼에서 작동하는 관계형 데이터베이스입니다.
- SQLite : 파일 기반 데이터베이스이며, 모바일 장치에서 많이 사용됩니다.
NoSQL 데이터베이스 종류 :
- MongoDB : 문서 기반 NoSQL 데이터베이스이며, 스케일 아웃과 빠른 읽기 쓰기 속도를 지원합니다.
- Cassandra: 분산형 NoSQL 데이터베이스로, 대용량 데이터 저장에 적합합니다.
- Redis : 메모리 기반 데이터베이스로, 속도가 빠르며, 데이터 캐싱, 메시지 브로커 등에 사용됩니다.
- Couchbase : 멀티모델 NoSQL 데이터베이스로, 문서, 키-값, 그래프 등 다양한 데이터 모델을 지원합니다.
- Amazon DynamoDB : AWS에서 제공하는 관리형 NoSQL 데이터베이스로, 스케일링, 고가용성, 보안 등을 제공합니다.
SQL 쿼리 예제
SELECT * FROM customers WHERE >= 30;
(고객 중 나이가 30세 이상인 모든 데이터를 선택)
INSERT INTO orders (customer_id, product_name, price) VALUES (1, 'Product A', 100);
(주문 테이블에 새로운 주문 정보를 추가)
UPDATE employees SET salary = 50000 WHERE department = 'IT';
(IT 부서의 모든 직원의 연봉을 50,000으로 업데이트)
DELETE FROM products WHERE stock_quantity < 10;
(재고 수량이 10 보다 적은 모든 제품 정보를 삭제)
NoSQL 쿼리 예제 (JSON or BSON)
db.customers.find({age: {$gt:30}});
(고객 중 나이가 30세 이상인 모든 데이터를 선택)
db.orders.insertOne({customer_id: 1, product_name: 'Product A', price: 100});
(주문 컬렉션에 새로운 주문 정보를 추가)
db.employees.updateMany({department: 'IT'}, {$set: {salary: 50000}});
(IT 부서의 모든 직원의 연봉을 50,000으로 업데이트)
db.products.deleteManay({stock_quantity: {$lt: 10}});
(재고 수량이 10보다 적은 모든 제품 정보를 삭제)
SQL의 장단점
- 장점
- 데이터 무결성 보장 : 관계형 데이터베이스에서 데이터의 무결성과 일관성을 보장할 수 있습니다.
- ACID 트랜잭션 지원 : Atomicity, Consistency, Isolation, Durability의 약자로, 데이터 베이스의 트랜잭션 처리에서 주요한 개념으로, 안정적인 데이터 처리를 보장합니다.
- 유연한 질의 언어 : SQL은 데이터베이스에 대한 강력한 질의 언어를 제공하므로 데이터를 쉽게 검색하고 처리할 수 있습니다.
- 단점
- 수직적 확장의 한계 : 대규모 데이터를 처리하거나 복잡한 쿼리를 실행할 때는 성능이 저하될 수 있습니다.
- 스키마의 고정성 : 스키마는 데이터베이스의 구조를 정의하는 개념으로, 관계형 데이터베이스에서 스키마를 변경하려면 많은 노력이 필요합니다.
- 복잡한 구조 : 다양한 테이블 간의 관계에 있어 복잡한 데이터 구조를 갖추기에는 비용이 크고, 구조가 복잡해져서 개발 및 유지보수가 어려울 수 있습니다.
NoSQL의 장단점
- 장점
- 수평적 확장의 용이성: 대규모 데이터를 처리할 때 수평적 확장이 가능하여 성능을 향상시킬 수 있습니다.
- 유연한 스키마 : 스키마를 미리 정의할 필요가 없고, 필요한 시점에서 데이터를 추가하거나 수정할 수 있습니다.
- 다양한 데이터 모델 : 다양한 데이터 모델을 제공하여 비정형 데이터를 처리할 때 용이합니다.
- 단점
- 데이터 무결성 보장의 어려움 : NoSQL은 데이터의 일관성을 보장하지 않을 수 있으므로, 데이터 무결성 보장이 어려울 수 있습니다.
- 질의 언어의 한계 : SQL에 비해 다양한 질의 언어를 제공하지 않습니다.
- 부적합한 사용 사례 : 일부 NoSQL은 특정 사용 사례에서 적합하지 않을 수 있습니다.
- 특정사례 예시
- 복잡한 트랜잭션 : NoSQL 데이터베이스는 일반적으로 ACID (원자성, 일관성, 격리성, 지속성) 특성을 제공하지 않습니다. 따라서 데이터 간의 트랜잭션을 관리하는 경우에는 관계형 데이터베이스가 더 적합합니다. 예를 들어 은행 업무와 같이 금융 거래의 경우 데이터 일관성과 원자성이 보장되어야 합니다.
- 복잡한 집계 : NoSQL 데이터베이스는 대량의 데이터를 빠르게 쿼리할 수 있도록 설계되었습니다. 하지만 데이터 집계와 같이 데이터를 복잡하게 처리해야 하는 경우, SQL 데이터 베이스가 더 적합합니다.
- 데이터 정규화 : 데이터베이스 설계에서 데이터 정규화는 데이터를 일관성 있게 유지하는 것을 목적으로 합니다. NoSQL 데이터베이스는 데이터를 반정규화하여 빠른 읽기 속도를 제공하기 때문에, 데이터 정규화가 필요한 경우에는 SQL 데이터베이스가 더 적합합니다.
- 복잡한 쿼리 : NoSQL 데이터베이스는 쿼리 작성이 SQL 데이터베이스에 비해 제한적입니다. 따라서 복잡한 쿼리를 작성해야 하는 경우에는 SQL 데이터 베이스가 더 적합합니다.
- NoSQL을 고려하는 경우
- 아주 낮은 응답 지연시간(latency)이 요구됨
- 다루는 데이터가 비정형(unstructured)이라 관계형 데이터가 아님
- 데이터(JSON, YAML, XML 등)를 직렬화하거나(serialize) 역직렬화(deserialize) 할 수 있기만 하면 됨
- 아주 많은 양의 데이터를 저장할 필요가 있음
'DataBase' 카테고리의 다른 글
오라클 11g Enterprise Edition Download (0) | 2023.07.12 |
---|---|
[Mysql] Auto_Increment 값 초기화 (0) | 2022.12.09 |
DB 관련 내용 참고 사이트 (0) | 2022.12.02 |
[Mysql] Mysql 8.0 버전 설치하기 (0) | 2022.12.01 |
[Oracle] 1장. 데이터 베이스 개념 잡기 (1-3 오라클 데이터베이스와 도구 프로그램 설치) (0) | 2022.11.29 |