ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • DB2 - MySQL (5)DB&internet, database server, database client, mysql monitor, 원격 접속, workbench, index, modeling, backup, cloud, mysql api
    생활코딩 DB 2023. 1. 21. 17:01

    ---

    24.

    https://youtu.be/hjgaxlTQMXk

    정보의 바다라고 할 수 있는 인터넷 위에서 DB가 동작하게 되면 파워풀한 효과를 낸다

    MySQL은 내부적으로 인터넷을 활용할 수 있도록 고안된 시스템

    봤던 그림인데, 여기서 데이터베이스 '서버'라는 말의 의미를 자세히 안했어

     

    인터넷 자체에 대한 얘기 먼저 좀 해보고

    인터넷이 동작하기 위해선 컴퓨터가 최소 2대가 필요. 3대면 본질적이지 않아

    internet의 의미가 각자 흩어져 있는 것들이 internet으로 연결되면서 컴퓨터들 간의 사회가 만들어진 것. 한대의 컴퓨터가 갖고 있는 한계를 초월함. 정말 역사적인 순간이다~

     

    두대의 컴퓨터 사이에서 일어나는 일은 한대는 요청하고 한대는 응답한다

    예를 들어서 웹  ▽인터넷=웹이 아니네

    웹이 동작하기 위해선 인터넷이 필요하고, 인터넷 위에서 동작하기 때문에 두대의 컴퓨터가 필요해

    한대의 컴퓨터는 웹브라우저(인터넷=웹이 아님, 이건 웹)가 설치돼 있고, 웹브라우저의 주소창에 google.com이라고 친다

    엔터를 친 순간 그 도메인네임에 해당되는 컴퓨터를 찾아서 (어떻게?모르면 마법 알면 기술)

    주소에 해당되는 컴퓨터는 요청한 정보를 요청한 컴퓨터에게 쏴준다

    그 정보를 받아서 웹브라우저가 표시하면 과정 끝

     

    인터넷 위에서 동작하는 컴퓨터들은 정보를 요청하는 쪽과 응답하는 쪽으로 나뉘게 된다. 인터넷을 만든 사람들은 이런 역할분담을 설명하기 위해서 쉬운 말을 찾는데, 기가막히게 찾음. 자본주의 사회에서 서비스를 요청하는 쪽과 응답하는 쪽이 있기 마련. 클라이언트=고객, 과 서비스를 제공하는 쪽이라고 해서 서버=사업자

    인터넷은 고객과 사업자에 해당하는 컴퓨터가 서로 정보를 요청하고 응답하면서 동작하는 시스템

     

    이 관계가 웹이라면

    정보를 요청하는 쪽에서 설치돼 있는 프로그램은 웹브라우저=웹클라이언트

    응답하는 서버 컴퓨터에 설치돼 있는 웹을 위한 프로그램은 웹서버

     

    게임을 만들었으면, 사용자의 컴퓨터에 설치돼 있는 프로그램은 게임클라이언트

    게임회사의 서버에 설치돼 있는 프로그램은 게임 서버

    채팅을 한다면 채팅 클라이언트와 채팅 서버

     

    클라이언트와 서버가 인터넷을 이해하는 핵심

     

    MySQL은 두개의 프로그램을 동시에 설치해야 된다

    ▽서버컴퓨터에 설치돼 있는 프로그램이 데이터베이스 서버네!!

    database server에는 실제로 데이터가 저장이 되고

    database client를 통해서 database server에 접속할 수 있다

     

    직접 database server를 다루는게 아니야

    database server는 반드시 어떠한 형태건 database client를 통해 다룬다. 

    우리가 지금까지 사용한 database client가 무엇이었냐면

    라고 했을 때 실행되는 명령어 기반의 프로그램이 있다

    이 MySQL monitor가 database client중 하나였던 것

    얘가 mysql을 설치하면 mysql을 만든 사람들이 mysql server에 접속할 수 있도록 기본적으로 번들로써 제공하는 기본 클라이언트였던 것

    mysql monitor는 명령어를 통해서 database server를 제어한다

    다음 시간에 database client중에 하나인 mysql client중에 하나인 mysql workbench라는걸 쓸 것 - 얘는 GUI환경에서 엑셀을 다루듯이 database를 다룰 수가 있다

    이렇게 더블클릭해서 수정도 가능

     

    database client를 하나만 쓰면 그게 전부인것처럼 보이지만

    두개를 쓰는 순간 우리는 database client라는 존재를 분명하게 이해할 수 있게 된다 -> 더 자유롭게 다룰 수 있게 된다

     

    이해가 안되시나요?

    폰노이만한테 어떻게 그렇게 수학을 잘하세요?? 라고 물었더니

     : 수학은 이해하는 것이 아니라 익숙해지는 것이다 라고함

     

    우리의 목표는 이해가 아니라 익숙해지는 것. 익숙해질 수 있는 여러가지 방법 중 하나가 이해이고, 암기다

    웹브라우저 맨날 쓰니까 익숙해져서 마치 웹브라우저가 물질인것처럼 느낀다

    database server, database client, internet.. 전부 다 추상적인데도 얘기하고 생각하고 다뤄보면 물질인것처럼 느껴진다

     

    클라이언트와 서버개념을 알게 되면 전세계의 수많은 database client들이 하나의 database server에 데이터를 넣고 빼고 하는 것이 가능해진다. 여러가지 정보를 서로 주고 받고 관리하는걸 가능하게 한다.

     

    ---

    25.

    https://youtu.be/yWy1PlkMMIw

    MySQL Client

     

    MySQL monitor :

    mysql server를 설치하면 함께 설치돼서 mysql server가 있는곳엔 mysql monitor가 있다

    많은 서버컴퓨터들이 그 컴퓨터의 자원을 일 자체에 투여하기 위해서 GUI기능을 제공하지 않는 경우가 많아. 명령어 기반의 애는 어디서든지 실행할 수 있어

    명령어를 외우는건 요즘처럼 검색엔진이 발달한 시대에는 그리 문제가 안되고 오히려 장점일 수 있어

     

    GUI프로그램은 클릭하고 기다리고 클릭하고 기다리고 해야해

     

    하는 일에 따라서 이것도 저것도 써보고 하면서 장점을 취하면 된다

     

    mysql client 검색 종류 볼라고

    해보면 뭐가 제일 좋나요? 하는 질문들에 답변이 돼 있어

    돈내야 되는 것중에 Navicat도 있고

     

    ---

    26.

    https://youtu.be/JWB6sUd1R-Q

    Workbench는 MySQL 공식적으로 제공하는 GUI client

     

    mysql workbench 검색 > 공식페이지 > Download Now > 운영체제 선택 후 다운로드 > 설치

     

    왼쪽 workbench 오른쪽 mysql monitor해놓고 둘이 똑같은 결과를 내는 걸 해볼 것

     

    ./mysql은 mysql 모니터라는 클라이언트를 실행하라는 뜻

    h는 host. host는 인터넷에 연결돼 있는 각각의 컴퓨터

    mysql monitor라는 클라이언트로 인터넷을 통해서 다른 컴퓨터에 있는 mysql server에 접속하려고 하면 -h부분에다가 서버에 해당하는 주소를 적어준다

     

    지금은 client와 server가 같은 컴퓨터인데, 자기자신을 가리키는 약속된 특수한 도메인 localhost이 있고, 똑같은 의미의 IP주소 127.0.0.1, 를 쓰면 되는데 -h를 쓰지 않고 엔터치면 mysql monitor가 설치돼 있는 컴퓨터의 mysql server를 가리킨다

    workbench에서 이거랑 똑같은 건 북마크 같은 방식으로 접속할때마다 아이디 패스워드 입력하기 귀찮으니까 +버튼을 누르면

    Connection Name 입력하고(그냥 접속이름?)

    Connection Method는 TCP/IP

    hostname에 127.0.0.1(workbench가 설치된 서버의 mysql server에 접속), localhost로 하면 에러가 날 수 있어

    그때 127.0.0.1로 바꿔

    Port는 3306root

     

    username 

    Password는 Store in Keychain누르고 치면 저장이 됨(안치면 접속할때마다 물어보는듯?)

    Default Schema는 비어있는 채로

     

    Test Connection

    OK

    이게 만들어지고

    클릭하면 접속이 됨

    우리가 생성했던 데이터베이스가 보이는데, 이 데이터베이스를 대상으로 명령을 내리려면 저 데이터베이스를 더블클릭하면 맨 밑에 메시지에 active schema changed to opentutorials라고 뜨고 오른쪽의 Query라고 돼 있는 부분에서 내리는 명령은 그 데이터베이스를 대상으로 실행된다

    저 번개모양 클릭하면

    결과가 나옴

     

    스키마를 만들 땐

    이거 누름

    Apply누르면 바로 실행되는게 아니라 내가 하려고 하는 일에 해당되는 SQL문이 떠

    apply하면 그때 실행 됨

    여기서 봐도 잘 실행 됐음

     

    workbench에서 방금 만든 스키마를 더블클릭하면 방금전이랑 똑같이 active schema changed to workbench라고 나오고

    이거 누르면 create a new table in the active schema

    '현재 활성화 돼 있는 스키마' 대상으로 테이블을 만든다

    workbench에선 어떤 스키마가 활성화 돼 있는지가 있군

    이렇게 GUI로 할 수 있고 apply를 누르면 마찬가지로 

    sql문이 나와 이건

    mysql monitor를 쓰건

    workbench를 쓰건

    모든 client들은 sql을 mysql server에 전송함으로써 database server를 제어하게 된다

     

    앱을 만들 때도 java같은 프로그래밍언어를 통해 sql문을 생성해서 서버에 전달하는 것

    테이블의 오른쪽에 저걸 눌러보면

    이렇게 입력해서 apply를 누를 수 있고

    역시 sql문이 나오고

    버튼누르면 실행된다

     

    또 PERFORMANCE > Dashboard가보면

    DB가 많은 사용자가 있는 경우에 이런 DB의 성능상의 영향을 받을 수가 있다

    CPU 점유율

    RAM가 얼마나 남아있고

    네트워크를 얼마나 쓰고 있고

    등을 보여주는 기능

     

    INSTANCE는

    켜거나 끄거나..

     

    DB의 data를 백업하거나 다른 서버에 이전할 때

    Data Export같은 기능들을 사용할 수 있어

     

    client와 server가 나뉘어져서 복잡해졌지만 mysql server를 중심으로 다양한 mysql client생태계가 조성됐다

    mysql server를 사용하고 있는 모든 웹앱, 데이터분석하는 시스템들은 본질적으로 모두가 mysql client

     

    ---

    27.

    이제

    - 지금까지 배운걸로 현실의 문제를 해결하거나

    - 이걸로 극복할 수 없는 한계가 있어서 앞서간 엔지니어들이 잘 정립해놓은 이론, 기술 배우기

     

    해보다가 한계에 부딪혀서 충분히 절망한 순간에 혁신을 향해 나아가는게 바람직

    혁신을 향할 준비가 안돼있다면 지금까지 배운걸 공고히 하시는 작업을 하시는걸 추천

     

    현실의 문제가 닥친 분들은

    --

    RDB의 공식 언어는 SQL, SELECT 구문은 상당히 복잡해서 끊임없이 수련해야한다

     

    --

    정보가 많아짐에 따라서 생길 수 있는 현실의 지옥들이 있는데, 그중에 하나가 DB가 데이터가 많아지면 자기가 필요한 정보를 꺼내오기가 힘들어

    이 서점도 책이 많아 지저분해 보이지만 자세히보면 아주 정리정돈이 잘 돼 있다

     

    이정도 규모가 있는 책들을 아무렇게나 던져놓으면 어떤 책을 찾을 때 어마어마하게 많은 시간이 걸릴거야

    정리하지않는건 넣을 때 편하고 정리를 하게되면 꺼낼 때 편해져

     

    레코드가 1억건일 때 mysql이라는 텍스트를 갖고 있는 본문을 찾는다면 1억건을 다 살펴봐야해

    이때 구원해주는게 index, 색인이다(목차)

    DB의 이 기능을 이용해. 사용자들이 검색을 자주 하는 컬럼에다가 색인을 걸어줘

    topic table이면 description이 될 것.(▽게시판이면 본문 내용을 검색하겠지)

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

    mysql이라는 텍스트는 어떤 행에 저장돼있고 oracle은 어디에 저장돼있는 걸 별도로 정리정돈한다

    그럼 누가 나중에 mysql검색하면 굉장히 빠른 속도로 그 데이터를 보여줄 수 있어 왜? 미리 뒤져놨거든

     

    이런 성능상의 문제가 생기면 index라는 키워드를 찾아서 적용하면 된다

     

    --

    modeling

    데이터가 많아짐에 따라 여러가지 문제가 생길 수 있는데

    index는 데이터의 양적인 문제고, 

    현실에서의 데이터들은 다양한 측면의 데이터들이 있기 때문에 데이터베이스의 구조를, 테이블을 처음에 잘못 설계하면 나중에 낭패를 볼 수 있다

     

    어떻게 하면 테이블을

    효율적으로

    데이터의 중복 없이

    더 좋은 성능을 낼 것인가

    라고 하는 주제에 대한 뛰어난 엔지니어들이 잘 정립해놓은 여러가지 성취들이 있다

     

    정규화, 역정규화..

     

    처음에는 그냥 테이블 만들어 쓰면 되는데 나중에 데이터가 많아지면 테이블을 어떻게 만들어야 되나.. 하는게 고민된다면 modeling이라는 키워드를 검색. 여러분을 구원해줄 수 있는 도구들이 놓여져 있을 것

     

    --

    backup

    데이터를 아무리 모아도 한번에 날아가버리면 재앙

     

    하드디스크의 예측할 수 있는 것 : 반드시 고장난다

    하드디스크의 예측할 수 없는 것 : 언제 고장날지 모른다

    인간은 죽는다와 같다

     

    backup의 기본은 데이터를 복제해서 보관한다

    2곳에 저장하면 데이터를 동시에 잃어버릴 가능성은 현저히 낮아져

    독립된 공간에 떨어져 있다면 훨씬 더 유실될 가능성 떨어져

    서로 다른 국가, 대륙, 행성에 있다면 훨씬 더

     

    mysqldump라는 프로그램

    binary log이런 키워드 제시

     

    --

    cloud

    컴퓨터가 amazon같은 큰 회사들의 데이터센터에 있고 원격제어를 통해 다룬다

    요즘은 클라우드 컴퓨팅 시스템이 고도화돼서

    mysql같은 database자체를 서비스화 시킴, 클릭클릭하면 1분만에 데이터베이스 서버가 짠하고 만들어짐

    그럼 내 database client에 database server 고유 주소를 입력해서 접속, 사용

     

    필요할 때 붙었다가 필요없을 때 끄면 과금안된다

    이런 회사들엔 세계 최고 수준의 엔지니어들이 있어. 그 사람들이 인생을 갈아 넣어서 그 데이터베이스가 사고가 일어나지 않도록 최선을 다하고 있어

    내가 하려고 하면 내 인생을 갈아넣어야 돼

    클라우드 서비스를 이용해서 내 데이터를 보관하면 데이터베이스가 갖고 있는 기능 자체에만 집중해도 된다

    성능은 내가 좀 신경써야겠지만

    특히 백업적인 측면에서 좋아

     

    AWS RDS

    Google Cloud SQL for MySQL

    AZURE Database for MySQL

    검색

     

    --

    programming

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

    DB라는 시스템을 일종의 부품으로 해서 그 부품을 기반으로 정보시스템이 완제품으로 만들어진다

    수많은 앱, 분석결과들이 그 안에 뚜껑을 열어보면 MySQL이 들어가 있을 가능성이 높다

     

    DB가 갖고 있는 탁월한 정보관리 기능을 활용해서 자신의 웹사이트 애플리케이션 데이터 분석과 같은걸 하고 싶다면 programming 언어를 배우셔서 그 프로그래밍 언어로 데이터베이스 서버에 SQL을 던져줄 수 있는 방법들을 배우면 돼

     

    Python mysql api

    PHP mysql api

    Java mysql api

    이렇게 검색

     

    그 언어로 database system을 쉽게 핸들링 할 수 있는 여러가지 조작장치를 찾을 수 있다

Designed by Tistory.