Object relational mapping là gì

  -  

Trong biện pháp phát triển vận dụng website hiện nay chắc rằng chúng ta vẫn quen thuộc cùng với cùng với từ bỏ khóa ORM(Object Relational Mapping). Lúc nhưng thời đại của các framework ứng với những ngôn từ đang lên ngôi một cách mạnh bạo, ORM gần như là là sự việc chọn lựa tuyệt vời nhất của các bên cách tân và phát triển hiện nay.

Bạn đang xem: Object relational mapping là gì

ORM góp chúng ta thuận tiện thao tác cùng với dữ liệu vớiDatabase rộng, giúp họ dễ code, dễ dàng maintain rộng . . . Ở bài viết này tôi đã giới thiệu tầm thường về ORM, đi sâu vào so sánh những điểm ưu điểm, yếu điểm với khi nào áp dụng chúng trong những dự án công trình thực tiễn.

Để đến dễ theo dõi và quan sát trường đoản cú thời điểm đó của bài viết tôi xin được sử dụng ORM cầm cố mang đến các từ bỏ Object Relational Mapping

*

1. ORM là gì ?

Theo Wikipedia:

Object-relational mapping (ORM, O/RM, & O/R mapping tool) in computer science is a programming technique for converting data between incompatible type systems using object-oriented programming languages. This creates, in effect, a "virtual object database" that can be used from within the programming language. There are both free và commercial packages available that perkhung object-relational mapping, although some programmers opt to lớn construct their own ORM tools.

Hiểu một phương pháp đơn giản thì

ORM là 1 trong nghệ thuật thiết kế giúp ánh xạ các record tài liệu trong hệ quản ngại trị các đại lý dữ liệu quý phái dạng đối tượng người sử dụng sẽ có mang trong các class - một định nghĩa thông dụng được áp dụng trong tất cả những ngôn ngữ tiến bộ thời buổi này như: Java, PHP, Ruby. Quý khách hàng rất có thể áp dụng kĩ thiệt này cùng với bất kể dự án như thế nào mình thích.

*

Theo Martin Fowler bao gồm nhì patterns được vận dụng cho các bí quyết xây dựng ORM khác biệt.

Một sốORMdanh tiếng sử dụng Active sầu Record có thể đề cập thương hiệu là: Eloquent, CachePHP., JOOQ, TOPLINK

*

*

Một số ORM khét tiếng sử dụng Data Mapper như: Doctrine, Hibernate, SqlAlchemy

2. ORM chuyển động như thế nào ?

dị biệt cơ bản của ORM là gói gọn DataBase trong 1 object. 1 phần của object vẫn chứa data, và phần sót lại lo vấn đề data xử lý nhỏng nào và trở thành nó thành CSDL quan hệ.

ORM giải quyết vụ việc nhất quán thân dạng hình dữ liệu trả về khác nhau. Một bên là đại lý tài liệu, ngơi nghỉ kia dữ liệu được diễn tả dưới dạng tập vừa lòng các phiên bản ghi. Một mặt là các đối tượng người dùng, ngơi nghỉ kia dữ liệu đc hiện thị lên dưới dạng object

*

*

3. Ưu cùng điểm yếu ORM

ví dụ như về việc đào bới tìm kiếm kiếm list phiên bản ghi cùng với điều kiện với sql thuần

book_menu = new List();sql = "SELECT * FROM library WHERE author = "Linus"";data = query(sql);while (row = data.next()) book = new Book(); book.setAuthor(row.get("author"); book_list.add(book);Với ORM, nó đã dễ dàng và đơn giản nhỏng sau

book_danh mục = BookTable.query(author="Linus");Từ ví dụ dễ dàng và đơn giản bên trên bọn họ dễ ợt nhận biết những điểm mạnh sau khoản thời gian áp dụng ORM

Ưu điểm

Rất những đồ vật được thực hiện "từ động", liên quan tới vấn đề cập nhật dữ liệu, trong ví dụ bên trên bọn họ ko cần quyên tâm tới việc sử dụng vòng nhằm convert data trường đoản cú mysql ra, Chỉ nên biết đầu vào là keyword đầu ra output trả lại 1 danh sách những cuốn sách bao gồm author=LinusViệc áp dụng ORM có tác dụng chúng ta sẽ phải viết code theo quy mô MVC, khiến cho code của chúng ta dễ sửa thay đổi, gia hạn rộng.Bạn ko cần phải biết không ít về MYSQL, các bạn vẫn hoàn toàn có thể tiếp cận dễ ợt cùng với ORM.Model k buộc ràng ngặt nghèo cùng với ứng dụng, xuất xắc nói theo cách khác, Model thì linch hoạt, vì chưng vậy bạn cũng có thể biến đổi hoặc sử dụng nó bất kể chỗ nàoORM chất nhận được chúng ta tận dụng tối đa ưu điểm của OOP nlỗi thừa kế tài liệu cơ mà chưa phải nhức đầu

Nhược điểm

Với mỗi framework đã có một thư viện ORM không giống nhau, tất yếu là các bạn nên mất thời gian học nó. Và bởi bọn chúng là tlỗi viện đề nghị sẽ khá "nặng".Performance ổn định đối với những truy vấn thông thường, dẫu vậy Raw SQL đang luôn luôn làm xuất sắc hơn với các dự án bự.ORM được xem là abstracts của DB. Nếu bạn ko quyên tâm tới những gì thực thụ xảy ra Khi sử dụng ORM. Nó hoàn toàn có thể là mẫu bẫy với phần đa bài xích toán N + 1 query.4 Đánh giá performance của ORM

Nhỏng ở vị trí yếu điểm bản thân tất cả nói ORM sẽ có được performance đủng đỉnh rộng đối với vấn đề áp dụng raw sql. Dưới đấy là một thống kê lại với Eloquent ORM của Laravel cùng raw mysql.Môi trường:

CPU: Quad core Hãng sản xuất Intel Xeon E31220Network: Broadcom NetXtreme BCM5722 Gigabit Ethernet PCI ExpressMemory: 8.0 GBHDD: 2000.4 GBOperating System: CentOS

4.1 Insert

Ở trên đây các bên phân tách vẫn insert con số bài viết không giống nhau tự 1000 mang lại 10000 cho cả 2 kỹ năng trong những vòng lặp.

Eloquent ORM

Số lượtSố bài bác viếtLượt 1 (ms)Lượt 2(ms)Lượt 3 (ms)Trung bình cùng (ms)Sai lệch (ms)
11000665,25619,5585,6623,539,97
220001150114011101133,3trăng tròn,81
330001490149014201466,740,41
440001770179016701743,364,29
550002080209022202130,078,10
660002540251025602536,725,16
770002930301030803006,775,05
8800033603520338034trăng tròn,087,17
990003800390038803860,052,91
10100004270436043904340,062,44

Raw SQL

Số lượtSố bài xích viếtLượt 1 (ms)Lượt 2(ms)Lượt 3 (ms)Trung bình cộng (ms)Sai lệch (ms)
11000195,81189,62180,1188,57,91
22000322,78335,64307,01321,814,33
33000413,4437,62458,24436,422,44
44000598,87567,57559,01575,220,98
55000725,5740,94780,15748,928,17
66000867,93869,12891,27876,113,14
770001000996,14949,05981,728,36
880001150112011301133,315,27
990001190127012201226,740,41
101000014301380145014đôi mươi,036,05

Từ bảng bên trên ta bao gồm biểu thiết bị như sau

*

4.2 Update

Ở trên đây các bên thể nghiệm vẫn update con số nội dung bài viết khác biệt tự 1000 đến 10000 cho cả 2 kĩ thuật trong mỗi vòng lặp.

Xem thêm: Download Asio Là Gì ? Thông Tin, Link Download, File Hỗ Trợ Asio Là Gì Vậy

Eloquent ORM

Số lượtSố bài bác viếtLượt 1 (ms)Lượt 2(ms)Lượt 3 (ms)Trung bình cộng (ms)Sai lệch (ms)
11000305,59316,06297,93306,59,10
22000522,06565,12543,43543,521,53
33000778,4772,33790,52780,49,26
440001040101010801043,335,11
550001290124012601263,325,16
660002540251025602536,725,16
770002930301030803006,775,05
880003360352033803420,087,17
990003800390038803860,052,91
10100004270436043904340,062,44

Raw SQL

Số lượtSố bài bác viếtLượt 1 (ms)Lượt 2(ms)Lượt 3 (ms)Trung bình cộng (ms)Sai lệch (ms)
11000195,81189,62180,1188,57,91
22000322,78335,64307,01321,814,33
33000413,4437,62458,24436,422,44
44000598,87567,57559,01575,2đôi mươi,98
55000725,5740,94780,15748,928,17
66000867,93869,12891,27876,113,14
770001000996,14949,05981,728,36
880001150112011301133,315,27
990001190127012201226,740,41
101000014301380145014đôi mươi,036,05

Từ bảng trên ta tất cả biều trang bị sau

*

4.3 Select

Tại phía trên các đồ vật nghiệm chia làm 3 lượt

4.4 Đánh giá bán và phân tích

Từ các số liệu bên trên rất có thể dễ ợt thấy được performance của raw sql ví dụ xuất sắc rộng đối với ORM vào toàn bộ các hành động select, insert, update.

Lí bởi tại chỗ này là: ORM nên thời hạn tạo nên Model instances, tạo nên những property mang lại Model cùng transsize đối tượng người sử dụng Mã Sản Phẩm thành tài liệu quan hệ tình dục trước khi triển khai vấn đề giao tiếp cùng với database. Tất cả số đông gì phía sau nó là Laravel vẫn convert từng code Eloquent ORM thành câu lệnh SQL tương thích cùng sau đó tiến hành bên trên tầng database cùng trả lại tác dụng lại tầng application. Vì vậy thời gian nhằm thực thi 1 tác vụ luôn mất quá nhiều thời gian hơn so với câu hỏi cần sử dụng raw sql.

Nhưng khoan, đừng cấp nhìn phần đông con số bên trên nhưng mà gấp nói ORM là thứ bỏ đi.

Trong thực tiễn không có bất kì ai select vài ngàn bạn dạng ghi, hay tiến hành bài toán tạo ra vài ba nghìn bạn dạng ghi trong một lúc.

Tức là khi số lượng phiên bản ghi càng ít thì độ chênh lênh về hiệu suất giảm sút đáng chú ý. Lúc đó thêm vào đó câu hỏi sử dụng biện pháp kinh nghiệm cabít của ORM khiến cho ứng dụng của người tiêu dùng cũng tạm thời gật đầu được so với phần đông lợi ích về tốc độ phạt tiển ứng dụng(thời gian phân phát triển), loại trừ việc áp dụng code lặp đi tái diễn, bảo mật giỏi rộng vào nhiều đồ vật tuyệt vời nhất không giống nữa.

5. Tổng kết

Tóm lại, đi xuyên thấu cả nội dung bài viết, tôi đã miêu tả cách hoạt động vui chơi của ORM, nêu những điểm ưu thế với điểm yếu kém của ORM. Việc tất cả phải thực hiện ORMhay là không vẫn luôn là chủ đề tranh luận chưa tồn tại hồi kết.

Về tay nghề của bản thân Lúc có tác dụng dự án công trình, mình hay mix thân ORM và Raw SQL sao để cho công dụng, cùng với các truy vấn thường thì, ORM là tuyển lựa của bản thân mình. Với các tình huống buộc phải thao tác với tương đối nhiều bạn dạng ghi,raw SQL dường như hợp lý hơn. Nhưng khi sử dụng raw sql bạn yêu cầu thực sự cẩn trọng về vụ việc Sql injection.

Xem thêm: Chi Tiết Bản Đồ Quy Hoạch Quận 3 Tphcm Giai Đoạn 2021, Bản Đồ Quy Hoạch Sử Dụng Đất Quận 3

Cảm ơn các bạn sẽ quan sát và theo dõi nội dung bài viết bên trên, trong bài viết gồm tìm hiểu thêm tự một số trong những nguồn.

Và lặt nhặt linch tinh mà lại không lưu giữ

*
. Hẹn chạm chán lại chúng ta trong những nội dung bài viết sau