Cơ sở dữ liệu thường có ảnh hưởng lớn đến hiệu suất của các ứng dụng. Database cũng khó thay đổi sau khi ứng dụng được đưa vào sử dụng chính thức, do đó việc lựa ra lựa chọn cơ sở dữ liệu ứng dụng phú hợp cho một ứng dụng là rất quan trọng.
Một phần quan trọng của việc đưa ra quyết định là xác định bạn cần gì. Công nghệ và nhiều vấn đề liên quan đến cơ sở dữ liệu đã thay đổi nhanh chóng trong vài năm qua và không dễ cho việc chọn lựa của bạn. Trong bài viết này, chúng tôi sẽ cố gắng đơn giản hóa mọi thứ bằng với các chủ đề sau:
- Tổng quan về hệ sinh thái cơ sở dữ liệu năm 2023
- Điều gì thực sự làm cho các loại cơ sở dữ liệu khác nhau hoạt động khác nhau từ góc độ kỹ thuật
- Khi nào nên sử dụng cơ sở dữ liệu chuyên dụng so với cơ sở dữ liệu đa năng
Bối cảnh cơ sở dữ liệu năm 2023
Trước khi đi sâu vào mọi thứ, hãy xem tổng quan về hệ sinh thái cơ sở dữ liệu hiện tại và thị phần của các loại cơ sở dữ liệu khác nhau:
Như bạn có thể thấy, cơ sở dữ liệu quan hệ vẫn là loại cơ sở dữ liệu được sử dụng nhiều nhất bất chấp tất cả sự cường điệu xung quanh cơ sở dữ liệu NoSQL. Tuy nhiên, nếu chúng ta nhìn vào các xu hướng gần đây, bảng xếp hạng lại kể một câu chuyện hơi khác.
Biểu đồ này cho thấy rằng trong hai năm qua, cơ sở dữ liệu quan hệ đã mất đi một số thị phần cho một số loại mô hình cơ sở dữ liệu khác nhau. Sau đây là một số mô hình cơ sở dữ liệu chính đang được các nhà phát triển áp dụng:
- Cơ sở dữ liệu tài liệu
- Cơ sở dữ liệu đồ thị
- Cơ sở dữ liệu chuỗi thời gian (Time series)
- Cơ sở dữ liệu cột (columnar database)
- Cơ sở dữ liệu trong bộ nhớ
- Cơ sở dữ liệu khóa-giá trị
- Cơ sở dữ liệu công cụ tìm kiếm
Điều gì làm cho cơ sở dữ liệu hoạt động khác nhau?
Không phải ngẫu nhiên mà hiệu suất của CSDL này lại cao hơn hay kém hơn CSDL khác. Cũng tương tự như tất cả mọi thứ về khoa học máy tính, có những sự đánh đổi cho phép hiệu suất được tối ưu hóa cho các trường hợp sử dụng cụ thể. Đối với cơ sở dữ liệu cụ thể, định lý CAP (Consistency, Availability, Partition Tolerance) cho thấy rõ hơn một số sự đánh đổi có thể được thực hiện để điều chỉnh hiệu suất.
Ví dụ, khi cơ sở dữ liệu NoSQL mới ra đời, có rất nhiều sự cường điệu xung quanh khả năng mở rộng của chúng. Nhưng đổi lại là việc hy sinh tính nhất quán của dữ liệu mà cơ sở dữ liệu quan hệ tiêu chuẩn luôn đảm bảo.
Một số yếu tố thiết kế khác sẽ ảnh hưởng đến cách thức hoạt động của cơ sở dữ liệu:
- Định dạng lưu trữ trên đĩa — Cách cơ sở dữ liệu thực sự lưu trữ và tổ chức dữ liệu trên ổ đĩa cứng có tác động lớn đến hiệu suất. Khi nhiều công ty bắt đầu lưu trữ lượng dữ liệu khổng lồ dành cho khối lượng công việc phân tích, việc lưu trữ dữ liệu trên đĩa ở định dạng dựa trên cột như Parquet đang trở nên phổ biến.
- Cấu trúc dữ liệu chỉ mục chính (Primary index data structure) — Cách cơ sở dữ liệu lập chỉ mục dữ liệu cũng sẽ có tác động lớn đến hiệu suất. Cơ sở dữ liệu thường có một chỉ mục chính được sử dụng bởi công cụ lưu trữ của chúng và sau đó cho phép người dùng xác định các chỉ mục phụ. Cách đơn giản nhất để nghĩ về lập chỉ mục là chúng sẽ giúp cải thiện hiệu suất đọc nhưng thêm chi phí để ghi các điểm dữ liệu mới.
- Nén dữ liệu — Cách dữ liệu được nén sẽ ảnh hưởng đến chi phí lưu trữ dữ liệu của bạn và hiệu suất truy vấn của cơ sở dữ liệu. Một số thuật toán nén được thiết kế để giảm kích thước dữ liệu của bạn càng nhiều càng tốt. Những CSDL khác có thể có tỷ lệ nén thấp hơn nhưng nhanh hơn khi giải nén dữ liệu, điều đó có nghĩa là bạn có được hiệu suất truy vấn dữ liệu của mình tốt hơn.
- Lưu trữ nóng và lạnh — Nhiều hệ thống cơ sở dữ liệu hiện cho phép dữ liệu được di chuyển giữa lưu trữ “nóng” nhanh hơn và đắt tiền hơn, và lưu trữ “lạnh” rẻ hơn nhưng chậm hơn. Về lý thuyết, điều này cho phép hiệu suất tốt hơn đối với dữ liệu được truy vấn thường xuyên và tiết kiệm tiền cho bộ nhớ trong khi vẫn cho phép truy cập dữ liệu trong bộ lưu trữ lạnh thay vì xóa hoàn toàn.
- Độ bền/phục hồi sau thảm họa — Cách cơ sở dữ liệu xử lý khôi phục sau thảm họa cũng đóng một vai trò trong hiệu suất. Việc thiết kế cơ sở dữ liệu để giảm thiểu các lỗi khác nhau nhìn chung sẽ làm giảm hiệu suất.Vì vậy, đối với một số trường hợp sử dụng mà dữ liệu không phải là nhiệm vụ quan trọng và đôi khi mất điểm dữ liệu thì không sao, cơ sở dữ liệu có thể loại bỏ một số đảm bảo an toàn để đạt được hiệu suất tốt hơn.
Tất cả các yếu tố trên cùng nhiều yếu tố khác đều ảnh hưởng đến hiệu suất của cơ sở dữ liệu. Bằng cách thay đổi các đòn bẩy này, cơ sở dữ liệu có thể được tối ưu hóa cho các đặc điểm hiệu suất rất cụ thể và việc hy sinh một số thứ sẽ không thực sự là vấn đề vì chúng không cần thiết cho một số tình huống nhất định.
Khi nào nên sử dụng cơ sở dữ liệu chuyên dụng cho ứng dụng của bạn
Có một số yếu tố quyết định nên sử dụng cơ sở dữ liệu nào cho ứng dụng của bạn. Chúng ta hãy xem xét một số điều chính mà bạn cần cân nhắc khi chọn cơ sở dữ liệu cho ứng dụng của mình:
Cách thức truy cập dữ liệu
Yếu tố chính trong việc chọn cơ sở dữ liệu là cách dữ liệu trong ứng dụng của bạn được tạo và sử dụng. Điểm quan trọng để bắt đầu có lẽ là xác định xem khối lượng công việc của bạn sẽ là xử lý phân tích trực tuyến (OLAP – online analytical processing ) hay xử lý giao dịch trực tuyến (OLTP – online transaction processing). Khối lượng công việc OLAP tập trung vào phân tích và có các kiểu truy cập khác so với khối lượng công việc OLTP tiêu chuẩn mà cơ sở dữ liệu quan hệ được thiết kế để xử lý. Các truy vấn OLAP thường chỉ chạm vào một vài cột để thực hiện các phép tính và có thể được tối ưu hóa bằng cách sử dụng cơ sở dữ liệu dạng cột được thiết kế cho việc này. Trong thực tế, hầu hết các data warehouses được xây dựng trên cơ sở dữ liệu hướng cột do các lợi ích về hiệu suất.
Khi bạn đã xác định được workload, bây giờ bạn cần xem xét những vấn đề khác như yêu cầu về độ trễ cho các truy vấn và tần suất ghi dữ liệu. Nếu trường hợp bạn cần truy vấn dữ liệu gần thời gian thực với độ trễ thấp cho các tác vụ như giám sát, bạn có thể xem xét cơ sở dữ liệu chuỗi thời gian (time-series) được thiết kế để xử lý thông lượng ghi cao đồng thời cho phép truy vấn dữ liệu ngay sau khi nhập.
Đối với khối lượng công việc kiểu OLTP, thông thường bạn sẽ quyết định giữa cơ sở dữ liệu quan hệ hoặc cơ sở dữ liệu tài liệu (document database). Yếu tố chính ở đây sẽ là xem xét mô hình dữ liệu của bạn và xác định xem bạn muốn lược đồ linh hoạt do cơ sở dữ liệu tài liệu NoSQL cung cấp hay bạn muốn đảm bảo tính nhất quán do cơ sở dữ liệu quan hệ cung cấp.
Một điều cuối cùng mà bạn có thể xem xét là liệu bạn có mong đợi workload của CSDL tương đối nhất quán trong suốt cả ngày hay liệu khối lượng công việc đó sẽ “đầy ắp” và yêu cầu cơ sở dữ liệu thỉnh thoảng xử lý khối lượng đọc và ghi lớn hơn nhiều. Trong trường hợp này, sẽ rất hợp lý khi sử dụng cơ sở dữ liệu giúp dễ dàng tăng và giảm quy mô phần cứng của bạn để bạn không phải đối mặt với thời gian ngừng hoạt động hoặc chi phí cao cho phần cứng không cần thiết trong hầu hết thời gian.
Kiến thức nội bộ của team
Bộ kỹ năng hiện có của nhóm bạn nên được xem xét khi quyết định cơ sở dữ liệu nào nên dùng. Bạn cần xác định liệu những lợi ích tiềm năng của việc sử dụng cơ sở dữ liệu chuyên dụng có đáng để đầu tư vào việc đào tạo nhân lực để học cách sử dụng nó và năng suất bị mất khi học một công nghệ mới hay không.
Nếu bạn biết rằng dịch vụ mà bạn đang xây dựng sẽ không cần phải tối ưu hóa hoàn toàn về hiệu suất, bạn có thể sử dụng bất kỳ cơ sở dữ liệu nào mà nhóm của bạn quen thuộc nhất để hoàn thành công việc. Mặt khác, nếu bạn biết hiệu suất là rất quan trọng, thì việc áp dụng một cơ sở dữ liệu mới đáng để xem xét.
Độ phức tạp kiến trúc
Giữ cho kiến trúc phần mềm của bạn càng đơn giản càng tốt là điều lý tưởng. Do đó, việc thêm một thành phần vào hệ thống như cơ sở dữ liệu sẽ được cân nhắc với mức độ phức tạp mà việc quản lý cơ sở dữ liệu có thể mang lại.
Đây không phải là vấn đề lớn nếu ứng dụng của bạn phù hợp lý tưởng với cơ sở dữ liệu chuyên biệt đến mức nó có thể đóng vai trò là cơ sở dữ liệu chính cho dữ liệu của ứng dụng. Mặt khác, nếu bạn sẽ sử dụng cơ sở dữ liệu có mục đích chung hơn làm bộ lưu trữ chính cho ứng dụng thì việc sử dụng cơ sở dữ liệu bổ sung cho một tập hợp con dữ liệu có thể không đáng trừ khi bạn đang gặp sự cố nghiêm trọng về hiệu suất.
Kết luận
Hệ sinh thái cơ sở dữ liệu đang phát triển nhanh chóng. Mặc dù sử dụng cơ sở dữ liệu mà bạn biết luôn là một lựa chọn tốt, nhưng các nhà phát triển nên theo dõi một số công nghệ mới đang được phát hành và xem liệu chúng có phải là một lựa chọn tốt cho những gì bạn đang xây dựng hay không. Xây dựng trên cơ sở dữ liệu chuyên biệt có thể giúp ứng dụng của bạn thành công theo một số cách bằng cách tiết kiệm tiền cho chi phí, cải thiện hiệu suất cho người dùng, giúp dễ dàng mở rộng quy mô và cải thiện năng suất của nhà phát triển.