Trong cách cải tiến và phát triển áp dụng website hiện nay có lẽ rằng các bạn đang thân quen với với tự khóa ORM(Object Relational Mapping). khi nhưng mà 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 khỏe, ORM gần như là sự chắt lọc tuyệt vời nhất của các bên cải tiến và phát triển hiện nay.

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

ORM góp bọn họ thuận tiện làm việc với dữ liệu vớiDatabase rộng, góp bọn họ dễ code, dễ dàng maintain hơn . . . Tại nội dung bài viết này tôi đang giới thiệu chung về ORM, đi sâu vào so với các điểm điểm mạnh, yếu điểm với khi nào áp dụng chúng trong các dự án công trình thực tiễn.

Để cho dễ theo dõi từ bỏ thời điểm đó của bài viết tôi xin được dùng ORM nỗ lực mang lại 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 miễn phí và commercial packages available that persize object-relational mapping, although some programmers opt to construct their own ORM tools.

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

ORM là một trong kỹ thuật xây dựng góp ánh xạ những record tài liệu vào hệ quản ngại trị cửa hàng tài liệu sang dạng đối tượng sẽ tư tưởng trong các class - một định nghĩa phổ cập được sử dụng vào tất cả các ngôn ngữ tân tiến thời buổi này như: Java, PHPhường, Ruby. Quý Khách có thể vận dụng kĩ thật này cùng với bất cứ dự án như thế nào bạn muốn.

*

Theo Martin Fowler tất cả hai patterns được áp dụng cho những phương pháp xây đắp ORM khác biệt.

Một sốORMdanh tiếng thực hiện Active Record hoàn toàn có thể kể tên là: Eloquent, CachePHP, JOOQ, TOPLINK

*

*

Một số ORM lừng danh thực hiện Data Mapper như: Doctrine, Hibernate, SqlAlchemy

2. ORM vận động ra làm sao ?

khác lại cơ bản của ORM là gói gọn cơ sở dữ liệu trong 1 object. một trong những phần của object đã đựng data, cùng phần còn sót lại lo việc data cách xử trí nlỗi như thế nào với phát triển thành nó thành cơ sở dữ liệu quan hệ giới tính.

ORM xử lý vấn đề đồng nhất giữa giao diện dữ liệu trả về không giống nhau. Một mặt là cửa hàng tài liệu, ở đó tài liệu được trình bày bên dưới dạng tập thích hợp các bản ghi. Một mặt là các đối tượng người sử dụng, sống kia dữ liệu đc hiện thị lên bên dưới dạng object

*

*

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

lấy ví dụ như về việc đào bới tìm kiếm kiếm danh sách bạn dạng ghi cùng với điều kiện cùng với sql thuần

book_list = 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_menu.add(book);Với ORM, nó đang dễ dàng và đơn giản nlỗi sau

book_các mục = BookTable.query(author="Linus");Từ ví dụ đơn giản dễ dàng bên trên chúng ta dễ dàng phân biệt những ưu thế sau khi thực hiện ORM

Ưu điểm

Rất các trang bị được triển khai "trường đoản cú động", tương quan cho tới bài toán cập nhật dữ liệu, vào ví dụ bên trên bọn họ không buộc phải quan tâm tới sự việc dùng vòng nhằm convert data tự mysql ra, Chỉ nên biết đầu vào là keywords Áp sạc ra trả lại 1 danh sách các cuốn sách tất cả author=LinusViệc thực hiện ORM làm các bạn bắt buộc phải viết code theo mô hình MVC, khiến cho code của khách hàng dễ sửa thay đổi, bảo trì hơn.Quý Khách ko cần biết rất nhiều về MYSQL, bạn vẫn có thể tiếp cận tiện lợi cùng với ORM.Model k ràng buộc nghiêm ngặt với ứng dụng, xuất xắc nói theo một cách khác, Model thì linch hoạt, vì chưng vậy bạn có thể đổi khác hoặc sử dụng nó bất cứ địa điểm nàoORM cho phép bạn tận dụng ưu thế của OOP nhỏng thừa kế dữ liệu mà lại không phải nhức đầu

Nhược điểm

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

Nlỗi ở đoạn yếu điểm mình có nói ORM sẽ có performance lờ đờ rộng so với việc áp dụng raw sql. Dưới đây là một thống kê cùng với Eloquent ORM của Laravel và raw mysql.Môi trường:

CPU: Quad core Intel Xeon E31220Network: Broadcom NetXtreme BCM5722 Gigabit Ethernet PCI ExpressMemory: 8.0 GBHDD: 2000.4 GBOperating System: CentOS

4.1 Insert

Tại phía trên các bên thể nghiệm đang insert con số bài viết khác nhau trường đoản cú 1000 đến 10000 cho cả 2 kinh nghiệm trong mỗi vòng lặp.

Eloquent ORM

Số lượtSố bài 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
8800033603520338034đôi mươi,087,17
990003800390038803860,052,91
10100004270436043904340,062,44

Raw SQL

Số lượtSố bài 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
101000014301380145014trăng tròn,036,05

Từ bảng bên trên ta có biểu đồ như sau

*

4.2 Update

Tại đây các công ty phân tích sẽ update số lượng bài viết khác biệt trường đoản cú 1000 đến 10000 cho cả 2 kinh nghiệm trong những vòng lặp.

Xem thêm: Federal Reserve Là Gì Và Sự Tác Động Đến Thị Trường? Federal Reserve Là Gì

Eloquent ORM

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)
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,2trăng tròn,98
55000725,5740,94780,15748,928,17
66000867,93869,12891,27876,113,14
770001000996,14949,05981,728,36
880001150112011301133,315,27
990001190127012201226,740,41
10100001430138014501420,036,05

Từ bảng bên trên ta gồm biều vật sau

*

4.3 Select

Ở phía trên những vật dụng nghiệm chia thành 3 lượt

4.4 Đánh giá với phân tích

Từ các số liệu bên trên có thể tiện lợi thấy được performance của raw sql cụ thể tốt hơn so với ORM trong toàn bộ các hành vi select, insert, update.

Lí bởi tại đây là: ORM cần thời hạn sản xuất Model instances, tạo thành các property mang lại Model và transsize đối tượng người dùng Model thành tài liệu quan hệ giới tính trước lúc tiến hành Việc giao tiếp cùng với database. Tất cả hầu hết gì ẩn dưới nó là Laravel sẽ convert từng code Eloquent ORM thành câu lệnh Squốc lộ tương thích cùng tiếp đến xúc tiến trên tầng database và trả lại tác dụng lại tầng application. Vì vậy thời gian để thực hiện 1 tác vụ luôn mất nhiều thời hạn rộng đối với câu hỏi cần sử dụng raw sql.

Nhưng khoan, chớ vội nhìn các số lượng bên trên mà lại vội nói ORM là vật dụng loại bỏ.

Trong thực tiễn không có bất kì ai select vài ba ngàn bản ghi, tuyệt tiến hành vấn đề tạo thành vài ngàn bạn dạng ghi trong một dịp.

Tức là khi con số bản ghi càng ít thì độ chênh lênh về năng suất sụt giảm đáng kể. Lúc kia thêm vào đó việc áp dụng biện pháp kỹ năng cache của ORM tạo nên vận dụng của chúng ta cũng nhất thời đồng ý được đối với đông đảo tiện ích về vận tốc phát tiển ứng dụng(thời hạn 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 những sản phẩm công nghệ tuyệt vời và hoàn hảo nhất khác nữa.

5. Tổng kết

Tóm lại, đi xuyên suốt cả bài viết, tôi đã biểu hiện bí quyết buổi giao lưu của ORM, nêu những điểm điểm mạnh và nhược điểm của ORM. Việc bao gồm buộc phải áp dụng ORMhay là không vẫn là vấn đề tranh cãi chưa xuất hiện hồi kết.

Về tay nghề của bạn dạng thân lúc làm cho dự án, bản thân thường mix thân ORM và Raw SQL làm sao để cho hiệu quả, với các truy hỏi vấn thường thì, ORM là chọn lựa của bản thân. Với những trường hợp bắt buộc thao tác làm việc với rất nhiều phiên bản ghi,raw SQL có vẻ hợp lí hơn. Nhưng khi sử dụng raw sql các bạn bắt buộc thực thụ cẩn trọng về vụ việc Sql injection.

Cảm ơn các bạn vẫn theo dõi nội dung bài viết bên trên, vào bài viết gồm tham khảo từ một số trong những mối cung cấp.

Và lặt nhặt linch tinch nhưng không nhớ

*
. Hẹn gặp mặt lại chúng ta trong các nội dung bài viết sau

Bài viết liên quan

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *