meeyland app
Meey Land
Cổng thông tin bất động sản xác thực 4.0
Tải ứng dụng

Phân mảnh cơ sở dữ liệu là gì? Ví dụ chi tiết nhất về Database Sharding

Thứ năm, 02/02/2023-11:02
Khi cơ sở dữ liệu phát triển, việc lưu trữ dữ liệu sẽ tốn nhiều thời gian và dung lượng hơn. Giải pháp phổ biến cho vấn đề này chính là Phân mảnh cơ sở dữ liệu. Bài viết này sẽ giải thích Phân mảnh cơ sở dữ liệu là gì, ví dụ chi tiết, phân loại và các lựa chọn thay thế.

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

Phân mảnh cơ sở dữ liệu (Database Sharding) là quá trình chia cơ sở dữ liệu thành những phần nhỏ và lưu trữ chúng trên nhiều máy. Bắt nguồn từ lý do mỗi máy, hay chính là máy chủ cơ sở dữ liệu (database server), chỉ lưu trữ và xử lý được một lượng dữ liệu nhất định. 

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

Phân biệt Horizontal partitioning và Vertical partitioning

Database sharding là một phương pháp chia tỷ lệ phổ biến theo chiều ngang, tương tự như phân vùng theo chiều ngang. Phân vùng theo chiều ngang (horizontal partitioning) tách các hàng của một bảng thành nhiều bảng khác nhau. Mỗi phân vùng có cùng lược đồ và cột, nhưng có các hàng hoàn toàn khác nhau. Do đó, dữ liệu được giữ trong mỗi phân vùng là duy nhất và độc lập với dữ liệu được giữ trong các phân vùng khác.

Phân vùng theo chiều ngang (horizontal partitioning) và phân vùng theo chiều dọc (vertical partitioning) là hai phương pháp chia tỷ lệ dễ gây nhầm lẫn. Trong một bảng được phân vùng theo chiều dọc, toàn bộ các cột sẽ được tách ra và đưa vào các bảng riêng biệt mới. Dữ liệu được giữ trong một phân vùng dọc độc lập với dữ liệu trong tất cả các phân vùng khác và mỗi phân vùng chứa cả hàng và cột riêng. Sơ đồ dưới đây sẽ giúp bạn phân biệt sự khác nhau giữa Phân vùng theo chiều ngang và Phân vùng theo chiều dọc:

Phân mảnh cơ sở dữ liệu là gì? Ví dụ chi tiết nhất về Database Sharding - ảnh 1

Ví dụ Phân mảnh cơ sở dữ liệu

Ví dụ dưới đây sẽ minh họa cách hoạt động của phân vùng ngang. Trước khi cơ sở dữ liệu được chia nhỏ, bảng lưu trữ được sắp xếp theo cách sau:

Phân mảnh cơ sở dữ liệu là gì? Ví dụ chi tiết nhất về Database Sharding - ảnh 2

Sau khi phân mảnh, mỗi phân mảnh sẽ chứa một nửa số hàng của bảng:

Phân mảnh cơ sở dữ liệu là gì? Ví dụ chi tiết nhất về Database Sharding - ảnh 3
Phân mảnh cơ sở dữ liệu là gì? Ví dụ chi tiết nhất về Database Sharding - ảnh 4

Phân loại phân mảnh cơ sở dữ liệu

Hầu hết các cơ sở dữ liệu được phân mảnh bằng một trong bốn kiến trúc sau:

  • Range Sharding (Phân mảnh phạm vi)
  • Hashed Sharding (Phân mảnh băm)
  • Directory-Based Sharding (Phân mảnh dựa trên thư mục)
  • Geographic-Based Sharding (Phân mảnh dựa trên địa lý)

Phân mảnh phạm vi

Range Sharding tách các hàng trong cơ sở dữ liệu dựa trên một phạm vi giá trị nhất định. Sau đó, cơ sở dữ liệu sẽ được khóa phân mảnh cho phạm vi tương ứng. Chẳng hạn, với bảng lưu trữ của phần Ví dụ trên, cơ sở dữ liệu được yêu cầu chia các store_ID dưới 2000 vào một phân mảnh và phân mảnh khác chứa các store_ID từ 2001 trở lên.

  • Phân mảnh 1 sẽ gồm các hàng sau:
Phân mảnh cơ sở dữ liệu là gì? Ví dụ chi tiết nhất về Database Sharding - ảnh 5
  • Phân mảnh 2 sẽ gồm các hàng sau:
Phân mảnh cơ sở dữ liệu là gì? Ví dụ chi tiết nhất về Database Sharding - ảnh 6

Phân mảnh cơ sở dữ liệu dựa trên phạm vi là cách tiếp cận khá dễ triển khai và tốn ít thời gian lập trình hơn các kiến trúc khác. Tuy nhiên, phân mảnh phạm vi chỉ hoạt động tốt khi số lượng các giá trị được phân bổ đồng đều trên mọi phạm vi; nếu các giá trị chỉ dồn về một phân mảnh nào đó, cách tiếp cận này có thể dẫn đến quá tải dữ liệu .

Phân mảnh băm

Hashed Sharding khóa phân mảnh cho mỗi hàng bằng một công thức toán học được gọi là Hàm băm (Hash). Hash lấy thông tin từ hàng và tạo ra giá trị băm. Sau đó, giá trị băm này được dùng làm khóa phân mảnh, chia và lưu trữ thông tin thành các phân mảnh tương ứng.

Ví dụ sau khi áp dụng hàm băm, cơ sở dữ liệu đưa ra bảng kết quả như sau: 

Phân mảnh cơ sở dữ liệu là gì? Ví dụ chi tiết nhất về Database Sharding - ảnh 7
  • Phân mảnh 1 gồm các hàng có giá trị băm = 0
  • Phân mảnh 2 gồm các hàng có giá trị băm = 1
  • Phân mảnh 3 gồm các hàng có giá trị băm = 2
Phân mảnh cơ sở dữ liệu là gì? Ví dụ chi tiết nhất về Database Sharding - ảnh 8

Phân mảnh băm được sử dụng nhằm phân bổ đồng đều các thông tin trong một cơ sở dữ liệu thành vô số phân mảnh. Tuy nhiên, cũng bởi quá trình này phân tách cơ sở dữ liệu không dựa trên ý nghĩa thông tin, nên khi bổ sung thêm các phân mảnh khác có thể sẽ gặp khó khăn trong việc tính toán lại giá trị băm. 

Phân mảnh dựa trên thư mục

Directory-Based Sharding nhóm các mục liên quan lại với nhau trên cùng một phân mảnh, thông qua một bảng tra cứu. Bảng tra cứu liên kết một cột của cơ sở dữ liệu với một khóa phân mảnh. Ví dụ: Bảng tra cứu chia các địa điểm thành phân mảnh Đông Bắc và phân mảnh Trung Tây.

  • Phân mảnh Đông Bắc gồm các cửa hàng sau:
Phân mảnh cơ sở dữ liệu là gì? Ví dụ chi tiết nhất về Database Sharding - ảnh 9
  • Phân mảnh Trung Tây gồm các cửa hàng sau:
Phân mảnh cơ sở dữ liệu là gì? Ví dụ chi tiết nhất về Database Sharding - ảnh 10

Phân mảnh cơ sở dữ liệu dựa trên thư mục được sử dụng bởi tính linh hoạt của nó. Mỗi phân mảnh đại diện cho một ý nghĩa của cơ sở dữ liệu và không bị giới hạn phạm vi. Tuy nhiên, phân mảnh dựa trên thư mục có thể gặp sự cố nếu bảng tra cứu chứa thông tin không chính xác. 

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

Geographic-Based Sharding là một phân mảnh dựa trên thư mục cụ thể. Dữ liệu trong cơ sở dữ liệu sẽ được chia thành các phân mảnh dựa trên vị trí địa lý, thường là thành phố, tiểu bang, khu vực, quốc gia hoặc lục địa. Phương pháp này nhóm các dữ liệu tương tự về mặt địa lý thành cùng một phân mảnh. Nó hoạt động giống cách Directory-Based Sharding thực hiện.

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

Doanh nghiệp của bạn có cần Database Sharding không?

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

Nói chung, sharding có ý nghĩa nhất đối với cơ sở dữ liệu lưu trữ lượng lớn dữ liệu trong một vài bảng đơn giản. Sharding đặc biệt hấp dẫn với các công ty mong đợi sự gia tăng lớn về kích thước cơ sở dữ liệu của họ. Phân mảnh cơ sở dữ liệu cũng hữu ích cho các tổ chức muốn truy cập hoặc cùng định vị dữ liệu của họ trên cơ sở khu vực. Chẳng hạn, một công ty truyền thông lớn muốn người dùng của họ truy cập vào các máy chủ cơ sở dữ liệu trên cùng một quốc gia hoặc trên cùng một lục địa. Để làm được điều này, công ty phải phân tách dữ liệu dựa trên vị trí của người dùng.

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

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

Giảm thời gian phản hồi

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

Ngăn sự cố cho toàn bộ dịch vụ

Một khi máy tính lưu trữ cơ sở dữ liệu gặp sự cố thì chắc chắn ứng dụng phụ thuộc vào cơ sở dữ liệu đó cũng sẽ lâm vào tình trạng tương tự. Phân mảnh cơ sở dữ liệu sẽ ngăn điều này xảy ra, bằng cách lưu trữ các phần của cơ sở dữ liệu trên các máy tính khác nhau. Trong trường hợp một trong số các máy tính gặp sự cố, ứng dụng sẽ không vì thế mà ngừng hoạt động, bởi nó có thể tiếp tục chạy dựa trên các phân mảnh đang hoạt động còn lại. Bên cạnh đó, quá trình phân mảnh cơ sở dữ liệu thường được sử dụng 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 phân mảnh này, thì bạn vẫn có thể truy cập và khôi phục dữ liệu 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ì.

Phân mảnh cơ sở dữ liệu là gì? Ví dụ chi tiết nhất về Database Sharding - ảnh 11

Các lựa chọn thay thế phân mảnh dữ liệu là gì?

Phân mảnh cơ sở dữ liệu chỉ là một trong số nhiều chiến lược điều chỉnh quy mô cơ sở dữ liệu. Cùng khám phá một số phương pháp khác và hiểu rõ sự khác biệt giữa chúng.

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

Điều chỉnh theo chiều dọc (Vertical scaling) giúp tăng công suất điện toán của một máy. Chẳng hạn đội ngũ CNTT có thể thêm một CPU, RAM hay đĩa cứng vào một máy chủ cơ sở dữ liệu nhằm giải quyết lưu lượng truy cập đang ngày càng gia tăng. 

So sánh Vertical scaling và Database sharding

Tuy Vertical scaling ít tốn kém hơn, nhưng lại giới hạn tài nguyên điện toán mà bạn có thể điều chỉnh. Trong khi đó, Database sharding dễ dàng thực hiện điều đó. Ví dụ: đội ngũ CNTT có thể cài đặt nhiều máy tính thay vì chỉ nâng cấp phần cứng của máy tính cũ.

Sao chép

Sao chép (Replication) là tạo bản sao của cơ sở dữ liệu và lưu trữ những bản sao đó trên nhiều máy tính khác nhau. Khi một trong số các máy tính lưu trữ gặp sự cố, các bản sao trên các máy khác vẫn sẽ hoạt động bình thường. Đây là một phương pháp được sử dụng phổ biến trong các hệ thống điện toán phân tán.

So sánh Replication và Database sharding

Database sharding không tạo ra những bản sao của cùng một thông tin nên không giúp hệ thống đạt được tính sẵn sàng cao như Replication. Hai kỹ thuật này có thể được sử dụng kết hợp để vừa đạt được khả năng điều chỉnh quy mô vừa đặt được tính sẵn sàng cao.

Phân vùng

Phân vùng (Partitioning) tách bảng cơ sở dữ liệu thành nhiều nhóm. Như đã đề cập phía trên, phân vùng gồm hai loại: 

  • Phân vùng theo chiều ngang (Horizontal partitioning)
  • Phân vùng theo chiều dọc (Vertical partitioning)

So sánh Partitioning và Database Sharding

Database sharding là dạng phân vùng theo chiều ngang. Điểm khác biệt duy nhất là Partitioning lưu trữ tất cả nhóm dữ liệu trên cùng một máy tính, còn Database Sharding dàn trải chúng trên nhiều máy tính khác nhau.

Tóm lại

Bài viết trên đây đã trả lời câu hỏi Phân mảnh cơ sở dữ liệu là gì. Sharding là một phương pháp phân phối cơ sở dữ liệu thành một số phân mảnh khác nhau dựa trên giá trị của khóa phân mảnh. Mỗi phân mảnh sẽ được lưu trữ trên một máy chủ khác nhau. Trạng thái hoạt động lý tưởng nhất của Database Sharding là các bản ghi trong cơ sở dữ liệu được phân phối đồng đều giữa các phân mảnh.

Theo: Reatimes.vn
Copy link
Chia sẻ:

Cùng chủ đề

Tiết lộ bất ngờ cho thấy TikTok Live sẽ đạt doanh thu hàng năm lên tới 77 tỷ USD

EU cam kết cắt giảm thủ tục hành chính về công nghệ để theo đuổi các mục tiêu về AI

Đẩy nhanh tiến độ vận hành cơ sở dữ liệu đất đai quốc gia

Meey Group chia sẻ kinh nghiệm về proptech tại Hội nghị Thượng đỉnh Khoa học và Kinh tế toàn cầu

Chủ nhân giải VinFuture 2024 khuyên người trẻ chấp nhận rủi ro và luôn tò mò

Liên danh FPT Nha Trang muốn làm khu đô thị công nghệ rộng hơn 50ha tại "hòn ngọc biển Đông"

Từng chỉ sống với 72 nghìn mỗi ngày, làm việc 100 giờ/tuần với 3 công việc: Nhiều năm sau "lội ngược dòng" thành doanh nhân thành đạt, nắm giữ khối tài sản tỷ đô

Mã độc lây lan qua Facebook có nguồn gốc từ Việt Nam NodeStealer lại “tái xuất giang hồ”

Tin mới cập nhật

49 MẪU TRẦN THẠCH CAO PHÒNG KHÁCH HIỆN ĐẠI ĐẸP – XU HƯỚNG DẪN ĐẦU 2026

10 giờ trước

XEM TUỔI XÂY NHÀ CHUẨN PHONG THỦY: CÁCH TÍNH, CÁCH TRÁNH HẠN VÀ BÍ QUYẾT GIÚP GIA CHỦ PHÁT TÀI

9 giờ trước

Ngày Mai Có Đẹp Không? Cách Biết Một Ngày Tốt Hay Xấu Để Chủ Động Mọi Kế Hoạch

12 giờ trước

Xông Đất Là Gì? Cách Chọn Người Xông Đất Mang Lại Tài Lộc, May Mắn Cả Năm

1 ngày trước

Xem Tuổi Xông Nhà Chuẩn Phong Thủy: Cách Chọn Đúng Người Để Đón Tài Lộc Cả Năm

1 ngày trước