본문 바로가기
MySQL/생활코딩

생활코딩 - MySQL - 21. 수업을 마치며 < MySQL 完 >

by SKim입니다 2020. 6. 9.

앞으로 공부할 것이 여러가지 있다.

 

- SQL문

관계형 DB를 잘 다루는 사람은

SQL을 잘 이해하고 잘 쓸 줄 아는 사람이라고 할 수 있다.

 

특히 CRUD에서 R에 해당되는 SELECT 구문은 상당히 복잡하다.

그래서 SELECT문은 여러가지 면모들을 살펴보면서

자신이 원하는 정보를 가장 좋은 성능으로 가져오는 것을

끊임없이 수련해야 한다.

 

 

 

- 양적인 문제: 인덱스(색인)

DB에 데이터가 많아지면

자기가 필요한 정보를 꺼내오기가 힘들다.

 

정리를 하지 않으면 넣을 때 편하고

정리를 하면 꺼낼 때 편리해진다.

 

처음에는 데이터가 많지도 복잡하지도 않을 것이기 때문에

정리정돈이 크게 중요하지 않을 수 있다.

 

하지만 데이터가 아주 많아지면

그 중에서 MySQL이라는 텍스트를 가지고 있는 본문을 찾는데

아주 많은 시간이 걸리게 된다.

 

이럴 때 우리를 구원해주는 키워드가 인덱스(색인)이다.

사용자들이 자주 검색하는 컬럼(ex. description 테이블)에 색인을 걸어두면

데이터가 들어올 때, DB가 그 컬럼의 데이터를 잘 정리정돈한다.

 

ex) MySQL이라는 텍스트는 어떠어떠한 행에 저장되어 있고

ORACLE은 어디어디에 저장되어 있다는 것을

별도로 정리해놓는다.

 

→ 나중에 누가 MySQL을 검색하면

굉장히 빠른 속도로 그 데이터를 보여줄 수 있다.

∵ 미리 뒤져놨으니까

 

즉, 성능상의 문제가 생기면 '인덱스'라는 키워드를 찾아서

그것을 적용하면 된다.

 

 

 

- 모델링

현실에는 상당히 다양한 측면의 데이터들이 있기 때문에

DB의 구조, 즉 테이블을 처음에 잘못 설계하면

나중에 큰 낭패를 볼 수 있다.

 

→ 어떻게 하면 테이블을 효율적으로,

데이터의 중복이 없이,

더 좋은 성능(?)으로 할 것인가라는 주제에 대해서

뛰어난 엔지니어들이 잘 정립해놓은 여러가지 성취들이 있다.

 

ex) 정규화, 비정규화, 역정규화 등

 

나중에 데이터가 많아지면서

테이블을 어떻게 만들지 고민이 된다면

'모델링'이라는 키워드로 검색해보면 원하는 지식이 있을 것이다.

 

 

 

 

- 백업: MySQL dump, binay log, cloud

데이터를 별도의 컴퓨터에 저장할수록,

그 컴퓨터가 독립된 공간, 독립된 건물에 있을 수록,

서로 다른 국가, 대륙, 행성에 있을수록 더 안전하다.

 

cloud는 내 컴퓨터가 아닌 큰 회사들(ex. 아마존, 구글, MS, 네이버 등)이 운영하고 있는

인프라 위에 있는 컴퓨터를 임대해서 사용하는것이다.

 

그 컴퓨터들을 원격 제어를 통해서 다룬다.

특히 최근에는 클라우드 컴퓨팅 시스템이 고도화되면서

MySQL같은 DB 자체를 서비스화시켜서

그 회사 웹사이트에 들어가서 클릭 몇 번만 하면

1분만에 DB 서버가 만들어진다.

 

그러면 우리는 우리의 DB 클라이언트에

DB 서버의 고유한 주소를 입력해서 접속해서 사용할 수 있다.

 

장점

- 필요할 때 켰다가 필요 없을 때 끄면 더이상 과금되지 않는다.

- 그 회사에 있는 세계 최고 수준의 엔지니어들이

 자신의 인생을 갈아넣어서 그 DB에 사고가 일어나지 않도록 최선을 다하고 있다.

 특히 백업을 알아서 해주기 때문에 정말 쉬워진다.

 

종류는 아래 그림에 나와있다.

 

 

 

 

- 프로그래밍 (종류는 위의 그림에)

현대에는 DB 자체를 쓰는 경우는 많지 않다.

DB라는 시스템을 일종의 부품으로 해서

그 부품을 기반으로 여러가지 정보 시스템의 완제품으로서 만들어지는 것이

우리가 사용하고 있는 수많은 웹사이트와 앱, 분석결과들이다.

 

우리도 DB가 갖고 있는 아주 탁월한 정보 관리 기능을 활용해서

자신의 웹사이트에 앱 데이터 분석과 같은 것을 하고 싶다면

프로그래밍 언어를 배워서

그 언어로 DB 서버에 SQL을 던져줄 수 있는 방법들을 배우면 된다.

 

자신이 사용하는 언어 + MySQL +api로 검색하면

그 언어로 그 DB 시스템을 쉽게 핸들링할 수 있는

여러가지 조작 장치를 찾을 수 있게 된다.

댓글