Object Relational Mapping

Trong phương pháp cải tiến và phát triển vận dụng web hiện thời có lẽ rằng các bạn sẽ thân quen cùng với với trường đoản cú khóa ORM(Object Relational Mapping). Khi cơ mà thời đại của các framework ứng với các ngữ điệu đã đăng quang một cách mạnh mẽ, ORM gần như là việc lựa chọn hoàn hảo của những bên cách tân và phát triển hiện thời.quý khách hàng vẫn xem: Orm là gì

ORM giúp chúng ta thuận tiện thao tác với dữ liệu vớiDatabase rộng, góp chúng ta dễ dàng code, dễ dàng maintain hơn . . . Ở bài viết này tôi đã reviews tầm thường về ORM, đi sâu vào phân tích các điểm điểm mạnh, điểm yếu và lúc nào vận dụng bọn chúng trong số dự án công trình thực tế.

Bạn đang xem: Object relational mapping

Để cho dễ dàng theo dõi tự thời điểm này của bài viết tôi xin được sử dụng ORM rứa mang lại các 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í and commercial packages available that perkhung object-relational mapping, although some programmers opt lớn construct their own ORM tools.

Hiểu một biện pháp đơn giản thì

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

*

Theo Martin Fowler tất cả nhị patterns được vận dụng cho các biện pháp xây cất ORM không giống nhau.

Một sốORMnổi tiếng áp dụng Active Record rất có thể kể thương hiệu là: Eloquent, CachePHP.., JOOQ, TOPLINK


*

*

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

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

không giống nhau cơ bản của ORM là gói gọn gàng CSDL trong một object. 1 phần của object vẫn đựng data, và phần còn sót lại lo bài toán data xử lý nlỗi nào với trở nên nó thành CSDL tình dục.

ORM xử lý vụ việc đồng bộ thân kiểu dữ liệu trả về không giống nhau. Một mặt là các đại lý tài liệu, ngơi nghỉ đó dữ liệu được miêu tả bên dưới dạng tập thích hợp những bản ghi. Một mặt là các đối tượng, nghỉ ngơi đó tài liệu đc hiện thị dưới dạng object


*

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

lấy ví dụ về việc tìm kiếm kiếm list bản ghi cùng với điều kiện cùng 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_danh sách.add(book);Với ORM, nó đang đơn giản như sau

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

Ưu điểm

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

Nhược điểm

Với mỗi framework vẫn có 1 thư viện ORM không giống nhau, tất nhiên là các bạn buộc phải mất thời gian học nó. Và vày bọn chúng là thỏng viện cần sẽ rất "nặng".Performance ổn định so với các truy tìm vấn thông thường, tuy vậy Raw SQL đã luôn làm cho xuất sắc hơn cùng với những dự án công trình phệ.ORM được coi là abstracts của DB. Nếu các bạn ko quan tâm đến các gì thực sự xảy ra khi sử dụng ORM. Nó rất có thể là dòng bẫy cùng 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ỏng ở vị trí điểm yếu bản thân bao gồm nói ORM sẽ có được performance chậm chạp hơn đối với câu hỏi thực hiện raw sql. Dưới đây là một thống kê lại 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: BroaNetXtreme BCM5722 Gigabit EthePCI ExpressMemory: 8.0 GBHDD: 2000.4 GBOperating System: CentOS

4.1 Insert

Ở phía trên các đơn vị phân tích đã insert con số nội dung bài viết khác nhau tự 1000 mang lại 10000 cho tất cả 2 kỹ năng trong những vòng lặp.

Xem thêm: Khi Bị Liệu Là Gì ? Bị Liệu Có Phái Là Một Dấu Hiệu Tâm Thần?

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
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,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 bao gồm biểu trang bị nhỏng sau


4.2 Update

Eloquent ORM

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

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

4.3 Select

Ở trên đây các sản phẩm 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 bên trên rất có thể tiện lợi thấy được performance của raw sql ví dụ giỏi rộng so với ORM vào tất cả những hành vi select, insert, update.

Lí do ở đây là: ORM đề xuất thời gian chế tạo Model instances, tạo nên những property đến mã sản phẩm với transkhung đối tượng người tiêu dùng Model thành dữ liệu quan hệ tình dục trước lúc tiến hành bài toán tiếp xúc cùng với database. Tất cả đều gì ẩn dưới nó là Laravel đang convert từng code Eloquent ORM thành câu lệnh SQL thích hợp với kế tiếp xúc tiến bên trên tầng database cùng trả lại công dụng lại tầng application. Vì vậy thời hạn nhằm 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, đừng vội chú ý đa số số lượng bên trên mà cấp nói ORM là thiết bị loại bỏ đi.

Trong thực tế không ai select vài ba ngàn phiên bản ghi, tốt thực hiện vấn đề tạo ra vài ba ngàn phiên bản ghi trong một lúc.

Tức là lúc con số bản ghi càng ít thì độ chênh lênh về công suất giảm đi đáng chú ý. Lúc kia cộng thêm Việc áp dụng phương pháp kinh nghiệm cache của ORM khiến cho ứng dụng của người sử dụng cũng lâm thời đồng ý được đối với gần như công dụng về tốc độ vạc tiển ứng dụng(thời gian phạt triển), vứt bỏ bài toán áp dụng code lặp đi lặp lại, bảo mật tốt hơn vào những thứ 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ả nội dung bài viết, mình đã biểu thị phương pháp hoạt động của ORM, nêu các điểm ưu điểm cùng điểm yếu của ORM. Việc bao gồm đề xuất sử dụng ORMhay không vẫn luôn là đề bài tranh biện chưa có kết quả cuối cùng.

Cảm ơn các bạn đã theo dõi và quan sát bài viết bên trên, vào bài viết có xem thêm tự một số trong những nguồn.