[RDBMS] - mariaDB Docker 에 설치 후 실행 및 사용

2024. 9. 1. 14:57현대 오토에버 SW 스쿨 - 클라우드/데이터베이스

SMALL

mariaDB?

  • 관계형 데이터베이스로 많이 알려져있는 것으로는 Oracle 이 있습니다.
  • 하지만 Oracle 은 사용에 유료화를 하여 사용하는데 진입장벽이 높았습니다.
  • 이와 달리 MySQL 은 Open source 로 서비스를 사용하는데 개방적이었습니다.
    모든 사용 서비스가 무료인 것은 아니지만 Oracle 에 비해 무료로 사용할 수 있는 서비스의 범위가 훨씬 넓었습니다. 
  • 하지만 Oracle 이 MySQL을 인수하게 되면서 MySQL 을 유료화로 전환하게 되면서 MySQL 과 유사한 mariaDB가 나오게 되었습니다.
  • 결과적으로 MySQL 과 mariaDB 는 매우 유사한 환경을 갖고 있습니다. 

mac - docker 설치하기

-- terminal 에서 docker 설치하기
-- caks 는 맥용 어플리케이션을 설치하는 명령어
brew install --cask docker
docker -v

-- terminal 에서 docker 어플리케이션 실행
open /Applications/Docker.app
  • mac os 를 사용하는 경우 brew cask를 이용하여 docker 를 간단하게 설치할 수 있습니다.
  • docker 가상머신 위에서 실행되는 container 로 mac 용 어플리케이션인 docker desktop 의 가상환경 위에서 실행가능합니다.
    :: docker desktop 말고 다른 환경 설정을 위한 방법도 있습니다.
  • 따라서 docker desktop 을 설치한 후 docker desktop 을 실행하여 docker demon 실행 후 docker container 실행의 과정으로 사용이 가능합니다. 

mariaDB docker container 생성하기

  • docker container 생성을 위해서는 소프트웨어를 실행하는 데 필요한 모든 파일, 설정, 라이브러리, 코드 및 의존성을 포함하는 불변의 템플릿인 docker image 가 필요합니다.
>> docker image :: 소프트웨어를 실행하는 데 필요한 모든 파일, 설정, 라이브러리, 코드 및 의존성을 포함하는 불변의 템플릿
>> docker container :: image 를 기반으로 소프트웨어를 실행 중인 환경
-- mariadb image 받기
docker pull mariadb

-- 설치한 image 목록보기
docker images

-- mariadb container 생성 및 실행 :: 3306 은 mariadb 기본 port
docker container run -d -p 외부접속port:mariaDBoprt -e MYSQL_ROOT_PASSWORD=비밀번호 --name 컨테이너이름 image이름
docker container run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=0826 --name test_mariadb mariadb

-- mariadb container 실행하여 접속하기
docker exec -it test_mariadb mariadb -uroot -p
> 위에서 설정한 비밀번호 입력 후 mariadb 접속
  • 위의 명령어로 image 를 받고 container 를 생성합니다.
  • 생성한 container 와 images 는 docker desktop 어플리케이션을 실행하여 확인할 수 있습니다.

docker desktop - image, container


mariaDB 사용하기 

  • 일반적으로 server :: 컴퓨터가 1대 이상인 것을 말하며 db 서버가 설치된 곳에서는 db 작업을 진행하지 않습니다.
  • db 서버를 연결하는 접속 프로그램과 같은 tool을 사용 -> 복사본을 만듦
    -> 복사본에 작업을 실행하여 변경된 사항들을 최종적으로 원본 DB에 반영하는 방식으로 작업합니다.
  • 추가적으로 open api 는 데이터가 공개된 것이 아니어서 DB 와 직접적으로 연결하는 접속 프로그램으로는 접근이 불가능
    공공데이터와 같은 예시가 있습니다. 
  • mariaDB 는 RDBMS 로 SQL 를 사용하여 작업을 실행합니다.
    추가적으로 MySQL, mariaDB 는 계층구조가
    root > user > database > table, Oracle 은 user > database > table 로 차이가 있습니다. 

SQL - DDL, DML, DCL 

DDL
CREATE, ALTER, DROP과 같은 테이블 관리에 관련된 명령어
DBA 또는 모델링 작업을 하는 사람이 많이 사용합니다. 
DML
>> 많은 개발자들이 사용하는데 여기서 DQL과 DML 로 한 번 더 구분이 가능합니다.
DQL 로는 SELECT 예약어로 데이터를 조회할 때 사용합니다.
DML 은 INSERT, UPDATE, DELETE 로 테이블 내의 데이터에 수정 작업을 할 때 사용합니다.

>> DQL과 DML 로 나누는 이유
DQL동시에 진행되어도 데이터의 문제가 없음
DML동시에 진행되는 경우 데이터의 일관성 관련된 문제가 발생가능
간단히 말해 동시 작업 가능 여부에 따라 나눌 수 있습니다.
따라서 SELECT 조회를 위한 데이터베이스와 INSERT..등 수정을 위한 데이터베이스를 구분하여 사용하는 경우도 있습니다. 
DCL
테이블 관리 및 권한을 수정하는데 사용하여 GRANT, ROLLBACK 등이 있습니다.
TCL :: 데이터의 일관성을 위한 TRANSACTION 을 관리하는 예약어가 있습니다.
COMMIT, ROLLBACK, SAVEPOINT 가 있으며 여러 작업이 일관성 있게 반영되어야 하는 경우 사용하는 TRANSATION 에서 쓰입니다. 
-- database 생성
create database sample

-- database 사용
use 데이터베이스이름
use sample
  • 처음으로 데이터베이스를 연결한 후 사용할 때에는 사용할 DB 를 생성한 후 -> 해당 DB 테이블을 생성하여 사용가능합니다. 
-- table 생성
create table sampleTable (
	name char(20)
    ) default charset = utf8;
    
-- 데이터 삽입
insert into sampleTable values('테스트');

-- 데이터 조회
select 8
  from sampleTable;
  
-- 데이터 삭제
truncate sampleTest;

-- table 삭제 
drop sampleTest;
  • 간단하게 테이블을 생성하여 조회, 삭제 등의 작업을 수행해볼 수 있습니다.
반응형
LIST