post-image

Không phải Source Code, Database mới là quan trọng nhất trong hệ thống?

Tổng quan

Chào các bạn, với nhiều anh em lập trình viên có lẽ code là một cái gì đó cao siêu và thể hiện được trình độ của lập trình viên.

Nhưng liệu những dòng code có phải là quan trọng nhất trong một hệ thống hay không? bạn đã từng đặt ra những câu hỏi kiểu như vậy chưa?

Vậy thì để mình trả lời luôn: Tất nhiên là không rồi ! Ngày nay, một hệ thống hay nói đơn giản là một ứng dụng hoặc một phần mềm không chỉ có code và giao diện.

Mà quan trọng hơn rất nhiều đó là cơ sở dữ liệu (database) của hệ thống đó. Vậy câu hỏi đặt ra là tại sao cơ sở dữ liệu lại quan trọng như vậy?

Vâng, thì trong bài viết này mình sẽ cùng anh em chỉ ra 5 lý do thuyết phục để trả lời cho câu hỏi tại sao bên trên nhé.

1. Không có database thì rất khó để kiểm thử

Ứng dụng hay phần mềm nào mà chẳng có lỗi và bugs, gần như đó là một tất yếu trong quá trình xây dựng và phát triển phần mềm.

khong-phai-source-code-database-moi-quan-trong-nhat-trong-he-thong (1)

Chính vì vậy, chúng ta phải có khâu kiểm thử phần mềm để hạn chế tối đa các lỗi phát sinh và nâng cao chất lượng phần mềm.

Nhưng sự thật là việc kiểm thử đôi khi lại rất phụ thuộc vào dữ liệu (có thể là dữ liệu test hoặc dữ liệu thật)..

Điều này nghĩa là sao? Mình lấy ví dụ về các ứng dụng quản lý là các ứng dụng có mức độ tương tác với database tương đối cao.

Khi tester thực hiện các thao tác trên giao diện họ phải vào database để kiểm tra xem dữ liệu có được cập nhật hay thêm đúng hay không.

Thậm chí trong nhiều trường hợp (case) họ phải có được data chính xác mới kiểm tra được chức năng chạy đúng hay không.

Nói chung là bộ phận kiểm thử (tester) là những người phải nắm được cấu trúc của database, biết cách lọc, truy xuất dữ liệu từ database.

2. Giảm mức độ tính toán cho bộ phận khác trong hệ thống

Mình lấy ví dụ về các hệ thống web app thường được chia thành 3 phần đó là:

  • Font-end: Là những gì phục vụ hiển thị cho người dùng cuối (giao diện, hiệu ứng…)
  • Back-end: Có chức năng tương tác với database để lấy dữ liệu, cập nhật dữ liệu, nhận và trả về dữ liệu cho font-end hiển thị.
  • Database: Là bộ phận lưu trữ dữ liệu của hệ thống, cung cấp các chức năng giúp theo tác với dữ liệu.
khong-phai-source-code-database-moi-quan-trong-nhat-trong-he-thong (2)

Vậy tại sao hệ thống database lại giảm mức độ tính toán cho các bộ phận khác? Thì đơn giản đó là các hệ quản trị cơ sở dữ liệu cung cấp các câu query (câu truy vấn), các function (hàm) giúp thao tác với dữ liệu.

Các bộ phận trung gian như hệ thống back-end chỉ cần định nghĩa các câu query, hàm và truyền xuống cho database thực hiện rồi nhận lại kết quả.

Chính vì vậy đôi khi có nhiều thao tác yêu cầu các truy vấn phức tạp thì database đã lo hết rồi. Back-end và font-end chỉ việc lấy dữ liệu đó lên để hiển thị.

Cũng từ đó việc thiết kế một cơ sở dữ liệu tốt và hiệu năng cao sẽ rất có ích cho các bộ phận khác

3. Định hình mô hình ứng dụng

Hiện nay có rất nhiều mô hình thiết kế ứng dụng hiện đại nhưng không phải cứ thích là áp dụng được.

khong-phai-source-code-database-moi-quan-trong-nhat-trong-he-thong (3)

Một trong những nguyên nhân đầu tiên đó là do hệ thống cơ sở dữ liệu quá tập trung, không được thiết kế tốt ngay từ đầu dẫn đến khó mở rộng sau này.

Chính vì vậy, khi xây dựng các hệ thống lớn nhiều công ty đã đâu tư rất nhiều và khâu thiết kế cơ sở dữ liệu.

Vì họ hiểu được nếu cơ sở dữ liệu được thiết kế tốt thì nó sẽ định hình thiết kế cũng như giúp cho quá trình phát triển ứng dụng dễ dàng hơn sau này.

Đơn cử các bạn có thể thấy các ứng dụng lớn như Facebook, Youtube thì database của họ không phải chỉ tập trung ở một nơi mà họ chia ra rất nhiều database nhỏ và phân bố khắp nơi trên thế giới.

Lợi ích đem lại thì rõ ràng rồi, hệ thống sẽ tránh gặp tình trạng quá tải khi có quá nhiều người truy cập cùng lúc. Ứng dụng cũng có thể được chia nhỏ và phát triển sao cho phù hợp với từng đất nước, quốc gia cụ thể.

4. Mất rồi thì khó mà lấy lại được

khong-phai-source-code-database-moi-quan-trong-nhat-trong-he-thong (1)

Nhiều anh em sẽ bảo rằng kiểu gì người ta chả phải backup (lưu lại) dữ liệu, có mất thì cũng có backup rồi lo gì !

Đúng! nhưng ý mình ở đây là mất dữ liệu đó vào tay người khác, tổ chức hay công ty đối thủ thì coi như backup cũng chỉ còn 50% ý nghĩa mà thôi.

Dữ liệu nó không giống như mã nguồn (source code). Nếu như source code mà mất bạn có thể code lại (tuy hơi mất công) nhưng không phải là không thể.

Nhưng dữ liệu nó mang tính duy nhất và không phải bạn cứ muốn là khôi phục được nó (về mặt ý nghĩa) và cả về mặt vật lý.

Ví dụ bạn đánh mất dữ liệu của khách hàng thì sẽ rất khó để họ cung cấp lại cho bạn chứ không muốn nói là “chửi” hay “kiện” cho bạn một trận 😊

5. Vô cùng nhạy cảm

khong-phai-source-code-database-moi-quan-trong-nhat-trong-he-thong (2)

“Nhạy cảm” có lẽ là hai từ phù hợp nhất cho việc sử dụng và lưu trữ dữ liệu, đặc biệt là dữ liệu doanh nghiệp có tính cạnh tranh cao.

Mình từng làm việc tại một công ty là đối tác cho các doanh nghiệp bán hàng và họ yêu cầu rất kỹ lưỡng trong các thao tác với dữ liệu.

Thậm chí mình còn không được làm việc trên máy cá nhân và phải làm việc trong máy ảo tại công ty để đảm bảo về an toàn thông tin, đặc biệt là an toàn về dữ liệu.

Vì những dữ liệu đó nếu bị đánh cắp và bán cho các đối tác cạnh tranh thì chắc chắn sẽ ảnh hưởng rất nhiều đến công ty.

Chưa kể cơ sở dữ liệu công ty mình được phép dùng chỉ là cơ sở dữ liệu phục vụ mục đích phát triển chứ chưa phải là cơ sở dữ liệu chính của họ.

Vì vậy mọi người phải rất thận trọng khi thao tác với dữ liệu, hạn chế các thao tác làm thay đổi dữ liệu và phải luôn có phương án dự phòng trong trường hợp không mong muốn.

6. Lời kết

Đôi khi trong một hệ thống thông tin hay một phần mềm nào đó cái quan trọng nhất chính là dữ liệu và cách tổ chức thiết kế cơ sở dữ liệu chứ không phải là mã nguồn.

Thao tác với dữ liệu đôi khi không phải là đơn giản và bạn phải đảm bảo các thao tác của mình hạn chế làm thay đổi dữ liệu (đặc biệt là các dữ liệu nhạy cảm)

Hi vọng qua bài viết này anh em sẽ hiểu được dữ liệu và cách tổ chức dữ liệu quan trọng như thế nào. Hẹn gặp lại anh em trong các bài viết tiếp theo !

Các bạn có thể tham khảo các bài viết hay về Laravel tại đây.


Hãy tham gia nhóm Học lập trình để thảo luận thêm về các vấn đề cùng quan tâm.

Tham khảo: topdev

Leave a Reply

Your email address will not be published. Required fields are marked *