Tin tức và phân tích của tất cả các thiết bị di động

Chia sẻ cơ sở dữ liệu là gì?

Phân mảnh cơ sở dữ liệu là một kỹ thuật để đạt được khả năng mở rộng theo chiều ngang trong các hệ thống quy mô lớn.

Hầu hết tất cả các hệ thống thực đều bao gồm một máy chủ cơ sở dữ liệu nhận nhiều yêu cầu đọc và một số lượng đáng kể các yêu cầu ghi. Điều này có thể làm quá tải máy chủ và làm giảm hiệu suất hệ thống.

Để giảm thiểu những tác động như vậy và cải thiện hiệu suất hệ thống, có các phương pháp như sao chép cơ sở dữ liệu và phân chia cơ sở dữ liệu. Trong hướng dẫn này, trước tiên chúng tôi sẽ đề cập đến các kỹ thuật để cải thiện hiệu suất hệ thống, bao gồm:

  • Mở rộng quy mô máy chủ cơ sở dữ liệu
  • Sao chép cơ sở dữ liệu
  • Phân chia theo chiều ngang

Sau khi thảo luận về các kỹ thuật này, chúng ta sẽ chuyển sang tìm hiểu cách thức hoạt động của phân mảnh cơ sở dữ liệu và xem xét những ưu điểm cũng như hạn chế của phương pháp này.

Hãy bắt đầu!

Kỹ thuật cải tiến hiệu suất hệ thống

Hãy bắt đầu bằng cách thảo luận về các kỹ thuật để cải thiện hiệu suất hệ thống khi xử lý các tắc nghẽn của máy chủ cơ sở dữ liệu:

# 1. Mở rộng quy mô máy chủ cơ sở dữ liệu

Mở rộng quy mô phiên bản máy chủ cơ sở dữ liệu có vẻ như là một cách tiếp cận đơn giản để cải thiện hiệu suất hệ thống. Điều này bao gồm việc tăng sức mạnh xử lý, bổ sung thêm RAM và những thứ tương tự.

Tuy nhiên, kỹ thuật này có hạn chế sau. Chúng ta không thể có một máy chủ có khả năng lưu trữ và xử lý vô hạn. Trên một giới hạn nhất định, chúng ta nhận được lợi nhuận giảm dần.

#2. Sao chép cơ sở dữ liệu

Khi phiên bản máy chủ cơ sở dữ liệu bị quá tải do có yêu cầu gửi đến, chúng ta có thể xem xét việc sao chép cơ sở dữ liệu.

Trong quá trình sao chép cơ sở dữ liệu, chúng tôi có một nút chính thường nhận yêu cầu ghi. Có nhiều bản sao đã đọc.

Điều này cải thiện tính khả dụng và giảm tắc nghẽn hệ thống. Giờ đây, chúng tôi có thể xử lý song song nhiều truy vấn vì các yêu cầu đọc có thể được định tuyến đến một trong các bản sao chỉ có quyền đọc.

Nhưng điều này giới thiệu một vấn đề khác. Yêu cầu ghi tới nút chính có thể thay đổi dữ liệu và những cập nhật này được truyền bá định kỳ tới các bản sao đọc.

Giả sử có một yêu cầu đọc đối với một trong các bản sao đọc cùng lúc với thao tác ghi đang được thực hiện trên nút chính.

Các thay đổi trên nút chính sẽ chưa được truyền tới các bản sao đọc. Trong trường hợp này, chúng ta có thể đọc dữ liệu lỗi thời, điều này là không mong muốn.

#3. Phân vùng ngang

Phân vùng theo chiều ngang là một kỹ thuật khác để tối ưu hóa hiệu suất hệ thống. Chúng ta có thể có một bảng lớn với hàng tỷ hàng (chẳng hạn như bảng khách hàng và dữ liệu giao dịch).

Hoạt động đọc từ bảng cơ sở dữ liệu như vậy sẽ chậm hơn. Nhưng bằng cách sử dụng phân vùng theo chiều ngang, một bảng lớn hiện được chia thành nhiều phân vùng (hoặc các bảng nhỏ hơn) mà chúng ta có thể đọc được. Cơ sở dữ liệu quan hệ như PostgreSQL vốn hỗ trợ phân vùng.

Tuy nhiên, tất cả các phân vùng vẫn nằm trong một phiên bản của máy chủ cơ sở dữ liệu. Sự khác biệt duy nhất là bây giờ chúng ta có thể đọc từ một phân vùng thay vì một bảng lớn.

Do đó, nếu số lượng yêu cầu gửi đến tăng lên, máy chủ có thể không đáp ứng được nhu cầu tăng lên.

Chia sẻ cơ sở dữ liệu hoạt động như thế nào?

Bây giờ chúng ta đã đề cập đến các phương pháp cải thiện hiệu năng hệ thống và những hạn chế của chúng, hãy hiểu cách hoạt động của phân mảnh cơ sở dữ liệu.

Khi phân chia, chúng tôi chia một cơ sở dữ liệu lớn thành nhiều cơ sở dữ liệu nhỏ hơn, mỗi cơ sở dữ liệu chạy trên một phiên bản máy chủ cơ sở dữ liệu. Mỗi cơ sở dữ liệu nhỏ hơn như vậy được gọi là phân đoạn. Và mỗi phân đoạn chứa một tập hợp con dữ liệu duy nhất.

Nhưng làm cách nào để chia cơ sở dữ liệu thành các phần? Và làm thế nào để xác định hàng nào đi đến đoạn nào?

🔑 Nhập phím chia.

Hiểu cách phân chia khóa

Chúng ta hãy xem vai trò của khóa sharding.

Khóa phân đoạn, thường là một cột (hoặc kết hợp các cột) trong bảng cơ sở dữ liệu, phải được chọn sao cho dữ liệu được phân bổ đều trên nhiều phân đoạn. Bởi vì chúng tôi không muốn một phân đoạn cụ thể lớn hơn nhiều so với các phân đoạn khác.

Trong cơ sở dữ liệu lưu trữ dữ liệu khách hàng và giao dịch, customer_id là một ứng cử viên sáng giá cho khóa phân đoạn.

Sau khi quyết định chọn khóa phân đoạn, chúng ta có thể đưa ra hàm băm xác định hàng nào đi đến phân đoạn nào.

Trong ví dụ này, giả sử chúng ta cần chia cơ sở dữ liệu thành năm phân đoạn (từ phân đoạn số 0 để phân mảnh không 4) bằng cách sử dụng client_id làm khóa sharding. Trong trường hợp này, hàm băm đơn giản là customer_ID % 5.

Tất cả các giá trị customer_ID khi chia cho 5 để lại dư lượng bằng 0 sẽ được ánh xạ tới đoạn không 0. Và các giá trị customer_ID để lại phần còn lại từ 1 xuống 4sẽ được ánh xạ tới các mảnh từ 1 xuống 4.

Khi bạn đã triển khai phân chia cơ sở dữ liệu theo cách này, điều quan trọng là phải có lớp định tuyến định tuyến các yêu cầu đến đến phân đoạn thích hợp của cơ sở dữ liệu của bạn.

Ưu điểm của việc chia sẻ cơ sở dữ liệu

Dưới đây là một số lợi ích của việc phân chia cơ sở dữ liệu:

# 1. Khả năng mở rộng cao

Luôn có khả năng chia cơ sở dữ liệu lớn hơn thành nhiều phần nhỏ hơn. Vì vậy, phân mảnh cơ sở dữ liệu cho phép chúng tôi mở rộng quy mô theo chiều ngang.

#2. Tính sẵn sàng cao

Khi có một phiên bản máy chủ cơ sở dữ liệu duy nhất xử lý tất cả các yêu cầu gửi đến thì sẽ có một điểm lỗi duy nhất. Nếu máy chủ cơ sở dữ liệu ngừng hoạt động, toàn bộ ứng dụng sẽ ngừng hoạt động.

Khi phân chia cơ sở dữ liệu, xác suất tất cả các phân đoạn cơ sở dữ liệu sẽ bị lỗi tại bất kỳ thời điểm nào là tương đối thấp. Do đó, nếu một đoạn cụ thể không hoạt động, chúng tôi sẽ không thể xử lý các yêu cầu đọc đoạn đó. Nhưng các đoạn khác vẫn có thể xử lý các yêu cầu đến. Điều này dẫn đến tính sẵn sàng cao và tăng khả năng chịu lỗi.

Hạn chế chia sẻ cơ sở dữ liệu

Bây giờ hãy xem xét một số hạn chế của phân mảnh cơ sở dữ liệu:

# 1. Độ phức tạp

Mặc dù sharding có lợi thế về khả năng mở rộng và khả năng chịu lỗi nhưng nó lại gây ra sự phức tạp cho hệ thống.

Từ việc ánh xạ các bản ghi đến các phân vùng cho đến triển khai lớp định tuyến để định tuyến các truy vấn đến các phân đoạn phù hợp, cơ sở dữ liệu phân chia có độ phức tạp đáng kể.

#2. Chia sẻ lại

Một hạn chế khác của sharding là sự cần thiết của việc resharding.

Mặc dù chúng tôi sử dụng hàm băm để phân phối đồng đều các bản ghi dữ liệu, nhưng có thể một trong các phân đoạn này lớn hơn nhiều so với các phân đoạn khác và có thể hết sớm hơn. Trong trường hợp này, chúng tôi phải xem xét việc phân chia lại (hoặc xáo trộn lại) và điều này phải trả một khoản chi phí đáng kể.

#3. Chạy các truy vấn phức tạp

Khi cần chạy các truy vấn phân tích liên quan đến các phép nối, bạn cần sử dụng các bản ghi từ nhiều phân đoạn chứ không phải từ một cơ sở dữ liệu duy nhất. Vì vậy, đây có thể là một thách thức khi bạn phải chạy quá nhiều truy vấn phân tích. Điều này có thể được giải quyết bằng cách không chuẩn hóa cơ sở dữ liệu, nhưng vẫn cần một chút nỗ lực!

Ứng dụng

Hãy kết thúc cuộc thảo luận bằng một bản tóm tắt những gì chúng ta đã học được.

Mở rộng quy mô phần cứng không phải lúc nào cũng tối ưu. Do đó, việc tăng cường các phiên bản máy chủ không được khuyến khích. Chúng tôi cũng đã xem xét các kỹ thuật như sao chép cơ sở dữ liệu và phân vùng theo chiều ngang cũng như những hạn chế của chúng.

Tiếp theo, chúng ta đã tìm hiểu cách hoạt động của phân mảnh cơ sở dữ liệu bằng cách chia cơ sở dữ liệu lớn thành các phần nhỏ hơn, dễ quản lý hơn. Chúng tôi đã đề cập đến cách chọn khóa phân đoạn một cách cẩn thận để có được các phân vùng bằng nhau và nhu cầu về lớp định tuyến để định tuyến các yêu cầu đến đến đoạn chính xác của cơ sở dữ liệu.

Phân mảnh cơ sở dữ liệu có những ưu điểm như tính sẵn sàng cao và khả năng mở rộng. Một số nhược điểm bao gồm sự phức tạp của việc thiết lập phân đoạn và phân chia lại khi một hoặc nhiều phân đoạn đã hết.

Vì vậy, bạn có thể muốn cân nhắc sử dụng sharding khi cảm thấy lợi ích lớn hơn sự phức tạp do sharding mang lại. Sau đó, hãy xem so sánh giữa các cơ sở dữ liệu quan hệ AWS khác nhau.

Mục lục