Trong cách cải tiến và phát triển vận dụng website hiện thời chắc rằng các bạn đang thân quen với cùng với tự khóa ORM(Object Relational Mapping). Lúc nhưng mà thời đại của những framework ứng cùng với các ngôn ngữ đã lên ngôi một bí quyết khỏe khoắn, ORM gần như là sự chọn lựa tuyệt vời của các nhà cải cách và phát triển hiện nay.Bạn sẽ xem: Object relational mapping là gì

ORM góp bọn họ tiện lợi thao tác với tài liệu vớiDatabase hơn, góp bọn họ dễ code, dễ dàng maintain hơn . . . Tại bài viết này tôi đã ra mắt tầm thường về ORM, đi sâu vào đối chiếu các điểm ưu thế, điểm yếu cùng bao giờ vận dụng chúng trong những dự án thực tế.

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

Quý Khách sẽ xem: Object relational mapping là gì

Để đến dễ dàng quan sát và theo dõi trường đoản cú thời điểm đó của nội dung bài viết tôi xin được dùng ORM cầm cố cho nhiều từ bỏ 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 lấy phí & commercial packages available that perform object-relational mapping, although some programmers opt to lớn construct their own ORM tools.

Hiểu một giải pháp đơn giản và dễ dàng thì

ORM là một kỹ thuật thiết kế góp ánh xạ các record dữ liệu vào hệ cai quản trị cửa hàng tài liệu sang dạng đối tượng người dùng vẫn tư tưởng trong số class - một có mang phổ biến được thực hiện trong toàn bộ những ngữ điệu văn minh ngày này như: Java, PHP., Ruby. Quý Khách hoàn toàn có thể vận dụng kĩ thiệt này với bất kể dự án như thế nào mình thích.

*

Theo Martin Fowler gồm nhị patterns được vận dụng cho các cách thi công ORM khác biệt.

Một sốORMdanh tiếng sử dụng Active sầu Record có thể đề cập tên là: Eloquent, CachePHPhường, JOOQ, TOPLINK


*

*

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

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

Đặc biệt cơ bạn dạng của ORM là gói gọn cơ sở dữ liệu trong 1 object. một phần của object sẽ đựng data, và phần còn lại lo việc data xử trí nlỗi như thế nào cùng trở nên nó thành cơ sở dữ liệu quan hệ tình dục.

ORM giải quyết và xử lý vụ việc đồng hóa thân hình dạng tài liệu trả về không giống nhau. Một bên là các đại lý dữ liệu, nghỉ ngơi đó tài liệu được miêu tả dưới dạng tập hòa hợp các bản ghi.

Xem thêm: Điều Nào Là Đúng Khi Võ Sư Dùng Cuồng Phong Quyền Lên Mục Tiêu Tàng Hình?

Một mặt là những đối tượng người dùng, ngơi nghỉ kia tài liệu đc hiện thị lên dưới dạng object


*

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

Ví dụ về việc tìm tìm list bản ghi với điều kiện với sql thuần

book_danh sách = 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_các mục.add(book);Với ORM, nó sẽ đơn giản nhỏng sau

book_danh mục = BookTable.query(author="Linus");Từ ví dụ đơn giản và dễ dàng trên bọn họ tiện lợi nhận ra những ưu điểm sau khoản thời gian thực hiện ORM

Ưu điểm

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

Nhược điểm

Với từng framework đã có 1 thỏng viện ORM khác nhau, tất nhiên là bạn nên mất thời hạn học nó. Và vày bọn chúng là thỏng viện yêu cầu sẽ tương đối "nặng".Performance ổn so với những truy tìm vấn thông thường, mà lại Raw Squốc lộ đang luôn làm cho tốt hơn cùng với những dự án Khủng.ORM được xem là abstracts của DB. Nếu các bạn ko quan tâm tới các gì thực sự xẩy ra lúc thực hiện ORM. Nó rất có thể là mẫu mồi nhử cùng với số đông bài bác tân oán N + 1 query.4 Đánh giá bán performance của ORM

Nhỏng tại đoạn điểm yếu bản thân tất cả nói ORM sẽ sở hữu được performance lờ lững rộng đối với Việc thực hiện raw sql. Dưới đó là một thống kê lại 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

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,320,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 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
101000014301380145014trăng tròn,036,05

Từ bảng bên trên ta tất cả biểu đồ dùng nlỗi sau

4.2 Update

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 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 trang bị sau

4.3 Select

Ở đây các thiết bị nghiệm chia làm 3 lượt

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

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

Lí vày ở đây là: ORM cần thời gian sinh sản Model instances, tạo nên các property mang đến mã sản phẩm cùng transform đối tượng người sử dụng Mã Sản Phẩm thành tài liệu tình dục trước lúc triển khai câu hỏi tiếp xúc cùng với database. Tất cả các gì ẩn dưới nó là Laravel sẽ convert từng code Eloquent ORM thành câu lệnh SQL thích hợp với tiếp nối triển khai bên trên tầng database với trả lại hiệu quả lại tầng application. Vì vậy thời gian để thực hiện 1 tác vụ luôn mất không ít thời gian rộng so với vấn đề dùng raw sql.

Nhưng khoan, chớ vội vàng chú ý phần lớn số lượng trên mà cấp nói ORM là trang bị bỏ đi.

Trong thực tiễn không ai select vài ba ngàn bản ghi, tuyệt triển khai Việc tạo nên vài ba nghìn bạn dạng ghi vào một thời gian.

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

5. Tổng kết

Cảm ơn chúng ta đang theo dõi và quan sát nội dung bài viết bên trên, vào bài viết bao gồm tham khảo tự một số mối cung cấp.

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 *