이 문서에서는 MySQL 데이터베이스 기반 애플리케이션 시스템을 GBase 데이터베이스(GBase 8c)로 마이그레이션하는 방법에 대한 빠른 가이드를 제공합니다. 두 데이터베이스의 특정 측면에 대한 자세한 내용을 보려면 독자는 MySQL 공식 문서(https://dev.mysql.com/doc/) 및 GBase 8c 사용자 설명서를 참조할 수 있습니다. MySQL 데이터 유형의 기본 매핑 및 마이그레이션 프로세스의 기타 측면과 관련된 광범위한 내용으로 인해 이 기사에서는 자세히 다루지 않습니다. 관심 있으신 분들은 댓글 남겨주시면 다음번에 논의해보겠습니다.
MySQL과 GBase 8c 모두에서 CREATE DATABASE 문을 사용하여 데이터베이스를 생성합니다. 구체적인 구문 차이점은 다음과 같습니다.
작업 | MySQL SQL 문 | GBase 8c SQL 문 |
---|---|---|
데이터베이스 생성 | 데이터베이스 생성 예 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; | CREATE DATABASE 예 OWNER gbase ENCODING 'UTF8' LC_COLLATE 'en_US.UTF-8' LC_CTYPE 'en_US.UTF-8'; |
데이터베이스 생성을 위한 SQL 문 마이그레이션에 대한 고려 사항:
(1) MySQL과 GBase 8c 모두에서 데이터베이스를 생성할 때 문자 집합과 대조 규칙을 지정할 수 있습니다.
MySQL과 달리 GBase 8c에서는 ENCODING 키워드를 사용하여 문자 집합을 지정하고 LC_COLLATE 및 LC_CTYPE 키워드를 사용하여 조합 규칙을 지정합니다.
LC_COLLATE: 이 매개변수는 문자열 정렬 순서에 영향을 미칩니다(예: ORDER BY 사용 시 및 텍스트 열의 인덱스 순서).
LC_CTYPE: 이 매개변수는 대문자, 소문자, 숫자 등 문자 분류에 영향을 줍니다.
(2) GBase 8c에서 데이터베이스를 생성할 때 고유한 추가 속성을 지정할 수도 있습니다. 일반적인 속성은 다음과 같습니다:
OWNER: 이 매개변수는 데이터베이스의 소유자를 지정합니다. 지정하지 않으면 소유자는 현재 사용자로 기본 설정됩니다.
CONNECTION LIMIT: 이 매개변수는 데이터베이스가 허용할 수 있는 동시 연결 수를 지정합니다. 시스템 관리자에게는 이 제한이 적용되지 않습니다.
(3) 데이터베이스 구조
MySQL에서 데이터베이스와 스키마는 동의어이며 데이터베이스는 서로 참조할 수 있습니다. GBase 8c에서 데이터베이스와 스키마는 별개의 개체입니다. 단일 데이터베이스에는 여러 스키마가 포함될 수 있으며 데이터베이스는 서로 참조할 수 없지만 동일한 데이터베이스 내의 스키마는 참조할 수 있습니다.
데이터베이스 운영을 위한 다양한 SQL 문 비교:
작업 | MySQL SQL 문 | GBase 8c SQL 문 | GBase 8c gsql 도구 |
---|---|---|---|
데이터베이스 보기 | 데이터베이스 표시; 또는 SHOW DATABASE 예; | 선택 * pg_database에서; | \l 또는 \l |
스위치 데이터베이스 | 예제 사용; | 스위치에 다시 연결합니다. 이 기능은 전환에 SQL을 사용하지 않습니다. | \c 예 |
데이터베이스 삭제 | 데이터베이스 삭제 예; | 데이터베이스 삭제 예; | 없음 |
MySQL과 GBase 8c는 모두 CREATE TABLE 문을 사용한 테이블 생성을 지원합니다. 구체적인 구문 차이점은 다음과 같습니다.
작업 | MySQL SQL 문 | GBase 8c SQL 문 |
---|---|---|
CREATE TABLE을 사용하여 테이블 생성 | CREATE TABLE `my_table` ( `id` int NOT NULL AUTO_INCREMENT COMMENT 'id', `user_id` int NOT NULL COMMENT 'User id', `name` varchar(50) DEFAULT NULL COMMENT '이름', `주소` varchar(50) DEFAULT NULL COMMENT '주소', `password` varchar(20) DEFAULT 'passwd' COMMENT '비밀번호', PRIMARY KEY (`id `) ) 엔진=InnoDB 기본 문자 집합=utf8; |
CREATE TABLE "my_table" ( "id" SERIAL NOT NULL, "user_id" int NOT NULL, "name" varchar(50), "address" varchar(50) , "passwd" varchar(20) DEFAULT 'password', CONSTRAINT "my_table_pkey" 기본 키 ("id") ); COMMENT ON COLUMN "my_table"."id " IS 'id'; COMMENT ON COLUMN "my_table"."user_id" IS '사용자 ID'; COMMENT ON COLUMN "my_table"."name" IS 'Name'; COMMENT ON COLUMN " my_table"."address"는 '주소'; COMMENT ON COLUMN "my_table"."passwd"는 '비밀번호'; |
CREATE TABLE ... LIKE를 사용하여 테이블 생성 | `my_table`과 같은 `my_table_like` 테이블 생성; | my_table_like 테이블 생성(my_table과 유사); |
CREATE TABLE ... AS를 사용하여 테이블 생성 | `my_table`에서 *를 선택하여 `my_table_as` 테이블을 생성합니다. | my_table에서 *를 선택하여 my_table_as 테이블을 생성합니다. |
테이블 생성을 위해 SQL 문을 마이그레이션할 때 다음 구문 변경이 필요합니다.
(1) 명명 규칙 및 대소문자 구분
MySQL에서는 데이터베이스, 테이블 및 필드 이름을 백틱(``)으로 묶어 표시합니다. 이는 GBase 8c에서는 허용되지 않습니다. 대신 GBase 8c는 큰따옴표를 사용하거나 표시를 전혀 사용하지 않습니다.
GBase 8c에서 테이블 및 필드 이름을 큰따옴표로 묶지 않으면 테이블이 생성될 때 자동으로 소문자로 변환됩니다. 대문자 이름을 지정해야 하는 경우 이름을 큰따옴표로 묶어야 합니다.
(2) 스토리지 엔진 관련 변경 사항
GBase 8c로 마이그레이션할 때 MySQL 문에서 ENGINE, TYPE 등 스토리지 엔진 관련 절을 제거해야 합니다.
GBase 8c는 테이블 수준에서 문자 집합 설정을 지원하지 않으므로 GBase 8c로 마이그레이션할 때 MySQL 문의 CHARSET 절을 제거해야 합니다.
(3) 다음과 같은 테이블 생성\AS
GBase 8c는 CREATE TABLE LIKE\AS 구문도 지원하지만 LIKE 절의 사용법은 MySQL과 다릅니다. GBase 8c에서 LIKE 절은 "()"로 묶어야 하며 원래 테이블 열의 COMMENT 주석을 자동으로 복사하지 않습니다.
MySQL과 GBase 8c 모두 뷰를 지원하며 기본적인 생성 방법은 비슷합니다. 그러나 GBase 8c에서는 기본 규칙에 따라 뷰의 데이터를 직접 수정하는 것이 지원되지 않는다는 점에 유의하는 것이 중요합니다.
작업 | MySQL SQL 문 | GBase 8c SQL 문 |
---|---|---|
뷰 만들기 | CREATE VIEW v_my_table AS SELECT * FROM my_table; | CREATE VIEW v_my_table AS SELECT * FROM my_table; |
뷰를 통해 데이터 수정 | INSERT INTO v_my_table(사용자 ID, 이름, 주소) VALUES(2222, 'bbb', 'xxxx'); | 지원되지만 기본 RULE 조정 필요 |
뷰 삭제 | 드롭 보기 v_my_table; | 드롭 보기 v_my_table; |
MySQL과 GBase 8c는 모두 인덱싱 기능을 지원하지만 생성 및 삭제 작업에는 약간의 차이가 있습니다. 기본 구문 차이점은 다음과 같습니다.
작업 | MySQL SQL 문 | GBase 8c SQL 문 |
---|---|---|
색인 생성 중 |
my_table(user_id)에서 BTREE를 사용하여 인덱스 i_user_id를 생성합니다. 또는 BTREE를 사용하여 my_table(user_id)에 인덱스 i_user_id를 생성합니다. |
BTREE(user_id)를 사용하여 my_table에서 i_user_id 인덱스 생성; |
지수 하락 | 드롭 인덱스 i_user_id ON my_table; | 인덱스 삭제 i_user_id; |
인덱스 생성 및 삭제 문 마이그레이션 시 주의 사항:
(1) USING index_type의 위치
MySQL에서 USING index_type 절은 다음과 같이 table_name(col_name) 절 앞이나 뒤에 나타날 수 있습니다.
... index_type table_name(col_name) 사용 ...
또는
... table_name(col_name) USING index_type ...
그러나 GBase 8c에서는 USING index_type 절이 table_name(col_name) 절의 중간에 배치되어야 합니다.
... table_name USING index_type (col_name) ...
(2) 테이블의 DROP INDEX
GBase 8c에서는 인덱스 객체를 삭제할 때 ON table 절을 지정할 필요가 없습니다. 이 절은 마이그레이션 중에 제거되어야 합니다.
(3) 기타 속성
GBase 8c는 인덱스 객체를 생성할 때 FULLTEXT 및 SPATIAL 속성을 지원하지 않습니다. 마이그레이션 중에 이러한 속성을 제거해야 합니다.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3