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

Chuẩn bị cho Kỳ thi về Phát triển ứng dụng DB2 9, Phần 1: Các đối tượng cơ sở dữ liệu và các phương pháp lập trình pptx

47 387 1

Đ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

Tiêu đề Chuẩn bị cho Kỳ thi về Phát triển ứng dụng DB2 9, Phần 1: Các đối tượng cơ sở dữ liệu và các phương pháp lập trình
Tác giả Clara Liu
Trường học IBM Toronto Laboratory
Chuyên ngành Phát triển ứng dụng cơ sở dữ liệu
Thể loại Hướng dẫn
Thành phố Toronto
Định dạng
Số trang 47
Dung lượng 338,09 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Chuẩn bị cho Kỳ thi về Phát triển ứng dụng DB2 9, Phần 1: Các đối tượng cơ sở dữ liệu và các phương pháp lập trình Xây dựng nền tảng với những kiến thức cơ sở Clara Liu, Lập kế hoạch s

Trang 1

Chuẩn bị cho Kỳ thi về Phát triển ứng dụng DB2 9, Phần 1: Các đối tượng cơ

sở dữ liệu và các phương pháp lập trình

Xây dựng nền tảng với những kiến thức cơ sở

Clara Liu, Lập kế hoạch sản phẩm DB2, IBM Toronto Laboratory

Tóm tắt: Bạn sẽ được giới thiệu về các kiểu đối tượng cơ sở dữ liệu và các

phương pháp lập trình khác nhau Đây là hướng dẫn đầu tiên trong một loạt bài gồm chín hướng dẫn, sử dụng loạt bài này để trợ giúp chuẩn bị cho kỳ thi lấy chứng chỉ Phát triển ứng dụng của Họ DB2® 9 của IBM® (kỳ thi 733)

Trước khi bạn bắt đầu

Hướng dẫn này gồm những gì?

Hướng dẫn này giới thiệu về các kiểu đối tượng cơ sở dữ liệu và các phương pháp lập trình khác nhau Trong hướng dẫn này, bạn tìm hiểu về:

 Các kiểu đối tượng cơ sở dữ liệu khác nhau

 Mối quan hệ giữa các lược đồ (schema) và các đối tượng cơ sở dữ liệu

 Các khái niệm cơ bản về các thường trình (routine) SQL

 Cơ sở về giao diện lập trình: SQL nhúng động và tĩnh, CLI và ODBC, NET, JDBC và SQLJ, PHP, Perl, Python và XML

 Các lý do bảo đảm an ninh kết hợp với truy cập dữ liệu từ một ứng dụng

Đây là hướng dẫn đầu tiên trong một loạt bài viết gồm chín hướng dẫn mà bạn có thể sử dụng để trợ giúp chuẩn bị cho kỳ thi lấy chứng chỉ Phát triển ứng dụng của

Trang 2

Họ DB2 9 của IBM (kỳ thi 733) Các tài liệu trong hướng dẫn này chủ yếu trình bày các mục tiêu trong Phần 1 của kỳ thi, mang tên "Các đối tượng cơ sở dữ liệu

và các phương pháp lập trình" (Database objects and programming methods)

Bạn không cần một bản sao của DB2 9 để hoàn thành hướng dẫn này Tuy nhiên, nếu bạn muốn, bạn có thể tải về miễn phí bản sao của DB2 Express-C 9 từ trang tải về DB2 Express-C

Ai nên tìm hiểu hướng dẫn này?

Để tham dự kỳ thi “Phát triển ứng dụng họ DB2 9”, bạn đã phải vượt qua được kỳ thi “Căn bản về họ DB2 9” (kỳ thi 730) Bạn có thể sử dụng "Loạt bài hướng dẫn căn bản về họ DB2" (DB2 Family Fundamentals tutorial series) để chuẩn bị cho

kỳ thi đó Đây là loạt bài hướng dẫn rất phổ biến, đã giúp cho nhiều người hiểu các vấn đề căn bản về họ các sản phẩm DB2

Mặc dù không phải tất cả các tư liệu được thảo luận trong loạt bài hướng dẫn căn bản về họ DB2 đều là cần thiết để hiểu các khái niệm được mô tả trong hướng dẫn này, bạn cần phải có một kiến thức cơ sở về:

 Các cá thể DB2

 Các cơ sở dữ liệu

 Các đối tượng cơ sở dữ liệu

 An ninh DB2

Trang 3

Hướng dẫn này là một trong những công cụ có thể trợ giúp bạn chuẩn bị cho Kỳ thi 733 Bạn cũng nên xem lại phần Tài nguyên ở phần cuối của hướng dẫn này để biết thêm thông tin về các đối tượng cơ sở dữ liệu và các phương pháp lập trình

Các đối tượng cơ sở dữ liệu DB2

Các đối tượng cơ sở dữ liệu cơ bản

Các đối tượng cơ sở dữ liệu là các khối nền tảng của một cơ sở dữ liệu DB2 cung cấp các kiểu đối tượng cơ sở dữ liệu khác nhau để lưu trữ và biểu diễn các thông tin khác nhau Các đối tượng này có thể được được tạo ra, được sửa đổi và bị loại

bỏ bằng cách sử dụng database definition language (DDL-Ngôn ngữ định nghĩa

cơ sở dữ liệu ) Để thao tác các đối tượng này, bạn sử dụng database manipulation language (DML- Ngôn ngữ thao tác cơ sở dữ liệu), trong đó bao gồm các câu lệnh

SELECT (Chọn), UPDATE (Cập nhật), INSERT (chèn) và DELETE (Xóa) Một

số các đối tượng cơ sở dữ liệu thường được sử dụng phổ biến là:

Trang 4

Ngoài các các đối tượng cơ sở dữ liệu được giới thiệu trong các hướng dẫn căn bản về họ DB2, có nhiều đối tượng khác mà nhiều nhà phát triển thấy là có ích khi phát triển các ứng dụng DB2 Hướng dẫn này giới thiệu các đối tượng ấy trong phần này

Một lưu ý trước khi bạn tiến hành: Trong các ví dụ mà bạn sẽ thấy ở đây, các tên đối tượng được chỉ rõ bằng chữ thường Bất kể nền tảng DB2 đang chạy là gì, nó

sẽ luôn luôn lưu giữ các tên bằng chữ hoa, trừ khi tên của một mã nhận dạng

(identifier) được bao quanh bởi cặp dấu nháy kép ("")

Ví dụ, câu lệnh sau tạo ra một bảng gọi là employee (nhân viên - chữ thường) với

các định nghĩa của cột giống như bảng EMPLOYEE (chữ hoa)

CREATE TABLE "employee" LIKE employee

Các biệt danh

Một biệt danh (alias) là một tên thay thế cho một bảng, một khung nhìn hoặc biệt

hiệu hiện có Một biệt danh cũng có thể dùng như là một tên thay thế cho một biệt danh khác Giống như các đối tượng, một biệt danh có thể được tạo ra hoặc bị hủy

bỏ và nó có thể có các lời chú thích có liên quan với nó Dưới đây là một vài ví dụ

về các câu lệnh CREATE ALIAS:

Trang 5

CREATE ALIAS aliastab1 FOR tab1;

CREATE ALIAS bob.aliastab1 FOR tom.tab1;

CREATE SYNONYM bob.aliastab2 FOR bob.aliastab1;

Như bạn có thể thấy, câu lệnh CREATE ALIAS khá đơn giản Bạn có thể tạo một biệt danh trong cùng một lược đồ như là đối tượng nguồn (giống như trong dòng đầu tiên) hoặc tạo tên biệt danh phân biệt đầy đủ (giống như trong dòng thứ hai) Việc sử dụng từ khóa SYNONYM thay cho ALIAS (giống như trong dòng thứ ba) cho tương thích với DB2 cho zSeries cũng là hợp lệ

Không đòi hỏi phải được cấp quyền hoặc có quyền ưu tiên đặc biệt nào để sử dụng các biệt danh Tuy nhiên, bạn cần được cấp quyền thích hợp đối với các đối tượng nền bên dưới đang được tham chiếu Để tìm một danh sách đầy đủ các đặc quyền đối với các đối tượng cơ sở dữ liệu, hãy xem hướng dẫn thi chứng chỉ DBA DB2

có tên "Quản lý máy chủ" (Server management (developerWorks, 06.2006)

Chúng tôi đã nói ở trên rằng các biệt danh cũng có thể được tạo ra cho các biệt

hiệu (nicknames) Các biệt hiệu là các đối tượng cơ sở dữ liệu tham chiếu đến các

bảng dữ liệu hoặc các khung nhìn được đặt trên hệ thống liên hiệp (federated systems) Tuy nhiên, sự hỗ trợ với cơ sở dữ liệu liên hiệp nằm ngoài phạm vi của hướng dẫn này

Để thêm một lời chú thích cho một biệt danh, hay đưa ra câu lệnh này:

Trang 6

COMMENT ON aliastab1 IS 'My first alias on tab1'

Để loại bỏ một biệt danh, sử dụng câu lệnh DROP, giống như bạn sẽ làm với bất

kỳ đối tượng cơ sở dữ liệu khác:

DROP ALIAS aliastab1

Các đối tượng chuỗi

Một chuỗi (sequence) là một đối tượng cơ sở dữ liệu cho phép sinh ra các giá trị tự

động Không giống như một cột mã nhận dạng, bị ràng buộc với một bảng cụ thể, một chuỗi là một đối tượng toàn cục và độc lập, có thể được sử dụng bởi bất kỳ bảng nào trong cùng một cơ sở dữ liệu

Một cột mã nhận dạng là một loại đối tượng chuỗi cụ thể Do đó, các đặc điểm của các cột mã nhận dạng cũng áp dụng cho các đối tượng chuỗi Ví dụ về một câu lệnh CREATE SEQUENCE được minh họa dưới đây:

Liệt kê 1 Câu lệnh CREATE SEQUENCE

Trang 7

CREATE SEQUENCE myseq AS INTEGER

Như được hiển thị trong Liệt kê 1 ở trên, bạn có thể tùy chỉnh một đối tượng chuỗi bằng cách chỉ rõ giá trị bắt đầu của nó Trong ví dụ này, giá trị đầu tiên cho chuỗi này là 360 Việc tạo ra các giá trị trong chuỗi được kiểm soát bởi mệnh đề

INCREMENT BY Các hằng số dương và âm được hỗ trợ để tạo ra các giá trị chuỗi tăng lên và giảm xuống

Theo mặc định, các giá trị nhỏ nhất và lớn nhất do một chuỗi tạo ra bị ràng buộc bởi sự giới hạn của kiểu dữ liệu chuỗi Ví dụ, một giá trị chuỗi INTEGER (số nguyên) phải nằm trong khoảng từ -2.147.483.647 đến 2.147.483.647 Bạn có thể tìm thấy các giới hạn của tất cả các kiểu dữ liệu số trong Hướng dẫn tham khảo

Trang 8

SQL DB2 (xem Tài nguyên) Để thay đổi hành vi này, hãy sử dụng các tùy chọn MINVALUE (giá trị nhỏ nhất) và MAXVALUE (giá trị lớn nhất) để thiết lập một ranh giới cho các giá trị được tạo ra Nếu các giá trị nhỏ nhất hoặc lớn nhất đã đạt tới, một tùy chọn khác, được gọi là CYCLE hay NO CYCLE, (theo chu kỳ hay không theo chu kỳ), có thể được sử dụng để chỉ rõ xem liệu các giá trị chuỗi có nên được tái sử dụng lại hay không Lưu ý rằng khi CYCLE có hiệu lực, các giá trị sao đúp có thể được tạo ra cho chuỗi

Tùy chọn bộ nhớ đệm (CACHE) cho phép DB2 duy trì một số các giá trị đã được cấp phát trước trong bộ nhớ để cải thiện hiệu năng CACHE 20 là hành vi mặc định Có một điều cần nhớ về tùy chọn này: Nếu DB2 bị dừng lại trước khi tất cả các giá trị đã ghi nhớ sẵn được sử dụng, mọi giá trị đã ghi nhớ sẵn và không sử dụng sẽ bị loại bỏ Khi DB2 được khởi động lại, khối các giá trị tiếp theo được tạo

ra và được ghi nhớ sẵn, như vậy sẽ tạo ra khoảng hẫng giữa các giá trị Nếu ứng dụng của bạn không cho phép có các khoảng hẫng giá trị, hãy cân nhắc việc sử dụng tùy chọn NOCACHE (không bộ đệm) để thay thế

Nếu không sử dụng việc ghi nhớ đệm, hiệu năng có thể xấu đi đáng kể đối với tốc

độ tạo số chuỗi cao Một bản ghi nhật ký được viết lại mỗi khi một giá trị mới được tạo ra Kết quả là, sẽ hiệu quả hơn nếu nhận được các giá trị thông qua một yêu cầu và ghi nhớ sẵn chúng vào bộ nhớ

Bạn có thể thay đổi các đặc điểm của một đối tượng chuỗi bằng câu lệnh ALTER SEQUENCE Tất cả các thông số cài đặt được thảo luận ở trên có thể được thay đổi, trừ kiểu dữ liệu của giá trị chuỗi Để có sơ đồ cú pháp đầy đủ, hãy xem

Hướng dẫn tham khảo SQL DB2 (xem Tài nguyên)

Việc hủy bỏ một đối tượng chuỗi cũng giống như hủy bỏ bất kỳ đối tượng cơ sở

dữ liệu khác nào Từ khóa RESTRICT ở cuối của câu lệnh ngăn cho chuỗi khỏi bị

Trang 9

hủy bỏ nếu có tồn tại bất kỳ sự phụ thuộc nào Đây là hành vi mặc định Bạn có thể chọn chỉ định rõ ràng từ khóa RESTRICT trong câu lệnh đó

DROP SEQUENCE myseq RESTRICT

Tạo và lấy ra các giá trị chuỗi

Một chuỗi là một kiểu đối tượng cơ sở dữ liệu; do vậy, việc truy cập của nó cũng

được kiểm soát bởi các đặc quyền Theo mặc định, chỉ có người tạo lập (creator) chuỗi, SYSADM và DBADM có các đặc quyền USAGE trên đối tượng đó Nếu bạn muốn những người dùng khác sử dụng chuỗi đó, bạn cần phải sử dụng câu lệnh sau:

GRANT USAGE ON SEQUENCE seq_object_name TO PUBLIC

Nếu bạn muốn thay đổi các thuộc tính của một đối tượng chuỗi, thì bạn cần có đặc quyền ALTER trên đối tượng đó:

GRANT ALTER ON SEQUENCE seq_object_name TO GROUP group_name

Trang 10

Hãy xem hướng dẫn thi chứng chỉ DBA DB2 có tên là "Quản lý máy chủ" để tìm hiểu thêm về an ninh DB2

Hai biểu thức được cung cấp để tạo ra và lấy ra các giá trị chuỗi Biểu thức NEXT

VALUE FOR seq-name được sử dụng để nhận được giá trị chuỗi tiếp theo, trong khi biểu thức PREVIOUS VALUE FOR seq-name được sử dụng để lấy ra giá trị

chuỗi cuối cùng đã được tạo ra Các ví dụ trong Liệt kê 2 dưới đây minh họa việc

sử dụng các biểu thức này

Liệt kê 2 Các biểu thức NEXT VALUE FOR và PREVIOUS VALUE FOR

INSERT INTO t1 VALUES (NEXT VALUE FOR myseq, 'BOB'); INSERT INTO t1 VALUES (NEXT VALUE FOR myseq, 'PAT');

COMMIT;

INSERT INTO t1 VALUES (NEXT VALUE FOR myseq, 'GENE');

ROLLBACK;

INSERT INTO t1 VALUES (NEXT VALUE FOR myseq, 'PAUL');

VALUES PREVIOUS VALUE FOR myseq INTO :hostvar

Giả sử rằng bạn bắt đầu với một bảng t1 trống rỗng và giá trị chuỗi tiếp theo của myseq là 1 Sau khi các câu lệnh ở trên được thi hành, với tùy chọn autocommit (tự động cam kết) bị tắt, t1 chứa các hàng sau đây:

Trang 11

Câu lệnh cuối cùng trong Liệt kê 2 ở trên cho thấy biểu thức PREVIOUS VALUE

có thể được sử dụng như thế nào Biến chủ :hostvar lưu trữ giá trị cuối cùng được tạo ra trong phiên làm việc hiện tại Nếu bạn muốn giữ lại bất kỳ giá trị nào đã được tạo ra trước đó, bạn nên lưu lại các giá trị trước đó trước khi tạo ra một giá trị tiếp sau

Các bảng tạm thời

Trang 12

Như tên của chúng gợi ý, các bảng tạm thời (temporary tables) không phải là các

đối tượng cơ sở dữ liệu cố định Một bảng tạm thời hoạt động giống như một bảng bình thường, ngoại trừ rằng không phải tất cả các tính năng và các tùy chọn đều được hỗ trợ hoặc phải có Nó chỉ tồn tại trong khoảng thời gian kết nối Khi kết nối được đóng lại, tất cả các bảng tạm thời được khai báo trong nó sẽ được tự động loại bỏ

Chỉ có phiên làm việc hay ứng dụng khai báo một bảng tạm thời sẽ có quyền truy cập vào nó Nếu hai ứng dụng tạo ra một bảng tạm thời có cùng tên, mỗi cá thể của bảng đó là duy nhất Vì vậy, bạn không cần phải lo lắng về một sự xuất hiện của kịch bản xung đột dữ liệu tạm thời; vì một bảng tạm thời chỉ cho phép truy cập một kết nối, việc khóa là không cần thiết Đây là một trong những lợi ích hoạt động chính của các bảng tạm thời

Khai báo các bảng tạm thời

Để khai báo các bảng tạm thời, một vùng bảng (tablespace) tạm thời USER phải tồn tại để lưu trữ định nghĩa và nội dung của bảng tạm thời (Một vùng bảng tạm thời USER là khác với một vùng bảng tạm thời SYSTEM, cái sau chỉ được DB2

sử dụng một cách nội bộ để thực hiện các hoạt động, ví dụ như sắp xếp thứ tự) Câu lệnh đơn giản dưới đây tạo ra một vùng bảng tạm thời USER:

CREATE USER TEMPORARY TABLESPACE usertempspace

MANAGED BY SYSTEM USING ('usertempspace')

Trang 13

Một số các mệnh đề tùy chọn được hỗ trợ khi khai báo một bảng tạm thời toàn cầu Các ví dụ trong Liệt kê 3 minh họa hoạt động của chúng:

Liệt kê 3 Các mệnh đề tùy chọn được hỗ trợ với bảng tạm thời toàn cầu

DECLARE GLOBAL TEMPORARY TABLE t_dept

( deptid CHAR(6), deptname CHAR(20) )

ON COMMIT PRESERVE ROWS

NOT LOGGED ON ROLLBACK DELETE ROWS

IN usertempspace

Trong ví dụ trong Liệt kê 3, bảng tạm thời t_dept được khai báo có hai cột Mệnh

đề ON COMMIT PRESERVE ROWS cho biết khi một hoạt động COMMIT được thực hiện, các hàng trong bảng tạm thời sẽ được duy trì

Ví dụ trên chỉ rõ rằng những thay đổi với bảng không được ghi nhật ký lại (NOT LOGGED) Điều này có nghĩa là bất cứ các hoạt động chèn, cập nhật hoặc xóa đối với bảng không được ghi lại Tuy nhiên, việc tạo ra và loại bỏ bảng được ghi lại Nếu bảng được tạo ra trong một đơn vị làm việc và sau đó cuộn ngược lại, thì bảng tạm thời sẽ bị loại bỏ Mặt khác, nếu bảng bị loại bỏ trong một đơn vị làm việc, thì bảng đó sẽ được phục hồi lại mà không có bất kỳ hàng nào

Trang 14

Bạn không cần phải sử dụng mệnh đề IN để chỉ rõ vùng bảng tạm thời của người

sử dụng mà bảng tạm thời này sẽ sử dụng vùng bảng đó Nếu bạn không định rõ thông tin này, DB2 sẽ tìm kiếm một vùng bảng phù hợp nhất Nếu không tìm thấy một vùng bảng tạm thời của người sử dụng, DB2 sẽ đưa ra một lỗi

Hãy xem xét một ví dụ khác:

Liệt kê 4 Khai báo bảng tạm thời toàn cầu

DECLARE GLOBAL TEMPORARY TABLE t_proj

LIKE project

ON COMMIT PRESERVE ROWS

WITH REPLACE

IN usertempspace

Bảng tạm thời t_proj được khai báo với từ khóa LIKE, do đó, nó có cùng một định

nghĩa cột như là bảng cố định hay khung nhìn có tên là dự án (project) Mệnh đề

ON COMMIT PRESERVE ROWS cho biết rằng tất cả các hàng trong bảng tạm thời sẽ được lưu giữ tại COMMIT Vì vậy, chúng sẽ có sẵn để xử lý tiếp tục trong giao dịch tiếp sau

Trước khi bạn có thể khái báo bảng tạm thời khác có cùng tên trong cùng một phiên làm việc, bảng tạm thời phải được loại bỏ Điều này có thể được thực hiện hoặc dứt khoát hoặc với tùy chọn WITH REPLACE như được hiển thị trong Liệt

Trang 15

kê 4 Với tùy chọn WITH REPLACE, DB2 xóa hoàn toàn tất cả các dữ liệu, loại

bỏ bảng tạm thời và tạo lại nó với các định nghĩa mới

Tùy chọn WITH REPLACE trở nên rất dễ dùng khi được sử dụng liên hợp với

việc tạo nhóm kết nối (connection pooling) Việc tạo nhóm kết nối là một cơ chế

để sử dụng lại các kết nối cơ sở dữ liệu, sao cho các tài nguyên không được cấp phát hoặc hủy cấp phát theo yêu cầu Các hoạt động này khá tốn kém, đặc biệt là khi có một số lượng lớn các kết nối có thực hiện các giao dịch tương đối ngắn Do các kết nối không được giải phóng, có thể là các bảng tạm thời được sử dụng trước

đó không được xóa hết Ứng dụng tiếp theo sử dụng kết nối có thể lấy phải các dữ liệu còn sót lại từ việc thi hành trước đó Vì vậy, việc sử dụng tùy chọn WITH REPLACE đảm bảo rằng bảng tạm thời được khai báo sẽ được làm mới với định nghĩa mới

Các lược đồ và các đối tượng cơ sở dữ liệu

Hầu hết các các đối tượng cơ sở dữ liệu được xác định bởi một lược đồ và một tên đối tượng Một lược đồ cơ sở dữ liệu cung cấp một phân loại logic các đối tượng

cơ sở dữ liệu Dưới đây là một số ví dụ về các tên đối tượng có hai phần:

DB2ADMIN.EMPLOYEE

HRPROD.AUDIT_VIEW

HRPROD.AUDIT_TRIG

Trang 16

Nếu một lược đồ không được chỉ rõ khi truy cập vào một đối tượng cơ sở dữ liệu,

mã nhận dạng người dùng được sử dụng để thiết lập kết nối cơ sở dữ liệu sẽ được thiết lập như là lược đồ mặc định Ví dụ, nếu người sử dụng db2admin kết nối vào một cơ sở dữ liệu và tạo ra một bảng T1, DB2 sẽ tạo ra một bảng gọi là

db2admin.T1 Tất cả các câu lệnh SQL tiếp sau có tham khảo một bảng T1 có tên không phân biệt đủ, được phân giải đến db2admin.T1

Sổ đăng ký đặc biệt của DB2: CURRENT SCHEMA

Như bạn có thể đã phát hiện ra trong hoạt động cơ sở dữ liệu của bạn, không phải lúc nào cũng khả thi để kết nối đến một cơ sở dữ liệu với mã nhận dạng (ID) của người sử dụng mà tên người dùng (username) của nó cũng là lược đồ của các đối tượng mà bạn muốn thao tác Việc mã hóa cứng (hard-coding) một ứng dụng dùng các tên phân biệt đầy đủ của các đối tượng cũng không phải là giải pháp tốt nhất May mắn thay, DB2 cho phép bạn thay đổi lược đồ hiện tại bằng cách sử dụng lệnh SET CURRENT SCHEMA Theo mặc định, sổ đăng ký đặc biệt CURRENT SCHEMA DB2 được thiết lập theo USER được kết nối vào cơ sở dữ liệu Khi bạn thay đổi CURRENT SCHEMA, bất kỳ các đối tượng cơ sở dữ liệu có tên không phân biệt đầy đủ nào được gắn tiếp đầu ngữ với giá trị mới

Lược đồ hiện tại có thể nhận được bằng lệnh này:

Các đối tượng cơ sở dữ liệu cho phát triển ứng dụng DB2

Trang 17

Các thường trình

Trong phần này, bạn sẽ tìm hiểu về một vài kiểu đối tượng cơ sở dữ liệu nữa Các

đối tượng này được gọi chung là các thường trình (routines) Có ba kiểu chức năng chính của thường trình: các thủ tục được lưu sẵn (stored procedures), các hàm (functions) và các phương thức (methods) (Để biết thêm chi tiết về sự khác

nhau giữa các kiểu này, hãy xem phần dưới đây có tên là "Các thủ tục được lưu sẵn, các hàm và các phương thức")

Các thường trình là các đối tượng cơ sở dữ liệu gói kín logic lập trình và logic cơ

sở dữ liệu có liên quan đến một nhiệm vụ cụ thể Bằng cách sử dụng có hiệu quả các thường trình, bạn có thể làm đơn giản hóa mã ứng dụng của bạn và làm tăng khả năng sử dụng lại mã Ví dụ, nếu logic nghiệp vụ nào đó được gói kín trong một thường trình, các thay đổi quy tắc nghiệp vụ ấy sẽ chỉ ảnh hưởng đến thường trình cụ thể đó Kết quả là, các sự thay đổi ứng dụng có thể được làm giảm tối thiểu

Các thường trình được định nghĩa và được xử lý tại máy chủ cơ sở dữ liệu Điều này cho phép một ứng dụng khai thác sức mạnh của máy chủ cơ sở dữ liệu trong khi làm giảm tải xử lý cần thiết tại phía khách Thông thường, một logic nghiệp vụ phức tạp đưa ra nhiều câu lệnh SQL Các câu lệnh này được gửi đi riêng biệt từ máy khách đến máy chủ, dẫn đến lưu lượng mạng cao nếu như có rất nhiều hoạt động của cơ sở dữ liệu Nếu các hoạt động này được bắt giữ trong một thường trình, thì lưu lượng mạng giữa các máy khách và các máy chủ có thể được làm giảm đáng kể, do đó cải thiện hiệu năng ứng dụng tổng thể

Khả năng để thắt chặt an ninh là một lợi thế quan trọng khác của việc sử dụng các thường trình Các thường trình có thể được dùng để che dấu sự truy cập trực tiếp vào các đối tượng cơ sở dữ liệu nằm bên dưới Chỉ cần gọi một thường trình với

Trang 18

đặc quyền EXECUTE; không có đặc quyền rõ ràng nào cho các các đối tượng cơ

sở dữ liệu nằm bên dưới

Các triển khai thực hiện thường trình khác nhau

Một số cách triển khai thực hiện các thường trình có khả năng là:

Các thường trình gắn kèm (built-in) đi cùng với hệ thống DB2 Chúng

được định nghĩa trong các lược đồ hệ thống như SYSIBM, SYSPROC, SYSFUN

và SYSTOOLS

Các thường trình có nguồn gốc (sourced) chỉ áp dụng cho các hàm Một

hàm có nguồn gốc sao chép chính xác các ngữ nghĩa của hàm khác

Các thường trình bên ngoài (external) được triển khai thực hiện trong một

ngôn ngữ lập trình bên ngoài Bạn có thể phát triển các thường trình trong các ngôn ngữ được hỗ trợ sau:

Trang 19

Các thường trình SQL Các thường trình SQL được triển khai thực hiện

trong SQL Procedural Language (SQL PL - Ngôn ngữ thủ tục SQL) SQL PL DB2

là một tập con của chuẩn ngôn ngữ SQL Persistent Stored Modules (SQL/PSM - Các mô đun SQL được lưu trữ lâu dài) Tiêu chuẩn này là cơ sở cho các ngôn ngữ lập trình có cấu trúc được sử dụng với SQL để viết các thủ tục được lưu sẵn, các hàm và các phương thức Nó kết hợp việc dễ dàng truy cập dữ liệu của SQL với cấu trúc kiểm soát luồng của một ngôn ngữ lập trình đơn giản Đây là lý do chính tại sao SQL PL lại phổ biến đến vậy

Các thủ tục được lưu sẵn, các hàm và các phương thức

Các thủ tục được lưu sẵn (Stored procedures) là các đối tượng cơ sở dữ liệu có

chứa các chương trình chuyên dụng để truy cập và sửa đổi dữ liệu trong một hoặc nhiều bảng Trong một thủ tục được lưu sẵn, bạn có thể bao bọc nhiều câu lệnh SQL với logic luồng Chúng dùng như các mở rộng của thường trình con

(subroutine) cho các ứng dụng khách hay các thường trình khác Chúng được thi hành và được quản lý dưới sự kiểm soát của một hệ quản lý cơ sở dữ liệu quan hệ (RDBMS)

Các hàm (Functions) các mở rộng SQL mà bạn có thể tùy chỉnh Chúng được gọi

từ bên trong các câu lệnh SQL như các danh sách chọn (select-list) hoặc các mệnh

đề FROM Có bốn kiểu hàm: aggregate, scalar, row và table

Các thủ tục được lưu sẵn thường được sử dụng để gói kín logic ứng dụng phức tạp

và thực hiện các hoạt động cơ sở dữ liệu nặng, chẳng hạn như các phép nối nhiều bảng và các thao tác con trỏ Mặt khác, các hàm đặc biệt là các hàm SQL thường có chứa các hoạt động đơn giản hơn Các câu lệnh được mã hóa trong các

Trang 20

hàm SQL được khai triển vào trong và thi hành với các câu lệnh SQL tham chiếu chúng Điều này làm cho các câu lệnh được biên dịch động tại thời điểm thi hành Nếu một hàm SQL phức tạp được sử dụng trong một câu lệnh SQL, DB2 yêu cầu tài nguyên bổ sung để biên dịch nó và tạo ra một kế hoạch truy cập dữ liệu Điều này có thể ảnh hưởng đến hiệu năng thời gian chạy tổng thể

Một phương thức ( method ) bao kín logic để cung cấp hành vi hoạt động cho các

kiểu dữ liệu có cấu trúc, chứa một hay nhiều thuộc tính có tên, mỗi một thuộc tính lại có kiểu dữ liệu riêng của nó

Sổ đăng ký đặc biệt của DB2: CURRENT PATH

Giống như hầu hết các đối tượng cơ sở dữ liệu DB2, một tên thường trình đầy đủ gồm có một lược đồ và một tên thường trình Sổ đăng ký đặc biệt DB2 được giới thiệu ở phần trên trong hướng dẫn này, CURRENT SCHEMA (nó cũng được thảo luận ở trên trong phần có tên là "Sổ đăng ký đặc biệt DB2: CURRENT SCHEMA

"), phân giải các lược đồ cho hầu hết các đối tượng cơ sở dữ liệu, nhưng không phải cho các thường trình Thay vào đó, DB2 bố trí một thường trình bằng việc sử dụng một sổ đăng ký đặc biệt CURRENT PATH

Bạn có thể nhận được các giá trị cài đặt CURRENT PATH với lệnh này:

VALUES CURRENT PATH

Trang 21

Đường dẫn mặc định chứa ba lược đồ hệ thống, tiếp theo sau là người sử dụng hiện tại được kết nối vào cơ sở dữ liệu Ví dụ:

"SYSIBM","SYSFUN","SYSPROC","DB2ADMIN"

Dưới đây là một vài ví dụ về các thủ thuật mà bạn có thể sử dụng để cập nhật PATH:

Liệt kê 5 Cập nhật PATH: Ví dụ 1

SET PATH=CURRENT PATH,"USER2"

VALUES CURRENT PATH

-

"SYSIBM","SYSFUN","SYSPROC","DB2ADMIN","USER2"

1 record(s) selected

Liệt kê 6 Cập nhật PATH: Ví dụ 2

SET PATH=SYSTEM PATH,"USER2"

Trang 22

VALUES CURRENT PATH

Trang 23

nhúng Phương pháp lập trình này là trực tiếp vì chương trình được nhúng các câu

lệnh SQL tương tác trực tiếp với DB2 Các chương trình có thể được viết bằng bất

kỳ các ngôn ngữ lập trình nào được hỗ trợ sau đây:

Bạn cấu trúc các câu lệnh SQL nhúng của bạn phụ thuộc vào ngôn ngữ lập trình

mà bạn chọn như thế nào Các câu lệnh SQL nhúng trong C/C++ và FORTRAN được gắn tiếp đầu ngữ với từ khóa EXEC SQL:

EXEC SQL SELECT lastname,empid INTO :hostvar1, :hostvar2

FROM employee WHERE deptno="OPERATIONS";

Các câu lệnh SQL nhúng trong COBOL là rất giống với các câu lệnh được mã hóa trong C/C++, ngoại trừ từ khóa END-EXEC là bắt buộc ở phần cuối của câu lệnh:

EXEC SQL SELECT lastname,empid INTO :hostvar1, :hostvar2

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

HÌNH ẢNH LIÊN QUAN

Hình 1 đưa ra một sự so sánh nhanh giữa các môi trường CLI DB2 và ODBC: - Chuẩn bị cho Kỳ thi về Phát triển ứng dụng DB2 9, Phần 1: Các đối tượng cơ sở dữ liệu và các phương pháp lập trình pptx
Hình 1 đưa ra một sự so sánh nhanh giữa các môi trường CLI DB2 và ODBC: (Trang 35)
Hình 2. Sự hỗ trợ của DB2 cho ADO.NET - Chuẩn bị cho Kỳ thi về Phát triển ứng dụng DB2 9, Phần 1: Các đối tượng cơ sở dữ liệu và các phương pháp lập trình pptx
Hình 2. Sự hỗ trợ của DB2 cho ADO.NET (Trang 38)
Hình 3. Trình điều khiển DB2 IBM cho JDBC và SQLJ - Chuẩn bị cho Kỳ thi về Phát triển ứng dụng DB2 9, Phần 1: Các đối tượng cơ sở dữ liệu và các phương pháp lập trình pptx
Hình 3. Trình điều khiển DB2 IBM cho JDBC và SQLJ (Trang 40)
Hình 4. PHP giao diện với DB2 - Chuẩn bị cho Kỳ thi về Phát triển ứng dụng DB2 9, Phần 1: Các đối tượng cơ sở dữ liệu và các phương pháp lập trình pptx
Hình 4. PHP giao diện với DB2 (Trang 42)
Hình 5. Trình điều khiển Perl DB2 - Chuẩn bị cho Kỳ thi về Phát triển ứng dụng DB2 9, Phần 1: Các đối tượng cơ sở dữ liệu và các phương pháp lập trình pptx
Hình 5. Trình điều khiển Perl DB2 (Trang 43)
Hình 6. API Python DB 2.0 giao diện với DB2 - Chuẩn bị cho Kỳ thi về Phát triển ứng dụng DB2 9, Phần 1: Các đối tượng cơ sở dữ liệu và các phương pháp lập trình pptx
Hình 6. API Python DB 2.0 giao diện với DB2 (Trang 43)
Hình 7. Các công nghệ XML - Chuẩn bị cho Kỳ thi về Phát triển ứng dụng DB2 9, Phần 1: Các đối tượng cơ sở dữ liệu và các phương pháp lập trình pptx
Hình 7. Các công nghệ XML (Trang 45)

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm