PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Chuyển từ DB2 sang PostgreSQL - Điều bạn nên biết

Cho dù việc di chuyển một cơ sở dữ liệu hoặc một ứng dụng từ DB2 sang PostgreSQL chỉ với một loại kiến ​​thức cơ sở dữ liệu thì vẫn chưa đủ, có một số điều cần biết về sự khác biệt giữa hai hệ thống cơ sở dữ liệu.

PostgreSQL là cơ sở dữ liệu mã nguồn mở tiên tiến được sử dụng rộng rãi nhất trên thế giới. Cơ sở dữ liệu PostgreSQL có bộ tính năng phong phú và cộng đồng PostgreSQL rất mạnh và họ liên tục cải tiến các tính năng hiện có và thêm các tính năng mới. Theo db-engine.com, PostgreSQL là DBMS của năm 2017 và 2018.

Như bạn đã biết DB2 và PostgreSQL là RDBMS nhưng có một số điểm không tương thích. Trong blog này, chúng tôi có thể thấy một số điểm không tương thích này.

Tại sao nên chuyển từ DB2 sang PostgreSQL

  1. Cấp phép nguồn mở linh hoạt và tính khả dụng dễ dàng từ các nhà cung cấp đám mây công cộng như AWS, Google cloud, Microsoft Azure.
  2. Hưởng lợi từ các tiện ích bổ sung nguồn mở để cải thiện hiệu suất cơ sở dữ liệu.

Bạn có thể thấy trong hình ảnh dưới đây rằng mức độ phổ biến của PostgreSQL đang tăng lên theo thời gian so với DB2.

Lãi suất theo thời gian

Đánh giá di cư

Bước đầu tiên của quá trình di chuyển là phân tích ứng dụng và đối tượng cơ sở dữ liệu, tìm ra điểm không tương thích giữa cả hai cơ sở dữ liệu và ước tính thời gian và chi phí cần thiết cho việc di chuyển.

Ánh xạ kiểu dữ liệu

Một số kiểu dữ liệu của IBM DB2 không khớp trực tiếp với kiểu dữ liệu PostgreSQL, vì vậy bạn cần thay đổi nó thành kiểu dữ liệu PostgreSQL tương ứng.

Vui lòng kiểm tra bảng dưới đây.

IBM DB2 PostgreSQL
BIGINT số nguyên 64 bit BIGINT
BLOB (n) Đối tượng lớn nhị phân BYTEA
CLOB (n) Đối tượng lớn ký tự VĂN BẢN
DBCLOB (n) Đối tượng lớn UTF-16 ký tự VĂN BẢN
NCLOB (n) Đối tượng lớn UTF-16 ký tự VĂN BẢN
CHAR (n), CHARACTER (n) Chuỗi có độ dài cố định CHAR (n)
CHARACTER VARYING (n) Chuỗi có độ dài thay đổi VARCHAR (n)
NCHAR (n) Chuỗi UTF-16 có độ dài cố định CHAR (n)
NCHAR VARYING (n) Chuỗi UTF-16 có độ dài thay đổi VARCHAR (n)
VARCHAR (n) Chuỗi có độ dài thay đổi VARCHAR (n)
VARGRAPHIC (n) Chuỗi UTF-16 có độ dài thay đổi VARCHAR (n)
VARCHAR (n) CHO DỮ LIỆU BIT Chuỗi byte có độ dài thay đổi BYTEA
NVARCHAR (n) Chuỗi UTF-16 có độ dài thay đổi VARCHAR (n)
GRAPHIC (n) Chuỗi UTF-16 có độ dài cố định CHAR (n)
INTEGER số nguyên 32 bit INTEGER
SỐ (p, s) Số điểm cố định SỐ (p, s)
DECIMAL (p, s) Số điểm cố định DECIMAL (p, s)
CHÍNH XÁC ĐÔI Số dấu phẩy động chính xác kép CHÍNH XÁC ĐÔI
FLOAT (p) Số dấu phẩy động chính xác kép CHÍNH XÁC ĐÔI
THỰC Số dấu phẩy động chính xác đơn THỰC
SMALLINT số nguyên 16 bit SMALLINT
NGÀY Ngày (năm, tháng và ngày) NGÀY
THỜI GIAN TIME (giờ, phút và giây) TIME (0)
TIMESTAMP (p) Ngày và giờ với phân số TIMESTAMP (p)
DECFLOAT (16 | 34) IEEE Số dấu phẩy động NỔI

Sự không tương thích trong DB2 và PostgreSQL

Có rất nhiều điểm không tương thích hiện diện trong DB2 và PostgreSQL, bạn có thể xem một số điểm không tương thích tại đây. Bạn có thể tự động hóa chúng bằng cách tạo các phần mở rộng để bạn có thể sử dụng hàm DB2 như trong PostgreSQL và bạn có thể tiết kiệm thời gian của mình. Vui lòng kiểm tra hoạt động của hàm DB2 trong PostgreSQL

TABLESPACE

Mệnh đề TABLESPACE xác định tên của vùng bảng chứa bảng mới tạo.

DB2 sử dụng mệnh đề IN cho TABLESPACE, vì vậy nó nên được thay thế bằng mệnh đề TABLESPACE trong PostgreSQL.

Ví dụ:

DB2:

IN <tablespace_name>

PostgreSQL:

TABLESPACE <tablespace_name>

CHỈ TÌM HIỂU ĐẦU TIÊN

Trong DB2, bạn có thể sử dụng mệnh đề CHỈ FETCH FIRST n ROWS ONLY để truy xuất không quá n hàng. Trong PostgreSQL, bạn có thể sử dụng LIMIT n tương đương với CHỈ TÌM HIỂU N ROWS ĐẦU TIÊN.

Ví dụ:

DB2:

SELECT * FROM EMP
 ORDER BY EMPID
 FETCH FIRST 10 ROWS ONLY;

PostgreSQL:

SELECT * FROM EMP
 ORDER BY EMPID
 LIMIT 10;

ĐƯỢC TẠO BỞI DEFAULT AS IDENTITY

Cột IDENTITY trong DB2 có thể được thay thế bằng cột Serial trong PostgreSQL.

DB2:

CREATE TABLE <table_name> (
<column_name> INTEGER NOT NULL
 GENERATED BY DEFAULT AS IDENTITY (START WITH 1, INCREMENT BY 1, CACHE 20) 
);

PostgreSQL:

CREATE TABLE <table_name> (
<column_name>  SERIAL NOT NULL
);

Chọn từ SYSIBM.SYSDUMMY1

Không có bảng “SYSIBM.SYSDUMMY1” trong PostgreSQL. PostgreSQL cho phép mệnh đề “CHỌN” mà không có “TỪ”. Bạn có thể loại bỏ điều này bằng cách sử dụng tập lệnh.

Chức năng vô hướng:DB2 so với PostgreSQL

TRẦN / TRẦN

CEIL hoặc CEILING trả về giá trị số nguyên nhỏ nhất tiếp theo lớn hơn hoặc bằng giá trị đầu vào (ví dụ:CEIL (122,89) trả về 123, còn CEIL (122,19) trả về 123).

DB2:

SELECT CEIL(123.89) FROM SYSIBM.SYSDUMMY1; 
SELECT CEILING(123.89) FROM SYSIBM.SYSDUMMY1;

PostgreSQL:

SELECT CEIL(123.89) ; 
SELECT CEILING(123.89) ;

NGÀY

Nó chuyển đổi đầu vào thành giá trị ngày tháng. Bạn có thể chuyển đổi hàm DATE thành hàm TO_DATE trong PostgreSQL.

DB2:

SELECT DATE ('2018-09-21') FROM SYSIBM.SYSDUMMY1;

PostgreSQL:

SELECT TO_DATE ('21-09-2018',’DD-MM-YYYY’) ;

NGÀY

Nó trả về phần ngày (ngày trong tháng) của ngày hoặc giá trị tương đương. Định dạng đầu ra là số nguyên.

DB2:

SELECT DAY (DATE('2016-09-21')) FROM SYSIBM.SYSDUMMY1;

PostgreSQL:

SELECT DATE_PART('day', '2016- 09-21'::date);

THÁNG

Nó trả về phần tháng của giá trị ngày. Định dạng đầu ra là số nguyên.

DB2:

SELECT MONTH (DATE('2016-09-21')) FROM SYSIBM.SYSDUMMY1;

PostgreSQL:

SELECT DATE_PART ('month', '2016-09- 21'::date);

POSSTR

Trả về vị trí của chuỗi. Hàm POSSTR được thay thế bằng hàm POSITION trong PostgreSQL.

DB2:

Usage : POSSTR(<Filed_1>,<Field2>)
SELECT POSSTR('PostgreSQL and DB2', 'and') FROM SYSIBM.SYSDUMMY1;

PostgreSQL:

Usage: POSITION(<Field_1> IN<Field_2>)
SELECT POSITION('and' IN'PostgreSQL and DB2');

RAND

Nó trả về một giá trị dấu phẩy động giả ngẫu nhiên trong phạm vi từ 0 đến một. Bạn có thể thay thế hàm RAND thành RANDOM trong PostgreSQL.

DB2:

SELECT RAND() FROM SYSIBM.SYSDUMMY1;

PostgreSQL:

SELECT RANDOM();
Tải xuống Báo cáo chính thức hôm nay Quản lý &Tự động hóa PostgreSQL với ClusterControlTìm hiểu về những điều bạn cần biết để triển khai, giám sát, quản lý và mở rộng PostgreSQLTải xuống Báo cáo chính thức

Công cụ

Bạn có thể sử dụng một số công cụ để di chuyển cơ sở dữ liệu DB2 sang PostgreSQL. Vui lòng kiểm tra công cụ trước khi sử dụng.

  1. Db2topg

    Nó là một công cụ tự động để di chuyển DB2 sang PostgreSQL giống như ora2pg. Các tập lệnh trong công cụ db2pg chuyển đổi càng nhiều càng tốt cơ sở dữ liệu DB2 UDB. Công cụ này không hoạt động với DB2 zOS. Nó rất đơn giản để sử dụng, bạn cần một kết xuất SQL của lược đồ của bạn và sau đó sử dụng tập lệnh db2pg để chuyển đổi nó thành một lược đồ PostgreSQL.

  2. Chuyển đổi hoàn toàn

    Công cụ doanh nghiệp nhanh chóng sao chép cơ sở dữ liệu DB2 sang PostgreSQL. Việc chuyển đổi cơ sở dữ liệu DB2 sang PostgreSQL bằng công cụ Full Convert rất đơn giản.
    Các bước thực hiện:

    • Kết nối với cơ sở dữ liệu nguồn, tức là DB2
    • Tùy chọn:Chọn các bảng bạn muốn chuyển đổi (theo mặc định, tất cả các bảng đã được chọn)
    • Bắt đầu chuyển đổi.

Kết luận

Như chúng ta có thể thấy, việc chuyển từ DB2 sang PostgreSQL không phải là khoa học tên lửa, nhưng chúng ta cần ghi nhớ điều mà chúng ta đã thấy trước đó để tránh các vấn đề lớn trong hệ thống của chúng ta. Vì vậy, chúng tôi chỉ cần cẩn thận trong nhiệm vụ và tiếp tục, bạn có thể chuyển sang cơ sở dữ liệu mã nguồn mở tiên tiến nhất và tận dụng những lợi ích của nó.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để xóa một số hàng cố định với sắp xếp trong PostgreSQL?

  2. Cách tạo người dùng trong PostgreSQL

  3. Làm cách nào để bạn in kết quả của một truy vấn PostgreSQL ở định dạng CSV hoặc TSV từ dòng lệnh?

  4. Cách tính toán phần trăm trong PostgreSQL

  5. chuyển đổi kiểu dữ liệu SET của MySQL thành Postgres