- 1) SQLD
☑️ 국가 공인 자격증 SQLD
- SQL + Developer → SQL에 대한 기본적인 이해를 하고 있니? 👀
- 실기 없이 필기만, PBT
- 취득 후 1.5년 지난 시점에 보수 교육(온라인 강의)을 수강하면 영구 취득
- 배점 : 선택형 50문항 (총 100점)
- 시험 시간 : 90분(1시간 30분)
- 합격 기준 : 총 60점 이상
- 과락 기준 : 과목별 40% 미만시 ( 1과목 주의! )
- 2) SQL & SQLD
☑️ SQL이란
SQL(Structured Query Language)은 데이터베이스를 직접적으로 액세스할 수 있는 언어로, 데이터를 정의하고(Data Definition), 조작하며(Data Manipulation), 조작한 결과를 적용하거나 취소할 수 있고(Transaction Control), 접근 권한을 제어하는(Data Control) 처리들로 구성된다.☑️ SQL 개발자
SQL 개발자(SQLD*, SQL Developer)란 데이터베이스와 데이터 모델링에 대한 지식을 바탕으로 응용 소프트웨어를 개발하면서 데이터를 조작하고 추출하는 데 있어서 정확하고 최적의 성능을 발휘하는 SQL을 작성할 수 있는 개발자를 말한다.
- 3) SQL을 배우면
- 현대 사회는 데이터 기반으로 모든 것이 이루어짐
- 모든 IT 직무에서 활용 가능
- 개발자(FE / BE) / 마케터 / 기획자 / 디자이너
- 중간 단계를 거쳐서 데이터를 볼 수 있는 것과, 직접 접근할 수 있는 것은 다름
- 데이터베이스에 대한 기본적인 이해를 바탕으로 한 소통 가능
03. 데이터와 데이터베이스
✔️ 데이터와 데이터베이스에 대해 간단히 이해하기
- 1) 데이터(Data)란?
데이터(Data)
- 데이터는 ‘정보(information)’
- 단, 저장이나 처리에 효율적인 형태로 변환된 정보
- 데이터의 시대
- 매일 초당 2억개의 메일이 전송되고, 3만명이상이 넷플릭스를 시청하며
2020년 기준 배달의 민족 월 평균 주문이 약 6천만건을 돌파
- 전세계의 모든 데이터의 90%는 2015년 이후 생성된 것 (IBM)
- 2025년 전세계 데이터 생성량은 175ZB에 이를 것(Seagate)
- 1 Tera == 1000 Giga
- 1 Peta == 1000 Tera
- 1 Exa == 1000 Peta
- 1 Zeta == 1000 Exa 😇
- 즉, 매순간 엄청난 데이터가 축적되고 있음 무한하게 증가하는 이 데이터를 ‘잘’ 저장하고 관리하는 기술이 필요 👀
- 2) 데이터베이스(Database)와 DBMS
우리에게 익숙한 데이터
-
데이터를 저장하자 !
- 대부분 표(스프레드시트)를 떠올림
- 무엇이 불편할까? 🤔
- 무한하게 커질 수 없음
- 데이터 보안 측면 관리 불가
- 데이터 무결성 보장 불가
데이터베이스(Database)와 DBMS
-
“A database is an organized collection of data”
데이터베이스는 잘 조직화된 데이터의 모음이다.
-
이렇게 모아놓은 데이터들을 관리하는 프로그램 == DBMS
-
DBMS (Database Management System)
Database management systems (DBMSs) are
specially designed software applications that
interact with the user, other applications, and the
database itself to capture and analyze data
DBMS는 사용자, 다른 프로그램 또는 데이터베이스와 소통하며
데이터를 관리하고 분석하는 특별하게 고안된 소프트웨어
== Database 조작하는 프로그램 👀
-
여러가지 DBMS
- SQLite
- MySQL
- ORACLE
- PostgreSQL
- mongoDB
- MariaDB …
-
각각의 DBMS 마다 사용하는 SQL이 조금씩 다름😔
- 큰 골자는 비슷하다 ! 디테일이 다르다
- 특정 회사가 SQL을 만드는것이 아닌 국제표준화기구에서 표준을 만든다 👀 (각 회사는 표준 SQL을 준수하면서 자신들만의 커스텀을 더함)
- 따라서 서비스에서 사용하는 데이터베이스에 따라 내가 아는 문법이 동작하지 않을 수 있음 💬
- SQLD는 ORACLE(+ SQL Server)을 기반으로 출제 ✅
☑️ 모델링의 정의
데이터베이스에서의 모델은 데이터베이스 관리 시스템(RDBMS)이 지원하는 데이터베이스의 구조나 형식을 의미합니다. 즉, 관리하는 데이터에 대한 청사진이며 우리는 모델 정보(구조)만 보고도 어떤 데이터를 다루는지 알 수 있습니다.
데이터 모델은 데이터를 기반으로 한 모델링의 과정이라고 할 수 있습니다. 결국 모델을 만드는 과정인 모델링은 현실 세계를 얼마만큼 추상화시켜 표현할 것인지 그림을 그리는 과정이고 그 결과를 토대로 세상을 단순화 시켜 명확하게 바라볼 수 있게 됩니다. 모델링은 모두 데이터를 기반으로 행해집니다. 세상에 존재하는 모든 것은 데이터로 표현 가능하고 그 데이터를 모아 구조화하고 집약하는 작업이 모델링이기 때문입니다.
데이터 모델은 데이터베이스의 큰 그림을 이해하고 그걸 바탕으로 SQL 문장을 작성하는데 필요한 매우 중요한 요소입니다. 데이터 모델에 대한 이해가 잘 되어 있으면 단순한 기능을 사용하는 것뿐만 아니라 성능적인 측면도 고려하여 SQL문을 작성할 수 있기 때문입니다. 이는 설계 도면을 기반으로 집을 짓는 것과 같고 목차를 통해 책의 전체 구조를 먼저 파악하는 것과 같은 이치입니다. 현업에서 SQL을 사용하는 과정도 SQL 문장을 어떻게 구성할지에 대한 지식과 효율적인 구성에 대한 지식이 필수적이기 때문에 모델링을 올바른 관점으로 바라보고 구성하는 것은 매우 중요합니다. 일반적으로 데이터 모델링은 다음과 같이 다양하게 정의합니다.
결국, 데이터 모델링의 목적을 살펴보면 크게 2가지로 정리할 수 있습니다.
-
업무에 필요한 정보를 정확하게 '정의'하고 '표현'하여 업무를 분석
→ 개발하기 위해서만 데이터 모델링을 하는 것이 아님 !
- 분석 모델을 통해 실제 데이터베이스를 생성하여 데이터를 관리
☑️ 데이터 모델이 제공하는 기능
업무를 분석하는 관점에서 데이터 모델이 제공하는 기능은 여러 가지가 있습니다.
시각화
시스템을 원하는 모습으로 시각화해서 보여줄 수 있도록 한다
문서화
시스템의 구조와 행동을 문서화한다
구체화
특정한 목표에 따라 구체화된 상세 수준의 표현 방법을 제공한다
구조화된 틀 제공
시스템을 구축하는 구조화된 틀을 제공한다
다양한 관점 제공
다양한 영역에 집중하기 위해 다른 영역의 세부 사항은 숨기는 다양한 관점을 제공한다
데이터 모델링의 정의
- 정보 시스템 구축을 위해 데이터 관점의 업무를 분석하는 과정
- 현실 세계의 데이터를 약속된 표기법에 의해 표현하는 과정
- 데이터베이스를 구축하기 위한 분석 및 설계의 과정
☑️ 데이터모델링의 관점
업무 상황에서 훨씬 더 정제되고 일관적인 데이터 수집이 가능하기 때문에 모델링은 일상보단 업무적인 환경에서 더 많이 사용합니다. 그렇기 때문에 관련된 용어들이 업무적인 환경과 더 깊이 연결되어 있는 경우가 많습니다. 이러한 관점에서의 모델링은 시스템의 대상이 되는 업무를 분석하여 정보 시스템으로 구성하는 과정에서 업무의 내용과 그 모습을 적절한 표기법(Notation)으로 표현하는 것을 의미합니다.
이번에는 모델링된 결과물을 바라보는 3가지 관점인 데이터 관점, 프로세스 관점, 데이터와 프로세스의 상관관점에 대해서 알아보겠습니다.
- 데이터 모델링의 중요성 및 유의점
☑️ 파급효과 (Leverage)
시스템 구축이 완성되어 가는 과정에서는 대규모 데이터를 통한 분석을 성공적으로 수행하기 위해 수많은 단위의 테스트가 수행됩니다. 결과가 완료되면 비슷한 규모(단위)의 테스트를 묶어 병합병행 테스트를 진행합니다. 이런 과정이 데이터를 업무 단위에서 분석하여 결과를 내는 과정입니다. 자, 이 상황에서 만약에 데이터 모델의 변경이 발생한다면 어떤 일이 벌어질까요? 정말 불가피한 상황을 가정해 보는 거예요. 예를 들면, 회사에서 진행하는 서비스의 방향이 바뀌어서 데이터를 정의하는 속성이 꽤나 많이 변경되어야 하는 상황이라고 해보는 거예요. 큰 구조가 변하지 않았다면 기존 내용을 바꾸기만 하면 되겠지만 만약 모델링 된 결과물 자체가 이전 요소에 완전하게 종속된 형태라면 어떨까요? 그럼 그 결과로 데이터 구조의 변경에 따른 표준 영향 분석, 응용 변경 등의 영향 분석 등의 과정이 변경되어야 하겠죠? 변경을 해야 하는 데이터 모델의 형태에 따라서 얼마만큼의 영향이 받는지 차이가 있겠지만 이 시기의 데이터 구조의 변경으로 인한 일련의 변경 작업은 전체 시스템 구축 과정에서 큰 위협요소가 될 수 있습니다. 결과적으로 모델링을 잘 설계하는 위해서는 데이터가 흘러가는 것을 시스템 전체의 관점에서 바라볼 수 있어야 합니다. 구체적인 내용은 변해도 큰 구조는 변하지 않도록 만드는 것이죠. 어떤 설계인지에 따라 예상하지 못한 상황에 얼마만큼의 추가 비용을 초래할지 결정되는 만큼 중요하다고 할 수 있습니다.☑️ 간결한 표현 (Conciseness)
데이터 모델은 구축할 시스템의 정보에 대한 요구 사항과 한계점을 가장 명확하고 간결하게 표현할 수 있는 도구입니다. 정보에 대한 요구 사항을 파악할 때 수십 페이지 분량의 자료의 기능적인 요구 사항을 하나하나 파악하는 것보다 간결하지만 핵심이 포함된 데이터 모델을 보면서 파악하는 것이 훨씬 좋습니다. 데이터 모델은 시스템을 구축하는 많은 관련자들이 설계자의 생각대로 정보요구사항을 이해하고 이를 운용할 수 있는 어플리케이션을 개발하고 데이터의 일관성을 유지할 수 있도록 하는 것입니다. 이렇게 이상적인 역할 수행을 할 수 있는 데이터 모델이 갖추어야 할 가장 중요한 점은 정보 요구 사항이 정확하고 간결하게 표현되어야 한다는 것입니다.☑️ 데이터 품질 (Data Quality)
데이터베이스에 저장된 데이터는 기업에게는 매우 소중한 자산입니다. 구글 검색을 통해 수많은 자료를 무료로 이용하는 것도 결국 우리가 검색하는 과정 하나하나의 데이터를 구글이 활용하기 때문입니다. 데이터는 기업 입장에서 매우 소중한 자산입니다. 그렇다면 기업에게 모든 데이터는 소중할까요? 그건 아닙니다. 저장된 데이터가 어떤 정보를 제공함에 있어 정확하지 않은 데이터일 수도 있고 일관성이 떨어지는 데이터일 수도 있습니다. 일단 많이 저장만 하면 된다고 생각하시는 분들이 있을 수 있는데요, 기업에게 데이터는 의사 결정의 기준이 되기 때문에 정확하지 않은 정보로 인한 피해는 상상 이상일 수도 있습니다. 잘못된 데이터로 인해 잘못된 판단을 내리면 소중한 비즈니스 기회를 잃게 될 수도 있습니다. 데이터 품질의 문제가 발생하는 중요한 이유 중 하나는 데이터 구조의 문제 때문입니다. 중복된 데이터를 정의하지 않고 데이터 구조 내에서 비즈니스에 대한 정의가 충분하지 않은 경우에 발생할 수 있습니다. 그렇다면 모델링을 하는 시점에서 어떤 기준을 가지고 데이터 품질에 대한 고민을 해볼 수 있을까요? 데이터 품질에 대한 평가는 크게 3가지 기준을 통해 살펴볼 수 있습니다.
⓵ 중복 (Duplication)
◦ 데이터베이스 여러 곳에 같은 정보를 중복해서 저장하는 행위입니다.
⓶ 비유연성 (Inflexibility)
◦ 환경이 바뀌었을 때 데이터가 사용 가능 여부입니다.
◦ 데이터 모델을 어떻게 설계했느냐에 따라 사소한 업무의 변화에도 데이터 모델의 유지 보수가 쉬울 수도 있고 어려울 수도 있습니다.
⓷ 비일관성 (Inconsistency)
◦ 데이터의 중복이 없다고 해도 일관적이지 않은 데이터가 나타날 수 있습니다.
◦ 데이터 모델링을 할 때는 데이터와 데이터 간의 상호 연관 관계에 대한 명확한 정의를 해야 할 필요가 있습니다.