Trong bí quyết phát triển ứng dụng web bây chừ chắc rằng chúng ta vẫn thân quen với với tự khóa ORM(Object Relational Mapping). khi cơ mà thời đại của những framework ứng cùng với các ngôn từ đang lên ngôi một biện pháp khỏe mạnh, ORM gần như là sự chọn lọc hoàn hảo và tuyệt vời nhất của các đơn vị trở nên tân tiến hiện giờ.Bạn sẽ 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ễ maintain hơn . . . Tại bài viết này tôi vẫn trình làng bình thường về ORM, đi sâu vào so với những điểm điểm mạnh, nhược điểm cùng bao giờ áp dụng bọn chúng trong số dự án công trình thực tiễn.

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

Để cho dễ theo dõi trường đoản cú thời điểm này của nội dung bài viết tôi xin được dùng ORM cầm cho cụm tự 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 không tính phí & commercial packages available that perkhung object-relational mapping, although some programmers opt khổng lồ construct their own ORM tools.

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

ORM là 1 trong những kỹ thuật lập trình sẵn góp ánh xạ các record tài liệu vào hệ quản ngại trị đại lý dữ liệu thanh lịch dạng đối tượng người dùng đã quan niệm trong các class - một tư tưởng thông dụng được áp dụng vào tất cả những ngôn từ văn minh thời buổi này như: Java, PHP, Ruby. quý khách hàng hoàn toàn có thể áp dụng kĩ thật này cùng với bất cứ dự án như thế nào bạn thích.

*

Theo Martin Fowler tất cả nhì patterns được áp dụng cho các phương pháp kiến thiết ORM không giống nhau.

Một sốORMnổi tiếng áp dụng Active sầu Record rất có thể kể thương hiệu 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 sao ?

dị kì cơ phiên bản của ORM là gói gọn DataBase trong một object. 1 phần của object đã đựng data, với phần còn lại lo vấn đề data cách xử lý như như thế nào cùng thay đổi nó thành DataBase quan hệ giới tính.

ORM giải quyết vấn đề đồng hóa giữa mẫu mã tài liệu trả về khác biệt. Một mặt là cơ sở tài liệu, ở kia dữ liệu được biểu đạt dưới dạng tập hợp các phiên bản ghi. Một bên là các đối tượng, nghỉ ngơi kia dữ liệu được hiện lên bên dưới dạng object


*

3. Ưu và nhược điểm ORM

lấy ví dụ về việc đào bới tìm kiếm kiếm list phiên bản ghi cùng với ĐK cùng 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ó sẽ đơn giản nlỗi sau

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

Ưu điểm

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

Nhược điểm

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

Nlỗi ở vị trí điểm yếu kém mình gồm nói ORM sẽ có được performance chậm trễ hơn so với bài toán áp dụng raw sql. Dưới đó là một thống kê với Eloquent ORM của Laravel cùng 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

Ở đây các bên xem sét đang insert số lượng nội dung bài viết không giống nhau từ bỏ 1000 mang lại 10000 cho cả 2 kỹ năng trong mỗi vòng lặp.

Xem thêm: "Người Ủy Thác Tiếng Anh Là Gì, Ủy Thác Tiếng Anh Là Gì

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
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,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
101000014301380145014đôi mươi,036,05

Từ bảng bên trên ta gồm biểu thiết bị như 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
8800033603520338034trăng tròn,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
101000014301380145014đôi mươi,036,05

Từ bảng trên ta bao gồm biều trang bị sau

4.3 Select

Tại phía trên những lắp thêm nghiệm chia làm 3 lượt

4.4 Đánh giá bán cùng phân tích

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

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

Nhưng khoan, đừng vội vàng quan sát gần như con số bên trên mà lại vội nói ORM là đồ dùng bỏ đi.

Trong thực tế không một ai select vài ngàn bạn dạng ghi, tuyệt tiến hành câu hỏi tạo nên vài nghìn bản ghi trong một lúc.

Tức là lúc số lượng phiên bản ghi càng ít thì độ chênh lênh về hiệu suất sụt giảm đáng chú ý. Lúc kia cộng thêm bài toán áp dụng giải pháp kỹ năng cabít của ORM tạo nên vận dụng của người tiêu dùng cũng tạm chấp nhận được đối với các ích lợi về tốc độ vạc tiển ứng dụng(thời gian phạt triển), sa thải việc sử dụng code lặp đi tái diễn, bảo mật thông tin giỏi hơn vào những lắp thêm tuyệt đối khác nữa.

5. Tổng kết

Tóm lại, đi xuyên thấu cả nội dung bài viết, mình đã bộc lộ giải pháp hoạt động vui chơi của ORM, nêu các điểm ưu thế và nhược điểm của ORM. Việc có bắt buộc sử dụng ORMhay là không vẫn là chủ đề tranh biện chưa tồn tại hồi kết.

Xem thêm: Đâu Là Sự Khác Biệt Giữa " To Some Extent Là Gì ? 'To Some Extent/Degree' Là Gì

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


Chuyên mục: KHÁI NIỆM LÀ GÌ
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 *