Khả năng tương thích SQL trong DB2 9.7

Từ các tri-gơ đến các cải tiến đối tượng: trình diễn các tính năng tương thích Oracle mới.

Từ các tri-gơ đến các cải tiến đối tượng, bài viết này trình diễn các tính năng tương thích Oracle mới trong DB2 9.7.

Anil Mahadev, Tư vấn độc lập, Freelance Consultant

Anil Mahadev là một nhà vô địch về dữ liệu IBM và là thành viên của Ban Giám đốc của Diễn đàn IDUG Ấn Độ. Ông hiện đang làm việc như một nhà tư vấn độc lập ở Bengaluru, Ấn Độ, và đang khám phá việc triển khai thực hiện cơ sở dữ liệu, phân cụm Windows, tính sẵn sàng cao, và chiến lược cho các nền tảng và các ứng dụng đa cơ sở dữ liệu.



21 11 2011

Lời kêu gọi tất cả các nhà phát triển! bạn có các kỹ năng cơ sở dữ liệu Oracle không? Bạn có muốn bạn có thể sử dụng lại kiến thức và mã PL/SQL của mình trên nền tảng cơ sở dữ liệu khác không?

IBM DB2 cho Linux, UNIX, và Windows (LUW) đã có một sự thay đổi dáng vẻ bên ngoài. Được dẫn dắt bởi các yêu cầu của khách hàng hiện tại và tương lai cho các cải tiến tiết kiệm chi phí, nên bản phát hành mới nhất, DB2 9.7, chứa đựng một loạt công nghệ mới trong các lĩnh vực quen thuộc như tự trị (tự quản lý) và Nén sâu (xem "DB2 9.7: về vấn đề này). Tuy nhiên, điều đáng nói là một bộ sưu tập các khả năng tập trung vào khả năng tương thích SQL. Những tính năng này làm cho DB2 dễ dàng được chấp nhận là phần mềm cơ sở dữ liệu của bạn để cho bạn có thể lợi dụng các đặc tính tiết kiệm chi phí và hiệu năng cao của nó, ngay cả khi hiện nay bạn đang quen thuộc với các cơ sở dữ liệu cạnh tranh khác.

Trong bài viết này tôi sẽ cho thấy các ví dụ về một số các tính năng tương thích SQL mới trong DB2 9.7. Chúng ta sẽ bắt đầu với các tri-gơ và các kiểu dữ liệu mới, rồi chuyển sang sự hỗ trợ cho Oracle SQL và PL/SQL, và kết thúc bằng một cuộc thảo luận về cải tiến đối tượng và tương tranh. Có một thứ gì đó cho tất cả mọi người khi DB2 "trở nên tương thích".

Để bắt đầu, hãy kết nối với cửa sổ CLP Plus (Command Line Processor Plus – Bộ xử lý dòng lệnh +) (xem Hình 1), thay thế "db2admin" bằng tài khoản đăng nhập đã chọn của bạn:
clpplus db2admin@localhost:50000/sample

Tương thích SQL

Bước đầu tiên trong việc sử dụng các tính năng tương thích SQL trong DB2 9.7 là cho phép tham số DB2_COMPATIBILITY_VECTOR. Việc thiết lập db2set DB2_COMPATIBILITY_VECTOR=ORA cho phép các tính năng tương thích SQL liên quan đến Oracle đối với tất cả cơ sở dữ liệu được tạo ra tiếp sau đó. Để giải thích một số trong các tham số quan trọng nhất được DB2_COMPATIBILITY_ VECTOR sử dụng, hãy xem Bảng 1.

Để cho phép tính năng này, bạn phải có các quyền quản trị. Hãy nhập các lệnh sau tại cửa sổ lệnh DB2:

db2set DB2_COMPATIBILITY_VECTOR=ORA
db2stop
db2start

Để tạo một cơ sở dữ liệu đơn giản, hãy nhập: db2 create database [dbname]. Sau đó, bạn có thể kết nối với cơ sở dữ liệu này bằng cách nhập:
db2 connect to [dbname];

Bước tiếp theo là tạo các bảng bằng cách sử dụng các kiểu dữ liệu Oracle. Nhập vào câu lệnh CREATE TABLE sau đây bằng cách sử dụng hoặc cửa sổ CLP Plus vào hoặc IBM Data Studio:
Create table employee (EMPNO NUMBER(5), ENAME VARCHAR2(50), DEPTNO NUMBER(5))

Hình 1: Trong DB2 9.7, giao diện CLP Plus cho phép bạn thử các tính năng tương thích SQL.
Hình 1: Trong DB2 9.7, giao diện CLP Plus cho phép bạn thử các tính năng tương thích SQL.

Các tính năng PL/SQL

Bây giờ chúng ta sẽ khám phá những tính năng cho phép bạn tạo ra các thủ tục PL/SQL. DB2 9.7 hỗ trợ như sau:

  • Các gói do người dùng định nghĩa
  • Các thủ tục/các hàm/các khối ẩn danh trong PL/SQL
  • Các gói dựng sẵn (DBMS_OUT.PUT_LINE, DBMS_PIPE, DBMS_UTL, và v.v..)
  • Các mảng kết hợp (INDEX BY)
  • Varrays
  • Triggers (Các tri-gơ)
  • %ROWTYPE
  • %TYPE
  • EXCEPTIONS (Các trường hợp ngoại lệ)
  • Ref-Cursors (Các con trỏ-tham chiếu)

Lưu ý rằng sự hỗ trợ PL/SQL chỉ có sẵn trong Enterprise Server Edition và Workgroup Edition (Ấn bản máy chủ doanh nghiệp và ấn bản Nhóm làm việc) của DB2 9.7 cho LUW. PL/SQL không được hỗ trợ trong DB2 Express-C, DB2 Express, hoặc DB2 Personal Edition (Ấn bản cá nhân của DB2).


Các thủ tục PL/SQL trong DB2

DB2 hỗ trợ nhiều ngôn ngữ PL/SQL. Chúng ta hãy xem cách các thủ tục này làm việc với một số mã mẫu. Một khi được biên dịch và được thực hiện, thủ tục PL/SQL sẽ hiển thị một thông báo chào mừng cho người dùng. Để xem kết quả đầu ra trên bàn điều khiển, trước tiên hãy ban hành lệnh SET SERVEROUTPUT ON.

CREATE OR REPLACE PROCEDURE message_proc (myname varchar2)
IS
BEGIN
DBMS_OUTPUT.PUT_LINE('Welcome to DB2 9.7 ( )! ' || myname
|| '. Now supports for ORACLE SQL and PL /SQL as well :-)!');
END message_proc;

Để gọi thủ tục PL/SQL này trong DB2, ban hành các lệnh sau đây:

EXEC proc_name
EXEC message_proc('Anil');

Dưới đây là một ví dụ sử dụng một vòng lặp FOR:

BEGIN
FOR a IN 10 .. 20 LOOP
DBMS_OUTPUT.PUT_LINE('Counter ' || a);
END LOOP;
END;

Vòng lặp này sẽ tạo ra kết quả đầu ra sau đây:

Counter 10
Counter 20


Lệnh cắt ngắn bảng

Một số trong các bạn quen nền tảng cơ sở dữ liệu Oracle nhiều khả năng đã sử dụng lệnh TRUNCATE TABLE (cắt ngắn bảng) ở đâu đó trong sự nghiệp của mình. Bây giờ DB2 cũng hỗ trợ lệnh này. Các mã sau đây tạo ra một bảng đơn giản, thêm các hàng vào nó, và sau đó sử dụng lệnh TRUNCATE để loại bỏ tất cả các hàng khỏi bảng này:

CREATE TABLE CLIENTS
(CLIENTID NUMBER(5) PRIMARY KEY NOT NULL,CLIENTNAME
VARCHAR2(50));

Chèn một vài hàng vào:

INSERT INTO CLIENTS (CLIENTID, CLIENTNAME) VALUES (1,'IBM');
INSERT INTO CLIENTS VALUES (2,'MSFT');
INSERT INTO CLIENTS VALUES (3,'EDB');

Bảng 1: Các giá trị DB2_COMPATIBILITY_VECTOR
Bảng 1: Các giá trị DB2_COMPATIBILITY_VECTOR

Chúng ta hãy nhìn vào các hàng:

SELECT * FROM CLIENTS;

Bây giờ ban hành lệnh sau để cắt các hàng này:

TRUNCATE TABLE CLIENTS;

Hãy chứng tỏ rằng chúng đã thực hiện xong:

SELECT * FROM CLIENTS;

Bạn sẽ không có hàng nào được hiển thị.


Các cải tiến đối tượng và tương tranh

Tôi muốn kết thúc bằng cách nhắc đến hai cải tiến quan trọng với DB2 9.7 có thể tiết kiệm thời gian cho bạn và tăng hiệu năng: xác nhận hợp lệ sử dụng lần đầu, và một trạng thái khóa mặc định mới.

Xác nhận hợp lệ sử dụng lần đầu
Bất cứ khi nào các đối tượng cơ sở dữ liệu cơ bản (các bảng, các khung nhìn, các thủ tục, các hàm, và v.v..) bị thay đổi, lần sau khi một đối tượng được lấy ra với các đối tượng phụ thuộc của nó, nó sẽ được tự động xác nhận hợp lệ lại. Điều này chắc chắn sẽ tiết kiệm thời gian cho các nhà phát triển ứng dụng. Việc kiểm tra phụ thuộc tự động được thực hiện bất cứ khi nào một đối tượng bị thay đổi.

Đọc dữ liệu đã giao kết hiện tại (mặc định trong DB2)
Trong phiên bản trước của DB2, đã không có khả năng xảy ra việc một người dùng cố gắng đọc và một người dùng cố gắng viết lên cùng một hàng trong cùng một lúc. Điều này dựa trên nguyên tắc rằng người đọc chờ kết quả viết sắp xảy ra. Hiện nay DB2 9.7 sử dụng trạng thái khóa-mặc định để cho người đọc sẽ không phải chờ kết quả viết sắp xảy ra. Thay vào đó, họ sẽ đọc phiên bản hiện tại đã giao kết của hàng. Do đó, những người đọc không chặn những người viết nữa và những người viết cũng không chặn những người đọc.

Tôi rất ấn tượng bởi những tính năng tương thích SQL mới này. Tôi mới chỉ có thể bàn sơ qua trong bài viết này Vì vậy, tôi khuyến khích bạn thử với DB2 9.7. Bạn sẽ không phải thất vọng!


Tài nguyên

Thông tin chung về DB2 của IBMCác công nghệ DB2 sắp tới

Bình luận

developerWorks: Đăng nhập

Các trường được đánh dấu hoa thị là bắt buộc (*).


Bạn cần một ID của IBM?
Bạn quên định danh?


Bạn quên mật khẩu?
Đổi mật khẩu

Bằng việc nhấn Gửi, bạn đã đồng ý với các điều khoản sử dụng developerWorks Điều khoản sử dụng.

 


Ở lần bạn đăng nhập đầu tiên vào trang developerWorks, một hồ sơ cá nhân của bạn được tạo ra. Thông tin trong bản hồ sơ này (tên bạn, nước/vùng lãnh thổ, và tên cơ quan) sẽ được trưng ra cho mọi người và sẽ đi cùng các nội dung mà bạn đăng, trừ khi bạn chọn việc ẩn tên cơ quan của bạn. Bạn có thể cập nhật tài khoản trên trang IBM bất cứ khi nào.

Thông tin gửi đi được đảm bảo an toàn.

Chọn tên hiển thị của bạn



Lần đầu tiên bạn đăng nhập vào trang developerWorks, một bản trích ngang được tạo ra cho bạn, bạn cần phải chọn một tên để hiển thị. Tên hiển thị của bạn sẽ đi kèm theo các nội dung mà bạn đăng tải trên developerWorks.

Tên hiển thị cần có từ 3 đến 30 ký tự. Tên xuất hiện của bạn phải là duy nhất trên trang Cộng đồng developerWorks và vì lí do an ninh nó không phải là địa chỉ email của bạn.

Các trường được đánh dấu hoa thị là bắt buộc (*).

(Tên hiển thị cần có từ 3 đến 30 ký tự)

Bằng việc nhấn Gửi, bạn đã đồng ý với các điều khoản sử dụng developerWorks Điều khoản sử dụng.

 


Thông tin gửi đi được đảm bảo an toàn.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=70
Zone=Information Management
ArticleID=775896
ArticleTitle=Khả năng tương thích SQL trong DB2 9.7
publish-date=11212011