목차
데이터 분석과 데이터를 이용한 특정 알고리즘을 개발하기 위해서는 DB(Data Base)를 다룰 줄 알아야 합니다. 데이터만 분석할 요량이라면 남이 전달해 주는 데이터만을 이용하면 되지만, 데이터 분석 후 알고리즘을 개발해 현장에서 사용할 수 있게 하기 위해서는 데이터베이스와의 인터페이스를 고려하는 것은 필수입니다.
실제 현장에서 사용되는 알고리즘은 데이터가 저장되는 데이터 베이스에 접근해 필요한 데이터를 추출하고 추출한 데이터를 사용하여 알고리즘을 구동시킵니다. 알고리즘을 통해 나온 결과값을 다시 데이터 베이스에 입력시키고, 입력된 데이터 베이스의 값은 설비의 PLC에 전달해 줄 수 있습니다. 이처럼 데이터를 이용한 실제 사용 가능한 알고리즘을 개발하기 위해서는 데이터 베이스의 이해가 필요한데 오늘은 데이터 베이스의 특성에 따른 종류와 어떤 데이터 베이스를 사용할 수 있는지 알아보도록 하겠습니다.
1. RDBMS(관계형 데이터 베이스) vs. NoSQL(비관계형 데이터 베이스)
RDBMS는 관계형 데이터베이스 관리 시스템(Relational Database Management System)의 약자입니다. RDBMS는 데이터를 관계형 데이터 모델로 표현하고, 데이터를 효율적으로 관리하기 위해 SQL(Structured Query Language)을 사용합니다. RDBMS는 행과 열의 형태로 데이터를 저장하며, 데이터 테이블 간의 관계를 정의할 수 있습니다. 예를 들어, 고객 정보를 저장하는 고객 테이블과 주문 정보를 저장하는 주문 테이블을 만들어, 고객과 주문 정보를 서로 연결할 수 있습니다. RDBMS의 대표적인 예로는 Oracle, MySQL, SQL Server 등이 있습니다.
NoSQL은 비관계형 데이터베이스(Non-Relational Database)의 약자입니다. NoSQL은 키-값(key-value) 저장, 문서(document) 저장, 그래프(graph) 데이터 저장 등 다양한 형태의 데이터 저장 방식을 사용합니다. NoSQL은 더 유연하고 확장성이 높은 데이터 저장 방식을 제공합니다. 또한, 대용량 데이터 처리에 더 적합한 구조를 가지고 있습니다. 대표적인 NoSQL 데이터베이스로는 MongoDB, Cassandra, Redis 등이 있습니다. NoSQL 데이터베이스는 대규모 웹 서비스에서 많이 사용되며, IoT, 빅데이터, 인공지능 등의 분야에서도 많이 사용됩니다.
RDBMS와 NoSQL은 각각의 장단점이 있으며, 적용할 데이터 구조나 상황에 따라 적합한 데이터베이스를 선택해야 합니다. RDBMS는 정형화된 데이터를 다루며, 데이터의 무결성과 일관성을 보장할 수 있습니다. 하지만 대규모 데이터 처리에는 한계가 있을 수 있습니다. NoSQL은 비정형화된 데이터를 다루며, 대용량 데이터 처리에 용이합니다. 하지만 데이터의 일관성과 무결성을 보장하기 어렵습니다. 따라서, 적용할 데이터 구조나 상황에 따라 적합한 데이터베이스를 선택해야 합니다.
2. 무료 vs. 유료 데이터 베이스
무료 데이터 베이스
MySQL: 대규모 웹 애플리케이션에서 널리 사용됩니다.
PostgreSQL: RDBMS에서 데이터 일관성과 안전성을 강조합니다.
SQLite: 경량화된 파일 기반 데이터베이스로, 모바일, 임베디드 시스템, 브라우저 등에서 많이 사용됩니다.
MariaDB: MySQL의 포크(fork) 버전으로 오픈소스 데이터베이스입니다.
MongoDB: NoSQL 데이터베이스이며, JSON 문서 기반으로 데이터를 저장합니다.
유료 데이터베이스
Oracle: RDBMS로, 대규모 기업용 애플리케이션에서 많이 사용됩니다.
Microsoft SQL Server: RDBMS로, 윈도우 애플리케이션 개발에 많이 사용됩니다.
IBM DB2: RDBMS로, 대규모 기업용 애플리케이션에서 사용됩니다.
SAP HANA: 메모리 기반 인-메모리 데이터베이스로, 대규모 기업용 애플리케이션에서 사용됩니다.
Amazon Aurora: MySQL과 PostgreSQL 호환 데이터베이스로, AWS에서 제공되는 클라우드 기반 데이터베이스입니다.
3. 대표적인 무료 데이터 베이스
[ PostgreSQL]
PostgreSQL은 객체-관계형 데이터베이스 관리 시스템(RDBMS)의 하나로, 오픈소스 소프트웨어입니다. 1986년부터 개발되어 왔으며, 지금은 PostgreSQL Global Development Group(PGDG)가 주도하는 커뮤니티에 의해 유지보수되고 있습니다.
PostgreSQL은 ACID(원자성, 일관성, 고립성, 지속성)를 준수하는 RDBMS로, 대규모 애플리케이션에서 데이터 일관성과 안전성을 강조합니다. 또한 PostgreSQL은 다양한 데이터 타입, 저장 프로시저, 트리거, 뷰, 쿼리를 지원합니다. PostgreSQL은 SQL 외에도 Procedural Language/SQL (PL/SQL), C, C++, Java, Perl, Python, Ruby 등의 언어로 개발된 사용자 정의 함수(UDF)를 지원하므로, 개발자가 높은 유연성을 가질 수 있습니다.
PostgreSQL은 또한 강력한 보안 기능을 가지고 있습니다. 예를 들어 SSL/TLS 연결, 권한 부여 및 접근 제어, 암호화된 연결, 데이터 마스킹 등을 지원합니다.
또한 PostgreSQL은 높은 성능을 제공합니다. 대용량 데이터의 처리에 있어서 뛰어난 성능을 보이고 있으며, 다중 버전 동시성 제어(MVCC)라는 기술을 이용하여 높은 동시성 처리를 지원합니다.
PostgreSQL은 오픈소스로 제공되기 때문에, 개발 비용이 없고 무료로 사용할 수 있습니다. 이러한 이유로 PostgreSQL은 대규모 웹 애플리케이션, 대용량 데이터베이스, 데이터 분석 등에서 많이 사용됩니다.
[MySQL]
MySQL은 오픈 소스 관계형 데이터베이스 관리 시스템(RDBMS)입니다. MySQL은 다중 사용자, 다중 스레드, 다중 플랫폼을 지원하며, 데이터베이스와 데이터 테이블, 데이터 인덱스 등을 관리합니다.
MySQL은 다양한 언어와 플랫폼에서 사용할 수 있으며, 대규모 웹 사이트에서 많이 사용됩니다. MySQL은 오픈 소스이기 때문에 무료로 사용 가능하며, MySQL을 기반으로 한 다양한 상용 데이터베이스 관리 시스템도 존재합니다.
MySQL은 ANSI SQL 표준을 준수하여 다른 RDBMS와 호환성이 높으며, MySQL만의 특별한 기능도 제공합니다. MySQL은 다양한 데이터 타입을 지원하고, 다양한 인덱싱 기능을 제공하여 데이터 접근 속도를 높일 수 있습니다. 또한, MySQL은 대규모 데이터 처리 작업에도 빠른 성능을 발휘합니다.
MySQL 장단점
[장점]
다양한 언어와 플랫폼에서 사용 가능
ANSI SQL 표준을 준수하여 호환성이 높음
다양한 데이터 타입과 인덱싱 기능을 제공하여 데이터 접근 속도가 빠름
대규모 데이터 처리 작업에도 빠른 성능을 발휘함
[단점]
MySQL의 단점으로는 다음과 같은 것들이 있습니다.
비정규화가 필요한 경우 성능이 저하될 수 있음
복잡한 쿼리 작업이 필요한 경우 성능이 저하될 수 있음
MySQL의 안정성은 높으나, 트랜잭션 처리에 대한 기능이 상대적으로 떨어질 수 있음
[MongoDB]
MongoDB는 NoSQL 데이터베이스 관리 시스템(NDBMS)입니다. MongoDB는 관계형 데이터베이스에서 사용되는 테이블과 스키마 개념 대신 컬렉션(Collection)과 도큐먼트(Document)를 사용합니다.
컬렉션은 도큐먼트의 집합으로, 각각의 도큐먼트는 키-값 쌍의 형태로 데이터를 저장합니다. MongoDB는 동적 스키마를 지원하므로, 같은 컬렉션 내에서도 서로 다른 스키마를 가진 도큐먼트를 함께 저장할 수 있습니다. 이러한 유연성은 데이터 모델링을 더욱 유연하게 할 수 있도록 도와줍니다.
MongoDB는 분산 데이터베이스 시스템으로, 여러 대의 서버에 데이터를 분산하여 저장하고 처리할 수 있습니다. 이를 위해 샤딩(Sharding)이라는 기술을 사용합니다. 샤딩은 컬렉션의 데이터를 여러 개의 서버에 분산하여 저장하고, 데이터 처리 작업을 분산하여 처리하는 방식으로 작동합니다.
MongoDB는 다양한 언어와 플랫폼에서 사용할 수 있으며, 쉬운 확장성과 높은 가용성을 제공합니다. 또한, MongoDB는 다양한 기능을 제공하는데, 텍스트 검색, 지리적 검색, 통계 분석 등이 그 예입니다.
MongoDB의 장단점
[장점]
동적 스키마를 지원하여 데이터 모델링이 유연함
분산 데이터베이스 시스템으로 확장성과 가용성이 높음
다양한 기능을 지원하여 다양한 용도로 사용 가능
다양한 언어와 플랫폼에서 사용 가능
[단점]
JOIN 연산이 없어서 복잡한 쿼리 작업에는 부적합할 수 있음
여러 도큐먼트를 한 번에 업데이트할 수 없음
분산 데이터베이스 시스템이므로 세밀한 데이터 처리가 필요한 경우 성능이 저하될 수 있음
4. 마치며
DX(digital transformation) 관련 공부와 그에 맞는 업무를 수행한 지 약 4년째 되었습니다. 처음에 프로그램도 몰랐던 제가 회사에서 지원해 주는 DX교육을 시작으로 이제는 현장에서 이슈가 생길 때마다 데이터를 통해 현장에 인사이트를 발굴하는 업무를 하고 있습니다. 초기 공부 시작 때 데이터 베이스에 대해서도 공부를 했으나 당시에는 분석 알고리즘에만 몰두해 있어서 크게 관심을 두고 있지 않았습니다. 데이터 베이스를 너무 깊게까지 알 필요는 없습니다. 데이터를 이용한 알고리즘을 개발할 경우 그 알고리즘은 데이터가 인풋과 아웃풋이 될 겁니다. 이를 처리해 줄 수준의 DB연동만 할 수 있으면 좋을 것 같습니다.
지금까지 데이터 분석 및 적용을 하기 위해서 필요한 데이터 베이스의 종류에 대해서 살펴보았습니다. 일반적으로는 관계형 데이터 베이스를 많이 사용하기 때문에 어떤 종류가 있는지 그리고 내가 무료로 연습해 볼 수 있는 건 어떤 것이 있는지 알려 드렸습니다. 데이터 베이스를 공부하기 위해서는 우선 무료 데이터 베이스를 설치하고 파이썬을 이용한 SQL구문 작성 연습을 해 보시기 바랍니다.
댓글