Các mô hình database nên biết

19
Vu Ngọc Quan viết hơn 6 năm trước

1 Mở đầu

Khi làm việc với hệ thống có nhiều truy vấn db đồng thời thì bạn sẽ gặp phải vấn đề database server bị quá tải. Để giải quyết vấn đề này thường nghĩ đến tăng cấu hình server nên, như tằng cpu, ram... Nhưng phần cứng thì luôn có giới hạn, nên thay vì tăng phần cứng của server chúng ta có thể tắng số lượng server. Một vài mô hình tăng số lượng server như sau .

  • Replication
  • Partitioning
  • Cluster
  • Sharding

2 Replication là gì

Hiểu nôm na thì đây là kiến trúc nhân bản. Chúng ta có 1 server Master và 1 hoặc nhiều server Slave. Master dùng chủ yếu để ghi dữ liệu (có thể dùng để đọc trong trường hợp cần thiết), Slave dùng để dọc dữ liệu và ko thể ghi dữ liệu.
Vấn đề lớn nhất của phương pháp này là khi ứng dung được cấu hình ghi trên master , đọc trên slave. Nhưng sau khi dư liệu trên master thì mất một khoảng thời gian nhất định gọi là lag dư liệu mới được đồng bộ lên slave. Ví dụ khi mua hàng, chúng ta mua thì số lượng sản phẩm phải bị giảm đi, Nhưng câu lệnh giảm số lượng sản phẩm đã thưc hiện xong thì trên slave vẫn chưa được cập nhật nên có thể dẫn đến sai logic. Trong trường hợp này chúng ta phải thực hiện dọc trực tiếp trên master thay vì đọc trên slave.

3 Partitioning

Đây là phương pháp giúp tối ưu truy vấn khi dữ liệu trong một bảng quá lớn hàng tram triệu bản ghi. Để dẽ hình dung thì 1 bảng dữ liệu gióng như một chiếc hộp nhiều ngăn. Mỗi partition là một ngăn, mỗi một ngăn sẽ chưa một số lượng bản ghi theo một quy luât nào đó. Các cách chia thường theo id của bản ghi, hoặc theo thời gian tạo bản ghi theo ngày tháng
Ví dụ theo thắng chẳng hạn, thì bảng sẽ chia thành 12 partition, dữ liệu của mỗi tháng của các năm sẽ được đấy vào cùng partition, nôm na có thể hiểu truy vẫn dữ liệu trong một tháng tốc độ sẽ tăng lên 12 lần.

4 Cluster

Cái này thì chưa chính thức làm bao giờ, theo tìm hiểu thì nó là mô hình dư liệu phân tán, kết hợp replication + sharding. Dữ liệu đươc lưu ở các datanode, truy vấn qua các sql node, và có 1 node là manager quản lý toàn bộ các sqlnode và datanode. Cái này mình sẽ tìm hiểu kỹ cài đặt thử và chia sẻ ở bài tiêp theo.

5 Sharding

Là mô hình tương tự như partition, partition chia dữ liệu theo chiều dọc thì sharding chia dữ liệu theo chiều ngang. mỗi một partition giờ sẽ là 1 server.
Thương dùng trong ứng dụng dữ liệu ngừoi dùng ko liên quan đến dữ liệu cảu ngừoi dùng khác. Hoặc nhóm người dùng, các user trong một công ty sẽ lưu vào một sharding node chẳng hạn

6 Kết luân

ở bài viết này mình chỉ giời thiệu các mô hình, loạt bài viết sau sẽ cố gắng viết sâu hơn về nguyên tắc hoạt động, trường hợp nào nên dùng, và cách cài cắm. Trong 4 loại trên mình mới từng sử dụng 3 loại, riêng loại cluster thì chưa dùng bao giờ nên cũng chưa có kinh nghiệm gì. anh em nao biết thì cùng chia sẻ nhé.

Bình luận


White
{{ comment.user.name }}
Hay Bỏ hay
{{ comment.like_count}}
White

Vu Ngọc Quan

56 bài viết.
8 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}

  Cùng một tác giả


{{like_count}}

kipalog

{{ comment_count }}

Bình luận


White
{{userFollowed ? 'Following' : 'Follow'}}
56 bài viết.
8 người follow

 Đầu mục bài viết

 Cùng một tác giả