Trong biện pháp cải cách và phát triển vận dụng website bây giờ chắc hẳn các bạn đã quen cùng với cùng với từ bỏ khóa ORM(Object Relational Mapping). Khi nhưng thời đại của những framework ứng cùng với những ngữ điệu đã lên ngôi một cách trẻ khỏe, ORM gần như là việc lựa chọn hoàn hảo của những đơn vị cải cách và phát triển bây chừ.

Bạn đang xem: Orm là gì? nên hay không nên sử dụng nó trong dự án của bạn

ORM góp họ dễ ợt làm việc với dữ liệu vớiDatabase hơn, góp chúng ta dễ dàng code, dễ maintain hơn . . . Tại bài viết này tôi sẽ ra mắt phổ biến về ORM, đi sâu vào phân tích những điểm ưu điểm, điểm yếu kém và khi nào vận dụng bọn chúng trong số dự án thực tiễn.

Để đến dễ theo dõi từ bỏ thời điểm này của bài viết tôi xin được dùng ORM vắt đến nhiều trường đoản cú Object Relational Mapping

*

1. ORM là gì ?

Theo Wikipedia:

Object-relational mapping (ORM, O/RM, and 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 không tính phí and commercial packages available that persize object-relational mapping, although some programmers opt lớn construct their own ORM tools.

Hiểu một bí quyết đơn giản thì

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

*

Theo Martin Fowler tất cả hai patterns được vận dụng cho những giải pháp xây cất ORM khác nhau.

Một sốORMkhét tiếng áp dụng Active sầu Record hoàn toàn có thể kể tên là: Eloquent, CachePHPhường., JOOQ, TOPLINK

*

*

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

2. ORM vận động thế nào ?

không giống nhau cơ bản của ORM là gói gọn DataBase trong 1 object. một trong những phần của object đã chứa data, và phần còn sót lại lo câu hỏi data cách xử lý như như thế nào với trở nên nó thành CSDL quan hệ giới tính.

ORM giải quyết và xử lý vụ việc nhất quán giữa hình dáng dữ liệu trả về khác nhau. Một mặt là cơ sở tài liệu, nghỉ ngơi kia dữ liệu được bộc lộ dưới dạng tập hợp những phiên bản ghi. Một mặt là các đối tượng, sinh sống đó dữ liệu đc hiện lên dưới dạng object

*

*

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

Ví dụ về việc đào bới tìm kiếm kiếm danh sách bản ghi với điều kiện với sql thuần

book_danh mục = 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ó sẽ đơn giản dễ dàng nhỏng sau

book_danh sách = BookTable.query(author="Linus");Từ ví dụ đơn giản trên họ dễ ợt nhận thấy các ưu điểm sau khi áp dụng ORM

Ưu điểm

Rất những thứ được thực hiện "trường đoản cú động", liên quan tới câu hỏi up date dữ liệu, vào ví dụ bên trên bọn họ ko nên quan tâm tới sự việc cần sử dụng vòng nhằm convert data tự mysql ra, Chỉ nên biết nguồn vào là từ khóa áp ra output trả lại 1 list các quyển sách bao gồm author=LinusViệc áp dụng ORM có tác dụng bạn bắt buộc phải viết code theo mô hình MVC, khiến code của người tiêu dùng dễ sửa đổi, duy trì rộng.Quý Khách ko nên biết quá nhiều về MYSquốc lộ, chúng ta vẫn hoàn toàn có thể tiếp cận dễ dàng với ORM.Model k ràng buộc chặt chẽ cùng với áp dụng, giỏi có thể nói, Model thì linc hoạt, do vậy chúng ta cũng có thể chuyển đổi hoặc thực hiện nó bất kể địa điểm nàoORM chất nhận được các bạn tận dụng điểm mạnh của OOPhường nhỏng kế thừa tài liệu nhưng mà chưa hẳn nhức đầu

Nhược điểm

Với mỗi framework đã có 1 thư viện ORM không giống nhau, tất yếu là chúng ta đề nghị mất thời hạn học nó. Và vị chúng là tlỗi viện buộc phải sẽ rất "nặng".Performance ổn định so với những truy vấn thường thì, cơ mà Raw Squốc lộ đang luôn có tác dụng tốt rộng với các dự án lớn.ORM được coi là abstracts của DB. Nếu chúng ta ko quan tâm đến các gì thực sự xẩy ra lúc thực hiện ORM. Nó hoàn toàn có thể là mẫu bả với phần lớn bài tân oán N + 1 query.4 Đánh giá bán performance của ORM

Như ở trong phần yếu điểm mình bao gồm nói ORM sẽ sở hữu performance đủng đỉnh rộng đối với câu hỏi áp dụng raw sql. Dưới đó là một những thống kê cùng với Eloquent ORM của Laravel và raw mysql.Môi trường:

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

4.1 Insert

Ở phía trên các đơn vị thể nghiệm đã insert số lượng nội dung bài viết không giống nhau trường đoản cú 1000 cho 10000 cho tất cả 2 kỹ năng trong mỗi 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
880003360352033803420,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 trên ta tất cả biểu thứ nlỗi sau

*

4.2 Update

Tại đây các bên thử nghiệm đang update số lượng bài viết không giống nhau trường đoản cú 1000 cho 10000 cho cả 2 kỹ năng trong những vòng lặp.

Xem thêm: Tiểu Sử Ca Sĩ Quang Lê Sinh Năm, Ca Sĩ Quang Lê Là Ai

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
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,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 có biều đồ vật sau

*

4.3 Select

Tại phía trên các thiết bị nghiệm chia làm 3 lượt

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

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

Lí bởi vì ở đây là: ORM cần thời gian tạo thành Model instances, tạo nên những property cho model và transkhung đối tượng model thành tài liệu tình dục trước khi tiến hành Việc giao tiếp cùng với database. Tất cả hầu như gì phía sau nó là Laravel sẽ convert từng code Eloquent ORM thành câu lệnh SQL phù hợp và tiếp nối thực thi trên tầng database và trả lại tác dụng lại tầng application. Vì vậy thời gian nhằm tiến hành 1 tác vụ luôn mất không ít thời hạn hơn đối với Việc sử dụng raw sql.

Nhưng khoan, chớ cấp nhìn đông đảo số lượng bên trên nhưng mà gấp nói ORM là đồ vật vứt đi.

Trong thực tiễn không có bất kì ai select vài nghìn bạn dạng ghi, giỏi thực hiện câu hỏi tạo nên vài ba ngàn bản ghi vào một thời gian.

Tức là khi số lượng bản ghi càng không nhiều thì độ chênh lênh về hiệu suất giảm sút đáng kể. Lúc kia cộng thêm câu hỏi thực hiện cách kĩ thuật cađậy của ORM làm cho ứng dụng của chúng ta cũng tạm đồng ý được so với hầu hết tác dụng về vận tốc phát tiển ứng dụng(thời gian phạt triển), vứt bỏ câu hỏi áp dụng code lặp đi lặp lại, bảo mật giỏi hơn vào nhiều trang bị tuyệt đối hoàn hảo khác nữa.

5. Tổng kết

Tóm lại, đi xuyên suốt cả nội dung bài viết, mình đã biểu thị bí quyết hoạt động của ORM, nêu các điểm ưu điểm cùng điểm yếu kém của ORM. Việc bao gồm buộc phải áp dụng ORMhay không vẫn là chủ đề bàn cãi chưa xuất hiện kết quả cuối cùng.

Về tay nghề của bạn dạng thân Khi làm cho dự án công trình, bản thân thường xuyên mix thân ORM cùng Raw SQL thế nào cho kết quả, với những truy tìm vấn thường thì, ORM là sàng lọc của chính mình. Với những trường hợp buộc phải thao tác làm việc với nhiều bạn dạng ghi,raw Squốc lộ có vẻ như hợp lý và phải chăng rộng. Nhưng khi sử dụng raw sql bạn phải thực thụ cảnh giác về sự việc Sql injection.

Cảm ơn các bạn sẽ quan sát và theo dõi bài viết trên, vào bài viết bao gồm tham khảo từ một số mối cung cấp.

Và lặt nhặt linh tinh mà ko ghi nhớ

*
. Hẹn gặp mặt lại các bạn trong số nội dung bài viết sau