fbpx

ORM là gì? ORM là tên viết tắt của cụm từ “Object Relational Mapping” đây là tên gọi chỉ việc ánh xạ các record dữ liệu trong hệ quản trị cơ sở dữ liệu sang dạng đối tượng mà mã nguồn đang định nghĩa trong class. Là một khái niệm phổ biến, được cài đặt trong tất cả các loại ngôn ngữ hiện đại ngày nay như: java, php, node.js, swift … Bạn dễ dàng có thể cài đặt ORM hoặc sử dụng các thư viện mã nguồn mở về ORM trong bất cứ dự án nào bạn thích. Vậy ORM đem lại ích lợi gì cho các lập trình viên.

ORM là gì

ORM là gì

Tại sao nên cài đặt ORM để truy xuất dữ liệu

  • Portable – tính năng động: ORM được sử dụng để bạn viết cấu trúc của bạn một lần và lớp ORM sẽ xử lý câu lệnh cuối cùng phù hợp với DBMS được cấu hình. Đây là một lợi thế tuyệt vời khi thao tác truy xuất dữ liệu đơn giản như giới hạn được thêm vào dưới dạng ‘limit 0,100’ ở cuối câu lệnh Select trong MySQL, trong khi đó với cách truy xuất thông thường bạn phải viết là ‘Select Top 100 From Table’ trong MS SQL.
  • Nesting Of Data – truy xuất lồng dữ liệu:  trong trường hợp database bạn có nhiều bảng và các bảng này liên hệ rối rắm phức tạp về dữ liệu thì ORM sẽ tự động lấy dữ liệu cho bạn một cách đơn giản(ở đây đang nói tới việc đơn giản trong truy xuất dữ liệu, không bàn về vấn đề tối ưu truy xuất)
  • Single Languagekhông cần biết SQL: thật vậy với nguyên lý thiết kế là ánh xạ toàn bộ dữ liệu lấy được từ DBMS sang bộ nhớ nên việc thao tác truy suất bây giờ chỉ phụ thuộc vào ngôn ngữ lập trình bạn đang xử dụng, bạn chẳng cần quan tâm phía đằng sau của ORM sẽ làm gì sinh ra mã SQL như thế nào khi truy xuất SQL, và kết quả là chúng ta chỉ cần nhuần nhuyễn ngôn ngữ lập trình đang dùng.
  • Adding is like modifying – thêm sửa dữ liệu là như nhau: đối với ORM, nó không phân biệt giữa thêm mới và cập nhật mọi tác vụ có liên quan đến sửa đổi hay chèn dữ liệu đều được xem là định nghĩa thêm mới, hai tác vụ này được xem như là một.

Những lý do gây cản trở việc cài đặt ORM cho dự án của bạn

  • Slow – chậm: trong tất cả các bài đánh giá và so sánh về tốc độ truy suất dữ liệu bạn sẽ thấy ORM dù cho được tối ưu đến đâu cũng sẽ không bao giờ nhanh hơn được so với truy vấn trực tiếp từ SQL.
  • Tunning – khó điều chỉnh: Tối ưu hóa các câu lệnh SQL là điều nên làm đối với các dữ liệu lớn, tuy nhiên đối với ORM quá trình này rất khó khăn và phức tạp, bởi vì bạn phải tuân theo thiết kế của ORM và ưu điểm mà nó mang lại là hạn chế và cô lập quá trình thao tác dữ liệu trực tiếp lên DBMS.
  • Complex Queries – truy vấn phức tạp: mặc dù được thiết kế để đơn giản hóa tuy nhiên một vài ORM thao tác dữ liệu rất rối rắm, các đoạn code rất phức tạp và khó hiểu hơn nhiều lần so với SQL thuần.
  • Studing – học tập phức tạp: Đa phần các hệ thống với các tác vụ nặng và phức tạp thư viện ORM thuần túy được cung cấp không đảm bảo về hiệu năng, và bạn cùng các thành viên trong team chắc chắn phải nghiên cứu từng dòng code để tối ưu cho hệ thống của mình.

Lợi ích ORM trong môi trường hệ thống phân tán quy mô lớn

Sử dụng ORM mang lại cho bạn lợi thế sau trong trường hợp hệ thống phân tán quy mô lớn – SQL phức tạp tạo ra tải nặng trên máy chủ DB. Đây không phải là điều bạn luôn muốn đặc biệt khi bạn có kiến ​​trúc hệ thống phân tán được triển khai trên dịch vụ cloud, nơi mà việc scaling luôn được ưu tiên horizontal scaling hơn là vertical. Hầu hết các hệ thống DBMS không mở rộng theo chiều ngang. Ngay cả khi họ làm như vậy, bạn luôn muốn nâng cấp máy chủ ứng dụng của mình, điều này cho phép bạn kiểm soát nhiều hơn đối với tự động so sánh. Khi bạn sử dụng ORM, bạn có các công cụ tốt hơn để kiểm soát tải trên DB bằng cách tăng quá trình xử lý trong ứng dụng. Ngoài ra, điều này tạo cơ hội để lưu trữ kết quả trong ứng dụng.

Vậy lúc nào nên dùng ORM và lúc nào không? Đâu là lựa chọn hợp lý cho bạn? Có lẽ kinh nghiệm qua những lần sấp mặt mới có thể trả lời được.

About the author

Kevin Dang

Hey there! My name is Kevin Dang, I am website, software, mobile app develop, web admin system. Expert living in Hồ Chí Minh (Việt Nam). I am very interested in digital marketing with: SEO, Facebook, Google Ads ... This blog is where I will share the experiences, techniques and knowledge I have learned.