MySQL과 PostgreSQL의 데이터 비교

3393 단어
MySQL과 PostgreSQL은 매우 일반적으로 사용되는 데이터베이스로 많은 특성을 공유하면서도 몇 가지 고유한 특성을 유지합니다. 기본적인 유사점에 관해서는 MySQL과 PostgreSQL 모두 SQL 또는 구조적 쿼리 언어를 사용합니다. 둘 다 테이블 형식 데이터(테이블의 데이터)가 있는 관계형 데이터베이스이며 유사한 CLI(Command Line Interface)가 있습니다. 그러나 이것은 단지 표면에 불과하며 더 깊이 들여다보면 그 차이가 더 극적으로 보일 수 있습니다. 이 게시물에서는 PostgreSQL과 MySQL의 데이터 유형 처리 간의 차이점을 자세히 살펴보겠습니다.

먼저 스키마의 개념은 이 두 데이터베이스 간에 근본적으로 다릅니다. MySQL은 기본적으로 스키마를 데이터베이스와 동일한 것으로 간주합니다(또는 최소한 이론적으로 데이터베이스를 구성하는 기본 형식). 반면 PostgreSQL은 스키마를 여러 데이터베이스 없이 단일 데이터베이스의 다양한 요소를 결합하여 사용하기 위한 설정 구성으로 간주합니다. 아래 그림에서 빨간색은 MySQL 스키마(위)와 가능한 PostgreSQL 스키마(아래)를 나타냅니다.




기본 데이터 유형의 경우 이 두 데이터베이스는 일반적으로 사용되는 유형을 크기에 따라 다른 수의 범주로 정렬하는 경향이 있습니다. 예를 들어 MySQL은 TINYINT , SMALLINT , MEDIUMINT , INTEGERBIGINT 와 같이 정수에 대한 크기 범위가 넓은 반면 PostgreSQL은 SMALLINT , INTEGER 세 가지만 사용합니다. , 및 BIGINT . 마찬가지로 MySQL에는 PostgreSQL보다 텍스트 기반VARCHAR 필드 크기에 대한 옵션이 더 많습니다.

PostgreSQL과 MySQL에는 또한 이진(1, 0) 데이터를 처리하기 위한 서로 다른 데이터 유형이 있습니다. PostgreSQL의 경우 BYTEA, MySQL의 경우 BLOB입니다. 그리고 PostgreSQL은 실제로 일종의 무작위 암호화 스타일 텍스트인 UUID(Universally Unique Identifiers)를 생성하고 저장할 수 있습니다. MySQL에는 현재 PostgreSQL의 UUID와 동등한 것이 없습니다.

부울은 두 데이터베이스 간에 크게 다릅니다. PostgreSQL은 적절한 프로그래밍 언어로 부울을 처리하는 반면, MySQL은 부울 값이 이론적으로 다른 많은 숫자가 될 수 있도록 실제로 한 자리TINYINT인 이진수로만 저장합니다. 아래 예를 그림으로 살펴보십시오.

mysql> CREATE TABLE test (
    -> id INT AUTO_INCREMENT,
    -> bool BOOLEAN,
    -> PRIMARY KEY (id)
    -> );
Query OK, 0 row affected (0.02 sec)

mysql> INSERT INTO test (bool) VALUES (0);
Query OK, 1 row affected (0.00 sec)

mysql> INSERT INTO test (bool) VALUES (1);
Query OK, 1 row affected (0.00 sec)

mysql> INSERT INTO test (bool) VALUES (2);
Query OK, 1 row affected (0.00 sec)

mysql> select * from bool \G
*************************** 1. row ***************************
  id: 1
bool: 0
*************************** 2. row ***************************
  id: 2
bool: 1
*************************** 3. row ***************************
  id: 3
bool: 2
3 rows in set (0.00 sec)


PostgreSQL의 또 다른 장점은 "외래 테이블"(외래 키와 같은)을 만들고 PostgreSQL 테이블 외부의 다양한 구성을 나타낼 수 있는 유연한 외부 데이터 래퍼입니다. 나중에 사용할 수 있도록 쿼리 결과를 구체적인 데이터로 저장하여 편리할 때 집약적인 쿼리를 수행할 수 있는 시간 효율적인 방법을 제공하는 Postgres의 Materialized Views도 마찬가지로 유용합니다. 별도의 문제는 데이터 검증의 유연한 형태인 CHECK 제약 조건이 MySQL에 없다는 것입니다. 마찬가지로 PostgreSQL은 배열을 지원하고 MySQL에서 사용할 수 없는 기능인 다양한 제약 조건으로 자신의 데이터 유형을 사용자 정의하는 수단을 제공합니다.

이 포스트는 사실 쓰기가 좀 귀찮습니다. PostgreSQL이 MySQL보다 나은 이유를 지속적으로 확인하면서 이러한 차이점을 헤쳐나가면서 내 뿌리에 등을 돌리고 있는 것 같은 느낌이 듭니다. MySQL은 저에게 집과 같습니다. 불과 몇 주 전, 내가 진정 누구인지, 즉 데이터베이스 괴짜라는 사실을 처음 발견했을 때 처음으로 데이터베이스를 접하게 된 것은 바로 MySQL이었습니다. 또한 Postgres에 비해 부족한 기능을 고려하면 매우 간단합니다. 그러나 삶에서와 마찬가지로 데이터베이스에서도 우리는 어디에서 왔는지 기억하면서 계속 진화해야 합니다. 이 게시물은 달콤씁쓸했지만 다음 주 Postgres의 데이터 처리를 MySQL과 비교하는 게시물에서 Postgres의 우수한 기능을 더 많이 공유할 수 있기를 기대합니다. 그때까지 즐거운 데이터베이스 되세요!

좋은 웹페이지 즐겨찾기