속성 AUTO_INCREMENT은 행에 대한 고유한 식별자를 생성하는 데 사용할 수 있습니다.
CREATE TABLE animals (
id MEDIUMINT NOT NULL AUTO_INCREMENT,
name CHAR(30) NOT NULL,
PRIMARY KEY (id)
);
INSERT INTO animals (name) VALUES
('dog'),('cat'),('penguin'),
('lax'),('whale'),('ostrich');
SELECT * FROM animals;
CREATE TABLE animals (
grp ENUM('fish','mammal','bird') NOT NULL,
id MEDIUMINT NOT NULL AUTO_INCREMENT,
name CHAR(30) NOT NULL,
PRIMARY KEY (grp,id)
) ENGINE=MyISAM;
INSERT INTO animals (grp,name) VALUES
('mammal','dog'),('mammal','cat'),
('bird','penguin'),('fish','lax'),('mammal','whale'),
('bird','ostrich');
SELECT * FROM animals ORDER BY grp,id;
MyISAM 테이블의 경우(AUTO_INCREMENT컬럼이 복합 인덱스의 일부인 경우)그룹에서가장 큰 값의 행을 삭제하면 AUTO_INCREMENT 값이 재사용됩니다. 즉 grp='mamman' 이고 id=3인 데이터를 삭제한 후 grp='mammal' 데이터를 입력하면 id는 다시 3을 재사용합니다.
AUTO_INCREMENT 컬럼이 선두컬럼인 인덱스가 있는 경우 MySQL은 단일 시퀀스 값을 생성합니다. 예를 들어, animals테이블에 인덱스 PRIMARY KEY (grp, id) 및 INDEX (id)가 있는 경우 MySQL은 grp별 시퀀스가 아니라 단일 시퀀스를 생성합니다.
AWS Cloud9이란 코드 작성, 실행 및 디버깅을 위한 클라우드 IDE입니다. AWS Cloud9을 사용하면 브라우저만으로 코드를 작성, 실행 및 디버그할 수 있습니다. AWS Cloud9을 사용하면 코드 편집기, 통합 디버거 및 미리 구성된 AWS CLI가 있는 내장 터미널을 사용할 수 있습니다.
작동 방식
신규 Amazon EC2 인스턴스에 AWS Cloud9 환경을 생성하거나 SSH를 통해 각자의 Linux 서버에 연결합니다. AWS Cloud9 환경을 생성하면 브라우저 내에서 코드 편집기, 통합 디버거 및 사전 구성된 AWS CLI가 있는 터미널에 액세스할 수 있습니다.
AWS Cloud9 대시보드를 사용하면 각각 특정 프로젝트에 대한 사용자 지정 도구, 런타임 및 파일을 포함하는 다양한 AWS Cloud9 환경을 생성하고 전환할 수 있습니다.
*** CloudFormation 으로 구성한다.
Benefits and features
Code with just a browser
AWS Cloud9을 사용하면 데스크톱 IDE를 설치하거나 유지 관리할 필요 없이 브라우저만으로 애플리케이션을 작성, 실행 및 디버깅할 수 있습니다.
Code together in real time
AWS Cloud9을 사용하면 코드 협업이 쉬워집니다. 몇 번의 클릭만으로 팀과 개발 환경을 공유하고 프로그램을 함께 페어링할 수 있습니다.
Start new projects quickly
AWS Cloud9 EC2 환경은 40개 이상의 프로그래밍 언어용 도구와 함께 사전 패키징되어 제공되므로 몇 분 안에 인기 있는 애플리케이션 스택에 대한 코드 작성을 시작할 수 있습니다.
Build serverless applications with ease
AWS Cloud9은 서버리스 애플리케이션 개발을 위한 환경을 제공합니다. 리소스를 쉽게 정의하고, 디버그하고, 코드의 로컬 실행과 원격 실행 간에 전환할 수 있습니다.
What can I do with AWS Cloud9?
Working with code in several programming languages and the AWS Cloud Development Kit (AWS CDK).
Working with code in a running Docker container.
Using online code repositories.
Collaborating with others in real time.
Interacting with various database and website technologies.
Targeting AWS Lambda, Amazon API Gateway, and AWS Serverless Applications.
Taking advantage of other AWS products such as Amazon Lightsail, AWS CodeStar, and AWS CodePipeline.
AWS Cloud9을 사용하면 소프트웨어를 코딩, 빌드, 실행, 테스트, 디버그 및 릴리스할 수 있습니다.
여러 프로그래밍 언어 및 AWS Cloud Development Kit(AWS CDK)의 코드로 작업
실행 중인 Docker 컨테이너에서 코드 작업.
온라인 코드 저장소 사용.
다른 사람들과 실시간으로 협업
다양한 데이터베이스 및 웹 사이트 기술과 상호 작용
AWS Lambda, Amazon API Gateway 및 AWS 서버리스 애플리케이션을 대상
Amazon Lightsail, AWS CodeStar 및 AWS CodePipeline과 같은 다른 AWS 제품을 활용
데스크톱의 컨테이너 관리 및 Kubernetes Mac, Windows 및 Linux용 오픈 소스 데스크톱 애플리케이션입니다. Rancher Desktop은 데스크톱에서 Kubernetes 및 컨테이너 관리를 실행합니다. 실행하려는 Kubernetes 버전을 선택할 수 있습니다. containerd 또는 Moby(dockerd)를 사용하여 컨테이너 이미지를 빌드, 푸시, 풀 및 실행할 수 있습니다. 빌드한 컨테이너 이미지는 레지스트리 없이 Kubernetes에서 즉시 실행할 수 있습니다.
MySQL Shell for VS Code는 MySQL 데이터베이스 및 MySQL 데이터베이스 서비스(RDS 등)와 SQL을 실행할 수 있도록 합니다.
MySQL Shell for VS Code는 MySQL Shell을 Visual Studio Code 개발 워크플로에 직접 통합합니다.
MySQL Shell Console은 노트북 인터페이스 스타일의 편집기 내에서 MySQL Shell을 제공합니다. GUI 콘솔을 사용하면 AdminAPI, X DevAPI 및 ShellAPI를 포함하여 MySQL Shell의 대부분의 기능을 사용하여 InnoDB 클러스터, InnoDB ClusterSet 및 InnoDB ReplicaSet를 배포 및 관리할 수 있습니다.
DB Notebooks는 데이터베이스와 대화식으로 작업할 수 있는 방법을 제공합니다. 노트북 편집기 내에서 SQL(포함된 결과 포함)에서 JavaScript 또는 TypeScript로 전환하여 데이터를 쿼리, 조작 및 시각화할 수 있습니다.
다음 표는 MySQL Shell의 기능과 이를 지원하는 편집기를 나타냅니다. 필요한 기능에 따라 MySQL Shell 기능을 사용하면 됩니다.
MySQL 셸 기능
MySQL 셸 콘솔(셸 세션)
DB 노트북
SQL 스크립트, TS 스크립트, JS 스크립트
지원되는 언어
SQL, 파이썬, 자바스크립트
SQL(MySQL 및 SQLite), TypeScript, JavaScript
SQL( .sql), TypeScript( .ts), JavaScript( .js)
대화형 코드 실행
예
예
아니요
배치 코드 실행
예
예
예
지원되는 API
AdminAPI, X DevAPI 및 ShellAPI
해당 없음
해당 없음
X 프로토콜 지원
예
예
예
유용
예
아니요
아니요
API 명령줄 통합
해당 없음
해당 없음
해당 없음
출력 형식
아니요
아니요
아니요
로깅 및 디버그
예
예
예
글로벌 세션
예
해당 없음
해당 없음
2. 시작하기
2.1 Set Up MySQL Shell for VS Code
2.2 MySQL Shell for VS Code Components
2.3 Settings
2.4 Notebook Editors
2.5 Run Embedded SQL
2.1 VS Code용 MySQL 셸 설정
Visual Studio Code 에서 사용하기 위해 VS Code용 MySQL Shell을 설치하는 방법과 시스템에 MySQL Shell이 설치되어 있지 않은 경우 MySQL Shell 인스턴스를 활성화하는 방법을 설명합니다.
"Successfully baselined schema with version: 1" 이 있는데 이는 flyway migrate 의 version을 최초 1로 설정한 것입니다.
flyway-9.17.0> flyway baseline
Flyway Community Edition 9.17.0 by Redgate
See release notes here: https://rd.gt/416ObMi
Database:
Creating Schema History table `flyway`.`flyway_schema_history` with baseline ...
Successfully baselined schema with version: 1
위의 그림처럼 flyway_schema_history 테이블을 생성하고 version 1 의 baseline을 설정합니다.
flyway info를 수행하면 관련 정보를 볼 수 있습니다.
flyway-9.17.0> flyway info
Flyway Community Edition 9.17.0 by Redgate
See release notes here: https://rd.gt/416ObMi
+----------+---------+-----------------------+----------+---------------------+----------+----------+
| Category | Version | Description | Type | Installed On | State | Undoable |
+----------+---------+-----------------------+----------+---------------------+----------+----------+
| | 1 | << Flyway Baseline >> | BASELINE | 2023-04-28 13:51:24 | Baseline | No |
+----------+---------+-----------------------+----------+---------------------+----------+----------+
A Flyway report has been generated here: report.html
만약, migrate할 sql 파일명을 V1__ 로 시작되는 파일명으로 작성했을 경우, version이 1로 동일하기 때문에 V1__ 로 시작하는 파일의 sql은 수행되지 않습니다. 그러므로 아래 명령어와 같이 -baselineVersion=0 으로 지정하는 것이 좋습니다.
flyway-9.17.0> flyway baseline -baselineVersion=0
## 실행결과
Flyway Community Edition 9.17.0 by Redgate
See release notes here: https://rd.gt/416ObMi
Database: jdbc:mysql://dept-ssgd-aurora-an2-dev.cluster-cktyv4o7rx0c.ap-northeast-2.rds.amazonaws.com:3606/flyway (MySQL 8.0)
Creating Schema History table `flyway`.`flyway_schema_history` with baseline ...
Successfully baselined schema with version: 0
flyway-9.17.0> flyway info
## 실행결과
Flyway Community Edition 9.17.0 by Redgate
See release notes here: https://rd.gt/416ObMi
+----------+---------+-----------------------+----------+---------------------+----------+----------+
| Category | Version | Description | Type | Installed On | State | Undoable |
+----------+---------+-----------------------+----------+---------------------+----------+----------+
| | 0 | << Flyway Baseline >> | BASELINE | 2023-04-28 13:51:24 | Baseline | No |
+----------+---------+-----------------------+----------+---------------------+----------+----------+
A Flyway report has been generated here: report.html
baseline 재설정 마이그레이션이 많은 경우 기본 마이그레이션을 재설정하는 것이 좋습니다. 이렇게 하면 오래되고 관련이 없을 수 있는 많은 스크립트를 처리하는 오버헤드를 줄일 수 있습니다.
마이그레이션 생성
마이그레이션 파일은 /sql 디렉터리에 "V + (version표기) + __ + ... + .sql" 형식으로 파일을 생성합니다.
여기서 대문자 "V"는 version이라는 단어를 의미하고 "version표기"은 version 정보입니다.
version형식은 일반적인 표기와 동일합니다. 예를 들면 1.1.1 등의 형식입니다. migrate은 버전형식의 오름차순으로 수행합니다.
migrate 파일형식 : (V + version표기+ __filename.sql)
V : version
version표기 : 예시) 1, 1.1, 2, 2.1 등
__ : 연속된 언더바 2개
filename : 임의의 파일명
.sql = 파일확장자
예시 : V1__Create_person_table.sql
V1__Create_person_table.sql 이라는 첫 번째 마이그레이션을 만듭니다. V1 다음의 __는 언더바가 2개입니다. 반드시 2개이어야 하며 V는 반드시 대문자를 써야 합니다. 만든 파일을 flyway 홈디렉토리 및에 sql 디렉토리에 위치시킵니다.
create table PERSON (
ID int not null,
NAME varchar(100) not null
);
데이터베이스 마이그레이팅
Flyway 마이그레이션을 수행합니다.
주의할 점은 baseline을 설정하지 않고flyway migrate 명령어를 수행할 때 데이터베이스에 table이 존재하면 "non-empty schema" 오류가 발생합니다.
스키마에 테이블이 존재할 경우에는 flyway baseline 또는 flyway migrate -baselineOnMigrate=true 명령어를 수행해야 합니다. baselineOnMigrate=true 옵션은 baseline을 설정하고 migrate을 수행합니다.
단, baseline을 수행할 경우에는 version 1의 BASELNE이 설정되므로 "V1__"으로 시작하는 sql 파일이 존재할 경우에 동일한 버전 오류가 발생하니 sql파일명을 V1 이상의 버전으로 설정해야 합니다.
또는 flyway migrate -baselineOnMigrate=true -baselineVersion=0 명령어를 수행하여 baseline의 version을 0으로 설정합니다.
flyway-9.16.3> flyway migrate
모든 것이 잘 되었다면 다음 출력이 표시됩니다.
Flyway Community Edition 9.16.3 by Redgate
See release notes here: https://rd.gt/416ObMi
Database: jdbc:h2:file:./foobardb (H2 2.1)
Schema history table "PUBLIC"."flyway_schema_history" does not exist yet
Successfully validated 1 migration (execution time 00:00.014s)
Creating Schema History table "PUBLIC"."flyway_schema_history" ...
Current version of schema "PUBLIC": << Empty Schema >>
Migrating schema "PUBLIC" to version "1 - Create person table"
Successfully applied 1 migration to schema "PUBLIC", now at version v1 (execution time 00:00.022s)
두번째 마이그레이션 추가
/sql 디렉토리에 V2__Add_people.sql 두 번째 마이그레이션을 추가합니다.
insert into PERSON (ID, NAME) values (1, 'Axel');
insert into PERSON (ID, NAME) values (2, 'Mr. Foo');
insert into PERSON (ID, NAME) values (3, 'Ms. Bar');
Flyway를 실행하여 데이터베이스를 마이그레이션합니다.
flyway-9.16.3> flyway migrate
아래와 같은 결과가 표시됩니다.
Flyway Community Edition 9.16.3 by Redgate
See release notes here: https://rd.gt/416ObMi
Database: jdbc:h2:file:./foobardb1 (H2 2.1)
Successfully validated 2 migrations (execution time 00:00.019s)
Current version of schema "PUBLIC": 1
Migrating schema "PUBLIC" to version "2 - Add people"
Successfully applied 1 migration to schema "PUBLIC", now at version v2 (execution time 00:00.026s)
Flyway 실행정보를 보려면 flyway info 명령어를 수행합니다. flyway 버전, type, 수행시간, 수행상태 등의 수행 내역을 보여줍니다.
VSCode 좌측메뉴의 Extensions에서 "community server connectors"를 검색합니다.검색 후 Community Server Connectors를 [install] 버튼을 클릭하여 설치합니다.
이 VSCode 확장은 Apache Felix, Karaf 및 Tomcat과 같은 커뮤니티 런타임 및 서버를 시작, 중지, 게시 및 제어할 수 있는 런타임 서버 프로토콜 기반 서버 커넥터를 제공합니다.
설치가 완료되면 VSCode 의 좌측화면 하단에 "SERVER" 메뉴가 생기고 하위에 "Community Server Connector(Started)"가 생긴 것을 확인할 수 있습니다.
"Community Server Connector(Started)" 마우스 오른쪽 버튼을 클릭한 후 "Create New Serve"를 클릭합니다.
VSCode 상단의 검색창으로 커서가 옮겨가면서 아래와 같은 화면이 뜹니다. "Yes"를 선택합니다.
로컬 PC에 tomcat이 설치되어 있고 이를 사용하기 원하는 경우에는 "No, user server on disk"를 선택해서 설치한 tomcat을 지정하면 됩니다.
community server connectors" Extension이 제공하는 여러 서버(Apache Karaf, Apache Tomcat 등) 가 보이는데 이중 Apache Tomcat 중 설치를 원하는 버전을 선택합니다. 본 문서에서는 Apache Tomcat 10.1.4를 선택했습니다.
라이센트 파일과 함께 "Continue.."라는 메뉴가 보이는데 "Continue.."를 클릭합니다.
"Yes(True)" 를 클릭합니다.
설치가 완료되면 좌측 하단의 Community Server Connector(Started)"가 생긴 것을 확인할 수 있습니다.
브라우저에 http://127.0.0.1:8080 을 입력해보면 tomcat 화면을 볼 수 있습니다.
tomcat 이 설치된 경로는 C:\Users\[window user]\.rsp\redhat-community-server-connector\runtimes\installations\tomcat-10.1.4 입니다.
주의할 것은 이 파일에 dbcp를 설정할 경우 webapps/ 디렉토리 하위에 있는 application 개수만큼 수행되어 connection pool 개수가 initialsize * application 개수 만큼 생성됩니다. application 별로 설정하려면 생성한 application 디렉토리 하위에 META-INF 디렉토리에 context.xml 파일을 생성하고 설정하면 됩니다.
참고) AWS RDS Aurora DB 접속 방법도 동일합니다.
jdbc 드라이버를 다운로드한 후 tomcat lib 디렉토리에 저장한 후 context.xml 파일의 driver ClassName 그리고 url 만 Aurora DB에 맞도록 수정하면 됩니다.