Chuẩn bị cho kỳ thi cơ bản về DB2 9, Phần 3: Truy cập đến dữ liệu DB2
George Baklarz, Giám đốc DB2, IBM
Tóm tắt: Bài viết này giới thiệu với bạn các đối tượng (objects) cấu thành lên dữ
liệu DB2, và các nhân tố khác ảnh hưởng đến cách dữ liệu được tạo ra. Sau khi
giới thiệu ngắn gọn về các đối tượng trong DB2, chúng ta sẽ xem xét đến các công
cụ khác nhau để tạo ra (create), truy cập (access), và vận dụng (manipulate) các
đối tượng DB2. Đây là bài viết thứ ba trong một loạt các bài viết giúp bạn chuẩn
bị làm việc với kỳ thi 730 về DB2® 9 trên nền Linux®, UNIX®, và Windows™.
Trước khi bạn bắt đầu
Giới thiệu về loạt bài viết này
Bạn đang suy nghĩ về việc tìm kiếm chứng chỉ cơ bản về DB2 (Bài thi 730)? Nếu
thế, bạn đã tìm đến đúng chỗ rồi đấy. Loạt bảy bài viết về việc chuẩn bị thi lấy
chứng chỉ DB2 bao gồm toàn bộ kiến thức cơ bản những chủ đề mà bạn cần
phải hiểu trước khi bạn đọc câu hỏi đầu tiên của bài thi. Thậm chí nếu bạn không
có kế hoạch lấy chứng chỉ ngay lúc này, thì những bài viết này cũng nơi rất tốt để
bắt đầu học xem có gì mới trong DB2 9.
Giới thiệu về bài viết
Bài viết này là bài thứ ba trong loạt bảy bài viết giúp bạn chuẩn bị cho kỳ thi 730
lấy chứng chỉ DB2 9. Tài liệu trong bài học này bao trùm tất cả các mục tiêu trong
phần ba của bài kiểm tra, nó có tiêu đề là "Accessing DB2 Data" (Truy xuất dữ
liệu DB2).
Việc cài đặt DB2 không được đề cập trong bài viết này, nếu bạn chưa có DB2, bạn
hãy tải và cài đặt phiên bản IBM DB2 9, Express Community Edition. Việc cài đặt
DB2 sẽ giúp bạn hiểu được rất nhiều khái niệm sẽ được kiểm tra trong kỳ thi lấy
chứng chỉ cơ bản DB2 9.
Sau khi bạn đã cài đặt DB2, bạn muốn lấy dữ liệu và chạy nó càng nhanh càng tốt.
Bài học này giới thiệu với bạn các đối tượng làm nên cơ sở dữ liệu DB2 và những
nhân tố ảnh hưởng đến cách mà cơ sở dữ liệu được tạo ra. Sau khi giới thiệu ngắn
gọn về DB2, chúng ta sẽ xem xét các công cụ khác để tạo ra, truy cập và vận dụng
các đối tượng này.
Các khóa, thủ tục bẫy (triggers), các thủ tục lưu trữ (stored procedures), các
gói
Vùng bộ đệm lưu trữ (Buffer pools), các tệp nhật ký (log files), các không
gian bảng (table spaces)
Một vài đối tượng này, như các bảng hoặc các khung nhìn, giúp xác định cách dữ
liệu được tổ chức như thế nào. Cuối cùng, một vài đối tượng, như vùng bộ đệm
lưu trữ và các đối tượng liên quan đến bộ nhớ khác, chỉ bàn đến việc việc thực thi
cơ sở dữ liệu được quản lý như thế nào.
Thay vì dừng lại ở việc kết hợp các tham số và các đối tượng, quản trị viên nên tập
trung vào sự thực thi vật lý của cơ sở dữ liệu. Làm thế nào để bạn có thể tạo ra một
cơ sở dữ liệu và phân định lưu trữ trên đĩa yêu cầu? Để trả lời câu hỏi này một
cách đích đáng, bạn cần hiểu biết về các đối tượng cơ bản trong một cơ sở dữ liệu
và cách mà chúng được ánh xạ tới vị trí lưu trữ vật lý trên đĩa.
Mô hình lưu trữ DB2
DB2 có cả mô hình lưu trữ vật lý và logic để xử lý dữ liệu. Dữ liệu thực mà người
dùng đề cập đến được tìm thấy trong các bảng. Trong khi các bảng này được tạo
lên từ các cột và các dòng, người sử dụng không cần biết về biểu diễn vật lý của
dữ liệu. Thực tế này đôi khi được ám chỉ như thể sự độc lập vật lý của dữ liệu.
Các bảng được đặt trong không gian bảng. Một không gian bảng được dùng như là
một lớp nằm giữa cơ sở dữ liệu và công ten nơ đối tượng (container objects) chứa
các bảng dữ liệu thật sự. Một không gian bảng có thể chứa nhiều hơn một bảng.
Một công ten nơ (bộ chứa) là một thiết bị lưu trữ vật lý, nó có thể được xác định
bởi tên thư mục, tên thiết bị, hoặc một tên tệp. Một công ten nơ được gán cho một
không gian bảng. Một không gian bảng có thể mở rộng qua nhiều các bộ chứa,
điều đó có nghĩa là bạn có thể gặp phải các hạn chế về hệ điều hành, cái mà có thể
giới hạn số lượng dữ liệu mà một bộ chứa có thể có. Mối quan hệ giữa các đối
tượng này được thể hiện trong hình dưới đây.
Mặc dù, bảng là một đối tượng cơ bản trong không gian bảng, một quản trị viên
phải hiểu biết về các đối tượng khác trong hệ thống DB2 và cách chúng ánh xạ tới
một không gian bảng.
(row), hoặc trong một không gian bảng tách rời (separate table space) tương tự
như với các đối tượng BLOB. Đây là dạng dữ liệu duy nhất có thể kéo dài trong
nhiều trang trong một bảng, các dữ liệu khác chỉ được nằm gọn trong một trang
như là một hàng. Một quản trị viên cần biết cách làm việc với người thiết kế ứng
dụng để xác định xem đối tượng XML được chứa trong bảng sẽ được chứa trong
một trang dữ liệu bình thường hãy được đặt trong một không gian lưu trữ riêng
(separate table space). Nếu hiệu quả tìm kiếm là nhân tố quyết định, người quản trị
viên nên sử dụng một trang có kích thước lớn và lưu các cột XML trong cùng
không gian bảng như những dữ liệu bình thường khác.
Sau khi đã được trang bị những kiến thức về các đối tượng khác nhau trong DB2,
bây giờ bạn đã sẵn sàng để xác định loại không gian nào là bạn cần để phần định
dữ liệu. Các không gian bảng DMS và SMS
Các không gian bảng là một lớp logic nằm giữa cơ sở dữ liệu và các bảng được
chứa trong cơ sở dữ liệu đó. Các không gian bảng được tạo ra trong cơ sở dữ liệu,
còn các bảng được tạo ra trong các không gian bảng. DB2 hỗ trợ ba loại không
gian bảng:
Không gian bảng quản lý hệ thống (SMS): Ở đây, người quản lý tệp hệ
thống của hệ điều hành sẽ phân phối và quản lý không gian lưu trữ. Trước
phiên bản DB2 9, việc tạo ra một cơ sở dữ liệu hoặc bảng không có tham số
sẽ có kết quả trong tất cả các không gian bảng được tạo ra như là các đối
tượng SMS.
Không gian quản lý cơ sở dữ liệu (Database-Managed Space - DMS): Ở
đây, người quản lý cơ sở dữ liệu điều khiển không gian lưu trữ. Không gian
bảng về bản chất là một cài đặt file hệ thống có mục đích đặc biệt được
thiết kế cho sự gặp mặt tốt nhất của những cái mà người quản lý cơ sở dữ
liệu cần.
Tự động lưu trữ với DMS (Automatic Storage With DMS): Automated
yêu cầu có sự can thiệp của người
quản trị hệ thống dữ liệu.
Kích thước
đã được phân
phối có thể
tăng tự động
Giảm nhẹ việc
quản trị
Tốt nhất, ít
yêu cầu hoặc
không yêu
cầu sự điều
Tốt, thỉnh thoảng yêu cầu sự điều
chỉnh (Ví dụ: EXTENTSIZE
PREFETCHSIZE)
Tốt nhất, ít
yêu cầu hoặc
không yêu
cầu sự điều
chỉnh chỉnh
Hiệu suất Rất tốt
Tốt nhất, có thể đặt tới từ 5 đến 10%
với bộ chứa thô
Tốt nhất, tuy
nhiên không
sử dụng các
bộ chứa thô
Kích thước tối
đa của các
Không gian
liệu chỉ có thể được kích hoạt tính năng tự động lưu trữ khi nó lần đầu tiên được
tạo ra. Bạn không thể kích hoạt chức năng này cho cơ sở dữ liệu ngay từ đầu
không được định nghĩa để sử dụng nó. Tương tự, bạn không thể vô hiệu hóa tính
năng lưu trữ tự động của cơ sở dữ liệu mà ban đầu đã được thiết kế là có sử dụng
tính năng này.
Bảng sau tổng kết lại một số sự khác biệt giữa lưu trữ không tự động và lưu trữ tự
động
Tính
năng
Lưu trữ không tự động Lưu trữ tự động
Việc tạo
ra công
ten nơ
Các công ten nơ phải được cung
cấp một cách rõ ràng khi không
gian bảng được tạo ra.
Các công ten nơ không thể được
cung cấp khi không gian bảng đã
được tạo ra rồi, chúng sẽ gán và
phân phối (assigned and allocated)
một cách tự động bởi DB2.
Việc lấy
lại kích
thước
công ten
nơ ban
đầu
Việc lấy lại kích thước của các
không gian bảng mặc định là off
(AUTORESIZE NO).
lại các bộ chứa có liên quan đến
không gian bảng.
Một hoạt động khôi phục lại không
thể được dùng để định nghĩa lại các
bộ chứa liên quan đến không gian
bảng vì DB2 bị điều khiển bởi trình
quản lý không gian.
Lý do chính về việc giới thiệu các mô hình lưu trữ tự động là đơn giản hóa việc
quản lý DMS các bảng trong khi vẫn giữ được các đặc điểm về hiệu suất. Có
những tình huống nơi mà người quản trị phải định nghĩa tất cả các đặc điểm của
các bảng đang được sử dụng, nhưng nhiều ứng dụng sẽ giúp ích từ việc giảm sự
quản lý được yêu cầu bởi lưu trữ tự động. Tóm tắt về mô hình lưu trữ DB2
Chúng ta đã lướt qua khá nhiều kiến thức cơ bản trong phần này, giờ đã đến lúc
chứng ta tóm tắt lại những gì đã học được về cơ sở dữ liệu DB2.
Một cơ sở dữ liệu (database) là một tập các đối tượng, bao gồm các bảng,
chỉ mục, các khung nhìn, và đối tượng dài (long objects).
Những đối tượng này được lưu trong các không gian bảng, cái được tạo nên
bởi các các bộ chứa.
Các không gian bảng hoặc được quản lý bởi hệ điều hành (SMS) hoặc bởi
DB2 (DMS, lưu trữ tự động).
Bạn sẽ quyết định xem nên dùng loại không gian bảng nào dựa trên các yếu
tố về lưu trữ và hiệu suất xử lý.
Giờ đây bạn đã là một chuyên gia về các loại các không gian bảng khác nhau, đã
đến lúc bạn tạo ra một cơ sở dữ liệu đầu tiên. Phần tiếp theo sẽ hướng dẫn bạn
cách để tạo nó.
Việc tạo ra cơ sở dữ liệu đầu tiên
Những bước đầu tiên
CREATE DATABASE MY1STDB
Nó là cái gì thế? Bạn tự hỏi. Đúng là thành phần duy nhất được yêu cầu như là
một phần của lệnh tạo cơ sở dữ liệu này chính là tên của cơ sở dữ liệu đó. Các
nguyên tắc đặt tên là:
Tên cơ sở dữ liệu có thể chứa các ký tự như: a-z, A-Z, 0-9, @, #, và $.
Ký tự đầu tiên trong tên phải là chữ cái, @, #, hoặc $ và không được phép
là chữ số hoặc các cụm từ như SYS, DBM, hoặc IBM.
Một tên hoặc bí danh của cơ sở dữ liệu là một chuỗi ký tự chứa từ một đến
8 chữ cái, chữ số, hoặc các ký tự trên bàn phím theo các qui tắc mô tả ở
trên.
Tất nhiên, có nhiều tùy chọn hơn sẵn sàng cho bạn dùng, bạn không phải chỉ đưa
và một cái tên. Hãy kiểm tra xem điều gì thực sự xảy ra khi thực hiện lệnh này. DB2 đã tạo ra cái gì?
Khi bạn đưa ra lệnh CREATE DATABASE, DB2 tạo ra một số tệp. Những tệp
này bao gồm có các tệp nhật ký (log file), thông tin cấu hình (configuration
information), tệp ghi lịch sử (history files), và các không gian bảng (3). Những
không gian bảng gồm có:
SYSCATSPACE: Đây là nơi hệ thống DB2 system catalog được lưu giữ và
nó theo dõi tất cả các siêu dữ liệu (metadata) có liên quan đến các đối tượng
DB2.
TEMPSPACE1: Vùng làm việc tạm thời nơi DB2 đặt các kết quả trung
gian.
USERSPACE1: Nơi mà mặc định, các đối tượng của người dùng nằm ở đó
(các bảng, chỉ mục).
Tất cả các tệp này được đặt trong một thư mục DB2 tìm được trong ổ đĩa mặc định
của bạn. Ổ đĩa mặc định thường là ổ đĩa mà bạn cài đặt DB2 trên đó.
Với các ứng dụng đơn giản, những cấu hình mặc định này là đủ những thứ bạn
'-ALIAS database-alias-'
> + + >
'-USING CODESET codeset TERRITORY territory-'
> + + >
| SYSTEM |
'-COLLATE USING +-COMPATIBILITY +-'
+-IDENTITY +
+-IDENTITY_16BIT-+
+-UCA400_NO +
+-UCA400_LSK +
+-UCA400_LTH +
'-NLSCHAR '
> + + >
'-CATALOG TABLESPACE | tblspace-defn |-'
> + + >
'-USER TABLESPACE | tblspace-defn |-'
> + + >
'-TEMPORARY TABLESPACE | tblspace-defn |-'
Định nghĩa các không gian bảng
tblspace-defn:
| MANAGED BY >
,
V |
> +-SYSTEM USING ( 'container-string'-+ ) + >
| , |
trong ổ D, D là một ổ trên hệ điều hành Windows
CREATE DATABASE MYDB ON D:\TEST
Việc chọn Automatic storage (mặc định) cho phép quản trị viên thiết đặt cơ sở dữ
liệu với đường dẫn tới nơi lưu trữ có thể được sử dụng cho tất cả các nơi chứa
không gian bảng được tạo ra. Thay vì quản trị viên chỉ ra vị trí và kích thước các
bảng một cách rõ ràng, hệ thống sẽ tự động phân phối chúng. Ví dụ, lệnh tạo ra cơ
sở dữ liệu sau thiết lập lưu trữ tự động cho tất cả các không gian bảng trong cơ sở
dữ liệu.
CREATE DATABASE TEST
AUTOMATIC STORAGE ON
/db2/storagepath001,
/db2/storagepath002,
/db2/storagepath003
AUTORESIZE YES
INITIALSIZE 300 M
INCREASESIZE 75 M
MAXSIZE NONE
Sau tùy chọn AUTOMATED STORAGE ON, ba đường dẫn đến tệp dữ liệu được
chỉ ra. Ba đường dẫn này là nơi mà các bộ chứa của không gian bảng được lưu.
Còn lại là các tùy chọn như:
AUTORESIZE YES
Trong trường hợp một không gian bảng vượt quá không gian nhớ (space)
quy định, hệ thống sẽ tự động tăng kích thước của công ten nơ các bộ chứa.
INITIALSIZE 300 M
Mọi không gian bảng được định nghĩa không chỉ ra kích thước ban đầu sẽ
được gán mặc định là 300 MB, mỗi bộ chứa có kích thước là 100 MB (ở
đây có ba đường dẫn lưu trữ).
INCREASESIZE (TĂNG) 75 M (hoặc %)
Trang mã và thứ tự sắp xếp
Một trang mã ký tự được kết hợp với tất cả các loại dữ liệu kiểu ký tự trong DB2
(CHAR, VARCHAR, CLOB, DBCLOB). Một trang mã có thể được xem như một
bảng tham chiếu được sử dụng để chuyển đổi (convert) dữ liệu dạng ký tự
(alphanumeric) thành dữ liệu nhị phân (binary data) được chứa trong cơ sở dữ liệu.
Một cơ sở dữ liệu DB2 có thể chỉ sử dụng một trang mã đơn. Trang mã được thiết
lập trong quá trình lệnh CREATE DATABASE sử dụng tùy chọn CODESET và
TERRITORY. Trang mã có thể sử dụng một byte đơn để biểu diễn một ký tự chữ
cái abc (một byte đơn có thể biểu diễn 256 phần tử đơn độc) hoặc bội byte
(multiple bytes).
Các ngôn ngữ như tiếng Anh chứa khá ít các ký tự đơn độc, do đó, một trang mã
single-byte là đủ để chứa dữ liệu. Các ngôn ngữ như tiếng Nhật yêu cầu nhiều hơn
256 phần tử (elements) để biểu diễn tất các ký tự độc nhất, do đó, một trang mã
multibyte (thường là một trang mã double-byte) được yêu cầu.
Theo mặc định thì thứ tự sắp xếp của một cơ sở dữ liệu được định nghĩa theo
codeset được sử dụng trong lệnh CREATE DATABASE. Nếu bạn chỉ định tùy
chọn COLLATE USING SYSTEM, các giá trị dữ liệu được so sánh dựa vào
TERRITORY (vùng) được chỉ ra cho cơ sở dữ liệu. Nếu tùy chọn COLLATE
USING IDENTITY được dùng, tất cả các giá trị được so sánh sử dụng biểu diễn
nhị phân của nó theo kiểu so từng byte một (byte-by-byte).
Hướng dẫn quản trị DB2 liệt kê một số trang mã khác nhau có thể dùng được khi
tạo cơ sở dữ liệu. Trong hầu hết các thể hiện, một quản trị viên để giá trị mặc định
là trang mã giống như hệ điều hành mà cơ sở dữ liệu đó đang chạy.
Một chú ý đặc biệt cho những ứng dụng có yêu cầu sử dụng dữ liệu dạng XML.
DB2 hiện tại chỉ hỗ trợ cột XML trong một cơ sở dữ liệu mà đã được định nghĩa
dạng Unicode (UTF-8). Nếu cơ sở dữ liệu không được tạo ra với sự hỗ trợ
Unicode, bạn sẽ không thể tạo ra dữ liệu XML. Các định nghĩa không gian bảng