MỞ ĐẦU 1. Lý do chọn đề tài Cơ sở dữ liệu (CSDL) song song (parallel database Systems) là CSDL được tổ chức, khai thác và xử lý trong một hệ thống máy tính song song [2].Với CSDL lớn và phức tạp những máy tính truyền thống phải mất nhiều thời gian để thực hiện các thao tác cập nhật, tìm kiếm thông tin. Những khó khăn này có thể khắc phục được bằng các kỹ thuật xử lý song song trên các máy tính song song. Một máy tính song song hoặc máy tính đa xử lý là một hệ thống được xây dựng từ nhiều thiết bị phần cứng như bộ xử lý, bộ nhớ, ổ đĩa,... Chúng được tổ chức thành nhiều nút, kết nối nhau qua mạng truyền thông tốc độ cao. CSDL song song hiện đang được sử dụng rộng rãi, chúng không những giúp giảm nhân lực quản lý, vận hành, mà còn giúp người người sử dụng nhận được thông tin nhanh hơn, chính xác hơn. CSDL song song được sử dụng ở hầu hết các công ty, tập đoàn có nhu cầu xử lý dữ liệu lớn và phức tạp, đi cùng với đó là xử lý song song được lập trình để chạy trên các Server có đa bộ xử lý giúp các công ty quản lý và xử lý dữ liệu tốt hơn [4],[5]. Tập đoàn bưu chính viễn thông Việt Nam nói chung và Viễn Thông Phú Yên nói riêng cần quản lý nhiều loại dữ liệu và với dung lượng khá lớn được tăng thêm theo từng tháng. Với việc xử lý trên CSDL song song đã được phân hoạch của công ty sẽ giúp cho việc truy xuất đồng thời từ các đơn vị trên cùng một bảng dữ liệu nhưng được phân hoạch theo từng giai đoạn hoặc đơn vị sẽ nhanh hơn và hiệu quả hơn vào từng thời điểm cụ thể trong tháng. Với mong muốn sử dụng các kiến thức đã học vào công việc hằng ngày của mình tại Viễn Thông Phú Yên, tôi mạnh dạn chọn đề tài “Nghiên cứu cơ sở dữ liệu song song và ứng dụng trong việc tính cước khách hàng VNPT Phú Yên” làm đề tài luận văn thạc sĩ.
Trang 1BỘ GIÁO DỤC VÀ ĐÀO TẠO
Trang 2MỤC LỤC
MỞ ĐẦU 1
1 Lý do chọn đề tài: 1
2 Tổng quan tài liệu: 1
3 Mục tiêu nghiên cứu 2
4 Đối tượng nghiên cứu 2
5 Phương pháp nghiên cứu 2
6 Phạm vi nghiên cứu 2
Chương 1 TỔNG QUAN VỀ CƠ SỞ DỮ LIỆU SONG SONG VÀ CÁC KỸ THUẬT PHÂN HOẠCH DỮ LIỆU 4
1.1 Giới thiệu về Cơ sở dữ liệu song song 4
1.2 Các kiến trúc của hệ thống máy tính song song 6
1.2.1 Kiến trúc bộ nhớ chia sẻ 6
1.2.2 Kiến trúc ổ đĩa chia sẻ 7
1.2.3 Kiến trúc không chia sẻ 8
1.2.4 Kiến trúc phân tầng 10
1.3 Các kỹ thuật phân hoạch dữ liệu trong CSDL song song 11
1.3.1 Phân hoạch theo vòng tròn Robin 13
1.3.2 Phân hoạch theo hàm băm 15
1.3.3 Phân hoạch theo khoảng 18
1.3.4 Phân hoạch ngẫu nhiên không cân bằng 19
1.4 Các cơ chế xử lý song song 21
1.4.1 Song song liên truy vấn 21
1.4.2 Song song nội truy vấn 23
1.4.3 Song song liên toán tử 24
1.4.4 Song song nội toán tử 26
1.5 Các phép toán song song 26
1.5.1 Phép nối: 26
1.5.2 Phép tách 27
Trang 31.6 Tiểu kết chương 27
Chương 2 MÁY TÍNH SONG SONG VÀ CÁC MÔ HÌNH LẬP TRÌNH SONG SONG 28
2.1 Giới thiệu về máy tính song song 28
2.1.1 Bộ nhớ: 29
2.1.2 Nguyên tắc kết nối: 29
2.1.3 Hệ điều hành: 30
2.1.4 Chương trình dịch: 30
2.2 Phân loại máy tính song song 31
2.2.1 Mô hình SISD: Đơn luồng lệnh, đơn luồng dữ liệu 31
2.2.2 Mô hình SIMD: Đơn luồng lệnh, đa luồng dữ liệu 32
2.2.3 Mô hình MISD: Đa luông lệnh, đơn luông dữ liệu 33
2.2.4 Mô hình MIMD: Đa luồng lệnh, đa luồng dữ liệu 34
2.3 Các mô hình lập trình song song 35
2.3.1 Lập trình trên hệ thống dùng chung bộ nhớ 35
2.3.2 Lập trình chia sẻ bộ nhớ dựa vào tiến trình 35
2.3.3 Lập trình chia sẻ bộ nhớ dựa vào luồng 36
2.4 Tiểu kết chương 42
Chương 3 ỨNG DỤNG CƠ SỞ DỮ LIỆU SONG SONG TRONG VIỆC TÍNH CƯỚC KHÁCH HÀNG VIỄN THÔNG PHÚ YÊN 44
3.1 Thiết kế hệ thống thông tin tính cước cho khách hàng VNPT Phú Yên 44
3.1.1 Đặc tả các chức năng chính của hệ thống 44
3.1.2 Mô tả phân tích và thiết kế cơ sở dữ liệu 48
3.2 Mô tả ứng dụng sau khi đã cài đặt 58
3.2.1 Cài đặt CSDL Song Song 59
3.2.2 Lập trình giao diện ứng dụng 61
3.3 Đánh giá kết quả và so sánh thời gian thực tế khi tính cước giữa xử lý tuần tự và xử lý song song 67
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 68
TÀI LIỆU THAM KHẢO 69
Trang 5DANH MỤC CÁC BẢNG
Trang 6DANH MỤC CÁC HÌNH VẼ, ĐỒ THỊ
1.5 Phân hoạch dữ liệu theo chiều dọc và theo chiều ngang 12
1.9 Phân hoạch dữ liệu ngẫu nhiên không cân bằng 20
Trang 71
MỞ ĐẦU
1 Lý do chọn đề tài
Cơ sở dữ liệu (CSDL) song song (parallel database Systems) là CSDL được tổ
chức, khai thác và xử lý trong một hệ thống máy tính song song [2].Với CSDL lớn và phức tạp những máy tính truyền thống phải mất nhiều thời gian để thực hiện các thao tác cập nhật, tìm kiếm thông tin Những khó khăn này có thể khắc phục được bằng các
kỹ thuật xử lý song song trên các máy tính song song Một máy tính song song hoặc máy tính đa xử lý là một hệ thống được xây dựng từ nhiều thiết bị phần cứng như bộ
xử lý, bộ nhớ, ổ đĩa, Chúng được tổ chức thành nhiều nút, kết nối nhau qua mạng truyền thông tốc độ cao
CSDL song song hiện đang được sử dụng rộng rãi, chúng không những giúp giảm nhân lực quản lý, vận hành, mà còn giúp người người sử dụng nhận được thông tin nhanh hơn, chính xác hơn CSDL song song được sử dụng ở hầu hết các công ty, tập đoàn có nhu cầu xử lý dữ liệu lớn và phức tạp, đi cùng với đó là xử lý song song được lập trình để chạy trên các Server có đa bộ xử lý giúp các công ty quản lý và xử lý
dữ liệu tốt hơn [4],[5]
Tập đoàn bưu chính viễn thông Việt Nam nói chung và Viễn Thông Phú Yên nói riêng cần quản lý nhiều loại dữ liệu và với dung lượng khá lớn được tăng thêm theo từng tháng Với việc xử lý trên CSDL song song đã được phân hoạch của công ty
sẽ giúp cho việc truy xuất đồng thời từ các đơn vị trên cùng một bảng dữ liệu nhưng được phân hoạch theo từng giai đoạn hoặc đơn vị sẽ nhanh hơn và hiệu quả hơn vào từng thời điểm cụ thể trong tháng
Với mong muốn sử dụng các kiến thức đã học vào công việc hằng ngày của
mình tại Viễn Thông Phú Yên, tôi mạnh dạn chọn đề tài “Nghiên cứu cơ sở dữ liệu
song song và ứng dụng trong việc tính cước khách hàng VNPT Phú Yên” làm đề tài
luận văn thạc sĩ
2 Tổng quan tài liệu
CSDL song song đã được nghiên cứu và phát triển bởi nhiều nhà khoa học trong nước và thế giới Nghiên cứu về các hệ CSDL song song đã được khởi đầu từ năm 1983 trong ngữ cảnh của mô hình quan hệ Việc tổ chức và thiết kế các CSDL song song là phù hợp với kiểu thiết kế của mô hình dữ liệu quan hệ Các truy vấn quan
Trang 8hệ thực sự phù hợp cho việc thực hiện song song, bởi vì chúng bao gồm các phép toán thực hiện trên các dòng dữ liệu có cấu trúc giống nhau [1], [2] Mỗi toán tử là một quan hệ mới, vì thế các toán tử này có thể tạo thành các biều đồ luồng dữ liệu song song bởi vì đầu ra của toán tử này có thể là đầu vào của một toán tử khác, hai toán tử
có thể thực hiện song song bằng cách phân hoạch dữ liệu đầu vào bằng nhiều bộ nhớ
và nhiều bộ xử lý [4] Trong suốt thập niên vừa qua, một loạt các công ty như Teradata, Tandem, NCR, Oracle, SqlServer,… đã thành công trong việc phát triển và đưa vào sử dụng các máy CSDL với tốc độ cao giúp cho việc xử lý dữ liệu được nhanh hơn nhất là trong thời đại công nghệ số hiện nay
3 Mục tiêu nghiên cứu
- Tìm hiểu CSDL song song, cách thiết kế CSDL song song
- Tìm hiểu các mô hình xử lý song song, cách lập trình xử lý song song
4 Đối tượng nghiên cứu
Tìm hiểu các kỹ thuật phân hoạch, cơ chế xử lý song song trong cơ sở dữ liệu song song và lập trình xử lý song song, từ đó xây dựng CSDL song song tính cước khách hàng Viễn Thông Phú Yên phân hoạch theo từng khoảng trên SQL Server 2012
và sử dụng ngôn ngữ C# để lập trình song song cho việc tính cước
5 Phương pháp nghiên cứu
Phương pháp nghiên cứu của luận văn là tập trung vào việc tìm hiểu về CSDL song song, phân tích, tổng hợp, bình luận, các phương pháp tổ chức dữ liệu song song
Đề tài cũng sẽ trình bày một cách có hệ thống các nghiên cứu về xử lý song song, CSDL song song và xây dựng ứng dụng tính cước khách hàng trên cơ sở dữ liệu
song song đã được thiết lập đó
6 Phạm vi nghiên cứu
- Nghiên cứu tài liệu, nghiên về lý thuyết xử lý song song, hệ cơ sở dữ liệu song song và lý thuyết thiết kế CSDL song song, các loại phân hoạch trong CSDL song
song
- Tìm hiểu về hệ quản trị CSDL phân tán SQL Server 2012 và cách phân hoạch
table theo khoảng trong hệ quản trị này
Trang 9- Tìm hiểu thêm về lập trình song song, cụ thể là lập trình đa luồng, đa tiến
trình MultiThread trong C#
- Nghiên cứu các thông tin cần thiết để tính cước từ đó chọn lựa các loại dữ liệu
nào cần phân hoạch để tạo ra một cơ sở dữ liệu song song
Cấu trúc của luận văn gồm:
Chương 1: Tổng quan về CSDL song song và các kỹ thuật phân hoạch dữ liệu Chương này giới thiệu các khái niệm cơ bản về CSDL song song, các kiến trúc của hệ thống máy tính song song, các kỹ thuật phân hoạch dữ liệu trong CSDL song song và các cơ chế xử lý song song [1] [2],[4]
Chương 2: Giới thiệu máy tính song song và các mô hình lập trình song song Chương này giới thiệu máy tính song song, phân loại máy tính song song và các
mô hình lập trình song song [3],[5]
Chương 3: Ứng dụng CSDL song song trong việc tính cước khách hàng VNPT Phú Yên xây dựng ứng dụng tính cước cho khách hàng Viễn Thông Phú Yên CSDL được sử dụng cho ứng dụng này là CSDL song song được hình thành theo chiến lược phân hoạch dữ liệu Ngôn ngữ lập trình được sử dụng là C# [3],[5][6],[7]
Phần kết luận và hướng phát triển
Tài liệu tham khảo
Trang 10Chương 1 TỔNG QUAN VỀ CƠ SỞ DỮ LIỆU SONG SONG
VÀ CÁC KỸ THUẬT PHÂN HOẠCH DỮ LIỆU
1.1 Giới thiệu về Cơ sở dữ liệu song song
Cách đây hơn 2 thập kỷ, hệ cơ sở dữ liệu song song đã gần được xác định, thậm chí nó còn được sự ủng hộ vững chắc nhất Ngày nay, hệ cơ sở dữ liệu song song được tiếp thị thành công bởi các nhà cung cấp hệ cơ sở dữ liệu lớn Một số xu hướng thúc đẩy quá trình chuyển đổi này là:
Cùng với việc sử dụng máy tính ngày càng tăng dẫn theo các yêu cầu giao dịch ở các công ty cũng tăng theo rất lớn Hơn nữa, sự phát triển của mạng toàn cầu đã tạo ra nhiều trang web với hàng triệu người xem, và số lượng dữ liệu thu thập ngày càng tăng từ những người dùng đã tạo ra cơ sở dữ liệu rất lớn tại nhiều công ty
Các tổ chức đang sử dụng khối lượng các dữ liệu ngày càng lớn này như là dữ liệu về những món hàng mà khách hàng đã mua, các liên kết trang web mà khách hàng
đã chọn, và khi khách hàng thực hiện cuộc gọi điện thoại tức là họ có kế hoạch sử dụng và hỏi về giá cả Các truy vấn sử dụng cho các mục đích trên được gọi là truy vấn hỗ trợ quyết định, và các dữ liệu cho các truy vấn đó có thể lên tới hàng terabyte
Hệ thống xử lý đơn không có khả năng xử lý khối lượng lớn dữ liệu này cùng lúc
Bản chất định hướng của các truy vấn cơ sở dữ liệu là dựa vào sự song song của nó một cách tự nhiên Một số hệ thống thương mại và nghiên cứu đã chứng minh sức mạnh và khả năng của xử lý truy vấn song song
Khi bộ vi xử lý đã trở nên rẻ hơn, máy song song đã trở nên phổ biến và tương đối rẻ tiền
Bộ xử lý cá nhân đã tự trở thành máy song song sử dụng kiến trúc đa lõi Như chúng ta đã biết sự song song được sử dụng để tăng tốc xử lý, ở đó các truy vấn được thực hiện nhanh hơn bởi vì nhiều nguồn lực hơn, chẳng hạn như bộ xử
lý, ổ đĩa được cung cấp Song song cũng được sử dụng để tăng khối lượng công việc
Trang 11được xử lý mà không cần tăng thời gian đáp ứng, thông qua sự gia tăng mức độ song song
Hệ cơ sở dữ liệu song song bao gồm nhiều bộ xử lý và nhiều đĩa kết nối với nhau bằng một mạng lưới kết nối nhanh chóng Độ tăng tốc là chúng ta có thể tăng tốc
độ xử lý bằng cách tăng sự song song cho một giao dịch đơn Độ mở rộng là xử lý các giao dịch tăng lên bằng cách tăng song song
Vì vậy chúng ta có thể định nghĩa hệ cơ sở dữ liệu song song là các hệ cơ sở dữ liệu được tổ chức, khai thác và xử lý trong một hệ thống máy tính song song Các hệ này tận dụng tính chất song song trong việc quản lý dữ liệu để khai thác các máy cơ sở
dữ liệu có hiệu năng cao và khả năng xử lý nhanh
Hệ thống song song cải thiện xử lý và tốc độ vào ra bằng cách sử dụng nhiều bộ
xử lý và các ổ đĩa song song Máy song song đang trở nên ngày càng phổ biến, khiến cho việc nghiên cứu các hệ cơ sở dữ liệu song song quan trọng hơn Các động lực để thúc đẩy phát triển hệ cơ sở dữ liệu song song là nhu cầu của các ứng dụng phải truy vấn cơ sở dữ liệu cực kỳ lớn (tương ứng với hàng terabyte-có nghĩa là 1012 byte) hoặc
có thể xử lý một số lượng rất lớn các giao dịch trong một giây tương ứng với hàng ngàn giao dịch mỗi giây) Hệ thống cơ sở dữ liệu client-server và trung tâm không đủ mạnh để xử lý các ứng dụng như vậy
Trong xử lý song song, nhiều phép toán được thực hiện đồng thời, trái ngược với xử lý tuần tự, trong đó các bước tính toán được thực hiện tuần tự Máy song song lớn truyền thống bao gồm một số lượng nhỏ các bộ vi xử lý mạnh mẽ ; máy tính song song tinh tế ngày nay sử dụng hàng ngàn bộ vi xử lý nhỏ hơn Hầu như tất cả các máy cao cấp hiện nay cung cấp một số mức độ song song bình thường là: ít nhất hai hoặc bốn bộ vi xử lý Các máy tính song song tinh tế có thể được phân biệt với các máy song song truyền thống bởi các mức độ song song lớn hơn mà chúng hỗ trợ Máy tính song song với hàng trăm bộ vi xử lý và ổ đĩa có khả năng thương mại hóa
Có hai phương pháp chính đo hiệu suất của một hệ thống cơ sở dữ liệu: (1) công suất: số lượng các tác vụ có thể được hoàn thành trong một khoảng thời gian nhất định, và (2) thời gian đáp ứng, số lượng thời gian cần để hoàn thành một tác vụ đơn từ thời điểm được gửi đi Một hệ thống xử lý một số lượng lớn nhỏ các giao dịch có thể
Trang 12cải thiện công suất bằng cách xử lý nhiều giao dịch song song Một hệ thống xử lý các giao dịch lớn có thể cải thiện thời gian đáp ứng cũng như hiệu suất bằng cách thực hiện các tác vụ con của mỗi giao dịch song song
1.2 Các kiến trúc của hệ thống máy tính song song
Trong các máy tính song song có một số mô hình kiến trúc sau:
Bộ nhớ chia sẻ: Tất cả các bộ vi xử lý chia sẻ một bộ nhớ dùng chung
Ổ đĩa chia sẻ: Tất cả các bộ vi xử lý chia sẻ chung một tập các đĩa Hệ thống chia sẻ ổ đĩa đôi khi được gọi là cluster(phân cụm)
Không chia sẻ: Các bộ xử lý không chia sẻ bộ nhớ chung cũng như các ổ đĩa dùng chung
Phân cấp: Mô hình này là một mô hình lai của ba kiến trúc trước
1.2.1 Kiến trúc bộ nhớ chia sẻ
Trong kiến trúc chia sẻ bộ nhớ, bộ xử lý và ổ đĩa có thể truy xuất vào bộ nhớ dùng chung, thường thông qua một bus (là một hệ thống phụ chuyển dữ liệu giữa các thành phần bên trong máy tính) hoặc thông qua một kết nối mạng Ưu điểm của bộ nhớ chia sẻ là thông tin liên lạc cực kỳ hiệu quả giữa các bộ vi xử lý - dữ liệu trong bộ nhớ chia sẻ có thể được truy cập bởi bất kỳ bộ vi xử lý nào mà không bị di chuyển cùng với phần mềm Một bộ xử lý có thể gửi tin nhắn cho nhiều bộ vi xử lý khác nhanh hơn bằng cách sử dụng các bộ nhớ ghi (thường không mất thời gian hơn một micro giây) hơn là gửi một tin nhắn thông qua một cơ chế thông tin liên lạc Nhược điểm của kiến trúc bộ nhớ chia sẻ là không có khả năng mở rộng vượt ra ngoài 32 hoặc 64 bộ vi xử lý vì bus hoặc kết nối mạng sẽ bị nút cổ chai (kể từ khi nó được chia
sẻ bởi tất cả các bộ vi xử lý) tức là không thể mở rộng nhiều bộ xử lý để đáp ứng những cơ sở dữ liệu lớn vì mạng truyền thông tối thiểu phải có dải thông bằng tổng dải thông của các bộ xử lý Thêm vào đó các bộ vi xử lý không thể làm gì sau thởi điểm mà từ khi các bộ vi xử lý dành phần lớn thời gian của nó chờ đợi đến lượt mình trên bus để truy cập bộ nhớ
Kiến trúc chia sẻ bộ nhớ thường có bộ nhớ cache lớn ở mỗi bộ xử lý để giảm
tắc nghẽn, và tham chiếu của bộ nhớ chia sẻ được tránh bất cứ khi nào có thể Tuy nhiên, ít nhất là một số dữ liệu sẽ không được lưu trữ, và truy cập sẽ đi đến bộ nhớ
Trang 13chia sẻ Hơn nữa, các bộ nhớ cache cần phải được giữ chặt chẽ; đó là, nếu một bộ xử
lý thực hiện 1 lần ghi vào một vùng bộ nhớ, dữ liệu trong vùng bộ nhớ nên được cập nhật hoặc gỡ bỏ từ bất kỳ bộ xử lý ở nơi dữ liệu được lưu trữ Có thể dùng bộ nhớ
cache cho mỗi bộ xử lý nhưng phải đảm bảo sự đồng bộ cache Do đó bộ nhớ cache
tăng thì số lượng bộ vi xử lý cũng tăng Các máy dùng chia sẻ bộ nhớ hiện tại không
thể hỗ trợ hơn 64 bộ vi xử lý Cộng thêm vào đó, thời gian tải và giải phóng cache
cũng ảnh hưởng đáng kế đến việc thi hành của bộ vi xử lý
Hình 1.1 Kiến trúc bộ nhớ chia sẻ, trong đó P: bộ vi xử lý, M: bộ nhớ, D: ổ đĩa
1.2.2 Kiến trúc ổ đĩa chia sẻ
Trong mô hình ổ đĩa chia sẻ, tất cả các bộ vi xử lý có thể truy cập tất cả các đĩa trực tiếp thông qua một kết nối mạng, nhưng các bộ vi xử lý có các bộ nhớ riêng Có hai ưu điểm của kiến trúc này trong một kiến trúc chia sẻ bộ nhớ Đầu tiên, kể từ khi mỗi bộ xử lý có bộ nhớ riêng của mình, bộ nhớ bus không bị nút cổ chai Thứ hai, nó
có cách để xử lý lỗi khi xảy ra: Nếu một bộ xử lý (hoặc bộ nhớ của nó) bị lỗi, bộ vi xử
lý khác có thể đảm nhận nhiệm vụ của bị vi xử lý bị lỗi, do đó cơ sở dữ liệu lưu trữ trên đĩa có thể truy cập từ tất cả các bộ vi xử lý Chúng ta có thể làm hệ thống đĩa con của nó tránh được lỗi bằng cách sử dụng kiến trúc RAID (là hình thức ghép nhiều ổ đĩa cứng vật lý thành một hệ thống ổ đĩa cứng có chức năng gia tăng tốc độ đọc/ghi dữ
Trang 14liệu hoặc nhằm tăng thêm sự an toàn của dữ liệu chứa trên hệ thống đĩa hoặc kết hợp
cả hai yếu tố trên) Kiến trúc chia sẻ ổ đĩa được chấp nhận trong nhiều ứng dụng
Vấn đề chính của một hệ thống chia sẻ ổ đĩa là một lần nữa khả năng mở rộng Mặc dù bộ nhớ bus không còn bị nút cổ chai lâu hơn, nhưng các kết nối tới các hệ thống ổ đĩa con bây giờ bị nút cổ chai; đặc biệt là trong tình huống các cơ sở dữ liệu thực hiện một số lượng lớn các truy cập đến ổ đĩa So với các hệ thống chia sẻ bộ nhớ,
hệ thống chia sẻ đĩa có thể mở rộng số lượng bộ vi xử lý lớn hơn, nhưng thông tin liên lạc giữa các bộ vi xử lý chậm hơn (lên đến một vài phần nghìn giây khi không có phần cứng chuyên dùng cho thông tin liên lạc), vì nó phải đi qua một mạng lưới thông tin liên lạc
Hình 1.2 Kiến trúc ổ đĩa chia sẻ, trong đó P: bộ vi xử lý, M: bộ nhớ, D: ổ đĩa
1.2.3 Kiến trúc không chia sẻ
Trong một hệ thống không chia sẻ, mỗi nút là một máy độc lập bao gồm một bộ
xử lý, một bộ nhớ, và một hoặc nhiều đĩa Các bộ vi xử lý tại một nút có thể giao tiếp với một bộ vi xử lý tại nút khác bằng một kết nối mạng tốc độ cao Chức năng của một nút là máy chủ cho các dữ liệu trên một ổ đĩa hoặc nhiểu ổ đĩa mà nút đó sở hữu
Trang 15Các tham chiếu ổ đĩa cục bộ được phục vụ bởi các đĩa cục bộ tại mỗi bộ vi xử
lý, mô hình không chia sẻ, khắc phục được những bất lợi của tất cả yêu cầu vào/ra thông qua một kết nối mạng đơn; tức là chỉ các truy vấn, truy cập vào ổ đĩa không cục
bộ, và mối quan hệ kết quả truyền đi thông qua mạng Hơn nữa, các kết nối mạng ở các hệ thống không chia sẻ thường được thiết kế để có khả năng mở rộng, do đó khả năng truyền dẫn tại các nút sẽ tăng lên Cho nên, kiến trúc không chia sẻ có khả năng
mở rộng hơn và có thể dễ dàng hỗ trợ một lượng lớn số bộ xử lý Vì thế ta có thể tổng kết các ưu điểm của kiến trúc ổ đĩa chia sẻ là:
o Ưu điểm lớn nhất của hệ thống không chia sẻ là có thể mở rộng ra hàng trăm thậm chí hàng ngàn bộ xử lý mà không ảnh hưởng đến các bộ xử lý khác
o Kiến trúc không chia sẻ đạt được độ tăng tốc và độ mở rộng gần tuyến tính trong các quan hệ phức tạp và trong việc xử lý giao thức trực tuyến
o Vấn đề thời gian chờ truy xuất bộ nhớ không còn là vấn đề bế tắc Hơn nữa
việc đồng bộ cache cũng dễ duy trì vì mỗi bộ vi xử lý chỉ được phép đọc và ghi các
phần cơ sở dữ liệu dành riêng cho nó
o Giảm thiểu sự tắc nghẽn lưu thông trên mạng bởi vì chỉ có các câu hỏi và câu trả lời truyền thông trên mạng Còn các truy xuất bộ nhớ thô và các phép truy xuất đĩa thô được thực hiện độc lập trong mỗi bộ xử lý và chỉ có các dữ liệu đã được lọc mới chuyển qua chương trình máy khách
Những nhược điểm chính của hệ thống không chia sẻ là chi phí truyền thông và truy cập đĩa không cục bộ cao hơn so với kiến trúc bộ nhớ chia sẻ hoặc kiến trúc ổ đĩa chia sẻ do việc gửi dữ liệu liên quan đến phần mềm tương tác ở cả hai đầu
Nói chung, kiến trúc không chia sẻ có nhiều ưu điểm hơn so với hai kiến trúc đã nói trên Nó đạt được độ tăng tốc và độ mở rộng tốt Vì vậy kiến trúc này được áp dụng phổ biến trong các hệ CSDL song song, nhưng bù lại nó tốn kém chi phí hơn hai kiến trúc nói trên
Trang 16Hình 1.3 Kiến trúc không chia sẻ, trong đó P: bộ vi xử lý, M: bộ nhớ, D: ổ đĩa
1.2.4 Kiến trúc phân tầng
Kiến trúc phân tầng là sự kết hợp các đặc điểm của kiến trúc bộ nhớ chia sẻ, kiến trúc ổ đĩa chia sẻ, và kiến trúc không chia sẻ Ở mức đầu, hệ thống bao gồm các nút được kết nối bởi mạng kết nối và không chia sẻ ổ đĩa hoặc bộ nhớ với nhau Như vậy, mức đầu là kiến trúc không chia sẻ Mỗi nút của hệ thống thực sự có thể là một hệ thống chia sẻ bộ nhớ với một số bộ vi xử lý Ngoài ra, mỗi nút có thể là một hệ thống chia sẻ ổ đĩa, và mỗi nút trong các hệ thống chia sẻ một tập các ổ đĩa có thể là một hệ thống chia sẻ bộ nhớ Do đó, một hệ thống có thể được xây dựng như một hệ thống phân cấp, với kiến trúc chia sẻ bộ nhớ với một vài bộ vi xử lý tại mỗi nút, và một kiến trúc không chia sẻ ở mức đầu, có thể là một kiến trúc chia sẻ ổ đĩa ở mức giữa Hình 1.2.4 minh họa một kiến trúc phân cấp với các nút chia sẻ bộ nhớ kết nối với nhau trong một kiến trúc không chia sẻ Hệ thống cơ sở dữ liệu song song thương mại ngày nay chạy trên các loại kiến trúc này
Những nỗ lực nhằm giảm sự phức tạp của chương trình chạy trên hệ thống này
đã hình thành kiến trúc bộ nhớ ảo phân tán mà về mặt logic là bộ nhớ chia sẻ, nhưng
về mặt vật lí có nhiều hệ thống bộ nhớ rời; phần cứng bộ nhớ ánh xạ ảo đi với phần mềm hệ thống, cho phép mỗi bộ vi xử lý nhìn thấy các bộ nhớ rời như một bộ nhớ ảo
Do đó tốc độ truy cập sẽ khác, tùy thuộc vào việc trang nhớ (phân trang) có sẵn cục bộ hay chưa
Trang 17Hình 1.4 Mô hình kiến trúc phân tầng
Tóm lại, các máy tính lớn truyền thống không còn phù hợp với những cơ sở dữ liệu lớn và các truy vấn phức tạp nên các máy tính song song đang dần dần được thay thế Một hệ thống song song được xây dựng tốt là một hệ thống đảm bảo được hai mục tiêu: độ tăng tốc và độ mở rộng, đồng thời ít chịu ảnh hưởng của các trở ngại như sự quá tải khi khởi động, sự tranh chấp và mất cân bằng tải giữa các bộ vi xử lý Trong
ba kiến trúc phần cứng cho các máy tính song song được giới thiệu ở trên, kiến trúc không chia sẻ được phát triển và ứng dụng nhiều nhất, do tính phổ dụng và ưu việt của
nó Các máy tính với kiến trúc này đạt được độ tăng tốc và độ mở rộng gần tuyến tính, đặc biệt có thể mở rộng ra hàng trăm thậm chí hàng ngàn bộ vi xử lý
1.3 Các kỹ thuật phân hoạch dữ liệu trong CSDL song song
Có hai loại phân hoạch dữ liệu cơ bản:
Phân hoạch dữ liệu theo chiều dọc
Phân hoạch dữ liệu theo chiều ngang
Hình 1.3.1 dưới đây mô tả đồ họa hai loại phân hoạch
Trang 18Hình 1.5 Phân hoạch dữ liệu theo chiều dọc và theo chiều ngang
Phân hoạch dữ liệu theo chiều dọc là phân hoạch dữ liệu theo chiều dọc trên tất
cả các bộ vi xử lý Mỗi bộ xử lý có đầy đủ số lượng các bản ghi của một bảng cụ thể, nhưng chỉ một phần các thuộc tính Bởi vì mỗi bộ xử lý có các trường/thuộc tính khác nhau, khi tìm kiếm giá trị một trường/thuộc tính cụ thể, chỉ có những bộ vi xử lý mà chứa trường/thuộc tính sẽ tham gia vào quá trình tìm kiếm Vì vậy, các bộ vi xử lý mà không chứa trường/thuộc tính cụ thể đó sẽ trở nên nhàn rỗi Mô hình này là phổ biến hơn trong các hệ thống cơ sở dữ liệu phân tán, ở đó các hệ thống mạng/giao tiếp chậm hơn so với hệ thống cơ sở dữ liệu song song, mà phần tử xử lý mạnh hơn thông qua một kết nối mạng nhanh chóng Lý do cho việc sử dụng song song trong các hệ thống
cơ sở dữ liệu là để phân tán các nhiệm vụ xử lý giữa tất cả các bộ vi xử lý, do đó thời gian truy vấn được giảm xuống mức tối thiểu Bộ vi xử lý tham gia xử lý trong toàn bộ quá trình là rất quan trọng Thậm chí quan trọng hơn khi mức độ tham gia phải là ngay
cả khi có thể
Phân hoạch ngang là một mô hình mà trong đó mỗi bộ xử lý giữ một phần bản
ghi hoàn chỉnh của một bảng cụ thể Một truy vấn mà đánh giá một giá trị thuộc tính
cụ thể sẽ yêu cầu tất cả các bộ vi xử lý để tham gia Do đó, mức độ song song được cải thiện Mô hình này phổ biến hơn trong hệ thống cơ sở dữ liệu song song, ở đó giao tiếp diễn ra nhanh chóng và bộ vi xử lý tham gia trong toàn bộ quá trình xử lý thường xuyên là rất quan trọng Phương thức phân hoạch ngang đã được sử dụng bởi hầu hết
Trang 19các hệ thống cơ sở dữ liệu quan hệ song song Có một số phân hoạch ngang được biết đến phổ biến hơn, cụ thể là:
Phân hoạch dữ liệu theo vòng tròn Robin
Phân hoạch dữ liệu theo hàm băm
Phân hoạch dữ liệu theo khoảng
Phân hoạch dữ liệu ngẫu nhiên, bất bình đẳng
1.3.1 Phân hoạch theo vòng tròn Robin
Phân hoạch dữ liệu vòng tròn Robin là phương pháp phân hoạch dữ liệu đơn
giản nhất, theo đó mỗi bản ghi lần lượt được phân cho một phần tử xử lý theo chiều kim đồng hồ Điều này có nghĩa là bản ghi đầu tiên của một bảng phân hoạch được phân phối đến phần tử xử lý đầu tiên, bản ghi thứ hai đến các thành phần xử lý thứ hai,
và như vậy Một khi các phần tử xử lý cuối cùng đã có được một bản ghi, phân phối bản ghi sẽ bắt đầu lại trong các phần tử xử lý đầu tiên Vào cuối của phân phối dữ liệu, mỗi phần tử xử lý sẽ nhận được một phân hoạch tương đương, ngoại trừ vòng cuối cùng của phân phối bản ghi có thể không đạt được các phần tử xử lý cuối cùng, nếu tổng số bản ghi là không chia hết cho số phần tử xử lý Hình 1.3.2 đưa ra một minh họa của phân hoạch dữ liệu theo vòng tròn Robin
Hình 1.6 Phân hoạch theo vòng tròn Robin
Từ cách phân phối trên ta có thể biết được bản ghi thứ i của một bảng đã được phân hoạch trên N đĩa được đánh số thứ tự từ 0,1, ,N-1 sẽ được đặt vào đĩa thứ (i mod N)
Trang 20Từ khi phân hoạch dữ liệu theo vòng tròn Robin phân phối các dữ liệu đều đến
tất cả các phần tử xử lý, nó còn được gọi là "phân hoạch cân bằng '' Phân hoạch theo vòng tròn Robin là một trường hợp đặc biệt của "phân hoạch ngẫu nhiên-cân bằng"
tổng quát, ở đó mỗi bộ vi xử lý nhận được một phần dữ liệu chia sẻ bằng nhau của bảng ban đầu, không phụ thuộc vào cách phân hoạch được thực sự thực hiện, ví dụ, chia bảng vào các bảng con bằng nhau và sau đó phân phối mỗi bảng con đến một phần tử xử lý riêng
Ưu điểm chính của phân hoạch theo vòng tròn Robin hay phân hoạch ngẫu nhiên – cân bằng đó là các dữ liệu được phân bố đồng đều Vì mục đích của xử lý song song, đặc biệt xử lý trong cơ sở dữ liệu song song là đạt được cân bằng tải để giảm thời gian thực hiện một công việc, và phân hoạch dữ liệu này hỗ trợ mục tiêu đó
Mặc dù sự phân chia của các bản ghi bằng nhau, nhưng các bản ghi trong một phân hoạch không được phân nhóm ngữ nghĩa Các bản ghi được nhóm lại chỉ đơn giản là để đạt được các phân hoạch bình đẳng trong mỗi bộ vi xử lý Đây là nhược điểm chính của vòng tròn Robin, hay nói cách khác phân hoạch này không thích hợp với các truy vấn khoảng vì phải tiến hành tìm kiếm trên tất cả các phân hoạch Theo ví
dụ 1.3.1 bên dưới, rằng chúng ta muốn tìm các bản ghi với một thuộc tính cụ thể như ngày gọi là ngày như sau “16-10-2014”, sau đó tất cả các bộ vi xử lý phải hoạt động, mặc dù có lẽ chỉ là một vài trong số các phần tử xử lý sẽ tạo ra kết quả mong muốn Không có cách nào để biết trước những phần tử xử lý giữ những bản ghi này Như vậy chi phí khỏi tạo và chi phí tham gia xử lý rất tốn kém, đặc biệt là nếu các phần tử xử lý cuối cùng không cung cấp bất kỳ bản ghi nào, chúng sẽ phải chịu các chi phí không cần thiết Phân hoạch này sẽ thuận lợi nếu chỉ có những phần tử xử lý mà có khả năng tạo ra kết quả có liên quan trong việc xử lý Tuy nhiên, điều này là không thể thực hiện với bất kỳ phân hoạch theo vòng tròn Robin khi các phân hoạch dữ liệu không có bất
kỳ ngữ nghĩa nào
Ví dụ 1.3.1: Bảng Cuocgoi (CHUGOI, BIGOI, NGAYGOI, SOGIAY,
THANHTIEN) được phân hoạch theo chiều kim đồng hồ trên 5 đĩa/phần tử xử lý Khi
đó mỗi phần tử xử lý chỉ hơn kém nhau một bản ghi Được biểu diễn như bảng dưới đây:
Trang 21Bảng 1.1 Phân hoạch theo vòng tròn Robin 1.3.2 Phân hoạch theo hàm băm
Để tạo một phân vùng có ý nghĩa hơn (bằng cách nhóm các bản ghi có cùng một ngữ nghĩa hay đặc tính), phân hoạch phải được dựa trên một thuộc tính đặc biệt Một loại phân hoạch dựa trên thuộc tính là phân hoạch theo hàm băm, tức là một hàm băm được áp dụng Kết quả của hàm băm này quyết định bộ vi xử lý nào lưu giữ các bản ghi Kết quả là, các bản ghi trong một phân hoạch có giá trị băm giống nhau Hình 1.3.3 dưới đây đưa ra một minh họa đồ họa của một phân hoạch dữ liệu theo hàm băm
Trang 22Hình 1.7 Phân hoạch dữ liệu theo hàm băm
Sự sắp xếp này là tốt nhất cho sự truy xuất chính xác dựa trên các thuộc tính phân hoạch, ở đó các bộ vi xử lý có chứa các bản ghi mong muốn có thể được truy cập trực tiếp, với điều kiện là hàm băm dựa trên thuộc tính đó cũng là thuộc tính tương tự của việc truy xuất chính xác Trong trường hợp này, các phần tử xử lý được chọn sẽ chỉ được kích hoạt khi chúng giữ các bảng ghi ứng cử viên, trong khi các phần tử xử lý khác không được yêu cầu làm việc, do đó làm giảm tổng chi phí Những phần tử xử lý
mà nhàn rỗi trong công việc cụ thể này có thể có sẵn sàng để xử lý các công việc khác.Tổng quát hơn là dữ liệu được phân hoạch cho tất cả các đĩa bằng cách áp dụng hàm băm ngẫu nhiên trên thuộc tính phân hoạch Hàm băm sẽ trả về 1 số i trong khoảng từ (0, …, N-1) đĩa
Một ví dụ về một truy xuất chính xác bằng cách sử dụng một phân hoạch dữ liệu theo hàm băm là như sau Ví dụ, hàm băm dựa trên thuộc tính ngày gọi, và việc tìm kiếm là để tìm ra cuộc gọi có ngày gọi là ngày “15-10-2014” Ngày gọi này được băm, sử dụng cùng một hàm băm cho các phân hoạch dữ liệu Kết quả của hàm băm này xác định được nơi chứa các bản ghi, và các phần tử xử lý giữ bản ghi này sẽ được kích hoạt và các bản ghi mong muốn sẽ được tìm ra Đây là một ví dụ về một truy xuất chính xác bằng cách sử dụng một phân hoạch dữ liệu theo hàm băm
Một vấn đề của phân vùng băm liên quan đến xử lý các bản ghi của một khoảng nhất định, mà phân hoạch theo hàm băm không thể trực tiếp phát hiện vị trí của một bản ghi Giả sử tìm kiếm trên được sửa đổi để tìm cuộc gọi có ngày gọi từ ngày “15-10-2014” đến ngày “17-10-2014 Với phương pháp băm, nó không thể băm mỗi giá trị
Trang 23ngày gọi riêng biệt trong phạm vi đã cho, và chúng ta không biết khoảng giá trị tối đa ngày gọi của cuộc gọi là bắt đầu từ ngày “15”, ngay cả khi chúng ta đã biết, cũng mất thời gian để băm mỗi cuộc gọi có ngày gọi riêng biệt chỉ để xác định các bộ vi xử lý chứa các bản ghi đó mong muốn Do đó, phân hoạch hàm băm là không phù hợp với tìm kiếm theo khoảng, nó chỉ phù hợp tìm kiếm theo giá trị chính xác
Một nhược điểm khác tồn tại trong phân hoạch dữ liệu theo hàm băm là cân bằng tải của mỗi phần tử xử lý có thể bị mất cân bằng, vì sự phân bố giá trị dữ liệu không đồng đều Từ quan điểm hoạt động tìm kiếm, nó có thể không là một vấn đề lớn như đã giải thích ở trên Nhưng từ quan điểm của các hoạt động khác, nó có thể có tác động xấu đến hiệu suất, bởi vì các dữ liệu ban đầu được giao là đã sai lệch
Ví dụ dưới đây mô tả việc thực hiện phân hoạch dữ liệu theo hàm băm bảng Cuocgoi đã cho ở ví dụ 1.3.1:
Ví dụ 1.3.2: Phân hoạch theo hàm băm theo dữ liệu đã được cho ở ví dụ 1.3.1,
ta thực hiện một hàm băm đơn giản nhất là sử dụng hàm băm k=t.A mod N k là
đĩa/phần tử được phân hoạch cuộc gọi vào, t là 1 giá trị tùy ý, ở đây ta cho bằng 1, A là giá trị ngày, ở đây là sẽ lấy số ngày là 1 số nguyên dương, N là số đĩa =5 Từ đó ta được bảng phân hoạch như sau:
16-10-2014 21-10-
2014
NGAY GOI
19-10-2014
1.ngay mod 5 =1 Đĩa 1
1.ngay mod 5 =0
Đĩa 0
1.ngay mod 5 =2 Đĩa 2
1.ngay mod 5 =3
Trang 241.3.3 Phân hoạch theo khoảng
Phân hoạch theo khoảng chia các bản dựa trên một một khoảng nhất định của thuộc tính phân hoạch Ví dụ, bảng cuộc gọi được phân chia dựa trên ngày gọi theo sự phân bố phạm vi sau đây: ngày gọi từ ngày 15 đến ngày 16 thuộc phần tử xử lý đầu tiên, ngày gọi từ ngày 17 đến ngày 18 thuộc phần tử xử lý thứ hai, v.v Hình 1.3.4 đưa
ra một minh họa đồ họa của phân hoạch dữ liệu theo khoảng
Hình 1.8 Phân hoạch dữ liệu theo khoảng
Một hệ quả của phân hoạch dữ liệu theo khoảng này là việc xử lý các bản ghi trên một khoảng cụ thể của thuộc tính phân vùng có thể trực tiếp đến một nhóm nhỏ các bộ vi xử lý có chứa khoảng bản ghi mong muốn Ví dụ, truy xuất đến cuộc gọi có ngày gọi từ ngày “15-10-2014” đến ngày “17-10-2014” (ví dụ ngày gọi là ngày 15 ,16
và 17 vv) có thể trực tiếp đến các phần tử xử lý giữ bản ghi bắt đầu từ ngày 15 đến ngày 17 Một ví dụ khác có thể truy xuất cuộc gọi có ngày gọi từ ngày ngày 15 đến ngày 18, và truy vấn này có thể trực tiếp đến 1 hoặc 2 bộ vi xử lý Điều đó chỉ ra rằng phân hoạch theo khoảng đặc biệt thích hợp với truy xuất theo khoảng Tuy nhiên, cả hai phân hoạch dữ liệu theo khoảng và theo hàm băm đều gặp rắc rối với dữ liệu được phân phối lệch Trong hình 3.5 (cũng như hình 3.4 cho phân hoạch theo hàm băm), cân bằng tải của mỗi phần tử xử lý có thể không được cân bằng
và đồng đều Điều này có thể ảnh hưởng đến một số thực thi ở trên, khi vị trí dữ liệu ban đầu là đã sai lệch
Hơn nữa, xử lý truy xuất dựa trên một thuộc tính không phân hoạch không có thể sử dụng phân hoạch theo hàm băm hoặc theo khoảng Ví dụ, nếu các phân hoạch (khoảng hoặc hàm băm) dựa trên thuộc tính ngày gọi và truy vấn dựa trên số bị gọi,
Trang 25sau đó truy vấn sẽ không thể sử dụng được ưu điểm của phân hoạch theo khoảng hoặc hàm băm đã cung cấp, bởi vì thuộc tính được sử dụng trong phân hoạch dữ liệu là khác với thuộc tính trong truy vấn Trong trường hợp này, tất cả các bộ vi xử lý phải được kích hoạt và sử dụng để xử lý truy vấn Một vấn đề thực tế là cả hai phân hoạch theo khoảng và hàm băm trong trường hợp này đều sinh ra bất lợi, khi việc phân bổ dữ liệu ban đầu trong mỗi phần tử xử lý không đồng đều Nói cách khác, tất cả các bộ vi xử lý được sử dụng để xử lý, và khi tải trọng của mỗi bộ xử lý là khác nhau, thời gian hoàn thành của mỗi bộ vi xử lý sẽ không bằng nahu, và thời gian hoàn thiện lâu nhất là thời gian thực hiện các truy vấn
Ví dụ 1.3.3: Phân hoạch theo khoảng dữ liệu đã cho ở ví dụ 1.3.1 các khoảng
1.3.4 Phân hoạch ngẫu nhiên không cân bằng
Kỹ thuật phân hoạch dữ liệu cơ bản cuối cùng là phân hoạch dữ liệu ngẫu nhiên không cân bằng Như tên gọi của nó, có hai nội dung quan trọng về phương pháp phân hoạch dữ liệu ngẫu nhiên không cân bằng:
Phân hoạch không dựa trên các thuộc tính tương tự như việc xử lý truy xuất dựa vào (các phân hoạch có thể là một phương pháp phân hoạch theo hàm băm hoặc
NGAY GOI
17-10-2014 18-10-
20-10-2014
NGAY GOI 21-10-
2014
15<=Ngay<17
Đĩa 0
17<=Ngay<19 Đĩa 1
19<=Ngay<20
Đĩa 2 20<=Ngay<21 Đĩa 3
21<=Ngay<22 Đĩa 4
Trang 26khoảng trên một thuộc tính xử lý không truy xuất, hoặc các phương pháp phân hoạch chỉ đơn giản là không rõ ràng)
Kích thước của mỗi phân hoạch có khả năng là bất bình đẳng Từ "ngẫu nhiên" trong tên của nó chỉ ra rằng các bản ghi trong mỗi phân hoạch không được nhóm lại cùng ngữ nghĩa, nhưng được phân bổ ngẫu nhiên
Phương pháp phân vùng ngẫu nhiên không cân bằng rất phổ biến, đặc biệt là khi các công việc thực sự thực hiện dựa trên kết quả tạm thời thu được từ các công việc trước đó Phương pháp phân hoạch ban đầu sử dụng có thể đã mất ngữ nghĩa của
nó thông qua một đường ống (pipeline) của các công việc Hình 1.3.5 đưa ra một minh
họa của một phân hoạch dữ liệu ngẫu nhiên không cân bằng
Hình 1.9 Phân hoạch dữ liệu ngẫu nhiên không cân bằng
Tóm tắt so sánh:
Bốn phương pháp phân vùng dữ liệu cơ bản ở trên thực sự có thể được phân loại thành loại (i) phân hoạch dữ liệu dựa vào thuộc tính và loại (ii) phân hoạch dữ liệu không dựa trên thuộc tính Phân hoạch dữ liệu dựa trên thuộc tính sử dụng kỹ thuật phân hoạch theo hàm băm và theo khoảng, trong khi đó phân hoạch dữ liệu không dựa trên thuộc tính sử dụng ngẫu kỹ thuật phân hoạch tự nhiên cân băng bằng (vòng tròn Robin) và phân hoạch tự nhiên không cân bằng Bảng 1.3.2 đưa ra một tóm tắt so sánh của các phương pháp phân hoạch dữ liệu dựa trên thuộc tính và không thuộc dựa trên tính
Trang 27Phân hoạch dựa trên thuộc tính Phân hoạch không dựa trên thuộc
tính
Dựa trên một thuộc tính cụ thể Không dựa trên bất kỳ thuộc tính nào
Bảng 1.2 So sánh các phương pháp phân hoạch
Một kết luận chung từ Bảng 1.3.2 là nếu tìm kiếm dựa trên các thuộc tính tương
tự khi phân hoạch dữ liệu (phân hoạch dựa trên thuộc tính), sau đó tìm kiếm có thể được hưởng lợi từ một số lợi thế được cung cấp bởi các phân hoạch dựa trên thuộc tính, chẳng hạn như tìm kiếm chính xác sử dụng một phân hoạch dữ liệu theo hàm băm hoặc kiếm một khoảng bằng cách sử dụng một phân hoạch dữ liệu theo khoảng Nếu thuộc tính tìm kiếm khác với các thuộc tính phân hoạch, sau đó là phân hoạch không dựa trên thuộc tính thì phân hoạch cân bàng ngẫu nhiên (vòng tròn Robin) là lựa chọn tốt nhất Ngẫu nhiên-không cân bằng được giải thích ở đây bởi vì, trong nhiều trường hợp, dữ liệu đã được phân hoạch và truy vấn đã nhận bất cứ dữ liệu nào
đã được xác định
Tóm lại, một phương pháp phân hoạch dữ liệu tốt sẽ tăng mức độ thực hiện song song và làm giảm thời gian thực hiện truy vấn, đặc biệt là các truy vấn phức tạp trân các cơ sở dữ liệu lớn Trong các loại phân hoạch dữ liệu đã trình bày ở trên mỗi loại phân hoạch đề có các ưu và nhược điểm riêng với mỗi dạng truy vấn
1.4 Các cơ chế xử lý song song
1.4.1 Song song liên truy vấn
Trong song song liên truy vấn (interquery parallelism), các truy vấn hoặc các
giao dịch khác nhau thực thi song song với các truy vấn hoặc giao dịch khác Hình thức song song hóa này có thể làm gia tăng hiệu suất giao tác Tuy nhiên, thời gian đáp ứng của từng truy vấn không hề nhanh hơn so với khi chúng được thực thi riêng biệt,
Do vậy, mục đích chính của song song liên truy vấn là điều chỉnh hệ thống xử lý giao dịch nhằm cho phép gia tăng số lượng giao dịch có thể thực hiện trong một đơn vị thời gian
Trang 28Song song liên truy vấn là dạng song song sớm nhất được sử dụng trong các hệ
thống cơ sở dữ liệu, đặc biệt là trong các hệ thống song song có bộ nhớ dùng chung Các hệ cơ sở dữ liệu dược thiết kế cho các hệ thống bộ xử lý đơn có thể được sử dụng trên kiến trúc song song bộ nhớ dùng chung với thay đổi ít hoặc không có, bởi vì ngay
cả các hệ thống cơ sở dữ liệu tuần tự cũng hỗ trợ xử lý đồng hành Các giao dịch mà sẽ được vận hành theo cơ chế song song trên các máy tuần tự sẽ làm việc song song trên kiến trúc song song bộ nhớ dùng chung
Việc hỗ trợ song song liên truy vấn trên các kiến trúc ổ đĩa dùng chung hoặc không chia sẻ thì phức tạp hơn Các bộ xử lý phải thực hiện phối hợp một số tác vụ, như khóa và ghi nhật ký, và điều này đòi hỏi chúng phải gửi các thông điệp cho nhau Một hệ cơ sở dữ liệu song song cũng phải đảm bảo rằng 2 bộ xử lý không được tự do cập nhật cùng một dữ liêu tại cùng thời điểm Hơn nữa, khi một bộ xử lý truy xuất hoặc cập nhật dữ liệu, hệ cơ sở dữ liệu phải đảm bảo bộ xử lý đang có dữ liệu mới nhất trong vùng đệm (buffer pool) của nó Vẩn đề này được gọi là bài toán liên kết ngầm
Có nhiều cơ chế khác nhau được phát triển nhằm đảm bảo liên kết ngầm; thông thường, các cơ chế liên kết ngầm được tích hợp với các cơ chế điều khiển đồng hành
để giảm chi phí Một cơ chế như vậy cho hệ thông dùng chung đĩa như sau:
1 Trước khi đọc hoặc ghi lên một trang, một giao dịch sẽ khóa trang này bằng chế độ dùng chung hoặc độc quyền, tùy trường hợp Ngay sau khi giao dịch này thu được khóa dùng chung hoặc khóa độc quyền trên một trang, nó sẽ đọc trang mới nhất
Trang 29Các cơ chế kiến trúc ổ đĩa chia sẻ có thể mở rộng cho kiến trúc không chia sẻ như sau
Mỗi trang có một bộ xử lý chủ P i , và được lưu trên đĩa D i Khi các bộ xử lý muốn đọc
hoặc ghi lên trang này, nó sẽ gửi đề nghị tới bộ xử lý chủ P i của trang, do chúng không thể liên lạc trực tiếp với ổ đĩa Các hoạt động khác cũng giống như các cơ chế ổ đĩa chia sẻ
Các hệ Oracle 7 và Oracle RDB là các ví dụ về các Hệ cơ sở dữ liệu song song
ổ đĩa chia sẻ có hỗ trợ cơ chế song song liên truy vấn
1.4.2 Song song nội truy vấn
Song song nội truy vấn là dạng song song hóa thi hành song song một truy
vấn đơn trên nhiều bộ xử lý và ổ đĩa Nghĩa là nó thực hiện từng truy vấn một và cho phép thực hiện đồng thời các phép toán trên truy vấn đó
Để minh họa cho việc xác định giá trị truy vấn theo cách song song, hãy xem một truy vấn trên một quan hệ được sắp xếp Giả sử rằng quan hệ được phân
bố trên nhiều đĩa bằng phương pháp phân bố khoảng dựa trên một vài thuộc tính nhất định, và việc sắp xếp được thực hiện dựa vào thuộc tính phân bố Phép sắp xếp có thể cài đặt như sau: dữ liệu ở mỗi vùng đĩa được sắp xếp cục bộ, quá trình này diễn ra song song Sau đó các vùng đĩa đã sắp xếp được nối lại để thu được kết quả cuối cùng
Do đó, song song hóa một truy vấn có thể được thực hiện bằng việc song song hóa từng phép toán thành câu truy vấn Có một nguồn song song hóa khác
trong việc xác định giá trị một truy vấn: cây toán tử của một truy vấn có thể chứa
nhiều phép toán Việc định trị cây toán tử có thể được song song hóa bằng việc định trị song song các phép toán không phụ thuộc vào phép toán khác Hơn nữa, như đã lưu ý trong phần trước, kết quả của phép toán này có thể chuyển đến cho phép toán kia xử lý Hai phép toán có thể thi hành song song trên các bộ xử lý khác nhau, một phép toán phát sinh kết quả cho một phép toán khác
Tóm lại, việc thi hành một truy vấn đơn có thể song song hóa theo 2 cách:
• Song song hóa nội toán tử (Intra - operation parallelism) Việc gia tăng tốc
độ xử lý một truy vấn có thể thực hiện bằng cách song song hóa từng phép toán riêng biệt, như sắp xếp, chọn, chiếu và kết
Trang 30• Song song hóa liên toán tử (Inter - operation parallelism) Việc tăng tốc xử lý
một truy vấn có thể đạt được bằng cách thi hành song song các phép toán khác nhau trong biểu thức truy vấn
Hai dạng song song hóa này có thể bổ sung cho nhau, và có thể được sử dụng đồng thời Vì số lượng các phép toán trong một truy vấn thông thường là ít
so với số bộ được từng phép toán xử lý, dạng song song hóa đầu mềm dẻo hơn cho việc gia tăng song song hóa, Tuy nhiên, ở các hệ thống song song thông thường hiện nay với một số tương đôi ít bộ xử lý, cả 2 dạng song song hóa đều được chú trọng
Trong trình bày dưới đây về vấn đề song song hóa các truy vấn, giả sử
rằng các truy vấn là chỉ đọc Việc lựa chọn các thuật toán song song hóa định truy
vấn phụ thuộc vào kiến trúc máy tính Thay vì trình bày các thuật toán cho từng
kiên trúc một cách độc lập, ở đây sử đụng kiến trúc không dùng chung trong các
mô tả Như vậy, ở đây mô tả tường minh khi nào dữ liệu phải được chuyển từ bộ
xử lý này sang bộ xử lý kia Mô hình này có thể giả lập cho các kiến trúc khác
Do đó, các thuật toán cho kiến trúc không dùng chung có thể được vận dụng cho các kiên trúc còn lại
Để đơn giản hóa trong trình bày các thuật toán, giả định rằng có n bộ xử lý
Po, Pi, Pn-1, và n đĩa D0, Di , , Dn_1. trong đó đĩa Di được liên kết với bộ xử lý Pi Một hệ thống thực tế có thể có nhiều đĩa cho một bộ xử lý Việc mở rộng thuật toán cho phép nhiều đĩa cho một bộ xử lý không phức tạp lắm Có thể xem Di là một tập đĩa, tuy nhiên để đơn giản trong trình bày, ở đây giả định rằng- Di là một dĩa đơn
1.4.3 Song song liên toán tử
Có hai dạng song song liên toán tử: song song hóa đường ống và song song hóa độc lập
A Song song hóa đường ống
Trong hệ thống xử lý tuần tự, đường ống (pipeline) là một kỹ thuật quan trọng trong xử lý truy vấn Đó là, một dãy các thao tác được sắp đặt sao cho dầu ra của thao tác này là đầu vào của thao tác kế tiếp Lấy ví dụ, có 2 thao tác A và B
Trang 31được sắp đặt như sau: kết quả của thao tác A sẽ là đầu vào cho thao tác B Thuận lợi chính của kỹ thuật này là không cần phải lưu trữ tạm thời kết quả của thao tác đầu mà giao cho thao tác kế tiếp xử lý ngay
Trong các hệ thống song song, kỹ thuật đường ống chủ yếu được sử dụng với cùng mục đích như trong hệ thông xử lý tuần tự Tuy nhiên, nó còn được dùng như một biện pháp song song hóa Chẳng hạn như trong ví dụ trên, có thể thi hành A và B đồng thời trên các bộ xử lý khác nhau, sao cho B sẽ tiêu thụ các bộ mà A tạo ra Dạng song song hóa này được gọi là song song hóa đường ống
Xem phép kết giữa 4 quan hệ:
R1 R2 R3 R4
Điều khiển có thể thiết lập một ống tin cho phép 3 phép kết được thực hiện song song Bộ xử lý P1 được ấn định thực hiện phép kết temp1 ← R1 R2 , và bộ xử lý P2 được
ấn định thực hiện phép kết temp1 R3 Khi P1 tính được vài bộ trong R1 R2, các bộ này
ngay lập tức sẽ sẵn sàng cho P2 xử lý Do vậy, trước khi P1 hoàn tất phép kết R1 R2, P2
đã có sẵn một số bộ trong temp1
Song song hóa đường ống tỏ ra có ích trong các hệ thống có ít bộ xử lý, nhưng với các hệ thống có nhiều bộ xử lý thì không thích hợp Trước tiên, nói chung chuỗi các thao tác trong đường ống không đủ dài để cho phép song song hóa mức độ cao Thứ hai, không thể nào sắp vào đường ống các phép toán quan hệ, chẳng hạn phép trừ - phép toán vốn không tự tạo ra kết xua't cho tới khi tất cả các đầu vào của nó đều có thể truy xuất được Thứ ba, chỉ có thể thu được một độ tăng tốc giởi hạn đối với trường hợp khá phổ biến là chi phí thi hành một phép toán cao hơn nhiều so với các phép toán khác Do vậy, khi mức độ song song hóa cao, mức dộ quan trọng của đường ống xét về khía cạnh song song hóa trở nên mờ nhạt Lí do sử dụng đường ống quan trọng nhất vẫn là các việc tránh đọc/ghi các kết quả trung gian lên đĩa
B Song song hóa độc lập
Trong một biểu thức truy vấn các phép toán không phụ thuộc vào các phép toán khác thì có thể thi hành song song Dạng song song hóa này được gọi là song song hóa độc lập (independent parallelism)
Trang 32Xem lại phép kết R1 R2 R3 R4 Rõ ràng biểu thức temp1 ← R1 R2 có thể được tính song song với temp2 ← R3 R4 Sau khi các tính toán này hoàn tất, ta có
thể tính tiếp temp1 temp2
Để đạt được sự song song hóa hơn nữa, các bộ trong kết quả của temp1 và temp2 có thể được đưa vào thực hiện kết nối ngay bằng phép kết temp1 temp2 mà không phải đợi xác định hoàn toàn temp1 và temp2
Cũng giống như song song hóa đường ống, song song hóa độc lập không mang lại một mức độ song song hóa cao Nó chỉ hữu ích trong các hệ thống có ít bộ xử lý
1.4.4 Song song nội toán tử
Song song hóa dữ liệu chỉ có ý nghĩa nếu xét trên các quan hệ có kích thước lớn, các phép toán có thể được song song hóa bằng cách thi hành chúng song song trên các tập con khác nhau của quan hệ Do số bộ của một quan hệ rất nhiều, mức độ song song hóa cũng khá lớn Vì vậy, sử dụng song song nội toán tử trong CSDL xem ra là cần thiết Phần 1.5 dưới đây sẽ trình bày các phiên bản song song của một số phép toán quan hệ thông thường
1.5 Các phép toán song song
Thay vì phải xây dựng các phép toán song song mới, chúng ta có thể xây dựng các phép toán quan hệ truyền thống với các dòng dữ liệu song song Mỗi phép toán quan hệ có một tập các cổng vào chứa các mẫu tin và một cổng chứa dòng dữ liệu kết quả Dòng dữ liệu song song thực hiện bằng cách phân chia và ghép các dòng dữ liệu thành các cổng tuần tự Có hai phép toán song song cơ bản: phép ghép (merge operator) và phép tách (splitting operator)
Trang 331.5.2 Phép tách
Khi thực hiện một quy trình song song nhiều giai đoạn, một dòng dữ liệu đơn phải được tách thành nhiều dòng dữ liệu độc lập Một phép tách được dùng để phân hoạch hoặc lặp lại dòng kết quả ra của một phép toán quan hệ
Với Phương pháp phân hoạch tốt và đúng mục tiêu sử dụng sẽ làm tăng tốc mức
độ thực hiện song song, mỗi kỹ thuật phân hoạch đã trình bày ở trên đều có những ưu nhược điểm đối với mỗi dạng truy vấn, song với thực tế sử dụng ngày nay, kỹ thuật phân hoạch theo khoảng đang được áp dụng rộng rãi vì đáp ứng yêu cầu truy xuất theo thời gian và dễ sử dụng
Các cơ chế xử lý song song được trình bày ở trên đều cho thấy tính ưu việt của quá trình song song hóa Các phương pháp để thực hiện một truy vấn có thể phân công cho nhiều bộ xử lý thực hiện một cách độc lập nhau ( song song độc lập) hoặc thực hiện đồng thời, dữ liệu ra của bộ xử lý này là dữ liệu vào của bộ xử lý kia ( song song đường ống),… Tuy nhiên, việc tối ưu thời gian truy vấn có thể bị hạn chế bởi hai yếu tố: thứ nhất, công việc phân công cho mỗi bộ xử lý không đồng đều giữa các nút trong
hệ thống song song, nghĩa là mất tính cân bằng tải Thứ hai, chi phí thực hiện việc phân công quá lớn làm mất ý nghĩa của việc song song hóa Ngoài ra, hiện tượng quá tải có thể xảy ra khi khai thác cơ chế song song như quá tải khi khởi động, quá tải trong truyền thông hiện tượng nút cổ chai,… Các vấn đề này hoàn toàn có thể giải quyết được bằng cách sử dụng hợp lý phần cứng và đảm bảo dải thông vào ra của hệ thống
Trang 34Chương 2 MÁY TÍNH SONG SONG VÀ CÁC MÔ HÌNH
LẬP TRÌNH SONG SONG
2.1 Giới thiệu về máy tính song song
Ngày nay, với các bài toán yêu cầu xử lý trên một số lượng lớn dữ liệu và phức tạp như sự mô phỏng những hệ thống phức tạp và những vấn đề thách thức lớn như:
mô phỏng vụ nổ hạt nhân, khí hậu toàn cầu, cấu trúc tế bào, hệ gen sinh học, … đặt ra một nhu cầu lớn về tốc độ tính toán Những bài toán này thường yêu cầu một lượng lớn các phép tính lặp lại trên một khối lượng lớn dữ liệu để đưa ra một kết quả đúng đắn, và các phép tính này cần hoàn thành trong khoản thời gian hợp lý Ví dụ như dự báo thời tiết không thể xử lý bằng các máy tính truyền thống thông thường vì thời gian
xử lý là khoản 10 năm, trong khi đó yêu cầu phải việc xử lý tính toán phải ra kết quả tức thì, do đó việc xử lý tuần tự không đáp ứng được các yêu cầu này
Để giải quyết các bài toán trên ta cần phải tăng tốc độ tính toán Mặc dù trong những thập kỷ vừa qua chúng ta đã được chứng kiến những thành tựu to lớn về công nghệ vi xử lý Tốc độ đồng bộ của các bộ xử lý đã tăng lên rất nhiều và càng ngày càng tăng và cùng một lúc các bộ vi xử lý có khả năng thực hiện đa chỉ lệnh trong cùng một chu kỳ… nhưng do giới hạn về vật lý nên khả năng tính toán của các bộ xử
lý không thể tăng mãi được
Minh họa một cách đơn giản, tính toán truyền thống là xử lý một công việc tuần
tự từ đầu đến cuối, còn tính toán song song thì tách công việc đó thành nhiều phần và các bộ vi xử lý khác nhau thực hiện xử lý các phần của công việc đó để có kết quả nhanh hơn Tính toán song song mang lại một nền tảng mới cho sự phát triển của công nghệ xử lý Đây là hướng đi mới, đúng đắn và hiệu quả cho công nghệ điện toán trong tương lai
Máy tính song song gồm nhiều các bộ vi xử lý ghép lại nhau theo một kiến trúc nhất định tạo thành một chỉnh thể thống nhất, hoặc là nhiều máy tính kết nối với nhau thành một mạng máy tính, hoặc cả hai loại trên Khả năng tính toán của máy tính song
Trang 35song là vô hạn trong khi các máy tính tuần tự chỉ là hữu hạn cho dù tốc độ CPU có cao đến mấy
Các thành phần cần quan tâm trong máy tính song song là:
Một trong các thành phần quan trọng nhất của kiến trúc máy tính là bộ nhớ Bộ
nhớ thường được chia thành n mức
Bộ nhớ mức 1 là mức bộ nhớ cao nhất có dung lượng nhỏ nhất, nhanh và đắt nhất, thường gắn chặt với mỗi BXL thành bộ nhớ cục bộ Bộ nhớ mức 2 thường nhỏ hơn,
chậm hơn và rẻ hơn mức 1, v.v
Về nguyên tắc, dữ liệu được chuyển đổi giữa các mức lân cận của các bộ nhớ và
hoàn toàn được điều khiển bởi bộ nhớ mức 1 về lý thuyết, trong cấu trúc phân cấp bộ nhớ, tốc độ truy cập bộ nhớ trung bình gần bằng tốc độ truy cập ở mức cao (mức 1),
nhưng chi phí của các đan vị nhớ trung bình lại gần với giá của bộ nhớ ở mức thấp nhất
(mức n)
2.1.2 Nguyên tắc kết nối
Trong hầu hết các kiến trúc song song như: những hệ đa xử lý chia sẻ bộ nhớ,
đa bộ xử lý đa bộ nhớ, v.v thì vấn đề quan trọng nhất trong thiết kế là xác định sự liên kết giữa các bộ xử lý và bộ nhớ với nhau
Một kiến trúc lý tưởng là kiến trúc trong đó, mỗi bộ xử lý đều kết nối được với các BXL còn lại Khi đó nó tạo ra một đồ thị đầy đủ Ví dụ, nếu hệ thống có p bộ xử lý thì sẽ có p * (p-1) đường liên kết Dễ nhận thấy kiến trúc loại này sẽ rất phức tạp, nhất
là khi p đủ lớn
Nói chung có hai loại cấu hình tôpô cho mạng liên kết: liên kết tĩnh và liên kết động
- Mạng liên kết tĩnh là mạng các thành phần của hệ thống máy tính, trong đó
các bộ xử lý, bộ nhớ được liên kết với nhau một cách cố định, không thay đổi được
Trang 36- Mạng liên kết động là mạng các thành phần của hệ thống máy tính, trong đó
sự liên kết giữa các bộ xử lý, bộ nhớ là có thể thay đổi được cấu hình
Lĩnh vực liên kết động được rất nhiều người tập trung nghiên cứu và đã có nhiều công trình lý thuyết được công bố
2.1.3 Hệ điều hành
Hệ điều hành là một chương trình làm nhiệm vụ phối hợp các hoạt động của máy tính Hệ điều hành thực hiện các chức năng chính sau:
- Khởi động hệ thống
- Phân đoạn chương trình và lập lịch cho các tiến trình
- Trao đổi và đồng bộ hóa các tiến trình
- Quản lý và điều hành hệ thống
Về mặt khái niệm, mục đích chính của hệ điều hành cho máy tính đơn bộ xử lý
có một chút khác với những hệ cho máy tính đa bộ xử lý Trong hệ điều hành tập trung ( đơn bộ xử lý), mọi quyết định được thực hiện dựa trên sự hiểu biết về trạng thái tổng thể và tức thời của cả hệ thống Ngược lại, hệ điều hành đa bộ xử lý có thể thực hiện
mà không cần thiết phải báo trước về trạng thái của hệ thống phân tán
Nhiệm vụ chính của hệ điều hành đa bộ xử lý là tích hợp các tài nguyên tính toán và các bộ xử lý trao đổi với nhau thông qua mạng liên kết để tạo thành một hệ thống nhất làm việc cho hiệu quả
2.1.4 Chương trình dịch:
Chương trình được viết bằng các ngôn ngữ lập trình truyền thống thì phải được dịch sang dạng mã mà phần cứng hiểu được nó, đó là ngôn ngữ máy Chương trình dịch và chương trình thông dịch được sử dụng để thực hiện các chuyển đổi đó
Đối với các hệ thống song song thì một thành phần rất quan trọng là chương trình dịch song song Chương trình dịch làm giảm được thời gian thực hiện chương trình song song bằng cách chia nhỏ bài toán thành các khối công việc và những khối này được xử lý đồng thời bởi nhiều đơn vị xử lý Một số chương trình chỉ làm nhiệm
vụ phát hiện những khối công việc thực hiện được song song và thực hiện phân chia các đơn vị chức năng, một số khác tinh tế hơn, có thể lập lịch cho cả bài toán
Trang 37Một câu hỏi đặt ra trong kiến trúc song song là “ một chương trình có thể chia thành các khối nhỏ như thế nào? Và sau đó kết hợp lại chúng ra sao?”
Nói chung, những câu hỏi trên đề cập đến những vấn đề hạt nhân của xử lý song song, cần phải phân tích sự phụ thuộc về chức năng, dữ liệu của các khối công việc, sự liên kết giữa các thành phần của hệ thống và sự lập lịch thời gian thực hiện của hệ thống nói chung
2.2 Phân loại máy tính song song
2.2.1 Mô hình SISD: Đơn luồng lệnh, đơn luồng dữ liệu
(Single Instruction stream, Single Data Stream - Đơn luồng lệnh, đơn luồng dữ liệu)
Máy tính loại SISD chỉ có một CPU, ở mỗi thời điểm thực hiện một chỉ lệnh và chỉ đọc, ghi một mục dữ liệu
Tất cả các máy tính SISD chỉ có một thanh ghi register được gọi là bộ đếm chương trình (program counter) được sử dụng để nạp địa chỉ của lệnh tiếp theo và kết quả là thực hiện theo một thứ tự xác định của các câu lệnh
Hình 2-2 mô tả hoạt động của máy tính theo mô hình SISD
Hình 2.1 Hệ thống đơn lệnh đơn dữ liệu SISD
Mô hình SISD còn được gọi là SPSD (Single Program Single Data), đơn chương trình và đơn dữ liệu Đây chính là mô hình máy tính kiểu von Neumann