Chuyển đến nội dung chính

Ánh xạ Quan hệ Đối tượng (ORM) là gì?

Ánh xạ Quan hệ Đối tượng (ORM) là quá trình trừu tượng hóa kết nối giữa các thực thể ngôn ngữ lập trình (đối tượng) và các phần tử cơ sở dữ liệu tương ứng của chúng.

Khi xây dựng các ứng dụng, các lập trình viên xác định các đối tượng trong mã, tương ứng với các khái niệm trong thế giới thực. Dữ liệu đối tượng được thao tác trong mã nhưng được lưu trữ trong cơ sở dữ liệu như được định nghĩa bởi thiết kế hệ thống dữ liệu. Ví dụ, trong mã của bạn, bạn có thể có một đối tượng khách hàng chứa tất cả thông tin khách hàng, nhưng cơ sở dữ liệu nền tảng có thể lại lưu trữ dữ liệu đó trải rộng trên nhiều bảng khác nhau.

Ánh xạ Quan hệ Đối tượng là một tầng phần mềm có chức năng chuyển đổi dữ liệu đối tượng thành dữ liệu cho cơ sở dữ liệu nền tảng, qua đó trừu tượng hóa các chi tiết của cơ sở dữ liệu khỏi lập trình viên. Bằng cách đó, mã vẫn không thay đổi ngay cả khi cơ sở dữ liệu cơ bản được hoán đổi với các thiết kế mới hoặc khác nhau. Lập Ánh xạ Quan hệ Đối tượng cho phép tạo ra các ứng dụng mô-đun dễ quản lý và duy trì.

Ánh xạ quan hệ đối tượng hoạt động như thế nào?

Ánh xạ quan hệ đối tượng (ORM) kết nối các ứng dụng được viết bằng ngôn ngữ lập trình hướng đối tượng (OOP) với cơ sở dữ liệu cơ sở. Các loại ứng dụng và cơ sở dữ liệu này thường được sử dụng cùng nhau, nhưng mỗi loại xử lý dữ liệu theo những cách khác nhau. Thêm một ánh xạ quan hệ đối tượng giữa chúng cho phép mỗi bên gửi dữ liệu theo định dạng mà bên kia có thể hiểu. Bạn có thể sửa đổi một bên mà không làm ảnh hưởng đến bên còn lại.

Ngôn ngữ lập trình hướng đối tượng

Ngôn ngữ OOP sắp xếp dữ liệu thành các đối tượng, là cấu trúc mã với một hoặc nhiều thuộc tính. Ví dụ: trong một ứng dụng OOP, bạn có thể xác định một đối tượng được biểu diễn dưới dạng lớp dữ liệu liên tục, chẳng hạn như xe hơi, với các thuộc tính như nhãn hiệu, kiểu dáng, VIN, màu sắc số dặm.

Một số ngôn ngữ lập trình hướng đối tượng (OOP) phổ biến nhất bao gồm Python, Java, JavaScript .NET/C #.

Cơ sở dữ liệu quan hệ

Cơ sở dữ liệu quan hệ cấu trúc dữ liệu thành các bảng, giống như một loạt các bảng tính được kết nối. Mỗi bảng bao gồm một tập hợp các cột với các bản ghi duy nhất trong mỗi hàng.

Ví dụ: cơ sở dữ liệu xe hơi của bạn có thể có một vài bảng. Một bảng có thể chứa dữ liệu thương hiệu, chẳng hạn như nhãn hiệu, mô hình VIN. Một bảng khác có thể lưu trữ các thuộc tính của từng chiếc xe, như chủ sở hữu, màu sắc số dặm. Một số cơ sở dữ liệu quan hệ phổ biến nhất bao gồm MySQL, PostgreSQL và SQL Server.

Trong phát triển web, một công cụ Ánh xạ quan hệ đối tượng (ORM) chuyển đổi dữ liệu được gửi từ một ứng dụng hướng đối tượng sang cơ sở dữ liệu quan hệ mà không yêu cầu ứng dụng biết dữ liệu đó được cấu trúc như thế nào trong cơ sở dữ liệu.

Ánh xạ quan hệ đối tượng

Bạn có thể tạo một ánh xạ quan hệ đối tượng, đôi khi được gọi là trình quản lý quan hệ đối tượng, hướng dẫn cơ sở dữ liệu của bạn về nơi định vị tất cả dữ liệu được yêu cầu bởi một ứng dụng, mặc dù mỗi cấu trúc lưu trữ dữ liệu của nó theo một cách khác nhau. Khi ứng dụng của bạn yêu cầu tất cả các thuộc tính của một chiếc xe riêng lẻ, ORM hướng dẫn cơ sở dữ liệu cách truy xuất tất cả dữ liệu đó trên nhiều bảng.

Bởi vì các ánh xạ được trừu tượng hóa, nếu cấu trúc cơ sở dữ liệu thay đổi hoặc bạn di chuyển sang cơ sở dữ liệu mới, ORM vẫn có thể trỏ đến dữ liệu chính xác với các bản cập nhật tối thiểu.

Khung ORM phổ biến

Các công cụ, hoặc khung ORM có sẵn để mô hình hóa dữ liệu theo nhiều ngôn ngữ lập trình hướng đối tượng phổ biến nhất. Một số ngôn ngữ phổ biến nhất bao gồm:

  • Hibernate dành cho Java
  • SQLAcademy dành cho Python
  • Khung thực thể dành cho .NET/C #

Bạn có thể sử dụng ORM với một cơ sở dữ liệu phi quan hệ không?

Không, cơ sở dữ liệu phi quan hệ lưu trữ dữ liệu ở các định dạng khác nhau và tương tác với các ứng dụng theo những cách khác nhau. Loại cơ sở dữ liệu phi quan hệ phổ biến nhất là cơ sở dữ liệu tài liệu. Tài liệu cũng có thể có nhiều thuộc tính, tương tự như đối tượng, nhưng chúng có cấu trúc lập trình khác nhau.

Một số cơ sở dữ liệu phi quan hệ phổ biến nhất bao gồm MongoDB và NoSQL.

Sự khác biệt giữa ORM và ORDBMS là gì?

Hệ thống quản lý cơ sở dữ liệu quan hệ đối tượng (ORDBMS) là một loại cơ sở dữ liệu sử dụng các yếu tố của cả khung quan hệ và hướng đối tượng. Hệ thống có thể lưu trữ các bản ghi có cấu trúc như các đối tượng tương tự như những gì bạn có thể mã hóa bằng ngôn ngữ OOP. Nhưng bạn cũng có thể thực hiện các truy vấn quan hệ giống SQL trên các bản ghi đó. Sự kết hợp các tính năng cho phép bạn lưu trữ nhiều loại dữ liệu hơn so với khả năng của một cơ sở dữ liệu quan hệ tiêu chuẩn.

Trong đó ánh xạ quan hệ đối tượng (ORM) là một lớp trừu tượng dữ liệu hoạt động ở cấp độ ứng dụng, một hệ quản trị cơ sở dữ liệu quan hệ đối tượng (ORDBMS) cung cấp các khả năng hướng đối tượng trực tiếp ở cấp độ cơ sở dữ liệu.

ORM chạy trong mã ứng dụng của bạn và tạo SQL ở hậu trường. ORDBMS quản lý lưu trữ dữ liệu và thực thi truy vấn ở cấp cơ sở dữ liệu, với sự hỗ trợ gốc cho các loại đối tượng nâng cao.

Sự khác biệt giữa ORM và SQL là gì?

SQL (Ngôn ngữ truy vấn có cấu trúc) là ngôn ngữ tiêu chuẩn được sử dụng để tương tác với cơ sở dữ liệu quan hệ. Nó cho phép bạn tạo và quản lý lược đồ cơ sở dữ liệu, chèn và cập nhật dữ liệu và các bản ghi truy vấn bằng các lệnh khai báo.

SQL cung cấp quyền kiểm soát trực tiếp, cấp thấp đối với cơ sở dữ liệu. ORM cung cấp một giao diện cấp cao hơn, trừu tượng hơn, thường làm cho quá trình phát triển nhanh hơn và mã hóa dễ bảo trì hơn.

ORM là lựa chọn lý tưởng để đơn giản hóa các tác vụ cơ sở dữ liệu phổ biến và căn chỉnh với mã ứng dụng, nhưng SQL vẫn cần thiết khi bạn cần điều chỉnh hiệu suất, truy vấn phức tạp hoặc kiểm soát hoàn toàn quyền truy cập dữ liệu.

Tại sao sử dụng ORM thay vì truy vấn SQL?

SQL yêu cầu bạn viết các lệnh thủ công để tương tác với cơ sở dữ liệu, trong khi ORM tự động dịch mã hướng đối tượng của bạn thành SQL ở hậu trường.

ORM giúp giảm lượng mã hóa cần thiết để phát triển một chương trình hướng đối tượng mà ở đó phải thực hiện nhiều truy vấn cơ sở dữ liệu. Thay vì phải tự tay lập trình vô số câu truy vấn cơ sở dữ liệu và phải bảo trì chúng, các nhà phát triển của bạn chỉ cần lập trình cách gửi yêu cầu đến công cụ ORM.

Làm việc trong một ngôn ngữ lập trình dễ hiểu hơn cũng làm cho mã dễ đọc và gỡ lỗi hơn.

Lợi ích của việc sử dụng ánh xạ quan hệ đối tượng là gì?

Hệ thống ORM mang lại những lợi ích sau.

Phát triển ứng dụng nhanh chóng

ORM giúp truy xuất dữ liệu phức tạp bằng cách sử dụng mã dễ hiểu bằng ngôn ngữ OOP – ngôn ngữ quen thuộc nhất với các nhà phát triển của bạn. Họ có thể xử lý các hoạt động cơ sở dữ liệu thông thường, chẳng hạn như tạo, đọc, cập nhật và xóa bản ghi (CRUD), vì vậy các nhà phát triển không phải mã hóa các thao tác này nhiều lần trong ứng dụng của bạn.

Bảo trì ứng dụng đơn giản hơn

Bằng cách trừu tượng hóa các truy vấn cơ sở dữ liệu thông qua ORM, các nhà phát triển có thể làm việc bằng một ngôn ngữ duy nhất, làm cho mã của họ dễ hiểu và dễ duy trì hơn.

Tăng tính bảo mật

Tấn công SQL Injection là một hành động độc hại nhằm truy cập dữ liệu riêng tư bằng cách gửi các lệnh truy vấn SQL thông qua các ô nhập liệu trên ứng dụng. ORM sử dụng các truy vấn tham số, trước tiên gửi cho cơ sở dữ liệu của bạn một truy vấn với các giá trị giữ chỗ, không phải dữ liệu thực. (ví dụ,? hoặc :param). Dữ liệu thực được gửi riêng biệt. Điều này đảm bảo rằng đầu vào của người dùng được coi là dữ liệu, không phải mã SQL thực thi. Do đó, việc sử dụng công cụ ORM sẽ ngăn chặn truy cập dữ liệu trái phép thông qua SQL injection.

Cải thiện hiệu suất

Một ORM có thể cải thiện hiệu suất hệ thống bằng cách cho phép lưu trữ đối tượng trong suốt trong tầng ứng dụng. Nó có thể lưu dữ liệu được truy xuất phổ biến nhất gần ứng dụng hơn để truy cập nhanh hơn.

Những thách thức của việc sử dụng công cụ ánh xạ quan hệ đối tượng là gì?

ORM đưa ra những thách thức sau đây.

Không tương thích trở kháng

Cấu trúc dữ liệu phức tạp có thể khó lập bản đồ giữa các chương trình hướng đối tượng và cơ sở dữ liệu. Hệ thống phân cấp có thể mã hóa trong OOP có thể rất khó để thể hiện trong cơ sở dữ liệu, bất kể ORM của bạn phức tạp đến mức nào.

Các vấn đề về hiệu suất ở mức độ phức tạp cao hơn

Việc truy vấn trực tiếp vào cơ sở dữ liệu hiệu quả về mặt tính toán hơn so với việc sử dụng công cụ ORM. Đối với các truy vấn phức tạp cao, việc sử dụng mã SQL có thể hiệu quả hơn thay vì công cụ Ánh xạ Quan hệ Đối tượng (ORM).

Quá trình làm quen

Mặc dù ORM giúp bạn tránh phải học mã SQL phức tạp, các nhà phát triển của bạn vẫn sẽ cần học cách sử dụng các công cụ ORM.

Khi nào bạn nên sử dụng ánh xạ quan hệ đối tượng?

Vì các công cụ ORM giúp trừu tượng hóa và tự động hóa các truy vấn cơ sở dữ liệu, nên các nhà phát triển có thể tập trung nhiều hơn vào việc phát triển ứng dụng thay vì phải viết các truy vấn phức tạp. Cân nhắc sử dụng ORM khi:

Ứng dụng của bạn có nhiều đối tượng

Xây dựng các truy vấn theo cách thủ công cho các giao diện và cấu trúc đối tượng phức tạp có thể là một nhiệm vụ tốn thời gian và tốn nhiều công sức. Cho phép một công cụ ORM ánh xạ các đối tượng với dữ liệu được lưu trữ trong cơ sở dữ liệu của bạn có thể giúp truy xuất chính xác nhanh hơn và đáng tin cậy hơn.

Ứng dụng của bạn lặp lại các truy vấn cơ sở dữ liệu tương tự

ORM có thể dễ dàng tự động hóa nhiều hoạt động CRUD thông thường (Tạo, Đọc, Cập nhật và Xóa dữ liệu), do đó bạn cần ít mã SQL hơn.

Sự phát triển của lược đồ đang diễn ra

Nếu mô hình dữ liệu của bạn vẫn đang phát triển, ORM có thể giúp quản lý các thay đổi trong lược đồ cơ sở dữ liệu một cách dễ dàng hơn. Nhiều ORM bao gồm các công cụ di chuyển cho phép bạn tạo phiên bản và áp dụng các thay đổi cấu trúc cơ sở dữ liệu một cách có hệ thống, đồng thời giảm thiểu nguy cơ không đồng nhất giữa các môi trường khác nhau.

Tính di động của cơ sở dữ liệu là rất quan trọng

ORM là một tầng trừu tượng được thiết kế có mục đích nhằm tách biệt các thao tác mà ứng dụng của bạn gọi ra khỏi bất kỳ cơ sở dữ liệu cụ thể nào. Mặc dù không đảm bảo tính di động hoàn toàn, nhưng tầng trừu tượng này giúp giảm bớt công sức khi chuyển đổi giữa các hệ thống. Vì vậy, ví dụ, nếu ứng dụng xe hơi của bạn cần chuyển từ sử dụng cơ sở dữ liệu MySQL sang PostgreSQL, bạn sẽ không cần phải viết lại toàn bộ ứng dụng. Bạn chỉ cần thực hiện các điều chỉnh nhỏ cho ORM của mình nếu bất kỳ bảng nào thay đổi.

Khi nào không nên sử dụng ánh xạ quan hệ đối tượng?

Mặc dù ORM là những công cụ mạnh mẽ, nhưng vẫn có những trường hợp mà ở đó chúng không phải là giải pháp tốt nhất.

Đối với các tương tác cơ sở dữ liệu đơn giản

Nếu bạn đang xây dựng một ứng dụng chỉ thực hiện các thao tác CRUD đơn giản, thời gian và công sức cần thiết để duy trì ORM có thể lớn hơn so với việc duy trì các truy vấn theo cách thủ công trong ứng dụng của bạn.

Khi tính toán hiệu suất cao là yếu tố quan trọng

Đối với nhiều ứng dụng, thời gian tính toán bổ sung và tài nguyên được thêm vào bởi ORM là không liên quan. Nhưng đối với các tác vụ như phân tích thời gian thực, trong đó mili giây quan trọng, điều đó có thể không được chấp nhận.

Khi bạn cần sử dụng mô hình phi chuẩn hóa

Trong một số tình huống, các nhà phát triển có thể muốn duy trì dữ liệu dư thừa trên nhiều bảng trong các dịch vụ web cơ sở dữ liệu của bạn—đây được gọi là mô hình phi chuẩn hóa. Điều đó có thể cải thiện hiệu suất khi một ứng dụng cần tạo các truy vấn quan hệ phức tạp nối nhiều bảng. Lập bản đồ các truy vấn này trong ORM không phải lúc nào cũng hiệu quả.

AWS có thể hỗ trợ các yêu cầu quản lý dữ liệu như thế nào?

AWS cung cấp một loạt các giải pháp cơ sở dữ liệu đám mây giúp quản lý dữ liệu hiệu quả và tiết kiệm chi phí.

Amazon Relational Database Service (Amazon RDS) là một dịch vụ được quản lý cho phép dễ dàng thiết lập, vận hành và mở rộng cơ sở dữ liệu quan hệ trên đám mây. Dịch vụ này cung cấp tính năng hiệu quả về chi phí và có thể thay đổi quy mô, trong khi vẫn quản lý được các tác vụ quản trị cơ sở dữ liệu tiêu tốn nhiều thời gian, giúp bạn thoải mái tập trung vào các ứng dụng và công việc của bạn.

Amazon Aurora là một dịch vụ cơ sở dữ liệu quan hệ hiện đại cung cấp hiệu suất cao và tính khả dụng cao trên quy mô lớn. Nó cung cấp các phiên bản mã nguồn mở hoàn toàn tương thích với MySQL và PostgreSQL cũng như một loạt các công cụ dành cho nhà phát triển để xây dựng các ứng dụng dựa trên phi máy chủ và máy học (ML).

Amazon Redshift hỗ trợ phân tích dữ liệu hiện đại ở quy mô lớn, mang lại hiệu năng giá tốt hơn tới ba lần và thông lượng tốt hơn tới bảy lần so với các kho dữ liệu đám mây khác.

Amazon DocumentDB (với khả năng tương thích MongoDB) là một cơ sở dữ liệu tài liệu doanh nghiệp nhanh, có khả năng mở rộng, có tính khả dụng cao và có cơ sở dữ liệu tài liệu được quản lý đầy đủ, lưu trữ dữ liệu trong các tài liệu tương tự như các đối tượng JSON. Chúng giúp truy xuất dữ liệu phức tạp bằng cách sử dụng mã dễ hiểu bằng ngôn ngữ OOP – ngôn ngữ quen thuộc nhất với các nhà phát triển của bạn, loại bỏ nhu cầu sử dụng các công cụ ORM.

Bắt đầu sử dụng các cơ sở dữ liệu trên AWS bằng cách tạo tài khoản miễn phí ngay hôm nay.