Phân mảnh cơ sở dữ liệu là gì?

Phân mảnh cơ sở dữ liệu là quá trình lưu trữ một cơ sở dữ liệu lớn trên nhiều máy. Mỗi một máy hoặc máy chủ cơ sở dữ liệu chỉ có thể lưu trữ và xử lý một lượng dữ liệu giới hạn. Quá trình phân mảnh cơ sở dữ liệu khắc phục hạn chế này bằng cách tách dữ liệu thành các đoạn nhỏ hơn, được gọi là các phân mảnh và lưu trữ chúng trên một số máy chủ cơ sở dữ liệu. Tất cả máy chủ cơ sở dữ liệu thường có cùng công nghệ cơ sở, đồng thời, những máy chủ này hoạt động cùng nhau để lưu trữ và xử lý lượng dữ liệu lớn.

Tại sao phân mảnh cơ sở dữ liệu lại quan trọng?

Khi một ứng dụng phát triển, số lượng người dùng ứng dụng và lượng dữ liệu lưu trữ của ứng dụng đó cũng sẽ tăng theo thời gian. Cơ sở dữ liệu sẽ thành điểm tắc nghẽn khi khối lượng dữ liệu trở nên quá lớn và có quá nhiều người dùng cố gắng sử dụng ứng dụng này để đọc hoặc lưu thông tin cùng lúc. Ứng dụng này sẽ bị chậm lại và làm ảnh hưởng đến trải nghiệm của khách hàng. Phân mảnh cơ sở dữ liệu là một trong những phương pháp để giải quyết vấn đề này bởi phương pháp này cho phép xử lý song song các tập dữ liệu nhỏ hơn trên các phân mảnh.

Lợi ích của việc phân mảnh cơ sở dữ liệu là gì?

Các tổ chức sử dụng quá trình phân mảnh cơ sở dữ liệu để đạt được những lợi ích sau:

Cải thiện thời gian phản hồi

Việc truy xuất dữ liệu trên một cơ sở dữ liệu lớn duy nhất mất nhiều thời gian hơn. Hệ thống quản lý cơ sở dữ liệu cần tìm kiếm qua nhiều hàng để truy xuất dữ liệu chính xác. Ngược lại, các phân mảnh dữ liệu có ít hàng hơn so với toàn bộ cơ sở dữ liệu. Vì vậy, việc truy xuất thông tin cụ thể hoặc chạy một truy vấn từ một cơ sở dữ liệu đã phân mảnh sẽ mất ít thời gian hơn. 

Tránh xảy ra sự cố cho toàn bộ dịch vụ

Nếu máy tính lưu trữ cơ sở dữ liệu gặp sự cố, ứng dụng phụ thuộc vào cơ sở dữ liệu này cũng sẽ lâm vào tình cảnh tương tự. Quá trình phân mảnh cơ sở dữ liệu sẽ ngăn điều này xảy ra nhờ phân phối các phần của cơ sở dữ liệu vào các máy tính khác nhau. Khi một trong các máy tính gặp sự cố, ứng dụng sẽ không ngừng hoạt động do có thể hoạt động bằng các phân mảnh đang hoạt động khác. Quá trình phân mảnh cũng thường được thực hiện kết hợp với quá trình sao chép dữ liệu trên các phân mảnh. Do đó, nếu không thể truy cập vào một phân mảnh, bạn vẫn có thể truy cập và khôi phục dữ liệu từ một phân mảnh thay thế khác.

Điều chỉnh quy mô hiệu quả

Một cơ sở dữ liệu đang phát triển tiêu thụ nhiều tài nguyên điện toán hơn và về sau sẽ chạm ngưỡng dung lượng lưu trữ. Các tổ chức có thể áp dụng phân mảnh cơ sở dữ liệu để bổ sung thêm tài nguyên điện toán nhằm hỗ trợ điều chỉnh quy mô cơ sở dữ liệu. Họ có thể bổ sung các phân mảnh mới trong thời gian chạy mà không cần tắt ứng dụng để bảo trì.

Quá trình phân mảnh cơ sở dữ liệu hoạt động như thế nào?

Cơ sở dữ liệu lưu trữ thông tin trong nhiều tập dữ liệu gồm các cột và hàng. Việc phân mảnh cơ sở dữ liệu sẽ chia một tập dữ liệu đơn lẻ thành các phân vùng hoặc phân mảnh. Mỗi phân mảnh chứa các hàng thông tin duy nhất mà bạn có thể lưu trữ riêng trên nhiều máy tính, được gọi là nút. Tất cả các phân mảnh chạy trên các nút riêng biệt nhưng có chung lược đồ hoặc thiết kế của cơ sở dữ liệu gốc. 

Ví dụ: một cơ sở dữ liệu không được phân mảnh có chứa một tập dữ liệu hồ sơ khách hàng có thể trông như thế này.

ID khách hàngTênTiểu bang
1JohnCalifornia
2JaneWashington
3PauloArizona
4WangGeorgia

Quá trình phân mảnh bao gồm việc tách các hàng thông tin khác nhau từ bảng và lưu trữ chúng trên các máy khác nhau như sau.

Máy tính A

ID khách hàngTênTiểu bang
1JohnCalifornia
2JaneWashington

Máy tính B

ID khách hàngTênTiểu bang
3PauloArizona
4WangGeorgia

Phân mảnh

Các khúc dữ liệu phân vùng được gọi là phân mảnh logic. Máy lưu trữ các phân mảnh logic được gọi là một phân mảnh vật lý hoặc nút cơ sở dữ liệu. Một phân mảnh vật lý có thể chứa nhiều phân mảnh logic. 

Khóa phân mảnh

Các nhà phát triển phần mềm sử dụng một khóa phân mảnh để xác định cách phân vùng tập dữ liệu. Một cột trong tập dữ liệu xác định các hàng dữ liệu nhóm lại cùng nhau để tạo thành một phân mảnh. Các nhà thiết kế cơ sở dữ liệu chọn một khóa phân mảnh từ cột hiện có hoặc tạo một khóa mới.

Kiến trúc không chia sẻ

Quá trình phân mảnh cơ sở dữ liệu hoạt động trên một kiến trúc không chia sẻ. Mỗi phân mảnh vật lý hoạt động độc lập và không biết về phân mảnh khác. Chỉ những phân mảnh vật lý có chứa dữ liệu bạn yêu cầu sẽ xử lý dữ liệu song song cho bạn. 

Một lớp phần mềm sẽ điều phối kho lưu trữ dữ liệu và truy cập từ nhiều phân mảnh này. Ví dụ: một số loại công nghệ cơ sở dữ liệu có tính năng phân mảnh tự động tích hợp sẵn. Các nhà phát triển phần mềm cũng có thể viết mã phân mảnh trong ứng dụng của mình để lưu trữ hoặc truy xuất thông tin từ một hoặc nhiều phân mảnh chính xác. 

Phân mảnh dữ liệu

Phân mảnh dựa trên địa lý có những phương pháp nào?

Các phương pháp phân mảnh cơ sở dữ liệu áp dụng nhiều quy tắc khác nhau cho khóa phân mảnh để xác định nút chính xác cho một hàng dữ liệu cụ thể. Sau đây là các kiến trúc phân mảnh phổ biến.

Phân mảnh dựa trên phạm vi

Phân mảnh dựa trên phạm vi, hoặc phân mảnh linh hoạt, tách các hàng cơ sở dữ liệu dựa trên một phạm vi giá trị. Sau đó, nhà thiết kế cơ sở dữ liệu sẽ chỉ định một khóa phân mảnh cho phạm vi tương ứng. Ví dụ: nhà thiết kế cơ sở dữ liệu phân vùng dữ liệu theo chữ cái đầu tiên trong tên của khách hàng như sau. 

TênKhóa phân mảnh
Bắt đầu bằng chữ cái từ A đến IA
Bắt đầu bằng chữ cái từ J đến SB
Bắt đầu bằng chữ cái từ T đến ZC

Khi hệ thống ghi một hồ sơ khách hàng vào cơ sở dữ liệu, ứng dụng sẽ xác định chính xác khóa phân mảnh bằng cách kiểm tra tên khách hàng. Sau đó, ứng dụng sẽ khớp khóa với nút vật lý của khóa này và lưu trữ hàng dữ liệu trên máy đó. Tương tự, ứng dụng sẽ tiến hành khớp đảo ngược khi tìm kiếm một hồ sơ cụ thể.

Ưu và nhược điểm

Phân mảnh dựa trên phạm vi có thể gây quá tải dữ liệu trên một nút vật lý, tùy thuộc vào các giá trị dữ liệu. Trong ví dụ của chúng tôi, phân mảnh A (chứa tên bắt đầu bằng chữ cái từ A đến I) có thể chứa số lượng các hàng dữ liệu nhiều hơn, vượt xa phân mảnh C (chứa tên bắt đầu bằng chữ cái từ T đến Z). Tuy nhiên, quá trình này sẽ dễ triển khai hơn.

Phân mảnh băm

Phân mảnh băm chỉ định khóa phân mảnh cho mỗi hàng của cơ sở dữ liệu bằng một công thức toán học được gọi là hàm băm. Hàm băm lấy thông tin từ hàng và tạo ra một giá trị băm. Ứng dụng sử dụng giá trị băm làm khóa phân mảnh và lưu trữ thông tin trong các phân mảnh vật lý tương ứng.

Các nhà phát triển phần mềm áp dụng quá trình phân mảnh băm nhằm phân bổ đồng đều thông tin trong một cơ sở dữ liệu giữa vô số phân mảnh. Ví dụ: phần mềm tách hồ sơ khách hàng thành hai phân mảnh với giá trị băm khác nhau là 1 và 2. 

TênGiá trị băm
John1
Jane2
Paulo1
Wang2

Ưu và nhược điểm

Mặc dù phân mảnh băm giúp phân bổ đồng đều dữ liệu giữa các phân mảnh vật lý, quá trình này không phân tách cơ sở dữ liệu dựa trên ý nghĩa của thông tin. Do đó, các nhà phát triển phần mềm có thể gặp khó khăn trong việc chỉ định lại giá trị băm khi bổ sung thêm các phân mảnh vật lý vào môi trường máy tính. 

Phân mảnh thư mục

Phân mảnh thư mục sử dụng một bảng tra cứu để khớp thông tin cơ sở dữ liệu với các phân mảnh vật lý tương ứng. Bảng tra cứu cũng giống như một bảng trên trang tính, liên kết một cột cơ sở dữ liệu với một khóa phân mảnh. Ví dụ: sơ đồ sau đây trình bày một bảng tra cứu cho màu quần áo.

MàuKhóa phân mảnh
Màu xanh lamA
Màu đỏB
Màu vàng C
Màu đenD

Khi một ứng dụng lưu trữ thông tin quần áo trong cơ sở dữ liệu, ứng dụng này sẽ tham khảo bảng tra cứu. Nếu một chiếc váy có màu xanh lam, ứng dụng sẽ lưu trữ thông tin này trong phân mảnh tương ứng. 

Ưu và nhược điểm

Các nhà phát triển phần mềm áp dụng phân mảnh thư mục bởi tính linh hoạt của quá trình này. Mỗi phân mảnh là một đại diện mang ý nghĩa của cơ sở dữ liệu và không bị phạm vi giới hạn. Tuy nhiên, phân mảnh thư mục sẽ gặp sự cố nếu bảng tra cứu chứa thông tin sai. 

Phân mảnh dựa trên địa lý

Phân mảnh dựa trên địa lý phân tách và lưu trữ thông tin cơ sở dữ liệu theo vị trí địa lý. Ví dụ: một trang web cung cấp dịch vụ hẹn hò sử dụng cơ sở dữ liệu để lưu trữ thông tin khách hàng từ nhiều thành phố khác nhau như sau. 

TênKhóa phân mảnh
JohnCalifornia
JaneWashington
PauloArizona

Các nhà phát triển phần mềm dùng thành phố làm khóa phân mảnh. Họ lưu trữ thông tin của mỗi khách hàng trong các phân mảnh vật lý nằm ở các thành phố tương ứng. 

Ưu và nhược điểm

Phân mảnh dựa trên địa lý cho phép các ứng dụng truy xuất thông tin nhanh hơn do khoảng cách giữa các phân mảnh và khách hàng đưa ra yêu cầu ngắn hơn. Quá trình này phát huy tốt hiệu quả nếu các mẫu hình truy cập dữ liệu chủ yếu dựa trên địa lý. Tuy nhiên, phân mảnh dựa trên địa lý cũng có thể dẫn đến sự phân bổ dữ liệu không đồng đều. 

Cách tối ưu hóa quá trình phân mảnh cơ sở dữ liệu để phân bổ dữ liệu đồng đều

Các điểm nóng cơ sở dữ liệu sẽ xuất hiện khi có phân mảnh vật lý cụ thể bị quá tải dữ liệu, cho dù các phân mảnh khác vẫn chưa đầy tải. Điểm nóng làm chậm quá trình truy xuất trên cơ sở dữ liệu, trái ngược với mục đích của việc phân mảnh dữ liệu. 

Việc lựa chọn khóa phân mảnh phù hợp có thể giúp phân bổ đồng đều dữ liệu trên nhiều phân mảnh. Khi chọn một khóa phân mảnh, các nhà thiết kế cơ sở dữ liệu nên xem xét các yếu tố sau. 

Lực lượng

Lực lượng mô tả các giá trị có thể có của khóa phân mảnh. Yếu tố này xác định số lượng phân mảnh tối đa có thể có trên cơ sở dữ liệu dạng cột riêng biệt. Ví dụ: nếu nhà thiết kế cơ sở dữ liệu chọn một trường dữ liệu có/không làm khóa phân mảnh, số phân mảnh sẽ bị giới hạn chỉ là hai.

Tần suất

Tần suất là xác suất lưu trữ thông tin cụ thể trong một phân mảnh cụ thể. Ví dụ: một nhà thiết kế cơ sở dữ liệu chọn độ tuổi làm khóa phân mảnh cho một trang web tập thể dục. Hầu hết các bản ghi có thể rơi vào những nút cho người đăng ký trong độ tuổi 30 – 45, từ đó tạo nên các điểm nóng cơ sở dữ liệu. 

Thay đổi đơn điệu

Thay đổi đơn điệu là mức độ thay đổi của khóa phân mảnh. Một khóa phân mảnh tăng/giảm đơn điệu sẽ tạo ra các phân mảnh không cân bằng. Giả sử chúng ta có một cơ sở dữ liệu phản hồi được chia thành ba phân mảnh vật lý khác nhau như sau:

  • Phân mảnh A lưu trữ phản hồi từ khách hàng đã thực hiện 0 – 10 giao dịch mua hàng.
  • Phân mảnh B lưu trữ phản hồi từ khách hàng đã thực hiện 11 – 20 giao dịch mua hàng.
  • Phân mảnh C lưu trữ phản hồi từ khách hàng đã thực hiện từ 21 giao dịch mua hàng trở lên.

Khi doanh nghiệp phát triển, khách hàng sẽ thực hiện từ 21 giao dịch mua hàng trở lên. Ứng dụng lưu trữ phản hồi của họ trong Phân mảnh C. Điều này khiến một mảnh mất cân bằng bởi Phân mảnh C chứa nhiều bản ghi phản hồi hơn so với các phân mảnh khác.

Quá trình phân mảnh cơ sở dữ liệu có những lựa chọn thay thế nào?

Quá trình phân mảnh cơ sở dữ liệu là một chiến lược điều chỉnh quy mô theo chiều ngang, giúp phân bổ thêm các nút hoặc máy tính nhằm chia sẻ khối lượng công việc của một ứng dụng. Nhờ sở hữu kiến trúc có khả năng chịu lỗi, việc điều chỉnh quy mô theo chiều ngang đã mang đến lợi ích cho các tổ chức. Khi một máy tính gặp sự cố, các máy khác vẫn sẽ tiếp tục hoạt động mà không bị gián đoạn. Các nhà thiết kế cơ sở dữ liệu giảm thời gian ngừng hoạt động bằng cách dàn trải các phân mảnh logic trên nhiều máy chủ. 

Dù vậy, phân mảnh chỉ là một trong số các chiến lược điều chỉnh quy mô cơ sở dữ liệu. Hãy khám phá một số kỹ thuật khác và hiểu rõ sự khác biệt giữa chúng.

Điều chỉnh quy mô theo chiều dọc

Việc thay đổi theo chiều dọc sẽ tăng công suất điện toán của một máy. Ví dụ: đội ngũ CNTT thêm một CPU, RAM và đĩa cứng vào một máy chủ cơ sở dữ liệu để giải quyết lưu lượng truy cập ngày càng tăng. 

So sánh điều chỉnh quy mô theo chiều dọc và phân mảnh cơ sở dữ liệu

Việc điều chỉnh quy mô theo chiều dọc sẽ ít tốn kém hơn, nhưng tài nguyên điện toán mà bạn có thể điều chỉnh quy mô theo chiều dọc sẽ bị giới hạn. Trong khi đó, phân mảnh, một chiến lược điều chỉnh quy mô theo chiều ngang, lại dễ thực hiện hơn. Ví dụ: đội ngũ CNTT cài đặt nhiều máy tính thay vì nâng cấp phần cứng của máy tính cũ.

Sao chép

Sao chép là một kỹ thuật tạo bản sao chính xác của cơ sở dữ liệu và lưu trữ chúng trên nhiều máy tính khác nhau. Các nhà thiết kế cơ sở dữ liệu sử dụng kỹ thuật sao chép để thiết kế một hệ thống quản lý cơ sở dữ liệu quan hệ có khả năng chịu lỗi. Khi một trong các máy tính lưu trữ cơ sở dữ liệu gặp sự cố, các bản sao khác vẫn sẽ hoạt động. Sao chép là một phương pháp phổ biến trong các hệ thống điện toán phân tán.

So sánh sao chép và phân mảnh cơ sở dữ liệu

Phân mảnh cơ sở dữ liệu không tạo ra các bản sao của cùng một thông tin. Thay vào đó, quá trình này phân tách một cơ sở dữ liệu thành nhiều phần và lưu trữ chúng trên nhiều máy tính khác nhau. Không giống như sao chép, quá trình phân mảnh cơ sở dữ liệu không giúp đạt được tính sẵn sàng cao. Có thể áp dụng phân mảnh kết hợp với sao chép để đạt được cả khả năng điều chỉnh quy mô và tính sẵn sàng cao.

Trong một số trường hợp, phân mảnh cơ sở dữ liệu có thể bao gồm bản sao của các tập dữ liệu cụ thể. Ví dụ: một cửa hàng bán lẻ bán sản phẩm cho cả khách hàng ở Mỹ và châu Âu có thể lưu trữ bản sao của các bảng chuyển đổi kích cỡ trên nhiều phân mảnh khác nhau cho cả hai khu vực. Ứng dụng có thể sử dụng các bản sao trùng lặp của bảng chuyển đổi để chuyển đổi kích cỡ đo mà không cần truy cập vào các máy chủ cơ sở dữ liệu khác. 

Phân vùng

Phân vùng là quá trình tách bảng cơ sở dữ liệu thành nhiều nhóm. Phân vùng được phân thành hai loại: 

  • Phân vùng ngang tách cơ sở dữ liệu theo hàng.
  • Phân vùng dọc tạo ra nhiều phân vùng khác nhau của các cột cơ sở dữ liệu. 

So sánh phân vùng và phân mảnh cơ sở dữ liệu

Phân mảnh cơ sở dữ liệu cũng giống như phân vùng ngang. Cả hai quá trình đều chia cơ sở dữ liệu thành nhiều nhóm hàng riêng biệt. Phân vùng lưu trữ tất cả các nhóm dữ liệu trên cùng một máy tính, nhưng phân mảnh cơ sở dữ liệu lại dàn trải chúng trên nhiều máy tính khác nhau.

Quá trình phân mảnh cơ sở dữ liệu có những thách thức gì?

Khi triển khai phân mảnh cơ sở dữ liệu, các tổ chức có thể sẽ phải đối mặt với những thách thức sau.

Điểm nóng dữ liệu

Một số phân mảnh bị mất cân bằng do sự phân bổ dữ liệu không đồng đều. Ví dụ: một phân mảnh vật lý có chứa tên khách hàng bắt đầu bằng chữ cái A sẽ nhận được nhiều dữ liệu hơn những phân mảnh khác. Phân mảnh vật lý này sẽ sử dụng nhiều tài nguyên điện toán hơn các phân mảnh khác.

Giải pháp

Bạn có thể phân bổ dữ liệu đồng đều bằng các khóa phân mảnh tối ưu. Một số tập dữ liệu phù hợp với quá trình phân mảnh hơn các tập dữ liệu khác.

Sự phức tạp trong vận hành

Quá trình phân mảnh cơ sở dữ liệu tạo ra sự phức tạp trong vận hành. Thay vì quản lý một cơ sở dữ liệu duy nhất, các nhà phát triển phải quản lý nhiều nút cơ sở dữ liệu. Khi truy xuất thông tin, các nhà phát triển phải truy vấn nhiều phân mảnh và kết hợp các mẩu thông tin với nhau. Các hoạt động truy xuất này có thể phức tạp hóa việc phân tích.

Giải pháp

Trong danh mục cơ sở dữ liệu AWS, việc thiết lập và vận hành cơ sở dữ liệu đã được tự động hóa trên phạm vi lớn. Điều này biến quá trình làm việc với kiến trúc cơ sở dữ liệu được phân mảnh thành một công việc hợp lý hóa hơn.

Chi phí cơ sở hạ tầng

Các tổ chức phải trả nhiều chi phí cơ sở hạ tầng hơn khi thêm nhiều máy tính làm phân mảnh vật lý. Chi phí bảo trì có thể tăng lên nếu bạn tăng số lượng máy trong trung tâm dữ liệu tại chỗ của mình.

Giải pháp

Các nhà phát triển sử dụng Đám mây để lưu trữ và điều chỉnh quy mô các phân mảnh trong đám mây. Bạn có thể tiết kiệm chi phí nhờ cơ sở hạ tầng ảo được các dịch vụ Cloud quản lý hoàn toàn.

Sự phức tạp của ứng dụng

Hầu hết các hệ thống quản lý cơ sở dữ liệu đều không có tính năng phân mảnh tích hợp sẵn. Điều này nghĩa là các nhà thiết kế cơ sở dữ liệu và nhà phát triển phần mềm phải tự tách, phân bổ và quản lý cơ sở dữ liệu.

Giải pháp

Bạn có thể di chuyển dữ liệu của mình sang cơ sở dữ liệu được xây dựng cho mục đích nhất định của các dịch vụ cloud, sở hữu một số tính năng tích hợp hỗ trợ điều chỉnh quy mô theo chiều ngang.