DB2 9.7: Chạy các ứng dụng Oracle trên DB2 9.7 cho Linux, UNIX và Windows - Pdf 11

DB2 9.7: Chạy các ứng dụng Oracle trên DB2
9.7 cho Linux, UNIX và Windows
Động lực
Tháng 3 vừa rồi, tại một cuộc thuyết trình CeBIT mà tôi đã tổ chức về DB2 9.7, tôi đã đốt cháy
một bộ loa máy tính 110V do tôi đã không thận trọng cắm nó vào lưới điện 230V của nước Đức
mà không cho qua một biến áp. Trong cùng chuyến đi đó, tôi cũng đã phá hỏng bộ sạc điện cho
bàn chải đánh răng chạy điện của tôi và máy cạo râu của tôi với các sự cố tương tự. Bỏ qua sự
bất lực của tôi như là bài học từ các sai lầm sang một bên, việc này xảy ra như không có gì bất
ngờ đúng như một trong các câu châm ngôn yêu thích của tôi (không rõ nguồn gốc) là "Vấn đề
với các tiêu chuẩn là có bao nhiêu tiêu chuẩn".
Trong thế giới của các hệ thống quản lý cơ sở dữ liệu quan hệ (RDBMS), chúng tôi may mắn có
ít nhất ba tiêu chuẩn chính và vô số các sự thay đổi theo các tiêu chuẩn đó:
 ANSI SQL và ANSI SQL/PSM
 Oracle SQL và PL/SQL
 Sybase và Microsoft TSQL
Hình 1 mô tả bằng một sơ đồ Venn cách các phương ngữ SQL chồng lên nhau:

Hình 1. Sự hỗ loạn Babylon của SQL

Bất cứ khi nào bạn viết một ứng dụng, bạn phải tiến hành lựa chọn sử dụng nhà cung cấp
RDBMS nào. Một khi bạn đã thực hiện sự lựa chọn đó, về cơ bản bạn được cam kết. Bất kỳ cố
gắng nào để chuyển đổi các nhà cung cấp để tận dụng giá thấp hơn, công nghệ tốt hơn hoặc quan
hệ đối tác tốt hơn bị cản trở do mã thừa kế cần được viết lại nhiều hơn, trước khi nó có thể được
dùng với một RDBMS khác. Ngoài ra, bộ kỹ năng của bạn không thể chuyển từ một sản phẩm
này sang một sản phẩm khác dễ dàng như bạn mong đợi.
IBM DB2 9.7 cho Linux, UNIX và Windows (DB2) nhằm hạ thấp đáng kể những rào cản này
cho các ứng dụng được viết cho Oracle khi cho phép các ứng dụng đó chuyển sang DB2. Điều
này cung cấp cho các khách hàng và các nhà cung cấp khả năng lựa chọn một DBMS đựa theo
sự xuất sắc của nó, chứ không theo lịch sử ứng dụng.
Về đầu trang
DB2 9.7 bổ sung thêm các tính năng tương thích của Oracle

Giao dịch đang chờ xử lý Hành vi Giao dịch mới
Ngư
ời đọc không ngăn chặn
Ngư
ời đọc
Ngư
ời đọc không ngăn chặn
Ngư
ời viết
Ngư
ời viết không ngăn chặn
Ngư
ời đọc
Ngư
ời viết ngăn chặn
Ngư
ời viết
Không đi vào chi tiết về các mức cô lập, chỉ cần nói rằng đa số các ứng dụng có sử dụng Sự cô
lập mức câu lệnh (Statement Level Isolation) mặc định của Oracle sẽ chỉ làm việc tốt khi sử dụng
mặc định của DB2 về Sự ổn định của con trỏ (Cursor Stability-CS).
Tuy nhiên, theo truyền thống, CS đã được triển khai sao cho những người viết ngăn chặn những
người đọc và trong một số trường hợp, những người đọc có thể ngăn chặn những người viết. Lý
do là ở chỗ, theo truyền thống, một giao dịch dưới sự cô lập CS sẽ "chờ kết quả" của các thay đổi
của một giao dịch tương tranh đang chờ xử lý.

Bảng 3. Hành vi tương tranh của DB2 truyền thống với CS
Giao dịch đang chờ xử lý Hành vi Giao dịch mới
Ngư
ời đọc không ngăn chặn
Ngư

Điều quan trọng cần lưu ý rằng hành vi này:
 Không đưa vào đối tượng mới nào như là một đoạn khôi phục.
 Không có chi phí hiệu năng nào cho người viết do log cần phải được viết không theo hệ
thống.
 Không thể gây ra bất cứ tình hình nào như một "bản chụp quá cũ" vì trong trường hợp
không chắc có xảy ra tệp log cần thiết đã được lưu trữ (trong khi một giao dịch vẫn còn
mở!), DB2 chỉ đơn giản sẽ khôi phục lại và đợi khóa để đi tiếp.
Ngoài những thay đổi này, các kỹ thuật tránh phải thêm khóa đã được đưa vào DB2 để loại bỏ
một người đọc đang nắm giữ một khóa theo chế độ cô lập CS.

Bảng 3. Hành vi tương tranh của DB2 mới với CS
Giao dịch đang chờ xử lý Hành vi Giao dịch mới
Ngư
ời đọc không ngăn chặn
Ngư
ời đọc
Ngư
ời đọc
không ngăn chặnNgư
ời viết
Ngư
ời viết
không ngăn chặn
Ngư
ời đọc
Ngư
ời viết ngăn chặn

Kiểu này có thể được sử dụng trong logic thủ tục, các biến và các tham số cho
các thường trình.
VARRAY
Sự hỗ trợ mảng (ARRAY) trong các thủ tục đã được mở rộng để hỗ trợ các
phương thức kiểu dáng VARRAY và cú pháp.
INDEX BY
Ngoài các m
ảng thông thường, DB2 cũng hỗ trợ các mảng kết hợp.
ROW TYPE
Kiểu hỗn hợp này có thể được sử dụng trong các biến và các tham số và như là
một phần tử cho các mảng và các mảng kết hợp.
Ref Cursor type
Các con trỏ có thể được gán cho các biến hoặc chuyển qua xung quanh khi sử
dụng các tham số.
Về đầu trang
Tạo khuôn mẫu ẩn và độ phân giải kiểu
"Nếu nó đi như một con vịt và nó nói như vịt, thì sau đó nó phải là một con vịt".
"Nếu nó đi như một con vịt và nó nói như vịt, thì sau đó nó phải là một con vịt". Đây là câu thần
chú của nhiều ngôn ngữ mới như PHP và Ruby. Mỗi chữ là một chuỗi và sau đó sử dụng như
một kiểu khác dựa vào ngữ cảnh. Trung thành với tiêu chuẩn SQL và đi theo triết lý là sự không
khớp về kiểu có thể là lỗi mã hóa, Theo truyền thống DB2 đã đi theo các quy tắc định kiểu mạnh,
mà các chuỗi và các số không thể được so sánh ở đó, trừ khi các chuỗi và các số này là khuôn
mẫu rõ ràng đối với các chuỗi và các số khác.
Thật không may, khi một ứng dụng Oracle sử dụng cách định kiểu yếu trong SQL của nó, ứng
dụng đó đã quên biên dịch theo DB2 từ trước. Trong DB2 9.7, việc tạo khuôn mẫu ẩn (hay định
kiểu yếu) đã được thêm vào. Đó là, các chuỗi và các con số có thể được so sánh, gán và hoạt
động theo một cách rất linh hoạt.
Ngoài ra, các NULL không định kiểu có thể được sử dụng ở nhiều vị trí, trong khi các dấu tham
số không định kiểu có thể được sử dụng hầu như ở bất kỳ đâu, nhờ việc sẵn sàng làm theo. Đó
là, DB2 sẽ không giải quyết kiểu của một dấu tham số cho đến khi nó đã thấy giá trị thực tế đầu

o NVL
o DECODE
o LEAST
o GREATEST
o BITAND
Sự chồng lấn đã tăng đáng kể trong các hàm được hỗ trợ giữa hai sản phẩm hàm ý một sự thành
công của hộp bên ngoài được cải thiện rất nhiều cho phép một ứng dụng Oracle chuyển sang
DB2.
Về đầu trang
Hỗ trợ phương ngữ Oracle SQL
Bài viết này, cho đến nay, đã trình bày sự tương tranh, các kiểu dữ liệu, định kiểu và các hàm.
Tuy nhiên, các khác biệt giữa Oracle và DB2 vẫn còn tiếp. Các kết cấu thực sự của các phương
ngữ SQL, các từ khóa và các ngữ nghĩa của chúng khác nhau trong một số lĩnh vực. Mỗi sản
phẩm cũng hỗ trợ một số tính năng mà các sản phẩm đơn giản khác không có. Khi các tính năng
này là phổ biến, chúng hạn chế khả năng gửi đi SQL chung đối với cả hai sản phẩm. Trong số
nhiều cải tiến ngôn ngữ nhỏ và lớn, Bảng 6 liệt kê một số điểm nổi bật:

Bảng 6. Hỗ trợ SQL mới
Tính năng Mô tả
Đệ qui
CONNECT
BY
DB2, cho đến nay, đã hỗ trợ một lệnh đệ qui ANSI SQL. Bây giờ CONNECT BY
theo định dạng Oracle đã được thêm, gồm các hàm khác nhau và các cột giả
(pseudocolumns) như LEVEL và CONNECT_BY_PATH.
Cú pháp (+)
join

Cú pháp này thực sự bị Oracle ngăn cản, nhưng có nhiều ứng dụng và các nhà
phát triển những người vẫn còn sử dụng dạng này của cú pháp OUTER JOIN.

Câu lệnh bảng
TRUNCATE
Câu lệnh này nhanh chóng xóa các nội dung của một bảng toàn bộ mà không
thực hiện các bộ kích hoạt.
Độ phân giải
tên tự nhiên
DB2 9.7 không yêu cầu các khung nhìn nội tuyến. Ngoài ra, các tên cột có thể
dễ dàng thừa kế từ các toán tử set (tập hợp) như UNION.
Điều này hoàn thành tổng quan về các thay đổi được thực hiện với DB2 để cho các ứng dụng
Oracle gửi đi SQL dựa vào cơ sở dữ liệu có thể chạy hầu như không thay đổi. Tuy nhiên, có các
phần chính của nhiều ứng dụng đang thực hiện tại chính máy chủ. Ngôn ngữ lựa chọn phía máy
chủ cho các ứng dụng Oracle là PL/SQL. Không có sự khẳng định nào về tính tương thích có thể
được thực hiện nghiêm túc mà không có sự hỗ trợ cho PL/SQL.
Về đầu trang
DB2 hỗ trợ cho PL/SQL
Thông thường, khi một ứng dụng đang được chuyển từ một sản phẩm này sang một sản phẩm
khác, ngôn ngữ SQL và ngôn ngữ thủ tục được dịch từ một phương ngữ SQL sang phương ngữ
khác. Điều này đặt ra một số vấn đề:
 Mã dịch kết quả có xu hướng rắc rối do tự động hóa và sự không phối hợp đồng bộ giữa
phương ngữ nguồn và phương ngữ đích.
 Các nhà phát triển ứng dụng không quen thuộc với phương ngữ SQL đích. Điều đó làm
cho nó khó gỡ rối mã đã gửi đi. Theo thời gian, việc bảo trì tiếp theo trở thành một sự
thách thức do sự thiếu các kỹ năng.
 Trong trường hợp của các ứng dụng đóng gói, việc dịch cần phải được lặp lại cho mỗi
bản phát hành mới của ứng dụng.
 Cuối cùng, kết quả là một bản mô phỏng, theo định nghĩa thì nó chạy chậm hơn so với
bản ban đầu.
Để tránh những vấn đề này, DB2 9.7 có hỗ trợ PL/SQL riêng. Điều này có nghĩa là gì?
Như bạn thấy trong Hình 3, máy DB2 bây giờ gồm một trình dịch PL/SQL bên cạnh trình biên
dịch SQL PL. Cả hai trình biên dịch tạo mã máy ảo cho Máy chạy thực thống nhất SQL (Unified

 := phép gán.
 các biến và hằng cục bộ.
 #PRAGMA EXCEPTION và xử lý các trường hợp ngoại lệ.
 Các dạng khác nhau cho các vòng lặp (phạm vi, con trỏ và truy vấn).
 %TYPE and %ROWTYPE giữ chặt các biến và các tham số cho các đối tượng khác.
 Các giao dịch #PRAGMA AUTONOMOUS, cho phép các thủ tục nào thực thi trong một
giao dịch riêng.
Hỗ trợ đối tượng PL/SQL
Có thể sử dụng PL/SQL trong các đối tượng khác nhau cho phép logic thủ tục:
 Các hàm vô hướng.
 Trước các bộ kích hoạt của mỗi hàng.
 Sau các bộ kích hoạt của mỗi hàng.
 Các thủ tục.
 Các khối ẩn danh.
 Các gói PL/SQL.
Hỗ trợ các gói PL/SQL
Hầu hết PL/SQL trong các ứng dụng Oracle được chứa trong cái gọi là Các gói (PACKAGE).
Một gói PL/SQL —không lẫn với một gói DB2— là một bộ sưu tập của các đối tượng riêng với
khả năng phân biệt giữa các đối tượng có thể truy cập bên ngoài và những đối tượng chỉ là các
trình trợ giúp để sử dụng bên trong gói. ANSI SQL tương đương với một gói được gọi là
MODULE. Bây giờ DB2 cung cấp hỗ trợ cho các mô đun SQL ANSI cũng như các gói PL/SQL.
Đặc biệt, cung cấp các khả năng sau đây:
 GÓI TẠO [HOẶC THAY THẾ] (CREATE [OR REPLACE] PACKAGE), xác định các
mẫu ban đầu cho các thường trình nhìn thấy bên ngoài. Nó cũng xác định tất cả các đối
tượng không theo thủ tục, nhìn thấy bên ngoài, như các biến và các kiểu.
 THÂN GÓI TẠO [HOẶC THAY THẾ] (CREATE [OR REPLACE] PACKAGE
BODY), triển khai thực hiện tất cả các thường trình riêng và chung cũng như tất cả các
đối tượng riêng khác.
 Trong một gói hoặc thân gói, các đối tượng sau đây có thể được định nghĩa:
o Các biến và các hằng số.

Về đầu trang
Các phần mở rộng JDBC cho riêng Oracle
JDBC là một giao diện khách hàng Java chuẩn. Tuy nhiên, có các phần mở rộng đã được thêm
vào trình điều khiển JDBC của Oracle để hỗ trợ các kiểu dữ liệu không theo tiêu chuẩn riêng.
Để tối đa hóa mức độ tương thích với các ứng dụng dựa trên công nghệ Java, trình điều khiển
DB2 9.7 JDBC cung cấp cùng với vài thứ khác, sự hỗ trợ cho các thủ tục gọi với con trỏ tham
chiếu và các tham số VARRAY.
Về đầu trang
Sự hỗ trợ của kịch bản lệnh SQL*Plus khi sử dụng CLPPlus
Đôi khi các kịch bản lệnh DDL và ngay cả các báo cáo được viết bằng cách sử dụng bộ xử lý
dòng lệnh SQL*Plus. Để thuận tiện cho việc chuyển các kịch bản lệnh này cũng như các kỹ năng
của người phát triển đang viết chúng, DB2 cung cấp một bộ xử lý dòng lệnh tương thích-
SQL*Plus, được gọi là CLPPlus. Công cụ này có các chức năng sau:
 Các tuỳ chọn lệnh tương thích-SQL*Plus.
 Thay thế biến.
 Tạo định dạng cột.
 Các hàm lập báo cáo.
 Các biến điều khiển.

Hình 5. Công cụ CLPLus tương thích-SQL*Plus

Về đầu trang
Cho phép DB2 kéo và thả càng dễ dàng càng tốt
Do sự liên kết chặt chẽ của DB2 với PL/SQL và Oracle SQL, bây giờ không cần thiết có một bộ
công cụ chuyển dịch phức tạp. Thay vào đó, bạn có thể sử dụng Công cụ dịch chuyển dữ liệu của
IBM (IBM Data Movement Tool) để đơn giản kéo và thả các bảng, các gói hoặc toàn bộ các lược
đồ từ Oracle sang DB2. Chỉ cần các điều chỉnh tối thiểu trên cơ sở ngoại lệ hoặc di chuyển một
ứng dụng sang DB2, hoặc sửa đổi một ứng dụng sao cho cùng một nguồn có thể hoạt động dựa
vào cả DB2 và cả Oracle.
Các bước có thể đơn giản như:


Về đầu trang
Đánh giá sự hỗ trợ cho DB2
Để cho phép ứng dụng của bạn chuyển sang DB2 9.7 dễ dàng vậy sao? Câu trả lời đương nhiên
là, còn tùy. IBM có một công cụ bên trong có tên là MEET DB2, có thể phân tích tất cả các đối
tượng trong cơ sở dữ liệu Oracle của bạn và cho điểm nó. Nó tạo một báo cáo về cái sẽ thực hiện
và nơi cần điều chỉnh. Đại diện tài khoản IBM của bạn hoặc đầu mối bán hàng có thể chạy tiện
ích này để giúp cung cấp nhanh chóng một đánh giá về khả năng tương thích của cơ sở dữ liệu
Oracle hiện tại của bạn với DB2.

Hình 8. Công cụ báo cáo MEET DB2 cho việc đánh giá

Trong giai đoạn thử nghiệm beta một năm của bản DB2 9.7, nhiều ứng dụng với hơn 750.000
dòng mã PL/SQL đã được phân tích chi tiết với tỷ lệ chuyển đổi sử dụng được ngay trung bình là
90 đến 99%.

Hình 9. Tỷ lệ trung bình 98% cho các câu lệnh được hỗ trợ


Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status