Hiển thị các bài đăng có nhãn Database Security/Administration. Hiển thị tất cả bài đăng
Hiển thị các bài đăng có nhãn Database Security/Administration. Hiển thị tất cả bài đăng

Thứ Bảy, 1 tháng 10, 2011

Chạy XQuery - P12

XQuery là một ngôn ngữ để truy vấn và định dạng dữ liệu XML. 

>>> Các bài viết liên quan P11  P10  P9  P8  P7  P6  P5  P4  P3  P2  P1
>>> Sách để nghiên cứu: DB2 Express-C 9.7

Đặc tính của pureXML cho phép tài liệu XML được lưu giữ theo cấu trúc phân cấp nguyên thủy của chúng bên trong bảng, chứ không bị chuyển đổi sang dạng văn bản hoặc các định dạng khác. 

Do XML có cách bài trí phi tuyến tính và không thể đoán trước được, có thể sử dụng XQuery để phân tích cú pháp nhanh và tìm ra đường dẫn khớp với các tiêu chuẩn của bạn. XQuery dựa trên cơ sở các biểu thức sẽ được đánh giá để cho kết quả là một giá trị. Có nhiều loại biểu thức có thể được xây dựng từ các từ khóa XQuery, ký hiệu và toán hạng. 

DB2 chấp nhận từ khóa XQUERYnhư một dấu hiệu rằng theo sau đó là một biểu thức XQuery. Với XQuery trong DB2 bạn có thể gọi một trong hai hàm sau để thu được dữ liệu XML: db2-fn:sqlquery và db2-fn:xmlcolumn. Một ví dụ của mỗi hàm được trình bày trong bài tập này. Lưu ý rằng các giá trị được trả lại này không nhất thiết phải là tài liệu XML hoàn thiện.

DB2 9 cũng đưa ra Developer Workbench với trình tạo XQuery (XQuery builder) để giúp bạn xây dựng các truy vấn đến các cột XML nếu bạn không quen với cú pháp XQuery hoặc cấu trúc tài liệu XML. Xem thông tin về Developer Workbench: http://www.ibm.com/developerworks/data/tutorials/dm0608eaton/section2.html

Chạy lệnh sau hoặc từ bộ soạn thảo lệnh hoặc từ dòng lệnh:

B1: Sử dụng hàm db2-fn:xmlcolumn. Hàm này tìm kiếm một đường dẫn đã định trong một cột XML đã cho và trả lại một chuỗi giá trị XML. Đối số của hàm và tên cột là nhạy kiểu chữ (case sensitive: phân biệt chữ hoa – chữ thường), và cột tên phải là một tên đầy đủ (qualified name) của cột. Trong ví dụ đầu, tìm cột AUTHOR_INFO và trích các tên của tác giả:

xquery db2-fn:xmlcolumn('HWLD.AUTHOR.AUTHOR_DOC')/author_info/name

Bạn sẽ thấy như sau:

1 
------------------------------- 
<name>Claire</name> 
<name>Renata</name>
 <name>Jane</name> 

3 record(s) selected. 

B2: Sử dụng hàm db2-fn:xmlcolumn để tìm cột AUTHOR_INFO và trích toàn bộ thông tin về phòng ban.

xquery db2-fn:xmlcolumn('HWLD.AUTHOR.AUTHOR_DOC')/author_info/department 

Bạn sẽ thấy như sau:

1
------------------------------------------------------------------------ 
<department> 
<department_title>DB2 CE</department_title> 
<responsibility>Supporting customer problems</responsibility> 
<start_year>2005</start_year> 
</department> 
<department> 
<department_title>DB2 Index Manager</department_title> 
<responsibility>Develop new features for DB2 indexes</responsibility> 
<start_year/> 
</department>
<department> 
<department_title>FVT kernel</department_title> 
<responsibility>Testing the newest solutions for DB2</responsibility> 
<start_year>2006</start_year> 
</department> 
<department> 
<department_title>DB2 Load</department_title> 
<responsibility>Develop new features for data movement utilities</responsibility>
<start_year>2003</start_year> 
</department> 
<department> 
<department_title>RAD Development</department_title>
<responsibility>Developing the Business Process Executable Language (BPEL) and Business Rules debugger in WebSphere Integration Developer</responsibility> 
<start_year/> 
</department> 
<department> 
<department_title>WebSphere Studio Technical Support team</department_title> 
<responsibility>Team lead</responsibility> 
<start_year>2000</start_year> 
</department> 
6 record(s) selected. 

B3: Sử dụng một tổ hợp XQuery, triệu gọi SQL để truy lục chỉ tên phòng ban của tác giả nào có giá trị ID là 1.

xquery db2-fn:sqlquery('select AUTHOR_DOC from HWLD.AUTHOR
where author_id=1')/author_info/department/department_title 

Bạn sẽ thấy như sau:

1 
-------------------------------------------------------------- 
<department_title>DB2 CE</department_title> 
<department_title>DB2 Index Manager</department_title> 
2 record(s) selected. 

Source: Ibm.com

Truy vấn dữ liệu từ một bảng và từ một khung nhìn - P11

Khi dữ liệu đã được chèn vào bảng, có thể truy vấn chúng bằng cách sử dụng câu lệnh SELECT hoặc thao tác Query trong Trung tâm điều khiển. Bằng cách cung cấp các vị ngữ (predicates) trong câu lệnh SELECT, người sử dụng có thể truy lục chỉ các thông tin hữu ích hoặc có liên quan. 

Bạn đã xem các ví dụ của câu lệnh SELECT sử dụng bộ biên soạn lệnh trong bài tập trước đây đối với thao tác nạp. Bài tập tiếp theo cho bạn biết một cách khác để truy vấn dữ liệu.

B1: Hãy quan sát nội dung của bảng. Chọn bảng HWLD.AUTHOR và nhấn Open.

B2: Hình 37 hiển thị toàn bộ dữ liệu, trừ dữ liệu cột XML. Để xem dữ liệu XML, trong cột AUTHOR_DOC hãy nhấn nút … trên dòng mà bạn muốn xem. 

Hình 37. Xem một bảng

B3: Cửa sổ sau đây sẽ mở: 

Hình 38. Xem dữ liệu XML trong một bảng

Nhấn nút Expand All và bạn sẽ thấy toàn bộ cấu trúc của tài liệu XML.

B4: Bạn cũng có thể truy vấn một khung nhìn. Sử dụng khung nhìn đơn giản HWLD.DB2_AUTHOR đã được tạo ra. Nhấn chuột Control Center > View và chọn DB2_AUTHOR. Nhấn Query.

Một bộ biên tập lệnh được khởi chạy với câu lệnh SELECT thích hợp để truy vấn DB2_AUTHOR.

B5: Nhấn nút thi hành màu lục từ bộ soạn thảo lệnh. Bảng kết quả vấn tin (Query Results) mở ra, ở đây sẽ hiển thị các kết quả của lệnh select từ khung nhìn HWLD. DB2_AUTHOR: 

Hình 39. Truy vấn một khung nhìn

Source: Ibm.com

Nhập, nạp và xuất dữ liệu - P10

Chèn dữ liệu vào từng dòng một sẽ rất mất thời gian, nhất là đối với các công ty có hàng nghìn nhân viên hoặc hàng triệu giao dịch với khách hàng. Các tiện ích nhập và nạp (load) sẽ làm các nhiệm vụ này đơn giản hơn. 

Ngoài ra, đôi khi cũng hữu ích hơn nếu đặt một số dữ liệu từ các bảng vào một tệp dữ liệu để phân tích và xử lý tiếp. Tiện ích xuất sẽ có tác dụng trong trường hợp này. Các tiện ích nhập, nạp và xuất cũng có thể được sử dụng để chuyển dữ liệu từ một bảng đến một bảng khác hoặc từ một cơ sở dữ liệu này đến cơ sở dữ liệu khác.

Trong bài tập sau đây bạn sẽ nhập dữ liệu từ một tệp trên đĩa rồi xuất trở lại từ bảng vào một tệp khác. 

Các tệp này được tạo ra để phục vụ cho hướng dẫn và có thể tìm thấy trong phần Tải về. Sau đó bạn sẽ sử dụng tiện ích nạp để nạp dữ liệu lưu trong một tệp vào một bảng.

Mặc dù các tiện ích nhập, xuất và nạp có sẵn nhiều tuỳ chọn, bài tập này tập trung vào các việc sau:

  • Kiểu tệp: Chỉ rõ khuôn dạng tệp để lưu dữ liệu. Trong ví dụ này, DEL có nghĩa là tệp ASCII có định giới (delimited ASCII file).
  • Câu lệnh Select: Cho biết bạn có thể chọn tất cả các cột từ một bảng (select *) khi xuất hoặc chỉ chọn một số cột cụ thể (select <column list>). Trong ví dụ này, bạn chọn tất cả các cột.
  • Thao tác nhập/nạp: Cho biết bạn có các lựa chọn trong khi nhập để chèn dữ liệu vào (append), thay thế nó, cập nhật bản đúp (update duplicates), hoặc tạo ra một bảng bằng cách sử dụng tệp dữ liệu. Trong ví dụ này, bạn chèn dữ liệu vào.

Để có mô tả đầy đủ về các tiện ích này, xin tham khảo DB2 Data Movement Utilities Guide and Reference (xem Tài nguyên).

B1: Sử dụng tiện ích nhập để nạp dữ liệu cho bảng HWLD.AUTHOR. Từ Trung tâm điều khiển, nhấn chuột phải vào bảng AUTHOR và chọn Import.

B2: Chọn các tuỳ chọn như hướng dẫn: 

Hình 30. Nhập liệu vào bảng – Author

Trước đó bạn đã báo cho DB2 biết sẽ sử dụng tệp author.del (kèm trong tệp zip mà bạn đã tải xuống) và sử dụng nó để nạp dữ liệu vào bảng HWLD.AUTHOR. Mọi thông báo liên quan đến việc nhập đều nằm trong tệp thông báo C:\DB2\hellowld\import.msg.

B3: Từ phiếu Columns, nhập vào đường dẫn để tìm các cột XML. 

Hình 31. Nhập liệu vào bảng – AUTHOR

Bạn có thể nhấn Show Command để quan sát lệnh nhập đầy đủ và ghi lưu nó nếu muốn. Thông báo DB20000 cho biết mọi việc tốt đẹp.

B4: Sử dụng lệnh nạp để nạp dữ liệu vào bảng HWLD.MODULE. Nhấn chuột phải vào bảng MODULE và chọn Load.

B5: Chọn Append data to table từ thủ thuật nạp. Nhấn Next.

B6: Điền đường dẫn đầy đủ và tên tệp của tệp dữ liệu nhập bằng cách định vị tệp module.del (kèm trong tệp zip mà bạn đã tải xuống) và chỉ rõ tệp thông báo. 

Hình 32. Thủ thuật nạp – Các tệp

B7: Nhấn Summary. Bạn sẽ thấy một lệnh nạp mà bạn có thể ghi lưu lại để chạy trong cửa sổ dòng lệnh. Nếu bạn nhấn Finish, lệnh sẽ thực hiện thành công, và bạn sẽ nhận được một cửa sổ hội thoại với thông báo DB20000.

B8: Thông qua tính toàn vẹn của dữ liệu và truy vấn dữ liệu.

Do bảng MODULE có các ràng buộc toàn vẹn (integrity constraints) đã được định nghĩa, sau khi chạy tiện ích nạp, phải thông qua tính toàn vẹn để bảng này có thể truy nhập được. Để thực hiện việc này, chạy câu lệnh SET INTEGRITY từ bộ soạn thảo lệnh. Lệnh SET INTEGRITY sẽ kiểm tra để đảm bảo rằng mọi dòng đều thỏa mãn các điều kiện ràng buộc và loại bỏ bất kỳ dòng nào không đáp ứng điều kiện này.

B9: Chọn bảng MODULE và nhấn Query. 

Hình 33. Truy vấn bảng HWLD.MODULE

Thao tác này sẽ cho chạy câu lệnh mặc định SELECT * đối với bảng.

B10: Trước khi chạy lệnh SELECT, thêm vào câu lệnh SET INTEGRITY có nội dung sau:

------------------------------ Commands Entered ----------------------------- 
set integrity for hwld.module immediate checked; 
SELECT * FROM HWLD.MODULE;
----------------------------------------------------------------------------- 
set integrity for hwld.module immediate checked 
DB20000I The SQL command completed successfully. 
SELECT * FROM HWLD.MODULE 
MODULE_ID MODULE_NAME
----------- -------------------- 
1 DB2 UDB 
2 WebSphere 
3 Tivoli 
4 Eclipse 
5 Rational 
6 Lotus Notes 
7 Web Commerce 

7 record(s) selected. 

Nạp bảng HWLD.PARTICIPANT. Từ Trung tâm điều khiển, nhấn chuột phải vào bảng PARTICIPANT và chọn Load. Chọn các tuỳ chọn nạp như ghi rõ trong Hình 58, tương tự như cách đã làm đối với bảng HWLD.MODULE. Tệp participant.del có kèm trong tệp zip mà bạn đã tải xuống. 

Hình 34. Thủ thuật nạp bảng

Một lần nữa, do bảng PARTICIPANT có các ràng buộc tham chiếu, việc nạp sẽ đặt nó vào chế độ chờ kiểm tra, nên nó không thể truy nhập được cho đến khi toàn bộ các dòng được thông qua.

B12: Nhấn bảng PARTICIPANT và chọn Query. Trước câu lệnh select, gõ nhập vào câu lệnh SET INTEGRITY. Thay đổi nội dung câu lệnh select để chỉ gồm tên học viên, ID, và điểm số sát hạch cho những học viên có ID là 4:

------------------------------ Commands Entered ----------------------------- 
set integrity for hwld.participant immediate checked; 
SELECT PAR_NAME, PAR_ID, PAR_TEST_SCORE FROM HWLD.PARTICIPANT where PAR_ID=4; 
----------------------------------------------------------------------------- 
set integrity for hwld.participant immediate checked 
DB20000I The SQL command completed successfully. 
SELECT PAR_NAME, PAR_ID, PAR_TEST_SCORE FROM HWLD.PARTICIPANT where PAR_ID=4 
PAR_NAME PAR_ID PAR_TEST_SCORE
----------------------------------------- -------------------- -------------- 
mike 4 60 
mike 4 80 


2 record(s) selected. 

B13: Bây giờ các bảng đã được nạp dữ liệu, hãy xuất dữ liệu thành một tệp dữ liệu. Để chọn xuất từ bảng nào, nhấn chuột phải vào bảng AUTHOR và chọn Export. Cửa sổ sau đây sẽ mở: 

Hình 35. Xuất bảng

B14: Nhập thông tin được yêu cầu như chỉ dẫn trong hình trên. Từ phiếu Columns, đánh dấu tùy chọn để đặt mỗi tài liệu XML trong một tệp riêng. Bạn có thể nhấn Show Command để xem câu lệnh và ghi lưu lại nó hoặc cho chạy sau này trên dòng lệnh.

Bạn sẽ thấy thông báo DB20000 cho biết mọi thứ đều tốt đẹp. 

Tệp xuất là C:\DB2\hellowld\user1_author.del. Nội dung của tệp user1_author.del như sau:

"Claire",1,"DB2 UDB ","<XDS FIL='author.del.001.xml'/>", 100
"Renata",2,"DB2 UDB ","<XDS FIL='author.del.002.xml'/>", 98
"Jane",3,"WEB COMMERCE ","<XDS FIL='author.del.003.xml'/>", 89 

Lưu ý: Rằng cột MODULE_NAME được đệm thêm cho đủ 20 ký tự. Hơn nữa, các tài liệu XML này không thực sự nằm trong tệp DEL mà chỉ tồn tại một tham chiếu (XDS) đến tệp chứa dữ liệu XML.

Sau đây là nội dung của tệp author.del.001.xml đã được định dạng lại cho dễ đọc:

<?xml version="1.0" encoding="UTF-8" ?>
<author_info>
<name>Claire</name>
<ID>1</ID>
<department>
<department_title>DB2 CE</department_title>
<responsibility>Supporting customer problems</responsibility>
<start_year>2005</start_year>
</department>
<department>
<department_title>DB2 Index Manager</department_title>
<responsibility>Develop new features for DB2 indexes</responsibility>
<start_year/>
</department>
</author_info> 

Nếu bạn sử dụng một trình duyệt Web để xem tài liệu XML, bạn sẽ thấy nội dung sau:

Hình 36. Dữ liệu XML

Source: Ibm.com

Thông qua các ràng buộc - P9

Như trước đây bạn đã học, các ràng buộc được sử dụng để đảm bảo bảng không có các dữ liệu không hợp lệ. Những dòng không thỏa mãn các ràng buộc đã định nghĩa đều bị loại bỏ. 

Trong bài tập này, bạn sẽ thông qua các ràng buộc để xem điều gì xảy ra khi nhập vào dữ liệu không hợp lệ.

Bảng PARTICIPANT được tạo ra với một khóa ngoại, điều đó có nghĩa là với mỗi giá trị trong cột PAR_ID trong PARTICIPANT, phải có một dòng trong bảng MODULE với cùng giá trị trong cột MODULE_ID. Do bảng MODULE hiện tại đang rỗng nên điều kiện này sẽ không thỏa mãn được nếu bạn nhập dữ liệu vào bảng PARTICIPANT. 

Hãy theo các bước sau để thông qua các ràng buộc:

B1: Từ Trung tâm điều khiển nhấn vào bảng PARTICIPANT rồi nhấn Open. Trong bảng Open Table, nhấn Add Row. Nhập dòng sau vào bảng PARTICIPANT như hình chỉ dẫn, và nhấn Commit. 

Hình 28. Trung tâm điều khiển -- Chèn dòng

B2: Thông báo phản hồi là SQL0530N, nói rằng bạn không đáp ứng được các yêu cầu về tính toàn vẹn tham chiếu áp đặt bởi ràng buộc khóa ngoại (foreign key constraint).

B3: Nhấn Close một lần để đóng thông báo này và một lần nữa để đóng cửa sổ Open Table.

B4: Thông qua ràng buộc kiểm tra mà bạn đã định nghĩa trên bảng MODULE. Do bảng MODULE được tạo ra với một ràng buộc kiểm tra ("CONSTRAINT MID_CHECK CHECK (MODULE_ID >= 0)"), cột MODULE_ID không thể chứa một giá trị âm.

B5: Trung tâm điều khiển, nhấn vào bảng MODULE rồi nhấn Open. Trong bảng Open Table, nhập một dòng vào bảng MODULE với một giá trị âm cho MODULE_ID và gán một tên nào đó cho MODULE_NAME. 

Hãy thử thực hiện và quan sát xem điều gì xảy ra. Lỗi sau đây cho biết rằng bạn không được làm như vậy: 

Hình 29. Thông qua ràng buộc kiểm tra

B6: Nhấn Close để đóng thông báo này và nhấn Close lần nữa để đóng cửa sổ Open Table.

Source: Ibm.com

Chèn và xóa dữ liệu từ bảng - P8

Một khi đã tạo ra một bảng để lưu trữ dữ liệu, bạn cần có khả năng đưa dữ liệu vào và ra khỏi bảng để sử dụng. Cách đơn giản nhất để đưa dữ liệu vào bảng là sử dụng lệnh INSERT. Để chèn dữ liệu, hãy cho tên bảng và cột bảng mà bạn muốn chèn vào và dữ liệu để chèn. Khi dữ liệu đã có, bạn có thể trích chọn, cập nhật, hoặc xóa bỏ nó

Bài tập này giải thích cách đưa dữ liệu vào và ra khỏi một cơ sở dữ liệu.

B1: Từ Trung tâm điều khiển, khung nhìn Object, chọn bảng AUTHOR trong danh sách cơ sở dữ liệu và nhấn Open. 

Hình 25. Trung tâm điều khiển -- Mở bảng

B2: Nhấn Add Row nhập dữ liệu vào các cột và nhấn commit để xác nhận giao dịch này. 

Hình 26. Thêm dòng 

B3: Nếu không gặp lỗi sẽ không có phản hồi. Nhấn Close để đóng cửa sổ Open Table.

B4: Mở bộ biên soạn lệnh bằng Tools > Command Editor. Gõ vào lệnh INSERT, bao gồm cả câu lệnh để kết nối đến cơ sở dữ liệu:

connect to hellowld; 
insert into hwld.author values ('Claire', 1, 'DB2 UDB',
'<author_info> 
<name>Claire</name> 
<ID>1</ID> 
<department> 
<department_title>DB2 CE</department_title> 
<responsibility>Supporting customer problems</responsibility> 
<start_year>2005</start_year> 
</department> 
<department> 
<department_title>DB2 Index Manager</department_title> 
<responsibility>Develop new features for DB2 indexes</responsibility> 
<start_year/> </department> </author_info>', 100); 
terminate; 

(Bạn cũng có thể thực hiện cùng một thao tác bằng cách sử dụng khung nhìn command editor).

B5: Nhấn tam giác màu lục để chạy lệnh này. Hình 47 cho xem các kết quả chạy như mong đợi: 

Hình 27. Bộ biên soạn lệnh – Insert

B6: Nếu đã nhập vào một số dữ liệu mà bạn không còn muốn có trong bảng nữa, bạn có thể xóa bỏ bằng cách sử dụng cùng một cửa sổ như khi chèn vào. Nhấn vào bảng AUTHOR và Open.

B7: Chọn dòng đầu tiên và nhấn Delete Row. Nhấn Commit để xác nhận thao tác xóa bỏ này. Nếu bạn quyết định hủy bỏ thao tác xóa này, nhấn Roll Back thay cho Commit.

B8: Nhấn chuột chọn dòng còn lại và xóa nó để làm trống bảng, sau đó nhấn Close.

Source: Ibm.com

Sử dụng các đối tượng DB2: Trigger và UDTs/UDFs - P7

Các khái niệm sau đây liên quan đến bảng và có thể giúp bạn hiểu tốt hơn bài tập kế tiếp.

1. Triggers (bẫy sự kiện)

Trigger cung cấp một phương tiện cho hệ quản trị cơ sở dữ liệu (Database Management System - DBMS) để áp đặt một số yêu cầu nghiệp vụ, ví dụ như hợp thức hóa dữ liệu, và áp đặt các quy tắc hay tính toàn vẹn tham chiếu (referential integrity) của dữ liệu.

Trigger có thể được định nghĩa đối với một bảng cơ sở. Khi một hoặc một tập hợp các điều kiện định nghĩa trước được thỏa mãn, một hoặc một tập hợp các hành động có thể được kích hoạt để thực hiện đối với bảng. Một trigger có thể được thực hiện trước hoặc sau thao tác chèn, xoá hoặc cập nhật.

2. UDTs và UDFs

Ngoài các kiểu dữ liệu nguyên thủy mà DB2 cung cấp, người sử dụng có thể tạo ra các kiểu dữ liệu do người dùng định nghĩa (User-Defined Types - UDT) sử dụng các kiểu dữ liệu nguyên thủy DB2.

Người sử dụng cũng có thể tạo ra các hàm do người dùng định nghĩa (User-Defined Functions – UDF). Cả UDT và UDF cung cấp thêm tính linh hoạt cho nhà phát triển ứng dụng cơ sở dữ liệu để triển khai các ứng dụng của mình.

Source: Ibm.com

Sử dụng các đối tượng DB2: Tạo các ràng buộc - P6

Các ràng buộc (constraints) cho phép DBMS áp đặt một tính toàn vẹn dữ liệu nhất định trong các bảng của nó bằng cách ngăn không cho nhập vào bảng các dữ liệu sai hoặc dữ liệu không mong muốn. 

Các ràng buộc sau được sử dụng trong DB2 để áp đặt tính toàn vẹn của dữ liệu:

  • Khóa chính: Được sử dụng để áp đặt tính duy nhất trên một hoặc một bộ các giá trị cột. Mỗi bảng chỉ có một khóa chính.
  • Khoá ngoại (ràng buộc tham chiếu): Được sử dụng để thiết lập một mối quan hệ tham chiếu (referential relationship) giữa hai bảng, thường gọi là bảng cha và bảng con, với thao tác được định nghĩa trong mệnh đề REFERENCE. Thao tác này thực hiện khi dữ liệu được chèn vào/xóa/cập nhật trong bảng cha hay bảng con đáp ứng các tiêu chuẩn cho trước. Một khóa ngoại sẽ luôn luôn tham chiếu tới một khóa chính hoặc khoá duy nhất trong bảng cha.
  • Khoá duy nhất: Được định nghĩa để áp đặt tính duy nhất trên một hoặc một bộ các giá trị cột. Trái với khóa chính, một bảng có thể có nhiều khoá duy nhất. Các khoá duy nhất cũng cho phép các khoá ngoại tham chiếu các cột dữ liệu khác nhau mà không là khóa chính. Một chỉ mục duy nhất (unique index) được tạo ra mỗi khi một khóa chính hoặc một khóa duy nhất được định nghĩa.
  • Ràng buộc kiểm tra: Được định nghĩa ở mức bảng, đối với một hay nhiều cột bảng. Chúng được sử dụng để áp đặt các qui tắc đã định rõ đối với các cột bảng đó sao cho dữ liệu được chèn vào hoặc cập nhật trong các cột đó thỏa mãn các điều kiện đã định nghĩa trước trong ràng buộc kiểm tra. Không như các ràng buộc khác, ràng buộc kiểm tra có thể tạm thời được tắt trong thời gian thực hiện một số thao tác nhất định, ví dụ như LOAD, và bảng sẽ được đặt vào trạng thái chờ kiểm tra (check pending) cho đến khi ràng buộc được kiểm tra.

Ta tạo ra các ràng buộc khi tạo một bảng, hoặc sau đó bổ sung chúng bằng cách sử dụng câu lệnh ALTER TABLE hoặc một giao diện GUI.

Bài tập sau đây cho bạn có dịp thực hành việc tạo và sử dụng các ràng buộc. Nó cũng giải thích cách sử dụng Command Editor (Bộ soạn thảo lệnh) để thực hiện một số nhiệm vụ quản trị hằng ngày:

B1: Từ thanh trình đơn chính của Trung tâm điều khiển, nhấn Tools > Command Editor trong trình đơn thả xuống. Một cửa sổ soạn thảo lệnh xuất hiện. Sử dụng bộ soạn thảo này để soạn các lệnh DB2 của bạn, thực hiện chúng, sau đó xem các thông báo DB2 hoặc SQL phản hồi.

B2: Trước tiên thêm một cột nữa vào bảng AUTHOR và sau đó bổ sung một khóa chính trên bảng này. Thêm các lệnh tiếp theo và nhấn nút thực hiện màu xanh lục như trong Hình 35.

Hình 19. Bộ soạn thảo lệnh -- Thay đổi bảng

Khi bạn thêm vào một khóa chính, DB2 tạo ra một chỉ mục duy nhất (unique index) bên dưới vì ở đó đã có một chỉ mục duy nhất trên AUTHOR_ID. DB2 sử dụng một chỉ mục hiện có cho khóa chính, vì thế thông báo trả về là SQL0598W.

B3: Từ Bộ soạn thảo lệnh, bạn cũng có thể chọn ghi lưu các lệnh hiện thời này vào một tệp hoặc thay thế chúng bằng các lệnh mới mà bạn muốn soạn thảo hoặc cho chạy tiếp.

B4: Thay thế các lệnh trong cửa sổ Bộ soạn thảo lệnh bằng nội dung sau:

CONNECT TO HWLD; 
CREATE TABLE HWLD.MODULE 
( MODULE_ID INT NOT NULL, 
MODULE_NAME CHAR(20) NOT NULL, 
PRIMARY KEY (MODULE_ID), 
CONSTRAINT MID_UNIQ UNIQUE 
(MODULE_ID, MODULE_NAME), 
CONSTRAINT MID_CHECK CHECK (MODULE_ID >= 0) 
) 
IN TBSP_DATA1 INDEX IN TBSP_INDEX1; 
CONNECT RESET; 

B5: Lệnh CREATE TABLE này tạo ra một ràng buộc khóa chính (primary key constraint), một ràng buộc khóa duy nhất (unique key constraint) và một ràng buộc kiểm tra trong khi tạo lập bảng. Ràng buộc kiểm tra áp đặt các giá trị phải dương trong cột dữ liệu MODULE_ID. Hình 20 thể hiện các kết quả chạy được mong đợi: 

Hình 20. Bộ soạn thảo lệnh -- Tạo bảng

Bạn có thể sử dụng thủ thuật CREATE TABLE để thực hiện cùng một việc.

B6: Giờ thì bạn đã tạo ra được hai bảng. Bảng HWLD.AUTHOR gồm toàn bộ các thông tin về tác giả các môđun Hello World. Bảng HWLD.MODULE bao gồm toàn bộ thông tin về các môđun loạt bài Hello World. Bây giờ hãy tạo một bảng nữa, bảng HWLD.PARTICIPANT để chứa toàn bộ thông tin của các học viên gồm tên, phòng ban (tuỳ chọn), môđun đã học, và kết quả kiểm tra (quiz score).

Bảng HWLD.PARTICIPANT phải có các định nghĩa bảng như sau:

(PAR_NAME VARCHAR(50) NOT NULL, 
PAR_ID BIGINT NOT NULL, 
PAR_AREA CHAR(20), 
MODULE_ID INT, 
PAR_TEST_SCORE INT) 

B7: Chú ý các điều kiện sau:

  • Mỗi người có thể dự sát hạch nhiều môđun nhiều lần.
  • Điểm số sát hạch phải giữa 0 và 100.
  • MODULE_ID trong HWLD.PARTICIPANT phải tham chiếu đến MODULE_ID trong HWLD.MODULE. Khi một môđun được xóa bỏ khỏi bảng HWLD.MODULE, hãy đặt MODULE_ID tương ứng thành NULL trong bảng PARTICIPANT, như vậy MODULE_ID ở đây không bao giờ là một giá trị không hợp lệ.
  • Khi một dòng được chèn vào trong bảng HWLD.PARTICIPANT, nếu MODULE_ID tương ứng không tồn tại trong HWLD.MODULE thì phép chèn thêm thất bại.
  • Khi một mô đun được cập nhật trong bảng HWLD.MODULE, nếu có một bản ghi đang có trong bảng HWLD.PARTICIPANT tham chiếu đến MODULE_ID đó, thì phép cập nhật thất bại.

B8: Hãy bổ sung các ràng buộc sau để áp đặt các điều kiện nói trên:

  • Ràng buộc kiểm tra trên cột PAR_TEST_SCORE để đảm bảo giá trị của nó nằm giữa 0 và 100.
  • Khoá ngoại trên MODULE_ID tham chiếu đến MODULE_ID trong HWLD.MODULE, ON DELETE SET NULL, ON UPDATE RESTRICT (lưu ý, quy tắc chèn 4 đã bị áp đặt theo mặc định).

Các ràng buộc này có thể được tạo ra khi tạo bảng HWLD.PARTICIPANT.

B9: Từ Trung tâm điều khiển, khởi chạy thủ thuật tạo bảng mới (Create New Table) trong khung nhìn Tables. Chọn HWLD làm lược đồ bảng, gõ nhập PARTICIPANT làm tên bảng, và bổ sung một chú thích. Nhấn Next.

B10: Từ trang Columns, nhấn Add để thêm cột đầu tiên. Chỉ rõ PAR_NAME VARCHAR(50) NOT NULL và chọn VARCHAR làm kiểu dữ liệu.

B11: Nhấn OK. Từ trang Columns, thêm một cột thứ hai, PAR_ID BIGINT NOT NULL. Nhấn OK.Bổ sung một cột thứ ba,PAR_AREA CHAR(20). Chú ý cột này cho phép giá trị NULL (rỗng).

B12: Tương tự, bổ sung cột thứ tư MODULE_ID INT rồi cột thứ năm, PAR_TEST_SCORE INT. Cả hai đều có kiểu dữ liệu là INTEGER và cả hai đều cho phép giá trị NULL.

B13: Kiểm tra kỹ các cột bạn đã bổ sung. 

Hình 21. Thủ thuật tạo bảng – Các cột

B14: Nhấn Next. Bỏ qua trang Data Partitions bằng cách nhấn Next một lần nữa.

B15: Tương tự như hai bảng trước đây đã tạo, sử dụng các vùng bảng riêng rẽ đối với dữ liệu bảng và chỉ mục bảng cho HWLD.PARTICIPANT. Chọn TBSP_DATA1 cho vùng bảng và chọn TBSP_INDEX1 làm vùng chỉ mục. Nhấn Next.

B16: Nhấn Add Foreign từ trang Keys. Nhập PMID_FOR làm tên của khoá ngoại. 

Hình 22. Thủ thuật tạo bảng - Bổ sung khóa ngoại

B17: Chọn HWLD.MODULE làm bảng cha (parent table). Chọn MODULE_ID từ danh sách các cột sẵn có (Available columns), và nhấn > để thêm nó như là một khoá ngoại. Chọn SET NULL cho On delete, và chọn RESTRICT cho On update. Nhấn OK. Bạn sẽ thấy ràng buộc sau đã được định nghĩa: 

Hình 23. Thủ thuật tạo bảng – các khóa

Nhấn Next. (Bạn có thể tạo ra các kiểu khoá khác nhau như khoá duy nhất, khoá chính ở đây. Trong bài tập này, bạn chỉ cần tạo ra một khoá ngoại).

B18: Nhấn Next một lần nữa để bỏ qua trang Dimensions.

B19: Từ trang Define Check Constraints (định nghĩa ràng buộc kiểm tra), nhấn Add để khởi động thủ thuật bổ sung ràng buộc kiểm tra (Add Check Constraint wizard).

B20: Nhập vào PAR_SCORE_CHECK làm tên ràng buộc kiểm tra. Bổ sung nội dung sau làm điều kiện kiểm tra (Check condition):

PAR_TEST_SCORE BETWEEN 0 and 100 

Đánh dấu chọn cả hai thuộc tính ràng buộc.

B21: Gõ vào một chú thích. Nhấn OK để bổ sung ràng buộc này. Nhấn Finish. Cửa sổ thông báo DB2 cần phải phản hồi DB20000. Đóng nó lại.

B22: Kiểm tra xem bảng PARTICIPANT mới được tạo ra hiển thị trong Trung tâm điều khiển chưa.

Soát lại HWLD.PARTICIPANT và xem thử bạn có nghĩ đến các điều kiện nào khác có thể sử dụng các ràng buộc để triển khai nữa không. (Gợi ý: triển khai hiện có này không áp đặt tính duy nhất của học viên và ID đã gán cho mỗi học viên; có một vài cách để thực hiện việc này. Một cách là chia bảng HWLD.PARTICIPANT hiện tại thành hai bảng, áp đặt tính duy nhất về ID của học viên, và thiết lập một khóa ngoại để tham chiếu ID học viên. Bạn có thể nghĩ ra các cách khác không?)

Hình sau đây tổng kết lại ba bảng đã được tạo ra cho đến lúc này và các ràng buộc mà bạn đã bổ sung vào các bảng này.

Hình 24. Bảng mới được tạo ra và các ràng buộc

Source: Ibm.com

Sử dụng các đối tượng DB2: Tạo các chỉ mục - P5

Một chỉ mục là một đối tượng bổ trợ trong cơ sở dữ liệu, tuy nhiên nó là thiết yếu đối với hiệu năng của ứng dụng cơ sở dữ liệu. Các chỉ mục cho phép các truy vấn truy nhập dữ liệu tiềm tàng hiệu quả hơn. Chỉ mục duy nhất cũng được sử dụng để “bắt buộc phải duy nhất” đối với một số cột dữ liệu.

Một chỉ mục được định nghĩa trên một bảng, trên một tập con của các cột bảng được sử dụng làm khóa chỉ mục. Một chỉ mục lưu giữ các khóa chỉ mục này theo thứ tự sắp xếp. Ngoài việc lưu giữ khóa chỉ mục, mỗi mục chỉ mục gồm có một con trỏ lôgíc, gọi là một ID bản ghi (RID), nó trỏ đến vị trí của một dòng dữ liệu trong một bảng. Bạn có thể chỉ rõ có muốn lưu các mục chỉ mục theo thứ tự tăng dần hoặc giảm dần hay không. Các chỉ mục được lưu giữ tách biệt khỏi dữ liệu bảng.

Bạn có thể lựa chọn để chỉ mục có gom thành cụm (clustering) hay không. Chỉ mục gom cụm cho phép dữ liệu trong bảng được gom thành cụm theo thứ tự như thứ tự của chỉ mục. Chỉ mục gom cụm nâng cao hiệu năng tốt hơn nữa khi một truy vấn truy nhập đến dữ liệu bảng trong cùng một tuần tự như của chỉ mục gom cụm.

Bạn có thể định nghĩa nhiều chỉ mục trên một bảng, nhưng bạn chỉ có một chỉ mục gom cụm cho mỗi bảng, trừ các bảng gom cụm nhiều chiều (Multiple Dimensional Clustering - MDC). Bạn không thể tạo ra các chỉ mục trên một khung nhìn.

Chỉ mục có thể được tạo ra bằng cách sử dụng câu lệnh CREATE INDEX. Bài tập sau đây giải thích cách tạo ra một chỉ mục bằng các công cụ GUI:

B1: Từ Trung tâm điều khiển, chọn xem các chỉ mục. Nhấn Create New Index để khởi chạy thủ thuật tạo chỉ mục.

B2: Từ thủ thuật tạo chỉ mục, chọn bảng trên đó sẽ tạo chỉ mục mới. Chọn HWLD làm lược đồ bảng và AUTHOR làm tên bảng. Định rõ No cho tùy chọn cột XML. Nhấn Next.

B3: Từ trang Name, chọn HWLD làm lược đồ chỉ mục và chỉ rõ AUTHORID là tên chỉ mục. Nhấn Next đi đến trang Column để xác định các cột làm chỉ mục.

B4: Chọn AUTHOR_ID, và nhấn nút > để thêm nó vào bên phải, là danh sách các cột đã chọn làm chỉ mục. Đánh dấu kiểm vào hộp Enforce uniqueness, để bắt buộc cho dữ liệu trong cột AUTHOR_ID là duy nhất. Bao gồm cột (Include columns) là một đặc tính mà DB2 cung cấp để lưu giữ các cột dữ liệu bổ sung như là một bộ phận của chỉ mục để truy nhập dữ liệu nhanh chóng, nhất là khi chỉ quét các chỉ mục (index only scan). Ở đây không chọn bao gồm các cột. Nhấn Next. 

Hình 17. Thủ thuật tạo chỉ mục

B5: Trang Options cho phép bạn tùy chọn một số lựa chọn hiệu năng của chỉ mục. Đánh dấu kiểm vào Customize performance options.

B6: Chọn các giá trị mặc định. PCTFREE và LEVEL 2 PCTFREE xác định lượng không gian trống để dành lại trên các trang lá (leaf page) và trên các trang chỉ mục mức 2 trong khi tạo chỉ mục. Nếu biết rằng sau này sẽ có nhiều phép chèn thêm vào bảng, bạn có thể muốn tăng thêm giá trị mặc định (là 10%), để tránh chia tách trang chỉ mục khi thực hiện chèn thêm. Nếu MINPCTUSED được chỉ rõ, DB2 sẽ sử dụng giá trị ngưỡng này để xác định khi nào hai trang nằm cạnh nhau, nếu cả hai gần trống, có thể và sẽ được trộn vào nhau. Đặc tính này, nếu được bật cho phép, có thể sẽ giúp giảm bớt được không gian trống trên các trang chỉ mục do các lần xoá bỏ gây ra. Việc tinh chỉnh thích đáng các tham số này giúp cải tiến hiệu quả truy nhập chỉ mục.

B7: Nhấn Next để đến trang Summary.

B8: Từ trang Summary, sử dụng Show SQL để xem câu lệnh CREATE INDEX. Nếu bảng của bạn có dữ liệu, sử dụng Estimate Size để kiểm tra việc sử dụng không gian nhớ cho chỉ mục mới. Nhấn Finish để hoàn tất việc tạo chỉ mục. Thông báo DB20000 phải được phản hồi để cho thấy thủ thuật đã thực hiện thành công. Đóng cửa sổ thông báo này.

B9: Từ trung tâm điều khiển, khung nhìn các chỉ mục, chọn AUTHORID ftrong cột tên chỉ mục. Quan sát các chi tiết đối với chỉ mục này. Nhấn Show Related Objects để xem thông tin về các đối tượng liên quan như bảng cơ sở HWLD.AUTHOR cho chỉ mục này, cũng như vùng bảng TBSP_INDEX1 nơi mà dữ liệu của chỉ mục nằm tại đây. 

Hình 18. Trung tâm điều khiển – Các chỉ mục

Source: Ibm.com

Sử dụng các đối tượng DB2: Tạo các lược đồ, bảng và khung nhìn - P4

Nói chung, dữ liệu được lưu giữ trong các bảng quan hệ trong DB2. Mỗi bảng gồm có một số cột và dòng. Các cột của bảng được định nghĩa trong khi tạo bảng. Chúng cũng có thể sau đó được bổ sung hoặc bớt đi khi bảng đã được tạo ra. Dữ liệu lưu trữ trong một bảng cần nhất quán với các định nghĩa của cột. Mỗi bảng có thể có nhiều chỉ mục và khung nhìn. 

Một khung nhìn giống như một bảng lôgíc, tạo thành từ tập kết quả của một câu lệnh SELECT từ một hoặc nhiều bảng hoặc khung nhìn khác. Không giống như bảng quan hệ, dữ liệu trong một khung nhìn không cần phải lưu vật lý trên đĩa. Dữ liệu sẽ được tạo ra khi khung nhìn được truy vấn. Một khung nhìn không sử dụng không gian vật lý nào khác ngoài các định nghĩa của nó được lưu giữ trong các danh mục hệ thống. 

Bạn có thể sử dụng ngôn ngữ xử lý dữ liệu (Data Manipulation Language - DML) để truy vấn một khung nhìn hoặc thậm chí cập nhật một khung nhìn sau khi nó được tạo ra. Các khung nhìn cung cấp khả năng truy cập dữ liệu linh hoạt hơn đến một tập con của một bảng hoặc nối tập kết quả từ nhiều bảng, trong khi lại ẩn giấu độ phức tạp của dữ liệu trong các bảng cơ sở. 

Để cung cấp một cái nhìn lôgic về các đối tượng cơ sở dữ liệu, như các bảng, chỉ mục, khung nhìn, hãy phân loại chúng bằng cách sử dụng một hoặc nhiều lược đồ. Lược đồ là một phân loại lôgíc của các đối tượng cơ sở dữ liệu. Bạn có thể tạo ra nhiều đối tượng cơ sở dữ liệu bằng cách sử dụng cùng một lược đồ hoặc các lược đồ khác. Ví dụ trong vùng bảng SYSCATSPACE, tất cả các bảng và chỉ mục hệ thống cơ sở được nhóm lại vào cùng một lược đồ tên là SYSIBM. Tất cả các khung nhìn trên bảng và chỉ mục cơ sở được nhóm vào một lược đồ là SYSCAT hoặc SYSSTAT. 

Bài tập này giải thích cách tạo lược đồ, bảng và khung nhìn

B1: Từ Trung tâm điều khiển, nhấn All Databases > HELLOWLD > Schemas. Hãy quan sát các lược đồ hiện có mà DB2 đã tạo ra khi tạo một cơ sở dữ liệu. Nhấn Create New Schema từ cửa sổ hiển thị nằm ở phần bên dưới của cửa sổ bên phải. 

B2: Từ thủ thuật tạo lược đồ (Create Schema wizard), nhập tên lược đồ mới là HWLD. Sử dụng tên ủy quyền (Authorization Name) mặc định. Nhấn OK để chạy lệnh CREATE SCHEMA. Một lần nữa nhấn Show SQL để xem lệnh DB2 thực tế. Sau khi lệnh hoàn tất, kiểm tra xem HWLD đã hiển thị ra trong vùng xem các lược đồ chưa. 

B3: Khi tạo một đối tượng, hãy ghi rõ tên lược đồ mà bạn muốn nó thuộc về lược đồ này. Nếu một tên lược đồ không được xác định rõ ràng, thì theo mặc định, ID của người sử dụng được lấy làm lược đồ, nếu như người sử dụng có quyền ưu tiên IMPLICIT_SCHEMA (các quyền ưu tiên được bàn luận chi tiết trong tài liệu tiếp theo của loạt bài này). Xem Tài nguyên để nhận đường link đến toàn bộ loạt bài Hello World. 

B4: Để tạo một bảng, chọn All Databases > HELLOWLD > Tables từ bên trái của cửa sổ hiển thị của Trung tâm điều khiển. Nhấn Create New Table từ cửa sổ hiển thị đáy bên phải. Thủ thuật tạo bảng mới sẽ khởi chạy và dẫn dắt bạn qua các bước tạo bảng. 

B5: Trong thủ thuật tạo bảng mới, đầu tiên chọn HWLD từ trình đơn thả xuống làm tên lược đồ. Nhập vàoAUTHOR làm tên bảng. Gõ vào một chú thích miêu tả. Nhấn Next. 

B6: Từ trang Columns, nhấn Add để thêm cột cho bảng AUTHOR. Từ trang Add Column, chỉ rõ AUTHOR_NAME làm tên cột, VARCHAR là kiểu dữ liệu và độ dài là 50=. Nhấn OK. 

B7: Nhấn Add để thêm cột thứ hai, với AUTHOR_ID là tên cột và kiểu dữ liệu là Integer. Nhấn OK. Thêm một cột thứ ba với tên cột là MODULE_NAME kiểu dữ liệu là CHARACTER, và độ dài là 20. Nhấn OK. 
Bạn sẽ thấy ba cột liệt kê trong trang Columns. 

Hình 14. Thủ thuật tạo bảng – các cột trong bảng 

B8: Nhấn Next. Trang Phân chia dữ liệu (Data Partitions) xuất hiện. 

B9: Phân chia dữ liệu, một đặc tính mới trong DB2 9, cho phép người sử dụng phân chia một bảng lớn sang nhiều vùng bảng. Nhấn Next để bỏ qua bước này vì bảng AUTHOR sẽ không phải là một bảng lớn cần được phân chia. 

B10: Từ trang vùng bảng, chọn TBSP_DATA1 là vùng bảng. Chọn Use Separate Index Space, và chọn TBSP_INDEX1 làm vùng bảng chỉ mục. Theo tùy chọn bạn cũng có thể xác định một vùng bảng lớn riêng biệt đối với bất kỳ đối tượng lớn nào, tuy nhiên ở đây sẽ không làm như thế. Nhấn Next. 

B11: Nếu bạn không thấy TBSP_DATA1 hoặc TBSP_INDEX1, hãy hủy thủ tục tạo bảng mới và kiểm tra chắc rằng đã làm tươi cửa sổ hiển thị vùng bảng trong Trung tâm điều khiển. 

B12: Không định nghĩa bất kỳ khóa chính hoặc khoá duy nhất, kích thước hoặc ràng buộc nào vào lúc này. Tiếp tục nhấn Next trên các trang kế tiếp cho đến khi bạn đến trang Summary. 

B13: Dùng Show SQL từ trang Summary để xem lệnh Create Table thực tế. Nhấn Finish để tạo bảng HWLD.AUTHOR. 

B14: Bạn sẽ trông thấy cửa sổ thông báo DB2 (DB20000), cho biết lệnh đã hoàn tất mà không mắc lỗi. Đóng cửa sổ thông báo này. 

B15: Từ Trung tâm điều khiển, khung xem các bảng, nhấn vào bảng AUTHOR vừa tạo ra và bạn sẽ trông thấy định nghĩa các cột bảng, lược đồ và người tạo bảng trong cửa sổ hiển thị. 

Hình 15. Trung tâm điều khiển – xem bảng

B16: Sau khi khảo sát bảng HWLD.AUTHOR, bổ sung thêm một cột nữa tên là AUTHOR_DOC. Định nghĩa nó là một cột XML vì bạn lưu tài liệu XML trực tiếp trong cột XML này. 

B17: Nhấn chuột phải vào AUTHOR, chọn Alter từ trình đơn và thủ thuật Alter Table (sửa đổi bảng) sẽ mở ra. Nhấn Add để bắt đầu thủ thuật Add Column (thêm cột). 

B18: Từ Add Column gõ AUTHOR_DOC làm tên cột và chọn XML làm kiểu dữ liệu. Chọn Nullable để cho biết rằng cột này có thể chứa giá trị NULL (giá trị rỗng). Nhấn OK. 

B19: Kiểm tra thủ thuật Alter Table để xác nhận một cột XML mới đã được thêm vào chưa. Bạn có tùy chọn để lưu dữ liệu bảng này ở dạng nén, nhất là nếu bạn lo thiếu không gian nhớ và dữ liệu bảng của bạn là lớn. Ở đây hãy để dữ liệu ở dạng không nén. Nhấn OK để kết thúc thủ thuật ALTER TABLE. Một thông báo, DB20000, sẽ được phản hồi. Đóng cửa sổ thông báo này. 

Từ Control Center, Table > Author, bạn sẽ trông thấy cột thứ tư với kiểu dữ liệu là XML. 

B20: Để tạo ra một khung nhìn dựa trên bảng Author, chọn Control Center > All Databases > HWLD > Views > Create New View. Một thủ thuật Create View (tạo khung nhìn) sẽ dẫn dắt bạn qua các bước để tạo khung nhìn. 

B21: Trong thủ thuật Create View, chọn HWLD làm lược đồ của khung nhìn, gõ DB2_AUTHOR làm tên khung nhìn. 

B22: Thay câu lệnh SQL với nội dung sau: 

(AUTHOR_NAME, MODULE_NAME) 
AS
SELECT AUTHOR_NAME, MODULE_NAME FROM HWLD.AUTHOR WHERE MODULE_NAME='DB2 UDB' 

Trong các hộp kiểm, phải đánh dấu chọn None để khung nhìn có thuộc tính chỉ đọc. Nhấn OK để tạo ra khung nhìn DB2_AUTHOR. 

B23: Từ Trung tâm điều khiển, chọn khung nhìn DB2_AUTHOR và hãy xem định nghĩa khung nhìn trong bảng ở nửa dưới bên phải của màn hình. 

Hình 16. Các khung nhìn – Các đối tượng liên quan

B24: Nhấn Show Related Objects. Từ trang Show Related, nhấn lên phiếu Tables. Thông tin về bảng cơ sở của khung nhìn này được hiển thị. Nhấn Close.

Source: Ibm.com

Thứ Ba, 27 tháng 9, 2011

Tạo một vùng bảng trong DB2 - P3

Vùng bảng (Table Spaces) là một tầng lôgíc, nơi lưu trú của một số đối tượng cơ sở dữ liệu như các bảng, các khung nhìn và các chỉ mục. Một cơ sở dữ liệu có thể có nhiều vùng bảng. Khi một cơ sở dữ liệu được tạo ra lần đầu tiên, một tập hợp các vùng bảng được DB2 tạo ra một cách tự động.

Từ Trung tâm điều khiển, mở rộng HELLOWLD và nhấn phím Table Spaces. Bạn sẽ nhìn thấy ba vùng bảng khác nhau liệt kê trong cửa sổ hiển thị bên phải của Trung tâm điều khiển như Hình 7.

Hình 7. Khung nhìn vùng bảng trong Trung tâm điều khiển 

Các vùng bảng này được DB2 tạo ra khi tạo cơ sở dữ liệu HWLD. Cả hai SYSCATSPACE và TEMPSPACE1 là vùng bảng hệ thống và không thể hủy đi (drop) hoặc khởi tạo lại được. SYSCATSPACE là vùng bảng danh mục hệ thống, dùng để lưu trữ thông tin meta về cơ sở dữ liệu. TEMPSPACE1 dùng để lưu trữ kết quả tạm thời khi thực hiện một số thao tác cơ sở dữ liệu.
USERSPACE1 là vùng bảng mặc định của người sử dụng để lưu dữ liệu của người sử dụng như các bảng, khung nhìn và chỉ mục. Bất kỳ người sử dụng DB2 nào có đủ thẩm quyền đều có thể hủy đi và khởi tạo lại USERSPACE1 hoặc tạo ra nhiều hơn các vùng bảng của người sử dụng. Trong các phần sau sẽ trình bày nhiều hơn về thẩm quyền.

1. Vùng bảng SMS hay DMS

Khi bạn tạo ra một vùng bảng, bạn có thể lựa chọn để vùng bảng này là loại SMS hay DMS. 

SMS là viết tắt của System Managed Space (không gian do hệ thống quản lý) còn DMS là viết tắt của Database Managed Space (không gian do cơ sở dữ liệu quản lý). 

Trong một vùng bảng SMS, không gian được quản lý bởi hệ thống tệp của hệ điều hành và được cấp phát theo yêu cầu. Vùng bảng SMS cần cài đặt ban đầu ít hơn để tạo ra nó, cần xem xét quản lý ít hơn và nói chung là dễ dàng tạo ra và sử dụng do không gian nhớ được cấp phát một cách tự động khi cần thiết. 

Trong một vùng bảng DMS, không gian nhớ được DB2 quản lý. Một vùng bảng DMS đòi hỏi không gian nhớ phải được cấp phát trước, vào lúc tạo lập nó, và như vậy đòi hỏi công việc cài đặt ban đầu nhiều hơn, cần xem xét quản lý nhiều hơn. Tuy nhiên nó cung cấp tính linh hoạt cao hơn cho người sử dụng để điều khiển việc xếp đặt dữ liệu và cải tiến hiệu quả truy nhập dữ liệu. 

Nói chung, một vùng bảng DMS được thiết kế và điều chỉnh tốt sẽ đạt hiệu quả tốt hơn một vùng bảng SMS tương tự.

Từ khung nhìn các vùng bảng, nhấn lên tên từng vùng bảng. Hãy quan sát thông tin chi tiết hiển thị trong cửa sổ nằm ở đáy bên phải. SYSCATSPACE và USERSPACE1 cả hai đều là vùng bảng SMS, còn TEMPSPACE1 là một vùng bảng DMS. Bạn cũng có thể tạo ra được vùng bảng của chính mình.

2. Vùng đệm

Vùng đệm (Bufferpool) là một tập hợp các khối nhớ dưới dạng các trang bộ nhớ. Khi một cơ sở dữ liệu được tạo ra lần đầu, một vùng đệm mặc định là IBMDEFAULTBP cũng được tạo ra. Bạn có thể tạo ra một vùng đệm mới khi bạn tạo một vùng bảng hoặc sử dụng thủ thuật tạo vùng đệm mới (Create New Vùng đệm wizard) từ khung nhìn các vùng đệm.

Vai trò quan trọng nhất của vùng đệm là ở chỗ nó giúp giảm bớt chi phí nhập/xuất (I/O cost) khi cơ sở dữ liệu đang đọc và ghi dữ liệu lên đĩa và từ đĩa. Điều này đạt được thông qua tiền nạp nhập/xuất (I/O pre-fetching) và qua các bộ lọc trang (page cleaners). Tiền nạp nhập/xuất giảm bớt chi phí nhập/xuất để đọc một trang bằng cách xác định trước những trang khả dĩ nào có thể cần đến cho một truy vấn cụ thể và sau đó đọc chúng vào trong vùng đệm để cho khi truy vấn cần đến thì chúng sẵn sàng sử dụng được. Bộ lọc trang đảm bảo rằng bất kỳ trang nào không còn cần đến cho các giao dịch nữa thì được ghi lên đĩa trước tiên nếu các trang đó đã được cập nhật, và sau đó được dọn đi khỏi vùng đệm. Điều này đảm bảo có đủ không gian sạch để đọc vào bộ nhớ các trang trong vùng đệm.

DB2 hỗ trợ các kích cỡ trang khác nhau: 2K, 4K, 8K, 16K, và 32K. IBMDEFAULTBP sử dụng cỡ trang 4K. Nếu bạn muốn tạo ra một vùng bảng mà sử dụng cỡ trang khác với 4K, đầu tiên hãy chắc chắn rằng bạn đang có một vùng đệm sử dụng cỡ trang đó trong cơ sở dữ liệu. Nhiều vùng bảng có thể sử dụng cùng một vùng đệm. Bạn có thể chỉ rõ vùng đệm nào sẽ sử dụng khi tạo hoặc thay đổi vùng bảng. Việc lựa chọn và tạo ra vùng đệm thích hợp là rất quan trọng đối với hiệu năng của cơ sở dữ liệu. Bạn có thể tạo ra một vùng đệm mới hoặc thay đổi một vùng đệm hiện tại để phù hợp với nhu cầu của mình.

Từ Trung tâm điều khiển, nhấn Buffer Pools. Bạn có thể trông thấy tất cả các vùng đệm trong cơ sở dữ liệu. Hãy chọn tạo ra một vùng đệm mới hoặc thay đổi một vùng đệm hiện có.

Hình 8. Khung nhìn vùng đệm của Trung tâm điều khiển 

3. Bảng và khung nhìn danh mục hệ thống DB2

DB2 tạo ra nhiều bảng và khung nhìn danh mục hệ thống trong vùng bảng danh mục khi nó tạo ra một cơ sở dữ liệu mới. Các bảng và khung nhìn danh mục hệ thống này dùng để lưu vết các thông tin quan trọng mà người quản lý cơ sở dữ liệu cần biết về các đối tượng, các thông tin kiểm soát truy nhập và các công cụ của cơ sở dữ liệu của mình. Các khung nhìn danh mục hệ thống dựa trên các bảng danh mục hệ thống cơ sở. Người sử dụng quan tâm đến dữ liệu bảng danh mục hệ thống thường hay truy vấn các khung nhìn danh mục hệ thống này.

Từ Trung tâm điều khiển, trong khung nhìn All Database, hãy mở rộng HELLOWLD, rồi chọn Table Spaces. Chọn SYSCATSPACE xuất hiện trong cửa sổ phía trên bên phải. Bạn có thể nhìn thấy thông tin tóm tắt của vùng bảng này trong cửa sổ phía dưới bên phải:

Hình 9. Khung nhìn các vùng bảng của Trung tâm điều khiển 

Nhấn Show Related Objects. Một trang mới xuất hiện cho thấy tất cả các bảng và các chỉ mục cùng với lược đồ SYSIBM của chúng trong vùng bảng SYSCATSPACE. Nhấn Indexes tất cả các chỉ mục trong SYSCATSPACE sẽ được liệt kê. Show SQL cho bạn biết lệnh Select để nhận được danh sách các bảng hoặc các chỉ mục trong vùng bảng này.

Bảng, chỉ mục, lược đồ và khung nhìn, tất cả đều là các đối tượng DB2 quan trọng và sẽ được bàn thảo chi tiết sau trong hướng dẫn này. Tuy nhiên, trước hết bạn hãy thử tạo một vùng bảng:

B1. Nhấn Create New Tablespace (tạo vùng bảng mới) từ trung tâm điều khiển để bắt đầu thủ thuật tạo vùng bảng (Create Table Space Wizard). Gõ nhập TBSP_DATA1 là tên vùng bảng, và nhập DMS tablespace to hold data trong trường comment.

B2. Đánh dấu Regular để lựa chọn kiểu vùng bảng sử dụng và nhấn Next. Bảng Specify a buffer pool (xác định vùng đệm) xuất hiện, trên đó bạn sẽ chọn vùng đệm được vùng bảng này sử dụng.

B3. Hãy sử dụng vùng đệm IBM mặc định, tuy nhiên bạn cũng có thể tạo ra một vùng đệm mới bằng cách sử dụng nút Create. Nhấn Next. 

Hình 10. Tạo vùng bảng mới -- Xác định vùng đệm

B4. Bảng này cho phép bạn xác định rõ vùng bảng của bạn sẽ được cơ sở dữ liệu quản lý (DMS) hay được hệ thống quản lý (SMS). Chọn Database-managed space (high performance). Nhấn Next. Trang Containers xuất hiện.

B5. Từ trang Containers, bạn có thể xác định số containers. Container có thể là một thư mục, một tệp hoặc một thiết bị, nơi dữ liệu vùng bảng được lưu giữ. Bạn có thể tạo ra nhiều container cho mỗi vùng bảng, và bạn có thể hủy một container đang có hoặc thêm nhiều container hơn vào một vùng bảng sau khi vùng bảng được tạo ra. Nhấn Add và trang Define Container xuất hiện, cho phép bạn định nghĩa các container cho vùng bảng mới của bạn.

B6. Có thể định nghĩa nhiều container cho vùng bảng mới của bạn. Các containers khác nhau có thể được định vị trong các nút (node) hoặc đường dẫn vật lý khác nhau. Làm theo các hướng dẫn như trong Hình 11 để bổ sung container rồi nhấn OK. 

Hình 11. Tạo vùng bảng mới -- Thêm Container 

B7. Hãy bổ sung một container nữa có tên là tbsp_data1_c02 trong cùng đường dẫn, sử dụng cùng một cách thao tác.

B8. Bạn sẽ nhìn thấy 2 container được bổ sung như mô tả trong Hình 12. Mỗi container có kích thước 5MB, tổng cộng 10MB. Nếu bạn không hài lòng với các container mà bạn đã định nghĩa, nhấn Change hoặc Remove. Nhấn Next để tiếp tục. 

Hình 12. Tạo vùng bảng mới -- Trang Container 

B9. Trang tiếp theo này giúp bạn xác định kích thước khu vực (extent) và kích thước tiền nạp (prefetch size) sẽ sử dụng cho vùng bảng này. Một khu vực gồm có một số trang liên tiếp nhau. Số lượng các trang này được coi là kích thước khu vực. Nói chung, nên cấp phát nhiều trang một lần để giảm tải việc cấp phát không gian nhớ. Kích thước tiền nạp nghĩa là số lượng trang mà bộ tiền nạp (prefetcher) đọc vào bộ nhớ khi cho phép thực hiện tiền nạp. Khái niệm về tiền nạp sẽ được bàn sau. Chọn Less than 25MB để thay đổi kích thước trung bình của một bảng và kích thước nên dùng của khu vực vùng bảng sẽ tự động được thay đổi đến mức thiết đặt phù hợp.

B10. Nhấn Summary để hiển thị trang tóm tắt. Nhấn Show SQL và lưu các lệnh SQL này thành C:\DB2\hellowld\crt_tbsp.clp. Nhấn Finish để kết thúc quá trình tạo vùng bảng.

B11. Từ khung nhìn vùng bảng của Trung tâm điều khiển bạn sẽ trông thấy vùng bảng mới là TBSP_DATA1. Nếu bạn không hoàn toàn thỏa mãn với vùng bảng TBSP_DATA1 mới tạo ra này, nhấn Alter Tablespace để thay đổi vùng bảng. Nhấn Create New Tablespace nếu bạn muốn tạo ra một vùng bảng SMS. 

Hình 13. Trung tâm điều khiển – khung nhìn vùng bảng 

Sẽ rất có lợi nếu lưu giữ dữ liệu chỉ mục, các đối tượng lớn (LOB - Large Objects) và các trường dài (LF - Long Field) hoặc dữ liệu XML tách biệt khỏi dữ liệu bảng. Tuy nhiên không có dữ liệu LOB/LF trong tài liệu này nên bạn không phải tạo ra các vùng bảng cho chúng. Dữ liệu XML được lưu trong cùng một vùng bảng TBSP_DATA1 như các dữ liệu bảng còn lại, nên bạn cũng không phải tạo một vùng bảng cho chúng. Các phần sau sẽ bàn về chỉ mục.

B12. Từ dòng lệnh DB2, nhập cd C:\DB2\HELLOWLD\ để tạo một vùng bảng. Có thể trước hết bạn cần phải tạo ra thư mục HELLOWLD nếu nó chưa có. Sau đó chạy lệnh notepad crt_tbsp.clp. Dùng bộ soạn thảo notepad, biên soạn lại lệnh Create Tablespace, thay thế nó bằng nội dung sau:

CREATE LARGE TABLESPACE TBSP_INDEX1 PAGESIZE 4 K MANAGED BY DATABASE USING (FILE 'C:\DB2\NODE0000\hellowld\dbdir\tbsp_index1_c01' 5120, FILE 'C:\DB2\NODE0000\hellowld\dbdir\tbsp_index1_c02' 5120) EXTENTSIZE 8 OVERHEAD 10.5 PREFETCHSIZE 8 TRANSFERRATE 0.14 BUFFERPOOL IBMDEFAULTBP; 

B13. Thay câu lệnh COMMENT bằng nội dung sau:

COMMENT ON TABLESPACE TBSP_INDEX1 IS 'tablespace to hold index data'; 

B14. Các lệnh sau đây nay phải nằm trong crt_tbsp.clp:

CONNECT TO HELLOWLD; 
CREATE LARGE TABLESPACE TBSP_INDEX1 PAGESIZE 4 K MANAGED BY DATABASE USING (FILE 'C:\DB2\NODE0000\hellowld\dbdir\tbsp_index1_01' 5120, FILE 'C:\DB2\NODE0000\hellowld\dbdir\tbsp_index1_c02' 5120 ) EXTENTSIZE 8 OVERHEAD 10.5 PREFETCHSIZE 16 TRANSFERRATE 0.14 BUFFERPOOL IBMDEFAULTBP ; 
COMMENT ON TABLESPACE TBSP_INDEX1 IS 'tablespace to hold index data'; 
CONNECT RESET; 

B15. Ghi lưu và thoát notepad.

B16. Chạy lệnh db2 -tvf crt_tbsp.clp từ cửa sổ dòng lệnh DB2, và bạn sẽ thấy vùng bảng thực hiện thành công. Các tùy chọn -tvf là các tùy chọn dòng lệnh DB2 cho phép bạn chạy các lệnh DB2 từ một tệp.

B17. Đến Trung tâm điều khiển, nhấn Selected từ trình đơn chính của Trung tâm điều khiển, rồi nhấn Refresh từ trình đơn xổ xuống để xem toàn bộ các vùng bảng bạn đã tạo ra từ trước đến nay.

Source: Ibm.com

Tạo một cơ sở dữ liệu DB2 - P2

Sau khi cài đặt DB2, bạn đã sẵn sàng để tạo ra cơ sở dữ liệu của chính mình trong môi trường DB2. 

Đầu tiên cần xem xét cơ sở dữ liệu của bạn nên sử dụng cá thể máy chủ cơ sở dữ liệu (instance) nào. Một cá thể máy chủ cơ sở dữ liệu cung cấp một tầng lôgíc (logical layer) nơi mà bạn có thể nhóm các cơ sở dữ liệu lại với nhau, cùng được điều khiển bởi một tệp cấu hình quản lý cơ sở dữ liệu (DBM CFG - database manager configuration file).

Tệp DBM CFG này chứa một danh sách các tham số DBM CFG mà bạn có thể sử dụng để tinh chỉnh cá thể máy chủ cơ sở dữ liệu. Bạn có thể tạo ra nhiều cá thể máy chủ cơ sở dữ liệu trên mỗi trạm làm việc và trong mỗi cá thể, bạn có thể tạo ra nhiều cơ sở dữ liệu. Đối với hướng dẫn này, hãy sử dụng cá thể DB2, được tạo ra trong khi cài đặt. Chi tiết sâu hơn về tệp DBM CFG có thể tìm thấy trong tài liệu hướng dẫn tiếp theo, "DB2 cho Linux, UNIX và Windows - Giới thiệu một số đặc tính và khái niệm nâng cao."

Như các bài tập sau đây cho thấy, có một số nhân tố cần xem xét khi bạn tạo ra một cơ sở dữ liệu. Có nhiều cách để tạo ra một cơ sở dữ liệu. Bạn có thể sử dụng thủ thuật tạo cơ sở dữ liệu với giao diện đồ họa (GUI Create Database Wizard) của Trung tâm điều khiển. Nó dẫn dắt bạn qua từng bước để tạo ra một cơ sở dữ liệu. Hoặc nếu bạn đã biết câu lệnh “Create Database” thực tế, bạn có thể ra lệnh trực tiếp từ một cửa sổ lệnh DB2 hoặc từ bộ soạn thảo lệnh hay từ một dòng lệnh.

Trong ví dụ này, hãy sử dụng thủ thuật tạo cơ sở dữ liệu từ bàn khởi chạy những bước đầu tiên của DB2 (DB2 First Steps Launch):

1. Khởi động Trung tâm điều khiển DB2: Nhấn Start > All Programs > IBM DB2 > General Administration Tools và chọn Control Center. 

Khi được nhắc chọn khung nhìn của Trung tâm điều khiển (Control Center View), nhấn OK để chọn khung nhìn mặc định (mức cao - Advanced).

2. Nhấn All Databases như Hình 5, và sau đó nhấn Create New Database (tạo cơ sở dữ liệu mới). Thủ thuật tạo cơ sở dữ liệu của chính bạn sẽ mở ra. 

Hình 5. Tạo cơ sở dữ liệu mới từ trung tâm điều khiển 

3. Trong thủ thuật tạo cơ sở dữ liệu của chính bạn, hãy chỉ rõ tên của cơ sở dữ liệu và thư mục nơi chứa cơ sở dữ liệu. Gõ nhập HelloWld làm tên cơ sở dữ liệu. Chỉ rõ C:\ là đường dẫn mặc định. Nhập hwld là bí danh của cơ sở dữ liệu. Gõ nhập chú thích mô tả tùy thích vào trường Comment.

4. Đánh dấu kiểm Enable Database for XML (cho phép cơ sở dữ liệu cho XML). Các cột XML chỉ có sẵn trong cơ sở dữ liệu dùng bộ mã UTF-8 (Unicode). Cho phép cơ sở dữ liệu cho XML tạo ra một cơ sở dữ liệu dùng mã Unicode.

5. Bạn sẽ không phải chỉ rõ bất kỳ tùy chọn cơ sở dữ liệu nào khác, do đó hãy chọn bảng Summary, sau đó nhấn Show Command để xem các lệnh DB2 được sử dụng tạo ra cơ sở dữ liệu này.

6. Do bạn đã bật cho phép XML trong cơ sở dữ liệu này nên bộ mã đúng CODESET UTF-8 được sử dụng. Nhấn Close. Nếu muốn ghi lưu lại tập hợp các lệnh vào một tệp để tham khảo hoặc sử dụng lại sau này, nhấn Save ở đây thay cho Close.

7. Từ cửa sổ tạo cơ sở dữ liệu mới (Create New Database), nhấn Finish và đợi đến khi thủ thuật tạo cơ sở dữ liệu thực hiện xong.

8. Khi DB2 tạo ra một cơ sở dữ liệu, nó cũng tạo ra các thứ sau:

  • Các thư mục cơ sở dữ liệu cần thiết trên ổ đĩa hoặc đường dẫn mà bạn đã chỉ định.
  • Một tập hợp các vùng bảng mặc định gồm các vùng bảng SYSCAT, TEMPORARY và USER.
  • Một tập hợp các bảng và khung nhìn danh mục hệ thống (system catalog tables and views) trong vùng bảng danh mục.
  • Tệp cấu hình cơ sở dữ liệu (DB CFG file) và các giá trị mặc định được thiết lập.
  • Không gian dành cho các tệp nhật ký khôi phục cơ sở dữ liệu và cấp phát cho nó.
  • Một số ứng dụng dùng cho cơ sở dữ liệu như CLI và bộ xử lý dòng lệnh.

Các vùng bảng và các bảng danh mục hệ thống được bàn luận chi tiết trong các phần sau. Thông tin chi tiết hơn về tệp DBM CFG có thể tìm thấy trong tài liệu hướng dẫn tiếp theo, “DB2 cho Linux, UNIX và Windows – Giới thiệu một số đặc tính và khái niệm nâng cao."

9. Sử dụng Trung tâm điều khiển DB2 để kiểm tra cơ sở dữ liệu mà bạn đã tạo ra. 

Từ băng (panel) bên trái trong Trung tâm điều khiển, hãy định vị và mở rộng All Systems và All Databases. 

Quan sát xem bạn có tìm thấy cơ sở dữ liệu HELLOWLD bạn vừa tạo ra không. All Systems (toàn bộ hệ thống) cung cấp cho bạn khung nhìn đối tượng cơ sở dữ liệu, đầu tiên được nhóm lại theo máy tính, theo cá thể máy chủ cơ sở dữ liệu, rồi đến cơ sở dữ liệu. Chỉ có một cá thể máy chủ cơ sở dữ liệu là DB2 trên máy này. All Databases (toàn bộ cơ sở dữ liệu) cung cấp một khung nhìn nhanh tất cả các cơ sở dữ liệu nằm trong máy này. 

Hình 6. Xem cơ sở dữ liệu mới của bạn

10. Nếu bạn hiểu chính xác lệnh DB2 để tạo một cơ sở dữ liệu, bạn có thể sử dụng lệnh CREATE DATABASE mà bạn đã lưu lại trước đây trong cửa sổ của thủ thuật tạo cơ sở dữ liệu mới và sửa đổi nó tương ứng, rồi từ bộ xử lý dòng lệnh DB2, ra lệnh CREATE DATABASE để tạo một cơ sở dữ liệu.

11. Từ Start > Run, gõ db2cmd và nhấn Enter. Một cửa sổ bộ xử lý dòng lệnh DB2 bật lên. Để nhận trợ giúp về lệnh create database, từ cửa sổ lệnh này nhập db2 ? create database.

12. Nhập db2 CREATE DATABASE MYTESTDB ON C:. Sau khi lệnh thực hiện thành công, nhấn Selected trong thanh trình đơn chính của trung tâm điều khiển và nhấn Refresh. Sau đó quan sát xem có thấy cơ sở dữ liệu MYTESTDB mới của bạn từ Trung tâm điều khiển hay không.

13. Nhập lệnh db2 LIST DATABASE DIRECTORY từ cửa sổ lệnh DB2. Bạn sẽ trông thấy các mục cơ sở dữ liệu ứng với các cơ sở dữ liệu HELLOWLD và MYTESTDB.

Source: Ibm.com

DB2 là gì? - P1

DB2 là một hệ quản trị cơ sở dữ liệu quan hệ (Relational Database Management System - RDBMS), một bộ phận của dòng sản phẩm quản trị thông tin. DB2 được coi là sản phẩm cơ sở dữ liệu đầu tiên sử dụng SQL (một ngôn ngữ cung cấp giao diện cho một RDBMS).

>>> Các bài viết liên quan: P2 P3 P4 P5 P6 P7 P8 P9 P10 P11 P12
>>> Sách để nghiên cứu: DB2 Express-C 9.7

DB2 phát hành lần đầu tiên vào năm 1982 và cho phép chạy trên các nền hệ điều hành: Linux, Unix và Windows.

DB2 có các phiên bản khác nhau đáp ứng các nhu cầu đa dạng:

  • DB2 Everyplace cung cấp cho người sử dụng di động một phiên bản DB2 với bộ nhớ nhỏ và hiệu năng cao.
  • DB2 cho z/OS cung cấp tất cả các tính năng của DB2 cho các hệ thống chủ.
  • DB2 cho Linux, Unix và Windows có một vài loại (flavors):

+ Enterprise Server Edition (ESE – bản máy chủ doanh nghiệp) là một RDBMS hoàn chỉnh với cài đặt khách/chủ (client/server setup). DB2 ESE nhằm đến các doanh nghiệp cỡ từ vừa đến lớn.

+ Workgroup Server Edition (WSE – bản máy chủ nhóm cộng tác) chủ yếu nhằm đến các doanh nghiệp từ nhỏ đến vừa với tất cả các tính năng của DB2 ESE, trừ kết nối với máy tính lớn (mainframe connectivity).

+ Personal Edition (bản cá nhân) cung cấp cho người dùng đơn lẻ trên một máy tính cá nhân.

+ DB2 Express là bản mới bổ sung thêm gần đây nhất vào họ DB2 và sẵn có để tải miễn phí. Nếu bạn không tải xuống DB2 Express như hướng dẫn trong mục Yêu cầu về hệ thống, hãy quay trở lại và thực hiện việc đó trước khi bắt đầu hướng dẫn này. Express dùng cho cộng đồng người dùng DB2, có cùng các đặc điểm và chức năng cốt lõi như của DB2 WSE.

Yêu cầu về hệ thống
Trước khi bắt đầu hướng dẫn này, hãy chắc chắn rằng DB2 Express 9 đã được cài đặt. Có thể tải miễn phí  tại đây: http://www.ibm.com/developerworks/downloads/im/udbexp/?S_TACT=105AGY75
Để xem được các trình diễn kèm trong hướng dẫn này, hãy bật cho phép chạy JavaScript trong bộ trình duyệt của bạn và cài đặt Adobe Flash Player 6 hoặc cao hơn. Tải xuống bản Flash Player mới nhất tại: http://baomathethong.blogspot.com/2012/05/cap-nhat-adobe-flash-player-112202235.html

Hướng dẫn này sử dụng DB2 Express, trên cơ sở bản phát hành mới nhất là DB2 9.

Bạn có thể truy nhập các cơ sở dữ liệu DB2 từ bất kỳ ứng dụng nào sử dụng Microsoft Open Database Connectivity (ODBC) và Java ™ Database Connectivity (JDBC). Các giao diện lập trình ứng dụng (API) đã sẵn có cho một phạm vi rộng các ngôn ngữ lập trình, bao gồm C, C++, Java và FORTRAN. Trong mô đun này bạn sẽ không phải tạo ra một ứng dụng nào sử dụng API. 

Xin tham khảo nhiều thông tin hơn về API tại địa chỉ của Trung tâm thông tin DB2 (DB2 Information Center: http://publib.boulder.ibm.com/infocenter/db2luw/v9/index.jsp

Một cơ sở dữ liệu có thể dùng để lưu giữ bất kỳ loại thông tin nào, dù đó là dữ liệu quan hệ, như tên và địa chỉ của nhân viên của bạn hay đó là dữ liệu dạng nhị phân, thí dụ như ảnh nhận dạng của họ. DB2 9 hiện cũng hỗ trợ pureXML ™ để dễ dàng lưu trữ và lấy ra dữ liệu XML. Dữ liệu có thể được nạp vào và bảo trì, sử dụng các tiện ích sẵn có hoặc được thao tác bằng các vấn tin/truy vấn để lấy ra các thông tin mà bạn đang quan tâm. Bạn có thể kiểm soát tính toàn vẹn dữ liệu bằng một số công cụ mô tả trong tài liệu này.

1. Công cụ DB2

DB2 đưa ra nhiều công cụ để quản trị và bảo trì hằng ngày, được phân loại thành các công cụ dòng lệnh (Command Line Tools), các công cụ quản trị chung (General Administration Tools), thông tin (Information), các công cụ giám sát (Monitoring Tools), và các công cụ cài đặt (Set-up Tools). Các công cụ này có sẵn hoặc trên trình đơn Windows Start như thể hiện trong Hình 1 hoặc trên trình đơn Tools của trung tâm điều khiển (Control Center - CC) và sẽ được mô tả chi tiết hơn sau trong mục này. Dưới đây sẽ giới thiệu tóm tắt mỗi nhóm công cụ.

Hình 1. Các công cụ GUI DB2 

1.1. Các công cụ dòng lệnh

Gồm bộ biên soạn lệnh (Command Editor) và bộ xử lý dòng lệnh (Command Line Processor - CLP), từng cái sẽ được miêu tả chi tiết hơn ngay sau đây, cũng như cửa sổ lệnh (Command Window). 

Cửa sổ lệnh có thể được sử dụng giống hệt như với CLP, chỉ khác là tất cả các lệnh DB2 phải có tiền tố 'db2' vì CLP được khởi động ở chế độ nhập tương tác còn cửa sổ lệnh lại không ở chế độ này.

1.2. Các công cụ quản trị chung 

Gồm có: Trung tâm điều khiển (Control Center) - sẽ được trình bày ngắn gọn, Nhật ký (Journal), Trung tâm bản sao (Replication Center) và Trung tâm tác vụ (Task Center). 

- Nhật ký có thể sử dụng để hiển thị các tác vụ, các hoạt động cơ sở dữ liệu và các thông báo trước đó. 

- Trung tâm bản sao cho phép người sử dụng quản trị môi trường bản sao của cơ sở dữ liệu. 

- Trung tâm tác vụ có thể sử dụng để lập lịch các tác vụ dưới dạng kịch bản lệnh và báo kết quả cho những bên liên quan.

1.3. Thông tin

Gồm có: Trung tâm thông tin (Information Center), có thể sử dụng để tìm trợ giúp đối với bất kỳ các cây cú pháp hay lệnh SQL hoặc DB2 nào.

1.4. Các công cụ giám sát 

Các công cụ giám sát (Monitoring Tools) cho phép người sử dụng giám sát được tình trạng hệ thống của mình, hoặc thường xuyên liên tục hoặc theo kiểu chụp nhanh. 

Với bộ phân tích sự kiện (Event Analyzer), người sử dụng có thể lần theo đầu ra của các bộ giám sát sự kiện. 

Với Trung tâm sức khỏe (Health Center), người sử dụng có thể thấy tình trạng tổng thể và sức khỏe của cơ sở dữ liệu và tiếp nhận các cảnh báo cho các tài nguyên, ví dụ như bộ nhớ hoặc các khóa chặn đạt đến một ngưỡng định trước. 

Bộ quản lý giao dịch hồ nghi (Indoubt Transaction Manager) cho phép người sử dụng thực hiện các thao tác cần thiết đối với các giao dịch hồ nghi (giao dịch bị bỏ lửng ở trạng thái chưa hoàn thành do gặp sự cố chẳng hạn). Giao dịch như vậy có thể được chuyển giao nốt (commited), hồi ngược (rolled back) hoặc xoá bỏ khỏi các nhật ký máy nói chung.

Cuối cùng, khi sử dụng bộ trực quan bộ nhớ (Memory Visualizer), người quản trị có thể giám sát sức khỏe của hệ thống và các cơ sở dữ liệu liên quan đến bộ nhớ, ví dụ như việc cấp phát và sử dụng bộ nhớ hiện thời.

1.5. Các công cụ cài đặt

Các công cụ cài đặt (Setup Tools) giúp người sử dụng cài đặt hệ thống và cơ sở dữ liệu của họ. 

Trợ lý cấu hình (Configuration Assistant) giúp người sử dụng cấu hình các cơ sở dữ liệu sao cho chúng có thể truy cập được từ các máy khách hoặc các ứng dụng khác nhau. Những bước đầu tiên (First Steps) chứa các liên kết đến các nguồn thông tin mà người sử dụng cần để thực hành DB2. Với các công cụ cài đặt người sử dụng cũng có thể tìm ra các lựa chọn để đăng ký môi trường phát triển cơ sở dữ liệu của mình với Microsoft Visual Studio bằng cách sử dụng các phần bổ sung (add-ins). Sau cùng, Bộ đồng bộ vệ tinh (Satellite Synchronizer) cho phép người sử dụng tải lên các thông tin cấu hình các máy vệ tinh tới máy chủ điều khiển các vệ tinh này.

DB2 có thể được quản trị hoặc từ CLP dựa văn bản (text-based) hoặc dùng giao diện đồ họa người-máy (GUI). Trung tâm điều khiển, như mô tả dưới đây, là một trong những công cụ quản trị chính dùng giao diện đồ họa, cho phép người sử dụng thực hiện các thao tác khác nhau trên các đối tượng DB2, ví dụ như tạo ra và sửa đổi chúng. Hầu hết các tác vụ này cũng có thể thực hiện được bằng cách sử dụng bộ xử lý dòng lệnh (CLP), tuỳ theo ý thích của người sử dụng. Các công cụ sử dụng trong hướng dẫn này được mô tả chi tiết hơn trong các phần tiếp theo.

1.6. Bộ xử lý dòng lệnh

Bộ xử lý dòng lệnh (Command Line Processor - CLP) là một giao diện dựa văn bản cho DB2. Nó cho phép người sử dụng nhập vào bất kỳ lệnh nào và nhận được kết quả đầu ra dưới dạng văn bản trên màn hình. Nó cũng cung cấp trợ giúp về cú pháp đối với bất kỳ lệnh nào sẵn có trong môi trường dòng lệnh cũng như các giải thích về mã SQL. Sau đây là một ví dụ của một lệnh DB2 để tìm ra cú pháp của câu lệnh tạo cơ sở dữ liệu:

Hình 2. Bộ xử lý dòng lệnh DB2

1.7. Trung tâm điều khiển

Trung tâm điều khiển (Control Center - CC) là một công cụ dựa trên GUI, thường được sử dụng để quản lý và điều hành các hệ thống, cơ sở dữ liệu và các đối tượng DB2. Sử dụng trung tâm điều khiển, người sử dụng có thể tạo ra và quản lý các cá thể máy chủ cơ sở dữ liệu, các cơ sở dữ liệu và các đối tượng cơ sở dữ liệu, cũng như cấu hình và tinh chỉnh các cá thể và các cơ sở dữ liệu đó. 

Trung tâm điều khiển cung cấp các thủ thuật (wizard) để giúp người sử dụng tạo ra hoặc sửa đổi các đối tượng khác nhau. 

Trung tâm điều khiển cung cấp các khung nhìn đối tượng khác nhau, có thể sửa đổi đi để phù hợp với nhu cầu của người sử dụng. Chẳng hạn, người sử dụng có thể chọn lọc ra chỉ một tập hợp các thao tác có thể được thực hiện trên một đối tượng, thí dụ như một bảng liên quan đến các hoạt động hằng ngày của họ. 

Sau đây là trung tâm điều khiển, sử dụng khung nhìn mặc định để xem toàn bộ các đối tượng trong tất cả các cơ sở dữ liệu:

Hình 3. Trung tâm điều khiển với khung nhìn mặc định 

1.7. Bộ soạn thảo lệnh

Bộ soạn thảo lệnh (Command Editor) rất giống CLP ở chỗ nó cho phép quản trị cơ sở dữ liệu DB2 bằng cách sử dụng các lệnh dạng văn bản. Nó cũng chấp nhận các lệnh DB2, các câu lệnh SQL và các lệnh của hệ điều hành. Không giống như CLP, bộ soạn thảo lệnh cho phép người sử dụng cắt và dán vào bộ đệm để dễ dàng thảo kịch bản lệnh (scripting) và các lệnh trước đó có thể được lấy lại dễ dàng thông qua GUI. Sau đây là một ví dụ dùng bộ soạn thảo lệnh để tạo một bảng:

Hình 4. Bộ soạn thảo lệnh DB2 

Editor: Dương Tạ Kim Linh (Baomathethong.blogspot.com)
Author & Source: Ibm.com