Orm là gì? tổng quan về orm framework

Trong bí quyết trở nên tân tiến áp dụng web hiện nay có lẽ rằng các bạn sẽ thân quen cùng với cùng với tự khóa ORM(Object Relational Mapping). Lúc mà thời đại của những framework ứng với những ngôn từ đang đăng quang một cách mạnh mẽ, ORM gần như là sự việc tuyển lựa tuyệt đối của các bên trở nên tân tiến hiện giờ.

You watching: Orm là gì? tổng quan về orm framework

ORM giúp họ tiện lợi thao tác làm việc cùng với dữ liệu vớiDatabase rộng, giúp họ dễ code, dễ maintain rộng . . . Tại nội dung bài viết này tôi đang giới thiệu thông 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ới lúc nào áp dụng bọn chúng trong các dự án công trình thực tế.

Để cho dễ theo dõi tự thời điểm này của bài viết tôi xin được dùng ORM núm mang đến nhiều tự 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 free and commercial packages available that perform object-relational mapping, although some programmers opt to lớn construct their own ORM tools.

Hiểu một cách dễ dàng và đơn giản thì

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

*

Theo Martin Fowler bao gồm nhị patterns được vận dụng cho các giải pháp kiến thiết ORM không giống nhau.

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

*

*

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

2. ORM vận động ra làm sao ?

dị biệt cơ phiên bản của ORM là gói gọn DataBase trong 1 object. 1 phần của object vẫn cất data, cùng phần còn sót lại lo Việc data giải pháp xử lý nhỏng nào cùng đổi thay nó thành DataBase quan hệ tình dục.

ORM giải quyết và xử lý vụ việc đồng nhất thân kiểu dáng dữ liệu trả về khác biệt. Một bên là cửa hàng tài liệu, sinh sống đó dữ liệu được diễn đạt dưới dạng tập thích hợp các bản ghi. Một bên là những đối tượng, ở đó tài liệu đc hiện thị lên dưới dạng object

*

*

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

lấy một ví dụ về việc tìm kiếm danh sách phiên 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_list.add(book);Với ORM, nó đã dễ dàng và đơn giản như sau

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

Ưu điểm

Rất những thiết bị được triển khai "trường đoản cú động", liên quan tới việc xử lý tài liệu, vào ví dụ bên trên chúng ta không buộc phải quan tâm tới việc sử dụng vòng nhằm convert data trường đoản cú mysql ra, Chỉ cần biết đầu vào là từ khóa Áp sạc ra trả lại 1 danh sách các quyển sách tất cả author=LinusViệc áp dụng ORM có tác dụng bạn sẽ phải viết code theo quy mô MVC, khiến code của chúng ta dễ sửa thay đổi, gia hạn hơn.quý khách hàng không nên biết quá nhiều về MYSQL, chúng ta vẫn hoàn toàn có thể tiếp cận dễ dãi với ORM.Model k ràng buộc nghiêm ngặt với áp dụng, hay có thể nói rằng, Model thì linc hoạt, bởi vì vậy chúng ta cũng có thể đổi khác hoặc áp dụng nó bất kể địa điểm nàoORM chất nhận được các bạn tận dụng ưu điểm của OOPhường nhỏng kế thừa dữ liệu nhưng chưa hẳn đau đầu

Nhược điểm

Với từng framework đã có 1 tlỗi viện ORM khác nhau, tất nhiên là bạn bắt buộc mất thời hạn học nó. Và bởi vì bọn chúng là tlỗi viện buộc phải sẽ khá "nặng".Performance ổn so với những tróc nã vấn thông thường, tuy nhiên Raw SQL sẽ luôn luôn có tác dụng xuất sắc rộng với các dự án công trình mập.ORM được coi là abstracts của DB. Nếu các bạn không quyên tâm đến những gì thực thụ xẩy ra Khi sử dụng ORM. Nó hoàn toàn có thể là loại bẫy với rất nhiều bài xích tân oán N + 1 query.4 Đánh giá chỉ performance của ORM

Như tại đoạn điểm yếu kém mình bao gồm nói ORM sẽ sở hữu performance lừ đừ rộng so với câu hỏi sử dụng raw sql. Dưới đấy là một thống kê lại 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 phía trên các bên phân tích vẫn insert con số nội dung bài viết không giống nhau tự 1000 cho 10000 cho cả 2 kỹ năng trong mỗi 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,3đôi mươi,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,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 trên ta bao gồm biểu vật như sau

*

4.2 Update

Ở trên đây các đơn vị thể nghiệm đã update con số nội dung bài viết không giống nhau tự 1000 mang lại 10000 cho cả 2 kỹ năng trong những vòng lặp.

See more: Nghiệp Vụ Cảnh Sát Là Gì ? Phẩm Chất Mà Công An An Ninh Cần Có

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 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,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
10100001430138014501420,036,05

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

*

4.3 Select

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

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

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

Lí vày ở đây là: ORM bắt buộc thời gian tạo Model instances, tạo ra các property mang lại model và transsize đối tượng người dùng mã sản phẩm thành dữ liệu quan hệ giới tính trước khi tiến hành bài toán giao tiếp cùng với database. Tất cả đông đảo gì phía sau nó là Laravel đã convert từng code Eloquent ORM thành câu lệnh Squốc lộ phù hợp cùng sau đó thực thi trên tầng database cùng trả lại kết quả lại tầng application. Vì vậy thời gian nhằm triển khai 1 tác vụ luôn luôn mất không ít thời hạn rộng đối với việc dùng raw sql.

Nhưng khoan, đừng gấp quan sát đa số số lượng bên trên mà lại vội nói ORM là thứ loại bỏ.

Trong thực tiễn không một ai select vài ngàn phiên bản ghi, tuyệt triển khai câu hỏi tạo ra vài ngàn phiên bản ghi vào một dịp.

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 đó cộng thêm câu hỏi sử dụng giải pháp kĩ thuật cabịt của ORM tạo nên vận dụng của bạn cũng tạm thời đồng ý được so với phần nhiều công dụng về tốc độ vạc tiển ứng dụng(thời gian phân phát triển), thải trừ bài toán thực hiện code lặp đi lặp lại, bảo mật tốt hơn vào nhiều trang bị hoàn hảo không giống 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 đã biểu đạt biện pháp buổi giao lưu của ORM, nêu các điểm ưu điểm và điểm yếu của ORM. Việc có đề nghị sử dụng ORMhay là không vẫn luôn là vấn đề tranh biện chưa có hồi kết.

Về kinh nghiệm tay nghề của bản thân khi làm cho dự án, bản thân thường xuyên set giữa ORM với Raw SQL làm sao để cho kết quả, với những truy hỏi vấn thông thường, ORM là chắt lọc của chính mình. Với những trường hợp yêu cầu làm việc với nhiều bản ghi,raw Squốc lộ có vẻ phù hợp rộng. Nhưng khi sử dụng raw sql chúng ta bắt buộc thực sự cẩn trọng về vụ việc Sql injection.

See more: Parchment Paper Là Gì - Giấy Nến (Parchment Paper) Là Gì

Cảm ơn chúng ta sẽ theo dõi và quan sát bài viết trên, trong bài viết bao gồm xem thêm từ bỏ một vài nguồn.

Và lượm nhặt linh tinh nhưng ko nhớ

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


Chuyên mục: Giải Đáp