Database Scaling
Kỹ thuật thường xuyên được triển khai trong các dự án lớn
Last updated
Kỹ thuật thường xuyên được triển khai trong các dự án lớn
Last updated
Khi số lượng người dùng ứng dụng của bạn ngày càng tăng lên, dữ liệu từ đó sẽ tăng trưởng ngày càng nhiều hơn mỗi ngày, database của dự án sẽ dần trở nên quá tải. Và đây chính là lúc chúng ta cần thực hiện scale database.
Hai chiến lược chính để scale database thường được sử dụng đó là: Mở rộng theo chiều dọc (Vertical Scaling) và Mở rộng theo chiều ngang (Horizontal Scaling)
Định nghĩa:
Vertical Scaling là cách tăng cường “sức mạnh” của một server duy nhất bằng cách nâng cấp phần cứng của server đó, chẳng hạn như tăng thêm CPU, RAM hoặc ổ cứng, …
Trên thế giới hiện nay có một số database server vô cùng mạnh mẽ. Theo , bạn hoàn toàn có thể sở hữu một database server lên tới 24 TB RAM.
Khi đó nó có thể lưu trữ và xử lý rất rất nhiều dữ liệu.
Ví dụ, đã có tới hơn 10 triệu visitor mỗi tháng, nhưng nó chỉ có duy nhất 1 master database.
Ưu điểm:
Vertical Scaling sẽ giúp cho việc quản lý CÓ THỂ sẽ dễ dàng hơn, vì chỉ có một máy chủ cần được quan tâm (nói là CÓ THỂ bởi vì nó còn phụ thuộc vào nhiều yếu tố, ví dụ như cấu trúc các bảng trong database được xây dựng có tối ưu hay không, …)
Nhược điểm:
Tuy nhiên, Vertical Scaling cũng đi kèm với một số nhược điểm nghiêm trọng, có thể kể đến như:
Giới hạn về mặt phần cứng: Bạn có thể thêm nhiều CPU, RAM, ổ cứng, … vào database server, nhưng rồi sẽ đến một lúc nó gặp giới hạn, mà bạn không thể tăng thêm được nữa.
Chi phí: Nâng cấp phần cứng sẽ rất tốn kém. Các server càng mạnh lại càng đắt đỏ.
Nguy cơ gặp phải single point of failures lớn hơn: Bạn có duy nhất 1 database, và database này vì lý do nào đó gặp phải sự cố, vậy là toàn bộ ứng dụng của bị sẽ không thể tương tác với database được nữa. Trong khi dữ liệu lại là phần quan trọng nhất của một ứng dụng.
Vậy khi nào nên sử dụng Vertical Scaling???
Bạn nên sử dụng Vertical Scaling khi hệ thống hiện tại chỉ cần tăng thêm một chút khả năng xử lý, và không dự kiến tăng trưởng đột ngột về dữ liệu hoặc truy vấn.
Định nghĩa:
Horizontal Scaling hiểu đơn giản là tăng cường “sức mạnh” của hệ thống bằng cách bổ sung nhiều database server hơn.
Hình vẽ dưới đây sẽ giúp bạn dễ dàng hình dung ra sự khác nhau giữa Vertical Scaling và Horizontal Scaling.
Ưu điểm:
Khả năng mở rộng cao: Có thể thêm nhiều server để đáp ứng nhu cầu dữ liệu ngày càng tăng.
Độ tin cậy cao hơn: Giảm nguy cơ gặp phải single point of failures, do đã có nhiều server giúp phân tải công việc.
Nhược điểm:
Quản lý phức tạp hơn: Cần phải quản lý nhiều database server, cũng như cơ chế phân chia dữ liệu cho phù hợp.
Nếu ứng dụng của bạn ban đầu không được triển khai theo hướng Horizontal Scaling, thì bạn sẽ phải thực hiện khá nhiều thay đổi để có thể hỗ trợ phân tán dữ liệu.
Khi nào nên sử dụng Horizontal Scaling???
Khi hệ thống cần xử lý lượng dữ liệu rất lớn và số lượng truy vấn cao mà một server duy nhất không thể xử lý được.
Khi yêu cầu hệ thống có khả năng mở rộng và khả năng chịu lỗi cao.