1. Trang chủ
  2. » Công Nghệ Thông Tin

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

33 411 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 33
Dung lượng 2,55 MB

Nội dung

DB2 9.7: Chạy các ứng dụng Oracle trên DB2 9.7 cho Linux, UNIX và Windows DB2 9.7 cung cấp cho các ứng dụng đã phát triển trên Oracle một sự gắn kết chặt chẽ với sự hỗ trợ PL/SQL và nhi

Trang 1

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

Windows

DB2 9.7 cung cấp cho các ứng dụng đã phát triển trên Oracle một sự gắn kết chặt chẽ với sự hỗ trợ PL/SQL và nhiều hơn nữa

Serge Rielau, Kiến trúc sư SQL, STSM, IBM Toronto Lab

Tóm tắt: IBM® DB2® 9.7 cho Linux®, UNIX® và Windows® có sự hỗ trợ sẵn

sàng cho các phương ngữ SQL của Oracle và PL/SQL Điều này cho phép nhiều ứng dụng đã viết theo Oracle được thực hiện theo DB2 Trong bài viết này, hãy đón nhận một tổng quan mức cao về khả năng tương thích Oracle có nghĩa là gì trong DB2 Cho dù bạn muốn chuyển ứng dụng tùy chỉnh của bạn sang DB2 hoặc

mở rộng sự hỗ trợ của nhà cung cấp DBMS của bạn sang DB2, thì bây giờ là lúc của bạn

Mục lục

 Động lực

 DB2 9.7 bổ sung thêm các tính năng tương thích của Oracle

 Điều khiển tương tranh

 Các kiểu dữ liệu mới

 Tạo khuôn mẫu ẩn và độ phân giải kiểu

 Thư viện hàm lập sẵn mở rộng trong DB2

Trang 2

 Hỗ trợ phương ngữ Oracle SQL

 DB2 hỗ trợ cho PL/SQL

 DB2 cung cấp các gói lập sẵn phổ biến

 Các phần mở rộng JDBC cho riêng Oracle

 Sự hỗ trợ của kịch bản lệnh SQL*Plus khi sử dụng CLPPlus

đ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"

Trang 3

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

Trang 4

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

DB2 9.7 bổ sung thêm các tính năng tương thích của Oracle

Để cho phép một ứng dụng được viết cho một RDBMS chạy trên nền khác gần như không cần thay đổi, nhiều đoạn mã phải nằm đúng vị trí Các cơ chế khóa, các kiểu dữ liệu, SQL, ngôn ngữ theo thủ tục khác nhau nằm trên máy chủ và thậm chí

cả các giao diện khách hàng được chính ứng dụng sử dụng cần phải được liên kết không chỉ theo cú pháp, mà còn theo ngữ nghĩa

Tất cả các bước này đã được thực hiện trong DB2 Các thay đổi là ngoại lệ, không phải là quy luật (IBM có thể nhanh chóng đánh giá các thay đổi của ứng dụng cần thiết) Bảng 1 cung cấp một tổng quan ngắn gọn về các tính năng thường được sử dụng:

Bảng 1 Các tính năng thường được sử dụng

Trang 5

cho cả hai DB2 và Oracle

Nói cách khác, việc cho phép một ứng dụng Oracle chuyển sang DB2 không trở nên phức tạp hơn việc kích hoạt một Chương trình-C được viết cho HP-UX để chạy trên AIX

Điều khiển tương tranh

Trong quá khứ, một trong những sự khác biệt nổi bật nhất giữa Oracle và DB2 là cách tiếp cận để kiểm soát điều khiển tương tranh Các cụm từ dễ nhớ là: "Những

Trang 6

người đọc không cản trở những người viết và những người viết không cản trở những người đọc"

Bảng 2 Hành vi tương tranh của Oracle

Giao dịch đang chờ xử lý Hành vi Giao dịch mới

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ý

Trang 7

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

Hóa ra là không có lý do ngữ nghĩa nào là tại sao một giao dịch đang chạy dưới sự

cách ly CS lại chờ kết quả khi gặp phải một hàng đã thay đổi Một hành vi thỏa đáng tương tự là đọc các phiên bản đã cam kết hiện tại của dòng đã thay đổi

Hành vi này đã được thực hiện trong DB2 9.7 Điều đã xảy ra là DB2 đơn giản lấy

ra phiên bản hiện đã cam kết hiện tại của một hàng bị khóa từ nhật ký (log) Trong hầu hết các trường hợp chung, hàng đó vẫn còn nằm trong bộ đệm log do sự thay

đổi này vẫn chưa được cam kết Nhưng ngay cả khi hàng đã được viết ra và cũng

đã bị ghi đè trong bộ đệm log DB2 sẽ biết chính xác tìm nó ở đâu, để cho một IO

sẽ đưa phiên bản mong muốn vào nhóm bộ đệm (bufferpool)

Hãy tưởng tượng (xem Hình 2) một người dùng đang cập nhật một tên trong một bảng nhân viên Trước khi người dùng đó đã cam kết thay đổi, một người dùng khác quét bảng này Theo truyền thống, người sử dụng thứ hai sẽ phải đợi cho

người sử dụng đầu tiên cam kết hoặc khôi phục (rollback) Nhờ đọc dữ liệu đã

Trang 8

cam kết hiện tại, hoạt động quét của người dùng thứ hai sẽ đơn giản lấy ra phiên

bản của hàng từ bộ đệm log mà nó không chứa các thay đổi của người sử dụng đầu tiên

Hình 2 Những người viết không ngăn chặn những người đọc

Đ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

Trang 9

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

Như bạn thấy, các hành vi tương tranh bây giờ giống hệt với các hành vi của

Oracle Thực tế, cơ sở dữ liệu DB2 vừa mới được tạo ra thể hiện hành vi này theo mặc định

Các kiểu dữ liệu mới

Tâm điểm của mỗi cơ sở dữ liệu là dữ liệu của nó Các kiểu không khớp hoặc các ngữ nghĩa của các kiểu này không khớp có thể tác động đến khả năng cho phép một ứng dụng chuyển sang ứng dụng RDBMS khác Do đó để cho phép các ứng dụng Oracle chạy trên DB2, điều quan trọng là phải hỗ trợ các kiểu cơ sở không tiêu chuẩn, như là chuỗi, các ngày tháng và các số Ngoài việc điều chỉnh các kiểu

Trang 10

cơ sở này, có các kiểu khác, phức tạp hơn được sử dụng phổ biến trong PL/SQL của Oracle, nó đã được thêm vào trong DB2 9.7

Bảng 5 Các kiểu dữ liệu DB2 mới

NUMBER

Sự hỗ trợ NUMBER và NUMBER (p [, s]) đã được thêm vào dựa trên DECFLOAT (với bản tăng tốc phần cứng Power6) và số thập phân (DECIMAL)

VARCHAR2

Hoạt động của kiểu VARCHAR2 bao gồm các chuỗi rỗng đang được hiểu như là NULL và kéo theo sự đối chiếu phân biệt khoảng trống

Oracle DATE Một cơ sở dữ liệu trong chế độ DATE bao gồm thành phần

TIME ngoài ngày tháng của lịch

TIMESTAMP(n) Thang đo phân số của giây có thể được chọn bất kỳ giữa 0 (ngày

+ thời gian) lên đến 12 (pico giây)

BOOLEAN 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 để

Trang 11

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ố

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

Trang 12

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 tiên

Để bổ sung thêm việc tạo khuôn mẫu ẩn, DB2 cũng hỗ trợ việc tạo mặc định các tham số thủ tục cũng như kết hợp các đối số cho các tham số theo tên

Thư viện hàm lập sẵn mở rộng trong DB2

Tất cả các RDBMS cung cấp các thư viện của các hàm để hoạt động trên dữ liệu Vấn đề là không có hai hàm sử dụng cùng tên, ngay cả khi cuối cùng chức năng là rất giống nhau

Ngoài việc tập các hàm truyền thống của riêng mình, DB2 bây giờ hỗ trợ một thư viện tương thích với Oracle Danh sách sau cung cấp một tổng quan ngắn gọn, chưa phải đầy đủ:

Hàm biến đổi và hàm khuôn mẫu

o TO_DATE

o TO_CHAR

Trang 14

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

Trang 15

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

Bảng DUAL Một bảng một hàng, một cột đã sử dụng khắp nơi trong các ứng

dụng Oracle như là một bù nhìn (dummy)

Trang 16

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

Trang 17

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 Runtime Engine) của DB2 Điều quan trọng cần lưu

ý là các công cụ theo dõi và phát triển như Optim Development Studio được gắn vào trong DB2 ở mức máy chạy thời gian thực

Trang 18

 Các nhà cung cấp ứng dụng đóng gói có thể sử dụng một mã nguồn dựa vào

cả Oracle lẫn DB2

 Cả PL/SQL và SQL PL đều đưa ra mã máy ảo như nhau cho SQL Unified Runtime Engine của DB2 Do đó, theo thiết kế, cả PL/SQL lẫn SQL PL thực hiện ở cùng một tốc độ

Trang 19

 Do hạ tầng của trình gỡ rối gắn trực tiếp vào SQL Unified Runtime Engine, nên PL/SQL được hỗ trợ tự nhiên bởi Optim Development Studio

Hình 4 minh hoạ một phiên gỡ rối PL/SQL Trình gỡ rối này hỗ trợ các tính năng tiêu chuẩn như bước vào, bước ra và các điểm ngắt (breakpoint) Ngoài ra, nó cho phép người dùng thay đổi các biến PL/SQL tại chỗ trong khi chương trình đang chạy

Trang 21

 các vòng lặp while

 := 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

Trang 22

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:

Ngày đăng: 07/08/2014, 09:22

HÌNH ẢNH LIÊN QUAN

Hình 1 mô tả bằng một sơ đồ Venn cách các phương ngữ SQL chồng lên nhau: - DB2 9.7: Chạy các ứng dụng Oracle trên DB2 9.7 cho Linux, UNIX và Windows pdf
Hình 1 mô tả bằng một sơ đồ Venn cách các phương ngữ SQL chồng lên nhau: (Trang 3)
Hình 2. Những người viết không ngăn chặn những người đọc - DB2 9.7: Chạy các ứng dụng Oracle trên DB2 9.7 cho Linux, UNIX và Windows pdf
Hình 2. Những người viết không ngăn chặn những người đọc (Trang 8)
Hình 3. Hỗ trợ trình biên dịch PL/SQL - DB2 9.7: Chạy các ứng dụng Oracle trên DB2 9.7 cho Linux, UNIX và Windows pdf
Hình 3. Hỗ trợ trình biên dịch PL/SQL (Trang 18)
Hình 4. Hỗ trợ trình gỡ rối PL/SQL trong DB2 - DB2 9.7: Chạy các ứng dụng Oracle trên DB2 9.7 cho Linux, UNIX và Windows pdf
Hình 4. Hỗ trợ trình gỡ rối PL/SQL trong DB2 (Trang 20)
Hình 5. Công cụ CLPLus tương thích-SQL*Plus - DB2 9.7: Chạy các ứng dụng Oracle trên DB2 9.7 cho Linux, UNIX và Windows pdf
Hình 5. Công cụ CLPLus tương thích-SQL*Plus (Trang 26)
Hình 7. Kéo và thả các lược đồ Oracle vào DB2 khi sử dụng IBM Data - DB2 9.7: Chạy các ứng dụng Oracle trên DB2 9.7 cho Linux, UNIX và Windows pdf
Hình 7. Kéo và thả các lược đồ Oracle vào DB2 khi sử dụng IBM Data (Trang 28)
Hình 8. Công cụ báo cáo MEET DB2 cho việc đánh giá - DB2 9.7: Chạy các ứng dụng Oracle trên DB2 9.7 cho Linux, UNIX và Windows pdf
Hình 8. Công cụ báo cáo MEET DB2 cho việc đánh giá (Trang 30)
Hình 9. Tỷ lệ trung bình 98% cho các câu lệnh được hỗ trợ - DB2 9.7: Chạy các ứng dụng Oracle trên DB2 9.7 cho Linux, UNIX và Windows pdf
Hình 9. Tỷ lệ trung bình 98% cho các câu lệnh được hỗ trợ (Trang 31)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w