Object relational mapping là gì

Trong biện pháp trở nên tân tiến áp dụng website hiện giờ chắc rằng các bạn đã quen thuộc với cùng với từ khóa ORM(Object Relational Mapping). Khi mà thời đại của các framework ứng với các ngôn ngữ sẽ đăng quang một cách trẻ khỏe, ORM gần như là sự việc sàng lọc tuyệt đối của các đơn vị trở nên tân tiến hiện nay.

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

ORM góp chúng ta dễ dãi làm việc với dữ liệu vớiDatabase rộng, góp họ dễ dàng code, dễ maintain hơn . . . Ở nội dung bài viết này tôi đang reviews thông thường về ORM, đi sâu vào so sánh các điểm ưu thế, điểm yếu kém và khi nào áp dụng chúng trong những dự án thực tiễn.

Để mang lại dễ dàng theo dõi từ thời đặc điểm này của nội dung bài viết tôi xin được dùng ORM cầm đến nhiều từ Object Relational Mapping

*

1. ORM là gì ?

Theo Wikipedia:

Object-relational mapping (ORM, O/RM, và 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 persize object-relational mapping, although some programmers opt to 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 giúp ánh xạ những record tài liệu trong hệ quản ngại trị cơ sở dữ liệu sang trọng dạng đối tượng người tiêu dùng đang khái niệm trong số class - một tư tưởng phổ cập được sử dụng vào toàn bộ các ngôn ngữ văn minh thời buổi này như: Java, PHPhường, Ruby. Bạn có thể áp dụng kĩ thiệt này với bất kể dự án công trình làm sao mình thích.

*

Theo Martin Fowler tất cả nhị patterns được vận dụng cho những cách xây đắp ORM khác biệt.

Một sốORMnổi tiếng thực hiện Active Record hoàn toàn có thể nói thương hiệu là: Eloquent, CachePHP, JOOQ, TOPLINK

*

*

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

2. ORM hoạt động như thế nào ?

đặc biệt cơ phiên bản của ORM là gói gọn gàng CSDL trong một object. một phần của object sẽ chứa data, với phần còn sót lại lo câu hỏi data giải pháp xử lý như làm sao và phát triển thành nó thành DataBase tình dục.

ORM giải quyết sự việc đồng hóa giữa đẳng cấp dữ liệu trả về không giống nhau. Một mặt là các đại lý tài liệu, sinh hoạt kia dữ liệu được bộc lộ bên dưới dạng tập thích hợp những phiên bản ghi. Một mặt là các đối tượng người dùng, làm việc đó dữ liệu được hiện thị dưới dạng object

*

*

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

lấy một ví dụ về việc đào bới tìm kiếm kiếm danh sách bản ghi cùng với ĐK 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_danh mục.add(book);Với ORM, nó vẫn đơn giản dễ dàng nhỏng sau

book_danh sách = BookTable.query(author="Linus");Từ ví dụ đơn giản dễ dàng trên bọn họ thuận lợi nhận biết những ưu thế sau khi áp dụng ORM

Ưu điểm

Rất nhiều trang bị được thực hiện "trường đoản cú động", liên quan tới Việc xử lý tài liệu, trong ví dụ bên trên chúng ta không yêu cầu quyên tâm đến việc sử dụng vòng để convert data tự mysql ra, Chỉ cần biết đầu vào là từ khóa áp ra output trả lại 1 danh sách các cuốn sách gồm author=LinusViệc sử dụng ORM làm các bạn cần phải viết code theo quy mô MVC, khiến cho code của người sử dụng dễ dàng sửa đổi, duy trì hơn.quý khách hàng không cần phải biết không ít về MYSQL, chúng ta vẫn rất có thể tiếp cận thuận tiện cùng với ORM.Model k ràng buộc ngặt nghèo với ứng dụng, giỏi nói cách khác, Model thì linc hoạt, bởi vì vậy bạn có thể biến hóa hoặc áp dụng nó bất cứ khu vực nàoORM được cho phép chúng ta tận dụng tối đa điểm mạnh của OOPhường. như kế thừa tài liệu nhưng không hẳn đau đầu

Nhược điểm

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

Nlỗi ở trong phần điểm yếu mình bao gồm nói ORM sẽ có được performance lờ lững hơn đối với câu hỏi sử dụng raw sql. Dưới đấy là một những thống kê với Eloquent ORM của Laravel và 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

Ở phía trên những công ty phân tách vẫn insert số lượng nội dung bài viết không giống nhau trường đoản cú 1000 đến 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,320,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 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 trên ta tất cả biểu đồ dùng như sau

*

4.2 Update

Tại trên đây các nhà phân tách vẫn update số lượng bài viết không giống nhau từ bỏ 1000 mang lại 10000 cho cả 2 kinh nghiệm trong những vòng lặp.

Xem thêm: Quy Đổi Từ Bft Là Gì ? Qui Định Về Cấp Gió Và Sóng Ở Việt Nam

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

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

*

4.3 Select

Ở phía trên các lắp thêm nghiệm chia thành 3 lượt

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

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

Lí bởi vì tại chỗ này là: ORM nên thời gian tạo thành Model instances, tạo ra các property mang lại Mã Sản Phẩm với transsize đối tượng người sử dụng Mã Sản Phẩm thành tài liệu dục tình 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 đang convert từng code Eloquent ORM thành câu lệnh SQL thích hợp với tiếp đến thực thi trên tầng database và trả lại hiệu quả lại tầng application. Vì vậy thời gian để xúc tiến 1 tác vụ luôn luôn mất nhiều thời hạn rộng đối với Việc dùng raw sql.

Nhưng khoan, đừng gấp quan sát hồ hết số lượng trên nhưng mà gấp nói ORM là thiết bị loại bỏ.

Trong thực tiễn không có bất kì ai select vài ba nghìn bạn dạng ghi, tuyệt thực hiện bài toán tạo ra vài nghìn phiên bản ghi trong một lúc.

Tức là lúc con số phiên bản ghi càng không nhiều thì độ chênh lênh về năng suất giảm sút đáng chú ý. Lúc kia cộng thêm việc áp dụng phương pháp kỹ năng cache của ORM tạo cho vận dụng của người tiêu dùng cũng trợ thì đồng ý được đối với hồ hết tiện ích về tốc độ phân phát tiển ứng dụng(thời gian vạc triển), loại trừ câu hỏi sử dụng code lặp đi lặp lại, bảo mật xuất sắc rộng vào những sản phẩm công nghệ hoàn hảo và tuyệt vời 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, mình đã biểu hiện giải pháp buổi giao lưu của ORM, nêu các điểm ưu điểm và nhược điểm của ORM. Việc gồm bắt buộc áp dụng ORMhay không vẫn chính là vấn đề bàn cãi chưa tồn tại kết quả cuối cùng.

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

Xem thêm: Chưng Trình Đào Tạo Lcm Là Gì ? Giá Trị & Lợi Ích Của Chứng Chỉ Âm Nhạc

Cảm ơn chúng ta đã quan sát và theo dõi nội dung bài viết trên, vào bài viết bao gồm tìm hiểu thêm tự một trong những mối cung cấp.

Và nhặt nhặt linch tinch nhưng ko lưu giữ

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


Chuyên mục: Hỏi Đáp