Object relational mapping là gì

Trong phương pháp trở nên tân tiến áp dụng website hiện thời có lẽ rằng chúng ta đã quen thuộc với cùng với tự khóa ORM(Object Relational Mapping). Khi nhưng thời đại của các framework ứng với các ngữ điệu sẽ lên ngôi một bí quyết trẻ khỏe, ORM gần như là là sự việc sàng lọc hoàn hảo nhất của những nhà phát triển hiện nay.

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

ORM góp chúng ta thuận lợi làm việ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 sẽ trình làng bình thường về ORM, đi sâu vào so sánh các điểm ưu thế, điểm yếu với lúc nào vận dụng chúng trong số dự án thực tiễn.

Để đến dễ theo dõi và quan sát trường đoản cú thời đặc điểm đó của nội dung bài viết tôi xin được sử dụng ORM chũm mang đến các 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 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 cách đơn giản dễ dàng thì

ORM là 1 chuyên môn xây dựng giúp ánh xạ những record tài liệu trong hệ quản ngại trị đại lý tài liệu sang trọng dạng đối tượng người dùng sẽ có mang trong những class - một có mang phổ biến được sử dụng trong toàn bộ những ngữ điệu văn minh ngày này như: Java, PHP., Ruby. Quý Khách có thể áp dụng kĩ thiệt này với bất kể dự án công trình nào mình thích.

*

Theo Martin Fowler bao gồm nhì patterns được vận dụng cho những giải pháp xây dựng ORM không giống nhau.

Một sốORMnổi tiếng sử dụng Active sầu Record rất có thể nói tên là: Eloquent, CachePHP.., JOOQ, TOPLINK

*

*

Một số ORM nổi tiếng sử dụng Data Mapper như: Doctrine, Hibernate, SqlAlchemy

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

khác nhau cơ phiên bản của ORM là gói gọn gàng CSDL trong 1 object. 1 phần của object đang cất data, cùng phần sót lại lo câu hỏi data giải pháp xử lý nlỗi làm sao với trở nên nó thành DataBase quan hệ.

ORM giải quyết và xử lý sự việc đồng hóa thân hình dáng dữ liệu trả về khác biệt. Một mặt là cửa hàng dữ liệu, làm việc kia tài liệu được biểu lộ dưới dạng tập hòa hợp các bạn dạng ghi. Một bên là các đối tượng người dùng, ở kia dữ liệu đc hiện lên bên dưới dạng object

*

*

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

Ví dụ về việc tìm kiếm list bản ghi với ĐK 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_danh sách.add(book);Với ORM, nó sẽ dễ dàng và đơn giản nlỗi sau

book_menu = BookTable.query(author="Linus");Từ ví dụ đơn giản bên trên họ thuận lợi nhận ra các ưu thế sau khoản thời gian sử dụng ORM

Ưu điểm

Rất nhiều máy được tiến hành "từ bỏ động", tương quan tới Việc up load dữ liệu, trong ví dụ bên trên họ không yêu cầu quyên tâm đến sự việc dùng vòng nhằm convert data từ bỏ mysql ra, Chỉ cần phải biết nguồn vào là keyword đầu ra output trả lại 1 danh sách các quyển sách bao gồm author=LinusViệc áp dụng ORM có tác dụng chúng ta bắt buộc phải viết code theo quy mô MVC, khiến cho code của chúng ta dễ dàng sửa thay đổi, gia hạn rộng.quý khách hàng không cần biết vô số về MYSQL, bạn vẫn có thể tiếp cận thuận tiện cùng với ORM.Model k ràng buộc nghiêm ngặt cùng với áp dụng, tuyệt có thể nói rằng, Model thì linch hoạt, bởi vậy chúng ta cũng có thể thay đổi hoặc sử dụng nó bất kể chỗ nàoORM cho phép bạn tận dụng tối đa điểm mạnh của OOPhường. nhỏng kế thừa tài liệu nhưng chưa phải đau đầu

Nhược điểm

Với mỗi framework đang có một thỏng viện ORM không giống nhau, tất yếu là các bạn nên mất thời gian học tập nó. Và do chúng là tlỗi viện nên sẽ khá "nặng".Performance ổn đối với những truy tìm vấn thường thì, dẫu vậy Raw SQL sẽ luôn làm cho xuất sắc rộng với các dự án công trình Khủng.ORM được coi là abstracts của DB. Nếu các bạn ko quan tâm đến những gì thực sự xẩy ra Lúc sử dụng ORM. Nó rất có thể là dòng bẫy với gần như bài xích toán N + 1 query.4 Đánh giá bán performance của ORM

Nlỗi tại đoạn yếu điểm bản thân gồm nói ORM sẽ sở hữu performance lờ lững hơn đối với bài toán thực hiện raw sql. Dưới đây là một thống kê với Eloquent ORM của Laravel cùng 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 đây các công ty thể nghiệm đã insert con số bài viết khác nhau trường đoản cú 1000 mang lại 10000 cho tất cả 2 kỹ năng trong những vòng lặp.

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)
11000665,25619,5585,6623,539,97
220001150114011101133,3đôi mươi,81
330001490149014201466,740,41
440001770179016701743,364,29
550002080209022202130,078,10
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,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 trên ta có biểu đồ dùng nhỏng sau

*

4.2 Update

Ở đây những nhà phân tách sẽ update số lượng bài viết không giống nhau tự 1000 đến 10000 cho cả 2 kinh nghiệm trong mỗi vòng lặp.

Xem thêm: Atrial Fibrillation Là Gì - Tim Của Bạn Đã Từng Lỗi 1 Nhị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)
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 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
101000014301380145014trăng tròn,036,05

Từ bảng trên ta tất cả biều vật dụng sau

*

4.3 Select

Tại trên đây các trang bị nghiệm chia làm 3 lượt

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

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

Lí bởi vì ở chỗ này là: ORM nên thời gian chế tác Model instances, tạo nên các property đến mã sản phẩm và transkhung đối tượng người sử dụng mã sản phẩm thành tài liệu quan hệ trước khi thực hiện Việc giao tiếp với database. Tất cả phần đông gì đằng sau nó là Laravel vẫn convert từng code Eloquent ORM thành câu lệnh SQL thích hợp và sau đó thực hiện trên tầng database và trả lại công dụng lại tầng application. Vì vậy thời gian để tiến hành 1 tác vụ luôn mất quá nhiều thời hạn hơn so với bài toán cần sử dụng raw sql.

Nhưng khoan, đừng vội quan sát hầu hết số lượng trên cơ mà vội vàng nói ORM là đồ vật vứt đi.

Trong thực tiễn không có ai select vài ba ngàn bạn dạng ghi, xuất xắc tiến hành bài toán tạo thành vài ngàn bạn dạng ghi trong một thời gian.

Tức là khi con số bản ghi càng ít thì độ chênh lênh về công suất giảm xuống đáng chú ý. Lúc kia cộng thêm câu hỏi sử dụng bí quyết kỹ năng cađậy của ORM khiến cho vận dụng của bạn cũng tạm bợ gật đầu được so với hầu như tiện ích về vận tốc vạc tiển ứng dụng(thời hạn vạc triển), thải trừ câu hỏi thực hiện code lặp đi lặp lại, bảo mật xuất sắc rộng vào những vật dụng tuyệt vời và hoàn hảo nhất không giống 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ị phương pháp hoạt động vui chơi của ORM, nêu những điểm ưu thế và điểm yếu của ORM. Việc tất cả đề nghị sử dụng ORMhay không vẫn chính là vấn đề tranh luận chưa tồn tại hồi kết.

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

Xem thêm: So Sánh Các Gói Cước Cáp Quang Nào Tốt Nhất: Viettel, Fpt Và Vnpt?

Cảm ơn chúng ta sẽ quan sát và theo dõi nội dung bài viết trên, vào nội dung bài viết bao gồm tham khảo từ một số trong những nguồn.

Và lượm nhặt linh tinch nhưng không lưu giữ

*
. Hẹn gặp gỡ lại chúng ta trong những bài viết sau


Chuyên mục: Công Nghệ