데이터 엔지니어링

패스트캠퍼스 환급챌린지 54일차: 데이터엔지니어링 초격차 강의 후기

Big Byte 2025. 5. 24. 23:20

본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.

백엔드 엔지니어 되어보기: MySQL & MongoDB 완전 정복! 🚀

안녕하세요, 여러분! 🌟

 

지난 시간에는 웹서비스를 움직이는 다양한 데이터들의 세계를 함께 탐험했었죠? 마치 숨겨진 보물 지도를 따라가듯, 거래 데이터부터 로그 데이터까지 그 종류와 역할에 대해 알아보았습니다. 🗺️ 오늘은 드디어 새로운 챕터, "Server (Backend) Engineering 기초" 의 문을 활짝 여는 날입니다! (짝짝짝! 🎉)

 

백엔드 개발의 핵심 중 하나는 바로 데이터를 다루는 기술인데요, 이를 위해서는 가장 먼저 데이터를 저장하고 관리할 수 있는 데이터베이스와 친해져야 합니다. 그래서 오늘은 앞으로 우리가 백엔드 개발 실습을 진행하는 데 필요한 핵심 도구, MySQL과 MongoDB의 실습 환경을 세팅하는 방법을 A부터 Z까지 함께 알아보려고 합니다! 💻 마치 든든한 연장을 갖춘 목수처럼, 우리도 완벽한 개발 환경을 구축하고 백엔드 여정을 시작해 볼까요?

 

오늘 우리가 함께 정복할 내용은 다음과 같습니다:

  1. MySQL 실습 세팅: 관계형 데이터베이스의 대표 주자!
    • MySQL 설치: 내 컴퓨터에 강력한 DB 서버 구축하기!
    • MySQL Command Line Interface (CLI): 기본 중의 기본, 터미널에서 MySQL 만나기!
    • MySQL Workbench: GUI로 편하게 MySQL 관리하기! (연결 생성, 스키마 & 테이블 만들기)
  2. MongoDB 실습 세팅: NoSQL의 인기 스타!
    • MongoDB 설치: 유연한 문서 기반 DB 경험하기!
    • MongoDB Shell (mongosh): MongoDB와 직접 대화하기! (설치, 접속, DB & 컬렉션 생성, 쿼리)
    • Studio 3T: MongoDB를 위한 강력한 GUI 툴! (설치, 접속, DB & 컬렉션 생성, 쿼리)

자, 그럼 지금부터 백엔드 개발의 든든한 기초를 다지러 함께 떠나봅시다! 출발! 🚦

 

1. MySQL 실습 세팅: 관계형 데이터베이스의 기초 다지기! 튼튼하게! 🧱

MySQL은 전 세계적으로 가장 널리 사용되는 오픈소스 관계형 데이터베이스 관리 시스템(RDBMS) 중 하나입니다. 백엔드 개발자라면 반드시 능숙하게 다룰 줄 알아야 하는 필수 스킬이죠!

1.1. MySQL 설치

가장 먼저 해야 할 일은 MySQL을 우리 컴퓨터에 설치하는 것입니다. MySQL은 윈도우, 리눅스, 맥 모든 운영체제를 지원해서 참 다행이에요! 😊 간단한 실습의 경우에는 개인 컴퓨터에 직접 설치하고 사용하는 것이 비용이나 편의성 면에서 훨씬 좋습니다. 물론, 로컬 환경이 아니더라도 클라우드에서 제공하는 MySQL 서비스를 이용하거나, AWS 같은 클라우드 서비스의 Linux 서버에 직접 설치해서 사용할 수도 있습니다.

 

음 공식 문서를 참고해주세요:

각 운영체제에 맞는 설치 파일을 다운로드하고, 안내에 따라 설치를 진행해주세요. 설치 과정에서 root 사용자의 비밀번호를 설정하게 되는데, 이 비밀번호는 꼭! 기억해두셔야 합니다. 🔑

1.2. MySQL Command Line Interface (CLI)

MySQL 서버에 접속해서 명령을 내리는 가장 기본적인 방법은 바로 CLI(Command Line Interface)를 이용하는 것입니다. MySQL Client 프로그램을 통해 터미널이나 명령 프롬프트에서 MySQL 서버에 접속할 수 있어요.

기본적으로 mysql 명령어를 사용하며, 다음과 같은 형식으로 접근할 수 있습니다:

mysql --host=localhost --user=myname --password=password mydb
  • --host: 접속할 MySQL 서버의 주소 (내 컴퓨터에 설치했다면 localhost 또는 127.0.0.1)
  • --user: 접속할 사용자 이름 (설치 시 생성한 root 또는 다른 사용자)
  • --password: 해당 사용자의 비밀번호 (명령어에 직접 입력하거나, 생략 후 접속 시 입력)
  • mydb: 접속 후 사용할 기본 데이터베이스 이름 (생략 가능)

더 자세한 접속 방법은 공식 문서를 참고하세요: https://dev.mysql.com/doc/refman/8.4/en/connecting.html

CLI에 접속한 뒤에는 다양한 SQL 명령어와 MySQL 전용 명령어를 사용하여 데이터베이스를 조작할 수 있습니다.

하지만! 솔직히 CLI 환경은 초심자에게는 조금 불편할 수 있어요. 😅 그래서 우리는 사용하기 훨씬 편한 GUI(Graphical User Interface) 툴을 사용하는 것을 적극 권장합니다!

 

1.3. MySQL Workbench

RDBMS의 데이터는 테이블 형태로 보는 것이 가장 직관적이고 이해하기 쉽습니다. 이를 도와주는 다양한 GUI 툴이 있는데, MySQL Workbench는 MySQL 공식 팀에서 제공하는 무료 오픈소스 GUI 클라이언트입니다! 🎉

 

단순히 데이터를 시각화하는 용도뿐만 아니라, SQL 쿼리 작성 및 실행, 성능 분석, ERD 다이어그램을 통한 데이터 모델링, RDBMS 관리 등 정말 다양하고 편리한 기능들을 제공합니다.

 

설치는 다음 사이트에서 진행할 수 있습니다:
https://dev.mysql.com/downloads/workbench/

 

MySQL :: Download MySQL Workbench

 

dev.mysql.com

 

자신의 운영체제에 맞는 설치 프로그램을 다운로드 받고 설치해주세요!

Workbench를 처음 실행하면, 우리가 접속할 데이터베이스 서버 정보를 등록하는 'Connection'을 생성해야 합니다. 화면의 + 버튼을 눌러서 새로운 연결을 만들어봅시다.

다음과 같은 정보들을 입력해야 해요:

  • Connection Name: 이 연결을 식별하기 위한 이름 (예: MyLocalMySQL, DevServer_MySQL)
  • Hostname: MySQL 서버가 설치된 PC의 주소. 자신의 개발 컴퓨터라면 127.0.0.1이나 localhost를 입력하고, 외부 서버라면 해당 IP 주소나 DNS 주소를 입력합니다.
  • Port: 데이터베이스 연결을 위한 포트 번호. MySQL을 설치할 때 별다른 설정을 건드리지 않았다면 기본값은 3306입니다.
  • Username: 연결 시 로그인할 사용자 이름. 설치 시 기본으로 생성되는 관리자 유저는 root입니다.
  • Password: 해당 사용자의 비밀번호. Store in Keychain (또는 Store in Vault) 버튼을 눌러 비밀번호를 안전하게 저장하고 사용할 수 있습니다.

정보를 다 입력했다면 Test Connection 버튼을 눌러 연결이 잘 되는지 확인해보고, 성공하면 OK를 눌러 저장합니다!

 

MySQL에서 Schema는 테이블들을 그룹화하여 위치시킬 수 있는 논리적인 컨테이너, 즉 데이터베이스와 거의 동일한 개념이라고 이해하면 쉽습니다. (엄밀히는 다르지만, MySQL에서는 동일하게 취급될 때가 많아요!)

 

기본적으로 sys라는 스키마가 존재하는데, 이것은 MySQL 시스템 자체를 위한 테이블들이 있는 곳이므로, 우리가 만들 애플리케이션을 위한 테이블들은 별도의 스키마를 만들어서 사용하는 것이 좋습니다.

 

왼쪽 Navigator 패널의 SCHEMAS 탭에서 마우스 오른쪽 버튼을 클릭하고 Create Schema...를 선택해봅시다.

  • Schema Name: 스키마의 이름을 정해줍니다 (예: my_app_db, practice_db).
  • Character Set: 해당 스키마의 테이블에서 기본으로 사용할 문자 세트를 정합니다. 한국어를 제대로 표현하려면 utf8mb4를 선택하는 것이 좋습니다. 이모지까지 완벽 지원! 😉
  • Collation: 선택한 Character Set의 문자들을 정렬하고 비교하는 규칙을 정합니다. utf8mb4_unicode_ci가 다국어 환경에서 좀 더 정확하게 동작하며, 대소문자를 구분하지 않고 비교합니다. (ci = case-insensitive)

중요! Charset과 Collation을 잘못 설정하면 한글 입력 시 글자가 깨지거나 ?로 표시될 수 있고 (데이터 자체가 손실되는 것은 아니지만 불편하죠!), 정렬 순서 등에서 예상치 못한 결과가 나올 수 있습니다. 특별한 요구사항이 없다면 utf8mb4utf8mb4_unicode_ci 조합을 사용하는 것을 강력 추천합니다! 👍

 

 

설정을 마쳤으면 오른쪽 아래의 Apply 버튼을 누릅니다. 그러면 Workbench가 우리가 설정한 내용을 바탕으로 SQL 명령어를 생성해서 보여줄 거예요.

 

Workbench의 또 다른 매력 포인트! ✨ GUI로 설정한 내용이 실제 어떤 SQL 명령어로 실행되는지 바로 확인할 수 있다는 점이에요. 이 단계에서 직접 SQL을 수정하거나 옵션을 추가할 수도 있습니다. 별문제 없으면 Apply를 한 번 더 눌러 스키마 생성을 완료합니다.

스키마가 성공적으로 생성되었다면, 방금 만든 스키마 이름 위에서 마우스 오른쪽 버튼을 클릭하고 Set as Default Schema를 선택해주세요. 이렇게 해야 앞으로 실행하는 SQL 명령어들이 기본적으로 이 스키마 안에서 수행됩니다.

 

스키마를 만들었으니, 이제 그 안에 데이터를 담을 테이블을 만들어 볼 차례입니다! 

  1. 새로 만든 스키마 아래 Tables 항목에서 마우스 오른쪽 버튼을 클릭하고 Create Table...을 선택하거나, 화면 상단의 테이블 모양 아이콘 (📝+)을 눌러 테이블 편집기로 들어갑니다.
  2. Table Name: 먼저 테이블의 이름을 정해줍니다 (예: users, products).
  3. Column Editor: 테이블 편집기 중간 부분에서 컬럼들을 추가합니다. 각 컬럼의 Column Name, Datatype (예: INT, VARCHAR, DATETIME 등), 그리고 필요한 옵션들 (PK: Primary Key, NN: Not Null, UQ: Unique, AI: Auto Increment 등)을 선택하거나 체크합니다.
  4. Column Details: 각 컬럼에 대한 더 자세한 설정(예: 코멘트, 기본값)을 하고 싶다면 아래쪽에 있는 Column Details 박스에서 설정할 수 있습니다.
  5. 필요한 컬럼들을 모두 세팅했다면, Apply 버튼을 누릅니다. 그러면 스키마 생성 때처럼 CREATE TABLE SQL문이 나타날 거예요.

내가 GUI로 설정한 내용들이 SQL문으로 잘 변환되었는지 꼼꼼히 확인하고, 필요하다면 이 창에서 직접 수정할 수도 있습니다. 만족스럽다면 Apply를 눌러 테이블 생성을 완료합니다!

테이블이 잘 만들어졌는지 확인해볼까요? 생성된 테이블 이름 위에서 마우스 오른쪽 버튼을 누르고 Table Inspector를 선택하면, 테이블의 상세 정보를 볼 수 있는 창이 뜹니다.

여기서 DDL 탭을 선택하면, 이 테이블이 정확히 어떤 옵션으로 설정되었는지 CREATE TABLE SQL 형태로 확인할 수 있어서 매우 유용합니다.

 

테이블에 데이터를 직접 넣어보거나 보고 싶다면, 테이블 이름 위에서 마우스 오른쪽 버튼을 누르고 Select Rows - Limit 1000 (또는 다른 옵션)을 선택하세요. 그러면 쿼리 편집기와 함께 테이블에 저장된 데이터를 표 형태로 볼 수 있는 Result Grid 창이 나타납니다.

 

Result Grid 창에서 직접 새로운 행을 추가하거나, 이미 있는 행의 내용을 수정할 수도 있어요! 변경 후에는 Apply 버튼을 눌러 데이터 변경 사항을 실제 DB에 반영하거나, Revert를 눌러 변경 내용을 취소할 수 있습니다.

 

2. MongoDB 실습 세팅: NoSQL의 유연함을 경험하자! 🤸‍♂️

MongoDB는 문서(Document) 지향적인 NoSQL 데이터베이스입니다. 스키마가 유동적이고, JSON과 유사한 BSON(Binary JSON) 형태로 데이터를 저장하여 개발 유연성이 높다는 장점이 있죠!

2.1. MongoDB 설치

MySQL과 마찬가지로 MongoDB도 다양한 운영체제를 지원합니다. 공식 웹사이트에서 Community Server 버전을 다운로드하여 설치할 수 있습니다.

자신의 운영체제에 맞는 버전을 선택하고 설치를 진행해주세요. 

2.2. MongoDB Shell (mongosh)

MongoDB와 상호작용하는 가장 기본적인 방법은 mongosh라는 커맨드 라인 셸을 이용하는 것입니다. SQL 대신 JavaScript 기반의 명령어를 사용해요!

최신 MongoDB 버전에서는 mongosh가 MongoDB 서버와 별도로 설치될 수 있습니다. 만약 설치되지 않았다면, 다음 페이지에서 별도로 다운로드하여 설치해주세요.

터미널이나 명령 프롬프트를 열고 mongosh 명령어를 입력하면 로컬에 설치된 MongoDB 서버(기본 포트 27017)로 접속을 시도합니다.

 mongosh

 

mongosh "mongodb://<hostname>:<port>"

성공적으로 접속되면 프롬프트가 > 또는 test> (기본 DB)로 바뀔 거예요.

 

MongoDB에서는 use <데이터베이스_이름> 명령어를 사용합니다. 해당 이름의 데이터베이스가 없으면 새로 만들 준비를 하고, 있으면 그 데이터베이스로 전환합니다. 실제로 데이터베이스가 디스크에 생성되는 시점은 해당 데이터베이스에 첫 번째 데이터를 삽입할 때입니다.

use myNewDB // myNewDB 라는 데이터베이스를 사용 (없으면 생성 준비)

MongoDB에서 Collection은 RDBMS의 테이블과 유사한 개념입니다. 문서를 담는 컨테이너죠. db.createCollection("컬렉션_이름") 명령어로 생성할 수 있습니다.

 

db.createCollection("users") // users 라는 컬렉션을 생성

또는, 데이터를 처음 삽입할 때 컬렉션이 존재하지 않으면 자동으로 생성되기도 합니다.

db.products.insertOne({ name: "Laptop", price: 1200 }) // products 컬렉션이 없으면 자동 생성 후 데이터 삽입

데이터를 조회할 때는 db.컬렉션_이름.find() 메소드를 사용합니다.

db.users.find() // users 컬렉션의 모든 문서를 조회
db.products.find({ price: { $gt: 1000 } }) // products 컬렉션에서 price가 1000보다 큰 문서를 조회

insertOne(), updateOne(), deleteOne() 등 다양한 CRUD(Create, Read, Update, Delete) 명령어가 있으니, 공식 문서를 참고하며 익혀보세요!

2.3. Studio 3T (또는 MongoDB Compass)

MongoDB도 편리한 GUI 툴이 있습니다! Studio 3T는 MongoDB를 위한 강력하고 인기 있는 IDE이며, MongoDB Compass는 MongoDB 공식 GUI 툴입니다. 둘 다 훌륭하지만, 여기서는 Studio 3T를 기준으로 설명드릴게요. (Compass도 사용법은 매우 유사합니다!)

Studio 3T는 유료 버전과 무료 버전(비상업적 용도)이 있습니다. 

다운로드 후 설치를 진행해주세요.

Studio 3T를 실행하고, Connect 버튼을 눌러 새로운 연결을 생성합니다.
Connection TypeStandalone으로 두고, Server에는 localhost, Port에는 27017 (기본값)을 입력합니다. 다른 설정은 기본값으로 두고 SaveConnect 하거나 바로 Connect를 누르면 로컬 MongoDB 서버에 접속됩니다.

 

왼쪽 Connection Tree에서 서버 노드를 오른쪽 클릭하고 Add Database...를 선택합니다. 데이터베이스 이름을 입력하고 OK를 누르면 됩니다. (또는 mongosh처럼 컬렉션에 데이터를 넣을 때 자동 생성되기도 합니다.)

 

생성한 데이터베이스 노드를 오른쪽 클릭하고 Add Collection...을 선택합니다. 컬렉션 이름을 입력하고 Create를 누르면 컬렉션이 만들어집니다.

 

생성된 컬렉션을 더블 클릭하면 해당 컬렉션의 데이터를 볼 수 있는 탭이 열립니다. 여기서 JSON과 유사한 형태로 쿼리를 입력하여 데이터를 필터링하거나, Visual Query Builder를 사용해 GUI 방식으로 쿼리를 만들 수도 있습니다. 데이터를 직접 추가하거나 수정하는 것도 직관적으로 가능합니다. Insert Document, Edit Document 등의 기능을 활용해보세요!

 

정리하며 📝

와우! 😮 오늘은 정말 많은 것을 함께 해냈습니다! MySQL부터 MongoDB까지, 두 개의 강력한 데이터베이스를 우리 손으로 직접 설치하고 기본적인 세팅까지 완료했어요.

  • MySQL:
    • 운영체제별 설치 완료!
    • CLI (mysql)로 기본 접속 맛보기!
    • MySQL Workbench로 편리하게!
      • 새로운 연결 생성 (내 로컬 DB 접속!)
      • 새로운 스키마 만들기 (utf8mb4, unicode_ci 잊지 마세요!)
      • 새로운 테이블 만들고 컬럼 정의하기!
  • MongoDB:
    • Community Server 설치 완료!
    • MongoDB Shell (mongosh)로 직접 명령 내리기!
      • mongosh 설치 및 접속
      • use 명령어로 DB 생성/전환
      • db.createCollection() 또는 데이터 삽입으로 컬렉션 만들기
      • find()로 간단한 쿼리 실행!
    • Studio 3T (또는 Compass)로 MongoDB를 GUI로 다루기!
      • 새로운 연결 생성
      • DB 및 컬렉션 생성
      • 직관적인 데이터 조회 및 편집!

이로써 우리는 백엔드 개발의 여정에 필요한 든든한 작업대를 마련한 셈입니다! 마치 모험을 떠나기 전 장비를 점검하고 챙기는 것처럼요. 든든하죠? 😉

 

오늘 이렇게 새로운 개발 환경을 구축하고, 익숙하지 않은 설정과 명령어들과 씨름하시느라 정말 정말 수고 많으셨습니다! 💪 이 작은 설정 하나하나가 앞으로 여러분이 만들어갈 멋진 백엔드 서비스의 밑거름이 될 거예요.

 

이제 데이터베이스와 조금은 친해진 것 같나요? 다음 시간에는 오늘 세팅한 이 환경 위에서 실제로 데이터를 정의하고, 관계를 맺고, 더 다양한 쿼리를 날려보는 등, 본격적으로 데이터베이스를 활용하는 더 흥미진진한 실습으로 돌아오겠습니다! 기대해주세요! 😉

https://abit.ly/lisbva