앞으로 공부할 것이 여러가지 있다.
- 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 시스템을 쉽게 핸들링할 수 있는
여러가지 조작 장치를 찾을 수 있게 된다.
'MySQL > 생활코딩' 카테고리의 다른 글
생활코딩 - MySQL - 20. MySQL Workbench (0) | 2020.06.09 |
---|---|
생활코딩 - MySQL - 19. MySQL 클라이언트 (0) | 2020.06.08 |
생활코딩 - MySQL - 18. 인터넷과 DB (0) | 2020.06.08 |
생활코딩 - MySQL - 17. 관계형 DB의 꽃, JOIN (0) | 2020.06.08 |
생활코딩 - MySQL - 16. 테이블 분리하기 (0) | 2020.06.08 |
댓글