Tải bản đầy đủ (.pdf) (24 trang)

Nghiên cứu tối ưu hóa truy vấn hệ cơ sở dữ liệu

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (455.33 KB, 24 trang )

1
HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG




ĐÀO NGỌC SƠN


NGHIÊN CỨU TỐI ƯU HÓA TRUY VẤN
HỆ CƠ SỞ DỮ LIỆU PHÂN TÁN

Chuyên ngành: Truyền dữ liệu và mạng máy tính
Mã số: 60.48.15
Người hướng dẫn khoa học: PGS.TS ĐOÀN VĂN BAN
TÓM TĂT LUẬN VĂN THẠC SĨ KỸ THUẬT




HÀ NỘI- 2012




2

MỞ ĐẦU
1. Lý do chọn đề tài
Thực trạng hiện nay Viễn thông thanh hóa đang sử dụng phần mềm phục vụ
công tác quản lý và điều hành sản xuất của mình, các ứng dụng chính gồm: Hệ


thống quản lý nhân sự, hệ thống quản lý mạng cáp, hệ thống tính cước, hệ thống
thông tin phục vụ tổ 108,hệ thống báo hỏng, hệ thống quản lý thông tin khách hàng,
website public viễn thông thanh hóa….
Dữ liệu cực lớn lên tới hàng triệu bản ghi.lại phải cập nhật chỉnh lý thường
xuyên nên với mô hình CSDL tập trung sẽ gặp rất nhiều khó khăn về vấn đề máy
chủ, băng thông đường truyền, tính sẵn sàng của hệ thống.Tôi xin đề xuất giải pháp
ứng dụng để xây dựng mô hình CSDL phân tán cho hệ thống thông tin khách hàng
trên hệ quản trị CSDL Oracle
2. Mục đích của đề tài
Nghiên cứu phương pháp xây dựng cơ sở dữ liệu phân tán, tối ưu hóa truy vấn
cơ sở dữ liệu phân tán
3. Đối tượng và phạm vi nghiên cứu
- Đối tượng nghiên cứu là cơ sở dữ liệu phân tán
- Phạm vi nghiên cứu là kỹ thuật đồng bộ và tối ưu truy vấn trong cơ sở dữ liệu
4. Phương pháp nghiên cứu
- Nghiên cứu lý thuyết : tìm hiểu các nghiên cứu các tài liệu trong sách , tạp chí
các bài viết trên mạng internet… tổng hợp so sánh để viết thành luận văn
- Nghiên cứu thực nghiệm : Cài đặt thử nghiệm
5. Các kết quả dự kiến đạt được
- Giới thiệu tổng quan về CSDL phân tán
- Trình bày phương pháp tối ưu hóa truy vấn
- Cài đặt thử nghiệm thuật toán tối ưu hóa truy vấn


3

CHƯƠNG 1.

CƠ SỞ DỮ LIỆU PHÂN TÁN


1.1. Khái niệm về hệ cơ sở dữ liệu phân tán
1.1.1. Khái niệm
Cơ sở dữ liệu phân tán là một tập hợp các dữ liệu phục thuộc lôgic lẫn nhau
của cùng một hệ thống và được lưu trữ trên các trạm của một mạng máy tính. Cơ sở
dữ liệu phân tán làm tăng khả năng truy nhập tới cơ sở dữ liệu lớn trên mạng.
Trong hệ thống đó mỗi máy tính quản lý một cơ sở dữ liệu thành phần được gọi là 1
node hoặc site. [4]
Định nghĩa này nhấn mạnh hai khía cạnh quan trọng của cơ sở dữ liệu phân
tán
- Tính phân tán: Thực tế dữ liệu không cư trú ở cùng một trạm, vì vậy chúng
ta có thể phân biệt một cơ sở dữ liệu phân tán với cơ sở dữ liệu tập trung
- Sự tương quan logic: Các dữ liệu có một số tính chất ràng buộc lẫn nhau và
như vậy có thể phân biệt cơ sở dữ liệu phân tán với tập các cơ sở dữ liệu địa
phương hoặc với các tệp ở các trạm khác nhau trên mạng.
1.1.2. Hệ quản trị cơ sở dữ liệu phân tán(DDBMS)
Khác DDBMS có chức năng hỗ trợ việc tạo và bảo trì cơ sở dữ liệu phân tán, chúng
có các thành phần tương tự như một hệ quản trị cơ sở dữ liệu tập trung thành các
thành phần hỗ trợ trong việc chuyển tải dữ liệu đến các trạm và ngược lại
Hệ quản trị cơ sở dữ liệu phân tán được phân làm 2 loại
- Cơ sở dữ liệu phân tán thuần nhất
- Cơ sở dữ liệu phân tán hỗn tạp
1.1.3 Những ưu điểm của cơ sở dữ liệu phân tán
Lợi ích cơ bản nhất của cơ sở dữ liệu phân tán là dữ liệu của các cơ sở dữ
liệu vật lý riêng biệt được tích hợp logic với nhau làm cho nhiều người sử dụng trên
mạng có thể truy nhập được [7].
1. Cho phép quản lý dữ liệu với nhiều mức trong suốt
2. Tăng độ tin cậy và khả năng sẵn sàng
3. Cải thiện hiệu năng
4
4. Dễ dàng mở rộng

1.1.4 Những nhược điểm của cơ sở dữ liệu phân tán [3]
- Độ phức tạp thiết kế và cài đặt hệ thống tăng: Hệ quản trị cơ sở dữ liệu
phân tán phải bổ sung thêm các chức năng như:
- Khó điều khiển tính nhất quán về dữ liệu
- Các phần mềm hệ thống đảm bảo quản trị, duy trì kết nối, trao đổi dữ liệu
trên mạng.
- Bảo mật khó khăn.
Ở mức phần cứng vật lý, những nhân tố chính sau là để phân biệt một hệ cơ
sở dữ liệu phân tán với hệ cơ sở dữ liệu tập trung :
- Có nhiều máy tính được gọi là các trạm hay các nút.
- Các trạm này phải được kết nối bởi một kiểu mạng truyền thông để truyền
dữ liệu
1.2. Các đặc trưng trong suốt của cơ sở dữ liệu phân tán
- Trong suốt phân tán
- Trong suốt giao dịch
- Trong suốt thất bại
-
Trong suốt thao tác
- Trong suốt về tính không thuần nhất
1.3 Kiến trúc tham chiếu của cơ sở dữ liệu phân tán
Kiến trúc tham chiếu không được cài đặt rõ ràng trên tất cả cơ sở dữ liệu
phân tán, tuy nhiên các mức của nó được khái quát chính xác, thích hợp để mô tả tổ
chức chung cho mọi hệ cơ sở dữ liệu phân tán [3].
- Lược đồ tổng thể: Mô tả tổng thể và thống nhất chung nhất của tất cả dữ liệu
của cơ sở dữ liệu phân tán độc lập với môi trường phân tán.
- Phân đoạn: Mối quan hệ tổng thể có thể được chia thành vài phần không giao
nhau được gọi là các đoạn. Lược đồ phân đoạn định nghĩa ánh xạ giữa các
quan hệ tổng thể
và các phân đoạn. Ánh xạ này là một nhiều: Một số đoạn
tương ứng với một quan hệ tổng thể, nhưng chỉ một quan hệ tổng thể

5
tương ứng với một
đoạn. Ký hiệu R
i
là đoạn thứ i của quan hệ tổng thể R.
- Lược đồ định vị: Định nghĩa ánh xạ từ các phân đoạn vào những trạm chứa
những phân đoạn đó. Tất cả các đoạn tương ứng với cùng quan hệ tổng thể
R và được đặt tại cùng trạm j tạo thành hình ảnh vật lý của quan hệ tổng thể
R tại trạm j.
- Lược đồ ánh xạ địa phương: Ánh xạ các hình ảnh vật lý tới các đối tượng
được thao tác bởi các hệ quản trị cơ sở dữ liệu địa phương. Trong hệ không
thuần nhất ta có các kiểu ánh xạ địa phương khác nhau tại các trạm khác
nhau.



















Hình 1.1: Kiến trúc tham chiếu của cơ sở dữ liệu phân tán

định vị
6
1.4 Các kỹ thuật xây dựng cơ sở dữ liệu phân tán
-
Kỹ thuật phân tách dữ liệu từ một cơ sở dữ liệu để lưu trữ trên các trạm
khác nhau được gọi là phân mảnh.
-
Sử dụng bản sao cho phép cùng một dữ liệu có thể được lưu trữ trên nhiều
hơn một trạm.
- Quá trình định vị các phân mảnh dữ liệu hoặc định vị các bản sao phân
mảnh lưu trữ dữ liệu trên các trạm khác nhau.
1.4.1 Phân mảnh
Sự phân mảnh là chia dữ liệu trong các bảng dữ liệu thành các bộ hoặc các
bảng dữ liệu con. Có ba kiểu phân mảnh một quan hệ tổng thể: Phân mảnh
ngang, phân mảnh dọc và phân mảnh hỗn hợp[9] .
Một sự phân mảnh là đúng đắn nếu thoả mãn ba điều kiện sau:
- Điều kiện không mất thông tin: Tất cả dữ liệu của quan hệ tổng thể phải
đựơc ánh xạ tới các mảnh, có nghĩa mỗi phần tử dữ liệu thuộc quan hệ
tổng thể phải thuộc một hay nhiều mảnh của nó.
- Điều kiện xây dựng lại: Luôn có thể xây dựng lại được quan hệ tổng thể từ
các mảnh đã có.
- Điều kiện rời nhau (chỉ áp dụng cho phân mảnh ngang): Để tối thiểu hoá sự
lặp lại của dữ liệu.
1.4.1.1 Phân mảnh ngang
Phân mảnh ngang là sự phân chia một quan hệ thành các tập con các bộ, mỗi
tập con được xác định bởi phép chọn với tân từ p trên quan hệ tổng thể R:
R

i
=p
i
, với p
i
là tân từ của R
i
. Để có thể khôi phục được R ta dùng phép hợp các
quan hệ R = R
1
 R
2
  R
n
.
1.4.1.2 Phân mảnh ngang dẫn tiếp
Phân mảnh ngang dẫn tiếp là sự phân chia một quan hệ ban đầu thành các
quan hệ thứ hai khác mà các quan hệ đó liên hệ với quan hệ ban đầu bằng một khoá
ngoài. Điều này như là liên hệ dữ liệu giữa quan hệ ban đầu và quan hệ thứ hai
được phân đoạn trong cùng một cách.
7
1.4.1.3 Phân mảnh dọc
Phân mảnh dọc là sự chia một quan hệ thành tập con các bộ, mỗi tập
được xác định bởi một phép chiếu được áp dụng cho quan hệ: R
i
= П
ATTRi
R,
trong đó ATTR
i

là tập con các thuộc tính của R.
Tiêu chuẩn cho sự phân mảnh dọc là đúng đắn:
-
Điều kiện đầy đủ: Nếu một thuộc tính xuất hiện trong một quan hệ
tổng
thể thì nó cũng phải xuất hiện trong một mảnh dọc nào đó.
- Điều kiện xây dựng lại: Cần phải thêm vào mỗi mảnh khoá chính, do
đó
việc xây dựng lại được nhờ vào phép kết nối các mảnh dọc theo
các
thuộc tính chung.
-

Điều kiện rời nhau: ít nhất khoá phải được lặp lại trên tất cả các
mảnh
để cho phép xây dựng lại, nên ở đây không thể xem là rời nhau

hoàn toàn
được.

1.4.1.4 Phân mảnh hỗn hợp
Là sự kết hợp cả phân mảnh dọc và phân mảnh ngang.
1.4.2 Nhân bản dữ liệu
Các chiến lược nhân bản dữ liệu:
1. Nhân bản dữ liệu đầy đủ: Toàn bộ cơ sở dữ liệu sẽ được tạo trên tất cả
mỗi trạm.
Ưu điểm: Điều này sẽ cải thiện tính sẵn sàng cao nhất vì nếu sự cố
trên
trạm này thì vẫn có dữ liệu trên trạm khác và cải thiện hiệu năng
lấy dữ liệu trên

mạng cho các truy vấn toàn bộ vì dữ liệu sẽ
được lấy từ các trạm cục bộ.
Nhược điểm: Các thao tác cập nhập dữ liệu rất chậm vì phải copy, đồng
bộ dữ liệu cho mọi trạm. Kỹ thuật điểu khiển tương tranh và
phục hồi sẽ phức tạp
hơn.
2. Không có nhân bản dữ liệu: Mỗi phân mảnh chỉ được lưu trữ trên một
trạm, phương án này còn được gọi là định vị không dư thừa dữ liệu.
Trong
trường hợp này các phân đoạn phải tách rời nhau để tránh lặp bản ghi
giống nhau
cho các phân đoạn ngang và phân đoạn hỗn hợp.
8
3. Nhân bản dữ liệu từng phần: Một vài phân mảnh có thể được tạo bản sao
và có thể một số phân mảnh sẽ không có bản sao. Việc tạo bản sao này rất có tác
dụng cho các nhân viên làm việc di động, tại các nơi xa trung tâm dữ liệu, có thể
tạo ra bản sao dữ liệu trên laptop của mình và theo chu kỳ đồng bộ dữ liệu với cơ sở
dữ liệu server.
1.4.3 Định vị dữ liệu
Là quá trình gán từng phân đoạn, từng bản sao của phân đoạn cho một trạm
cụ thể trong hệ thống phân tán. Việc chọn trạm nào và số bản sao phụ thuộc vào
yêu cầu hiệu năng và mục tiêu sẵn sàng của hệ thống với các loại giao tác trên các
trạm. Đối với hệ yêu cầu tính sẵn sàng cao, mọi giao dịch thao tác lấy dữ liệu, giao
dịch cập nhật chỉ làm tại một trạm thì nên tổ chức tạo bản sao đầy đủ. Nếu các giao
dịch thường cập nhật một phần dữ liệu tại một trạm thì các phân đoạn cho phần dữ
liệu đó nên được định vị trên trạm đó.
1.5 Kết luận
Cơ sở dữ liệu phân tán rất quan trọng vì nhiều lý do khác nhau, nó có thể
được cài đặt trên các mạng máy tính diện rộng và các mạng cục bộ nhỏ. Có hai lý
do về tổ chức và kỹ thuật đối với sự phát triển cơ sở dữ liệu phân tán đó là: Cơ sở

dữ liệu phân tán được xây dựng để khắc phục các thiếu sót của cơ sở dữ liệu tập
trung và nó phù hợp hơn trong cấu trúc phân quyền của nhiều tổ chức. Kỹ thuật cơ
sở dữ liệu phân tán được mở rộng và phát triển từ kỹ thuật của cơ sở dữ liệu truyền
thống. Trong môi trường mới này, một số vấn đề kỹ thuật đòi hỏi các giải pháp
khác, và một số giải pháp hoàn toàn mới.
Tính trong suốt phân tán cung cấp sự độc lập của các chương trình khỏi sự
phân tán của cơ sở dữ liệu. Các mức trong suốt phân tán khác nhau có thể được
cung cấp bởi một hệ quản trị cơ sở dữ liệu phân tán; Tại mỗi mức, tính trong suốt
làm cho người lập trình ứng dụng không biết được sự phân tán dữ liệu.



9
CHƯƠNG 2. TỐI ƯU HÓA CÂU TRUY VẤN TRONG CƠ SỞ
DỮ LIỆU PHÂN TÁN

Các ngôn ngữ hỏi bậc cao như SQUARE, SEQUEL, SQL, cho phép viết
nhiều câu truy vấn với sự quan tâm nhiều đến thời gian thực hiện, và thời gian thực
hiện đó có thể giảm đáng kể nếu bộ xử lý ngôn ngữ hỏi viết lại (bằng cách khác)
câu truy vấn trước khi thực hiện. Sự cải tiến như vậy thường gọi là "Sự tối ưu hoá",
mặc dù câu truy vấn được viết lại không cần tối ưu trên tất cả các cách cài đặt câu
truy vấn có thể
2.1. Giới thiệu về xử lý truy vấn
Mục đích của xử lý truy vấn :
- Giảm thiểu thời gian xử lý
- Giảm vùng nhớ trung gian
- Giảm chi phí truyền thông của các trạm
2.1.1 Các yêu cầu của phép biến đổi tối ưu hoá câu truy vấn
- Các phép biến đổi phải thực sự hữu hiệu đối với phần lớn các dạng câu
truy vấn hay một lớp các câu truy vấn thường dùng mà không phải chi phí quá

nhiều để thực hiện quá trình biến đổi đó.
- Các phép biến đổi phải bảo toàn kết quả của câu truy vấn trước và sau khi
biến đổi, có nghĩa là hai biểu thức trước và sau khi biến đổi phải cho cùng một kết
quả khi thay các lược đồ trong biểu thức bởi các thể hiện cụ thể.
- Các phép biến đổi phải làm giảm chi phí để thực hiện câu truy vấn. Chi
phí cho xử lý câu truy vấn có rất nhiều yếu tố, tuy nhiên ta chỉ quan tâm đến một số
thông báo cơ bản nhất sau đây: số lần truy xuất khối nhớ giữa bộ nhớ trong và bộ
nhớ ngoài; số bản ghi cần phải xử lý ở thiết bị trung tâm; phần bộ nhớ để lưu trữ
các kết quả trung gian trong quá trình thực hiện câu truy vấn.
2.1.2 Các phương pháp xử lý truy vấn cơ bản
Phương pháp biến đổi đại số :
10
Đơn giản hóa câu truy vấn nhờ các phép biến đổi đại số tương đương nhằm
giảm thiểu thời gian thực hiện các phép toán, phương pháp này không quan tâm đến
cấu trúc và kích thước dữ liệu
Phương pháp ước lượng chi phí :
Xác định kích thước dữ liệu, thời gian thực hiện mỗi phép toán trong câu
truy vấn. Phương pháp này phải xác định kích thước dữ liệu và chi phí thời gian
thực hiện mỗi phép toán trong câu truy vấn
2.2 Các kỹ thuật tối ưu hóa tập trung
Phần này sẽ trình bày hai kỹ thuật tối ưu hoá câu truy vấn đối với hệ tập
trung. Sự biểu diễn này là điều kiện để tối ưu hóa câu truy vấn phân tán với ba lý
do:
-
Một câu
truy vấn
phân tán được biến đổi thành các câu
truy vấn
địa
phương được

xử lý theo cách tập trung.
-
Các kỹ thuật tối ưu hoá câu
truy vấn
phân tán thường là sự mở rộng các
kỹ
thuật đối với hệ tập trung.
-
Tối ưu hoá tập trung thường là vấn đề đơn giản, sự tối thiểu hoá chi phí
truyền thông dẫn đến tối ưu hoá câu truy vấn phân tán phức tạp hơn.
2.2.1 Thuật toán INGRES
INGRES sử dụng thuật toán tối ưu hoá câu truy vấn động, chia một truy vấn
phép tính quan hệ thành các truy vấn nhỏ hơn. Một truy vấn đa biến đầu tiên được
phân tích thành một dãy các truy vấn con có một biến duy nhất chung, mỗi truy vấn
con được dựa vào kết quả của truy vấn con trước đó. Sau đó, mỗi truy vấn con
được xử lý bởi "bộ xử lý truy vấn một biến" (OVQP: one-variable query
processor). OVQP tối ưu truy nhập tới một quan hệ đơn, bằng cách lựa chọn
phương pháp truy nhập tốt nhất (chỉ số, quét tuần tự). Ví dụ: với tân từ dạng <A =
value> thì nên dùng một chỉ số trên A; với tân từ dạng <Avalue> thì nên dùng
quét tuần tự.
Câu truy vấn q được phân tích thành hai câu truy vấn con
q
i-1
và q
i
, ký hiệu q
i-
1

q

i
, nghĩa là
qi-1
được thực hiện trước và kết quả của nó được sử dụng bởi q
i
.
11
Bộ

xử lý câu truy vấn INGRES phân tích q thành n câu truy vấn q
1
 q
2
 q
3

q
n
. Sự phân tích này sử dụng hai kỹ thuật cơ bản phân tách và thay thế.
2.2.2 Thuật toán SYSTEM R
System R thực hiện tối ưu hóa truy vấn tĩnh, đầu vào là một cây đại số quan hệ
do phân tích một truy vấn SQL, đầu ra là sơ đồ thực hiện cây đại số quan hệ "tối
ưu". Thuật toán tối ưu bao gồm hai bước chính:
-

Dự đoán phương pháp truy nhập tới
mỗi quan hệ đơn tốt nhất dựa trên
một
giả thiết chọn.
- Với mỗi quan hệ R, đánh giá thứ tự kết nối tốt nhất, trong đó R được truy

nhập trước tiên sử dụng phương pháp truy nhập quan hệ - đơn tốt nhất của
nó.
Có hai phương pháp có thể để xét các phép kết nối. Khi kết nối hai quan hệ,
quan hệ có các bộ đọc trước gọi là quan hệ ngoài, quan hệ có các bộ được tìm thấy
tùy theo các giá trị có được từ quan hệ ngoài gọi là quan hệ trong. Quyết định quan
trọng với mỗi phương pháp kết nối là xác định hướng truy nhập tới quan hệ trong rẻ
nhất.
Phương pháp 1, gọi là các vòng lặp lồng nhau, thực hiện tích hai quan hệ. Với
mỗi bộ của quan hệ ngoài, các bộ của quan hệ trong thoả mãn giả thiết kết nối được
gọi ra để tạo quan hệ kết quả. Nếu không đánh chỉ số, với các quan hệ được lưu trữ
theo thứ tự trên n
1
, n
2
bộ bản ghi, thuật toán này có chi phí là n
1
* n
2
.
Phương pháp 2, gọi là kết nối trộn, kết nối hai quan hệ đã sắp xếp trên thuộc
tính kết nối. Nếu là kết nối bằng, chi phí của việc kết nối hai quan hệ được lưu trữ
trên n
1
và n
2
bộ bản ghi là n
1
+ n
2
. Vì vậy, phương pháp này luôn được chọn khi có

kết nối bằng, và khi các quan hệ được sắp xếp trước. Nếu chỉ một hoặc không có
quan hệ nào được sắp xếp, chi phí của vòng lặp lồng nhau được so sánh với chi phí
của phương pháp trộn + chi phí sắp xếp. Chi phí sắp xếp n bộ bản ghi là nlog
2
n.

12
2.3 Tối ưu hóa truy vấn phân tán

2.3.1 Mục tiêu của bài toán truy vấn
Mục tiêu của bài toán truy vấn trong môi trường phân tán là biến đổi câu vấn tin
cáp cao trên CSDL phân tán (mà người sử dụng vẫn tưởng là CSDL tập trung) thành một
chiến lược thực thể hiệu quả được diễn tả bằng một ngôn ngữ cấp thấp trên các CSDL cục
bộ. Giả sử ngôn ngữ cấp cao là phép tính quan hệ, ngôn ngữ cấp thấp là một dạng mở rộng
của đại số quan hệ đi kèm với các thao tác truyền dữ liệu.
Xét các quan hệ EMP (ENO, ENAME, TITLE)
ASG (ENO, PNO, RESP, DUR)
Và câu vấn tin: “Cho biết các nhân viên hiện đang quản lý một dự án”
Câu SQL là: SELECT ENAME
FROM EMP, ASG
WHERE EMP.ENO = ASG.ENO
AND ASG.RESP = “Manager”
Hai biểu thức tương đương đại số quan hệ do biến đổi từ câu vấn tin trên là:

ENAME
(
RESP = “Manager”  EMP.ENO = ASG.ENO
(EMP x ASG)) (*)
Và 
ENAME

(EMP 
ENO
(
RESP = “Manager”
(ASG))) (**)
Với mục tiêu giảm thiểu việc sử dụng tài nguyên nên câu vấn tin (**) sẽ được dùng.
Nhiệm vụ chính của thể xử lý vấn tin tập trung là đối với một câu vấn tin đã cho nó
phải chọn ra được một câu vấn tin đại số quan hệ tốt nhất trong số các câu vấn tin đại số
tương đương. Bởi vì đây là một bài toán phức tạp về mặt tính toán khi số lượng các quan
hệ lớn, nên nói chung nó thường được đưa về yều cầu chọn một lời giải tối ưu.
Trong quan hệ phân tán, đại số quan hệ không đủ để diễn tả các chiến lược thực thi.
Nó phải được bổ sung thêm các phép tính toán trao đổi dữ liệu giữa các vị trí. Bên cạnh
chọn thứ tự cho các phép toán đại số quan hệ, thể XLVT phân tán cũng phải chọn các vị trí
tốt nhất để xử lý dữ liệu và có thể cả cách biến đổi dữ liệu. Do những yêu cầu trên mà
không gian lời giản tăng lên làm cho việc XLVT plhân tán khó hơn rất nhiều.
Ví dụ 2.4: Ví dụ minh hoạ tầm quan trong của việc chọn lựa vị trí và cách truyền
dữ liệu của câu vấn tin đại số.

ENAME
(EMP 
ENO
(
RESP = “Manager”
(ASG))) (**)
Giả sử EMP và ASG được phân mảnh ngang như sau:
13
EMP
1
= 
ENO  “E3”

(EMP)
EMP
2
= 
ENO > “E3”
(EMP)
ASG
1
= 
ENO  “E3”
(ASG)
ASG
2
= 
ENO > “E3”
(ASG)
Các mảnh ASG
1
, ASG
2
, EMP
1
, EMP
2
theo thứ tự được lưu tại các vị trí 1, 2, 3, 4 kết quả
lưu tại vị trí 5.










(a) chiến lược A




(b) chiến lược B

Hình 2.3: Các chiến lược thực thi vấn tin tương đương
Thấy rằng, chiến lược A sử dụng sự kiện là các quan hệ EMP và ASG được phân
mảnh theo cùng một cách để thực hiện song song các phép chọn và phép nối. Chiến lược B
thì tập trung tất cả các dữ liệu tại vị trí lưu kết quả trước khi xử lý vấn tin.

V


trí 4

Rerult = EMP
1
’  EMP
2

EMP
1
’ = EMP

1

ENO
ASG
1
’ EMP
2
’ = EMP
2

ENO
ASG
2

ASG
1
’ = 
RESP = “Manager”
(ASG
1
) ASG
2
’ = 
RESP = “Manager”
(ASG
2
)
Result = (EMP
1
 EMP

2
) 
ENO
(
RESP = “Manager”
(ASG
1
 ASG
2
))
V


trí 5

V


trí 3

V


trí 1

V


trí 2


EMP
1


EMP
2


ASG
1


ASG
2


V


trí 3

V


trí 4

V


trí 1


V


trí 2

14
2.3.2 Các giai đoạn xử lý câu truy vấn
Vấn đề xử lý câu
truy vấn
được chia làm bốn giai đoạn sau























Hình 2.4: Sơ đồ phân lớp cho việc xử lý truy vấn phân tán
2.3.3 Phân rã câu truy vấn
Phân rã câu truy vấn là biến đổi một câu truy vấn các phép tính quan hệ
thành câu truy vấn
đại số trên các quan hệ tổng thể. Cả hai câu
truy vấn
vào và ra
đều trên các quan hệ
tổng thể và không quan tâm đến tính phân tán của dữ liệu. Vì
Vấn tin dạng phép tính trên
các quan hệ phân tán
Phân rã
câu

truy v
ấn

Vấn tin dạng đại số

trên các quan h
ệ phân tán

Đ
ịnh vị

d
ữ liệu


V
ấn tin
theo m
ảnh

T
ối
ưu hoá toàn c


Vấn tin theo mảnh kèm với
các phép toán truyền
T
ối
ưu hoá c
ục bộ

V
ấn tin cục bộ đ
ã t
ối
ưu

Lược đồ toàn cục
Lược đồ mảnh
SL trên các mảnh
Lược đồ cục bộ
Vị trí
điều

khiển
Các vị
trí cục
bộ
15
vậy, phân rã câu
truy vấn
là chung cho cả quan hệ tập trung và phân tán. Trong
phần này, giả sử câu
truy vấn
vào là đúng đắn (chỉnh). Khi việc phân rã được
thực hiện xong câu
truy vấn
ra là chỉnh và tránh được các công việc dư thừa.
Giai đoạn này chia làm 4 bước[3]
:
-
Chuẩn hoá
-
Phân tích
-
Loại bỏ dư thừa
- Viết lại
2.3.4 Định vị dữ liệu phân tán
Như đã biết, tầng định vị biến đổi một câu truy vấn đại số trên các quan
hệ tổng thể, thành một câu truy vấn đại số được hiển thị trên các phân đoạn
vật lý.
Việc định vị sử dụng thông tin được lưu trữ trên lược đồ phân đoạn.
Chương
trình đại số quan hệ xây dựng lại quan hệ tổng thể từ các phân đoạn của nó

gọi
là chương trình định vị. Để đơn giản, trong phần này không xét đến sự nhân
bản của các đoạn dữ liệu, mặc dù điều này có thể cải
tiến hiệu năng. Sự nhân
bản sẽ được xét trong phần sau.
Một giải pháp tự nhiên để định vị một câu truy vấn phân tán là sinh ra một
câu truy vấn trong đó mỗi quan hệ tổng thể được thay thế bởi chương trình
định
vị của nó. Cách này có thể được xem như việc thay thế các nút lá của cây đại số
quan hệ của câu truy vấn phân tán bởi các cây con tương ứng với các chương
trình
định vị. Nói chung, cách tiếp cận này không hiệu quả vì câu truy vấn ban đầu
vẫn
có thể cấu trúc lại và đơn giản hoá. Trong phần này, với mỗi kiểu phân đoạn
sẽ có các kỹ thuật rút gọn
để sinh ra các câu truy vấn được tối ưu và đơn giản hơn
2.3.4.1 Rút gọn phân đoạn ngang nguyên thuỷ
Phân đoạn ngang tách một quan hệ dựa trên các tân từ chọn
2.3.4.2 Rút gọn phân đoạn dọc
Phân đoạn dọc tách một quan hệ dựa trên các thuộc tính chiếu. Vì phép
toán xây dựng lại đối với phân đoạn dọc là kết nối, nên chương trình định vị
một quan
hệ đã được phân đoạn dọc là kết nối của các đoạn trên thuộc tính chung.
16
2.3.4.3 Rút gọn phân đoạn gián tiếp
Câu truy vấn trên các phân đoán gián tiếp cũng có thể rút gọn, nếu các tân
từ
phân đoạn mâu thuẫn nhau thì phép kết nối sẽ đưa ra quan hệ rỗng. Chương
trình định vị một quan hệ đã phân đoạn ngang gián tiếp là hợp của các đoạn.
2.3.4.4 Rút gọn phân đoạn hỗn hợp

Mục đích của phân đoạn hỗn hợp là hỗ trợ các câu truy vấn liên quan đến
phép chiếu, chọn, kết nối một cách hiệu quả. Chương trình định vị cho một quan hệ
đã phân đoạn hỗn hợp sử dụng phép hợp và phép kết nối của các đoạn.
2.3.4 Tối ưu hoá các truy vấn phân tán
Ta đã biết, một câu truy vấn trong phép tính quan hệ biểu diễn trên các
quan
hệ phân tán có thể được ánh xạ thành một câu truy vấn trên các đoạn quan hệ
bằng
cách phân rã và định vị dữ liệu. ánh xạ này sử dụng lược đồ phân đoạn.
Trong xử lý này, việc áp dụng các luật biến đổi cho phép đơn giản hoá câu truy
vấn bằng
cách tìm các biểu thức con chung và loại bỏ các biểu thức vô ích. Câu
truy vấn
thu được từ giai đoạn phân rã và định vị dữ liệu có thể được thực thi một
cách đơn
giản bằng việc thêm vào các thao tác truyền thông. Tuy nhiên, hoán vị
thứ tự các phép toán trong câu truy vấn có thể cung cấp nhiều chiến lược tương
đương để thực thi chúng. Tìm một thứ tự “tối ưu” của các phép toán cho một câu
truy vấn đã
cho là chức năng chính của bộ tối ưu hoá câu truy vấn.
Sự lựa chọn thứ tự tối ưu đối với một câu truy vấn là bài toán khó thực
hiện nên mục đích thực sự của bộ tối ưu là tìm một chiến lược gần tối ưu. Sau
đây
ta sẽ gọi chiến lược (hoặc thao tác sắp thứ tự) được đưa ra bởi bộ tối ưu

chiến lược tối ưu (hoặc sắp chiến lược tối ưu). Đầu ra của bộ tối ưu là một lịch
trình được tối ưu bao gồm câu truy vấn đại số được xác định trên các trạm.
2.3.4.1. Đầu vào bộ tối ưu hoá câu truy vấn
1. Mô hình chi phí
Chi phí của một chiến lược thực hiện phân tán có thể được biểu diễn hoặc

theo tổng chi phí (total cost) hoặc theo thời gian trả lời. Tổng chi phí là tổng của tất
cả các thành phần chi phí, còn thời gian trả lời tính từ lúc bắt đầu đến lúc kết thúc
17
câu truy vấn. Công thức chung để tính tổng chi phí như sau [8]:
Total_cost = C
CPU
*#insts + C
I/O
*#I/Os + C
MSG
#msgs + C
TR
*#bytes
Trong đó: Total_cost - là tổng chi phí; C
CPU
- chi phí của một lệnh CPU;
C
I/O
- chi phí của một truy xuất/nhập đĩa; C
MSG
- chi phí cố định của việc khởi đầu và
nhận một thông báo; C
TR
- chi phí truyền một đơn vị dữ liệu từ trạm này tới trạm
khác, ta xem C
TR
là hằng số; #insts, #I/Os, #msgsm, #byte: Tương ứng là tổng trên
các trạm của tất cả các số lệnh CPU, số lần truy xuất/ nhập đĩa, số thông báo, kích
thước của tất cả các thông báo.
Khi thời gian trả lời của câu truy vấn là hàm mục tiêu của bộ tối ưu thì

các
xử lý địa phương song song và truyền thông song song phải được xét. Công
thức tổng quát tính thời gian trả lời (response time) là [8]:
Response_time = C
CPU
*seq_#insts + C
I/O
*seq_#I/Os
+ C
MSG
*seq_#msgs + C
TR
*seq_#bytes
Trong đó: seq_#x (x có thể là các lệnh CPU, I/O, các thông báo, các
byte) là số lớn nhất của x phải được thực hiện tuần tự đối với sự thực thi của
câu truy vấn.

2 Các thống kê cơ sở dữ liệu
Yếu tố chính ảnh hưởng đến hiệu suất của một chiến lược thực thi là
kích thước của các quan hệ trung gian sinh ra trong quá trình thực hiện. Khi
gặp phép toán tiếp theo đặt tại một trạm khác, quan hệ trung gian phải được

truyền lên mạng. Do vậy, để tối thiểu hoá khối lượng dữ liệu truyền, điểm
quan tâm đầu tiên là đánh giá kích thước kết quả trung gian của các phép toán đại
số quan hệ. Đánh giá này dựa trên các thông tin thống kê về các quan hệ cơ sở
và các công thức ước tính lực lượng của kết quả của các ph p toán quan
hệ. Quan
hệ R xác định trên A = {A
1
, A

2
, ,A
n
} được phân đoạn thành R
1
,
R2, ,Rr. Khi
đó dữ liệu thống kê điển hình bao gồm [7]:
1. Với mỗi thuộc tính A
i
, độ dài của A
i
ký hiệu là length(A
i
); với mỗi
A
i

R
j
, lực lượng của phép chiếu của đoạn R
j
trên A
i
ký hiệu là
card(
Ai
(R
j
))

(số giá trị phân biệt trên mỗi thuộc tính).

18
2. Miền xác định của A
i
là tập số nguyên hoặc tập số thực, có max(A
i
)

min(A
i
).
3. Lực lượng của miền A
i
kí hiệu là card(dom[A
i
]), đó là số các giá trị
duy
nhất trên mỗi miền trị của thuộc tính A
i
.
4. Số các bộ trong mỗi đoạn R
j
ký hiệu là card(R
j
)
Ngoài ra, dữ liệu thống
kê cũng bao gồm hệ số chọn của phép kết nối
(SF
J

) đối với số cặp quan hệ; hệ số
SF
J
của quan hệ R và S là một số thực giữa 0 và 1:



Hệ số SF
J
nhỏ thì phép kết nối có tính chọn tốt, ngược lại có tính chọn
tồi. Các thống kê này có lợi để đánh giá kích thước của các quan hệ trung
gian. Kích thước của một quan hệ trung gian R như sau:

Size(R)= card(R)*length(R)
Trong đó: card(R) là số các bộ của R được tính theo các công thức ở
phần sau.
3. Lực lượng của các kết quả trung gian
Phần này sẽ đưa ra các công thức để ước tính lực lượng của kết quả của các
phép toán cơ sở của đaị số quan hệ (phép chọn, phép chiếu, phép tích Decartes, kết
nối, nửa kết nối, phép hợp và phép trừ). Các toán hạng quan hệ
được ký hiệu bởi
R và S. Hệ số chọn của một phép toán
(SF
OP
, OP biểu thị phép toán) là tỷ lệ
giữa các bộ của một toán hạng quan
hệ
tham gia vào kết quả của phép toán.



2.3.4.2. Thứ tự kết nối trên các câu truy vấn đoạn
Ta đã thấy thứ tự kết nối có vai trò quan trọng trong việc tối ưu hoá câu truy
vấn tập trung. Thứ tự kết nối trong môi trường phân tán còn quan trọng hơn vì các
phép kết nối giữa các đoạn có thể làm tăng chi phí truyền thông. Có hai cách tiếp
cận cơ bản để sắp thứ tự các phép kết nối trong các câu truy vấn đoạn.
- Cố gắng tối ưu thứ tự của các phép kết nối một cách trực tiếp
- Thay các phép kết nối bởi kết hợp các phép nửa kết nối để cực tiểu
19
hoá
các chi phí truyền thông.
Thứ tự kết nối
Một số thuật toán tối ưu hoá thứ tự của các phép kết nối một cách trực
tiếp không sử dụng phép nửa kết nối. Thuật toán INGRES phân tán và R
*

đại diện cho lớp này. Phần này đề cập đến việc sử dụng các phép nửa kết nối
để
tối ưu hoá các câu truy vấn kết nối .
Trước khi đi vào vấn đề chính, ta giả thiết như sau:
- Câu truy vấn được định vị và biểu diễn trên các đoạn, ta không cần phân biệt
giữa các đoạn của cùng một quan hệ và các đoạn của các quan hệ khác.
- Dùng thuật ngữ quan hệ để chỉ một đoạn lưu trữ tại một trạm cụ thể.
- Bỏ qua chi phí xử lý địa phương.
- Chỉ xét các câu truy vấn kết nối mà các toán hạng quan hệ được lưu tại
các
trạm khác nhau.
- Bỏ qua chi phí truyền dữ liệu tại trạm kết quả.
Vấn đề truyền toán hạng trong phép kết nối đơn, hiển nhiên là gửi quan
hệ
nhỏ hơn tới trạm của quan hệ lớn hơn, có hai khả năng như hình 4.2




Hình 2.16: Truyền các toán hạng trong phép toán hai ngôi
Trường hợp có hơn hai quan hệ kết nối, cũng như trường hợp một kết nối
đơn, mục đích của thuật toán thứ tự kết nối là truyền các toán hạng nhỏ hơn. Vấn
đề khó khăn ở đây là các phép kết nối có thể giảm hoặc tăng kích thước của các kết
quả kết nối. Một giải pháp là đánh giá chi phí truyền thông của tất cả các chiến lược
và chọn ra chiến lược tốt nhất. Tuy nhiên số các chiến lược tăng nhanh khi số các
quan hệ tăng nên thường dùng phương pháp dò tìm (heuristic) để loại trừ một số
trường hợp xấu.

2.3.4.3 Các thuật toán tối ưu hoá câu truy vấn phân tán
20
Phần này minh hoạ cách sử dụng của các kỹ thuật đã trình bày cho bốn
thuật
toán tiêu biểu cho những lớp khác nhau của thuật toán tối ưu hoá câu truy vấn
phân
tán: Thuật toán rút gọn của INGRES phân tán, thuật toán System R*,
thuật
toán SDD -1 và thuật toán AYH (Apers, Hevner, and Yao). Sự khác nhau giữa
chúng có thể tóm tắt như sau:
-
INGRES phân tán: tối ưu hoá thời gian động, System R, SDD-1. AYH:
tối
ưu hoá thời gian tĩnh.

-
Hàm mục tiêu của SDD-1 và R*: tối thiểu hoá tổng chi phí, INGRES
phân tán và AYH: tối thiểu thời gian trả lời và tổng chi phí.

-
Các thành phần tối ưu của hàm chi phí, SDD-1: kích thước thông báo,
AYH: kích thước thông báo và số thông báo; System R*: kích thước
thông báo,
số thông báo và chi phí I/O và CPU; INGRES phân tán: kích
thước thông báo và
chi phí I/O + CPU.
-
Kiểu mạng, SDD-1 và AHY: mạng diện rộng điểm tới điểm, INGRES
phân tán và R*: mạng cục bộ và diện rộng.
-
SDD_1 và AHY sử dụng các phép nửa kết nối như một kỹ thuật tối ưu
hoá câu truy vấn, INGRES phân tán và R* thực hiện kết nối tương tự các giải
thuật
tối ưu hoá câu truy vấn tập trung INGRES và System R:
- Mỗi thuật toán đều có nhận thông tin thống kê về dữ liệu:
+ INGRES phân tán: lực lượng của quan hệ.
+ R*: lực lượng của quan hệ, số các giá trị duy nhất trên thuộc tính
SDD-1: lực lượng của quan hệ, hệ số chọn kết nối, kích thước của
phép chiếu trên mỗi thộc tính kết nối, kích thước thuộc tính và
kích thước bộ dữ liệu.
+ AHY: lực lượng quan hệ, hệ số chọn kết nối, kích thước thuộc
tính và kích thước bộ dữ liệu.
-
INGRES phân tán có thể sử dụng các đoạn, còn R*, SDD-1, AHY
không sử dụng.
2.4 Kết Luận

21
Chương này đã trình bày những khái niệm cơ bản về tối ưu hóa truy vấn

phân tán, và các thuật toán tối ưu cơ bản của Distributed INGRES, System R*,…
cũng được đưa ra ở phần này. Các hệ CSDL phân tán ban đầu thường chỉ dùng hàm
mục tiêu cho các chi phí truyền theo kích thước được thông báo, trong thời gian gần
đây vói sự phát triện đáng kể của các mạng “nhanh” thì chi phí xử lý cục bộ cũng
được chú ý.
Nguyên liệu đầu vào quan trọng của bài toán tối ưu hóa truy vấn là số liệu
thống kê CSDL và các công thức được dùng để đánh giá các kết quả trung gian.
Thao tác chủ yếu nói chung là phép nối các quan hệ phân tán. Đối với những nối
thường gặp nhất không phải dựa trên khóa, thì các hệ số tuyển nối có giá trị rất lớn
[Mackert and Lohman, 1986]. Chúng ta cũng có thể tránh việc sử dụng số liệu
thống kê bằng cách áp dụng thuật toán đơn giản dựa trên các heuristic để biến đổi
câu truy vấn. Tuy nhiên [Epstain and Stonebraker, 1980] đã ghi nhận rằng việc tìm
kiếm vét cạn không gian lời giải dựa trên số liệu thống kê có giá trị hơn so với lối
tiếp cận heuristic, chi phí phải trả cho chiến lược này (được thực hiện tĩnh trong lúc
biên dịch) sẽ được bù đắp rất nhanh nếu câu truy vấn trở nên phức tạp hay được
thực hiện thường xuyên.












22
CHƯƠNG 3. CÀI ĐẶT THUẬT TOÁN TỐI ƯU HÓA CÂU

TRUY VẤN PHÂN TÁN

1. Xác định thuật toán
Chương trình sẽ cài đặt thuật toán tối ưu phân tán của System R* là một mở rộng về
chất của các kỹ thuật đã được phát triển cho bộ tối ưu hóa trong môi trường tập
trung của System R. Nó là thuật toán tối ưu tĩnh, trong đó thực hiện việc tìm kiếm
vét cạn tất cả các chiến lược khác nhau để chọn ra được một chiến lược với chi phí
thấp nhất.
Cơ sở dữ liệu được thiết kế theo mô hình phân mảnh dọc dựa trên hệ thống cơ sở dữ
liệu ORACLE hiện tại của viễn thông thanh hóa:
- Bảng DM_TTOAN chứa các thông tin khác hàng người chịu trách nhiệm trả
tiền cước các loại dịch vụ, được cài đặt trên máy trạm địa chỉ IP cuối là 62,
gọi tắt là máy trạm 62
- Bảng DM_SOMAY chứa thông tin các dịch vụ của thuê bao được cài đặt
trên máy trạm địa chỉ IP cuối 21, gọi tắt là máy trạm 21
- Việc kết nối tới trạm còn lại thực hiện qua DBLINK là chức năng hỗ trợ hệ
cơ sở dữ liệu phân tán của ORACLE
- Thuật toán thực hiện việc truy vấn với giả thiết thực hiện kết nối tập trung,
thực hiện kết nối ở trạm 21 và trạm 62 để chọn ra kết quả tối ưu nhất
2.

Kết Luận
Nghiên cứu cơ sở dữ liệu phân tán là một hướng đi đúng đắn, phù hợp với tổ
chức lớn, có nhiều chi nhánh. Việc ứng dụng cơ sở dữ liệu phân tán giải quyết
tốt các bài toán xử lý nhanh khi chỉ có yêu cầu truy xuất cục bộ, Và thực hiện
tốt vấn đề chia tải
Hệ thống phân tán là một hệ thống cơ sở dữ liệu phức tạp hơn, đòi hỏi việc tổ
chức vật lý, mô hình mạng phức tạp, Việc tìm hiểu và tối ưu hóa phân tán có ý
nghĩa quan trọng quyết định đến hiệu năng hệ thống, làm hệ thống cơ sở dữ
liệu phân tán mang những lợi ích giống như cơ sở dữ liệu tập trung và phát huy

23
nhưng ưu thế cơ sở dữ liệu phân tán mang lại
Những kết quả chính của luận văn
-

Trình bày các nguyên lý chung để tối ưu hóa bao gồm: Các chiến lược
tối ưu tổng quát, các kỹ thuật tối ưu hóa cơ bản,các biến đổi đại số, Các
phép nối, nối nửa, phân rã các câu hỏi thành câu hỏi con, Đánh giá các
câu hỏi định vị dữ liệu và tối ưu hóa câu hỏi phân tán
-

Giới thiệu các thuật toán tối ưu hóa trong cơ sở dữ liệu phân tán, dựa
vào mô hình chi phí hoặc thời gian đáp ứng hệ thống, các thuật toán
INGRES phân tán, Thuật toán System R*, thuật toán SDD-1 và thuật
toán AHY
-

Cài đặt thử nghiệm thuật toán System R* phân tán
3.

Hướng phát triển đề tài
Với thời gian có hạn đề tài mới dừng ở mức độ tiếp cận tối ưu cơ sở dữ liệu
phân tán, hướng phát triển tới là nghiên cứu cài đặt sâu hơn thuật toán System R*
phân tán, bao gồm các kết nối lồng nhau, các cài đặt thuật toán trên mô hình nhiều
trạm, phức tạp hơn.
Các tiếp cận nhờ nối nửa, đại diện là SDD-1 và AHY. Các nối nửa chỉ có lợi
khi một nối có độ tuyển chọn tốt, khi đó nối nửa đóng vai trò như tác nhân rút gọn
kích thước.
Nghiên cứu hệ thống phức tạp hơn, có nhiều bản sao, cài đặt phân rã câu truy
vấn trên từng nút mạng, và tích hợp dữ liệu.





24
TÀI LIỆU THAM KHẢO

[1] Phạm Thế Quế (2009) “Giáo trình Cơ sở dữ liệu phân tán”, NXB thông tin và
truyền thông
[2] Nguyễn Bá Tường (2005), Nhập môn cơ sở dữ liệu dữ liệu phân tán, NXB Khoa
học và kỹ thuật
[3] Nguyễn Văn Nhuận, Phạm Việt Bình(2009), “Giáo trình hệ cơ sở dữ liệu phân
tán & suy diễn:Lý thuyết và thực hành”, NXB Khoa học và kỹ thuật
[4] Vũ Đức Thi (1997) Cơ sở dữ liệu – kiến thức và thực hành, NXB Thống kê.
[5]Kenneth H. Rosen, người dịch: Phạm Văn Thiều, Đặng Hữu Thịnh (1998), Toán
rời rạc Ứng dụng trong tin học, NXB Khoa học và kỹ thuật.
[6] M. Tamer Ozsu, Patrick Valduriez, biên dịch Trần Đức Quang (1999), Nguyên
lý các hệ CƠ SỞ DỮ LIỆU phân tán, tập I, NXB Thống kê.
[7] Clement T.Yu, Weiyi Meng (1998), Principles of Database Query Processing
for Advanced Applications, Morgan Kaufmann Publishers, Inc.
[8] Sakti Pramanik, David Ittiner (1985), Use of Graph-Theoretic Models for
Optimal Relational Database Accesses to Perform Join, pages 57-76 , ACM
Transaction on Database Systems.
[9] Zhe Li, Kenneth A. Ross (1994), Better Semijoin Using Tuple Bit-Vectors,
Technical Report No. CUCS-010-94.
[10] Ramzi A. Haraty, Roula C.Fany (2001), Query Acceleration in Distributed
Database Systems, Colombian Journal of Computation. Volume 2, Number 1.

×