Trong giải pháp cải tiến và phát triển áp dụng website bây giờ chắc hẳn các bạn đang thân quen cùng với cùng với từ khóa ORM(Object Relational Mapping). Khi mà lại thời đại của các framework ứng cùng với các ngôn ngữ đã đăng quang một biện pháp khỏe khoắn, ORM gần như là việc sàng lọc hoàn hảo và tuyệt vời nhất của những đơn vị cải tiến và phát triển hiện nay.

Bạn đang xem: Orm là gì?

ORM góp bọn họ dễ ợt thao tác làm việc cùng với dữ liệu vớiDatabase hơn, giúp họ dễ dàng code, dễ dàng maintain rộng . . . Tại bài viết này tôi sẽ trình làng chung về ORM, đi sâu vào so với các điểm ưu thế, yếu điểm với bao giờ vận dụng chúng trong các dự án thực tế.

Để đến dễ dàng quan sát và theo dõi tự thời điểm này của nội dung bài viết tôi xin được dùng ORM thay cho nhiều 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 perform object-relational mapping, although some programmers opt to construct their own ORM tools.

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

ORM là 1 trong những kỹ thuật lập trình góp ánh xạ những record tài liệu trong hệ cai quản trị cửa hàng tài liệu quý phái dạng đối tượng đang định nghĩa trong những class - một quan niệm thịnh hành được sử dụng vào tất cả 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ĩ thật này cùng với bất kể dự án nào bạn muốn.

*

Theo Martin Fowler bao gồm nhị patterns được vận dụng cho những cách thiết kế ORM khác nhau.

Một sốORMdanh tiếng áp dụng Active sầu Record hoàn toàn có thể kể tên là: Eloquent, CachePHP, JOOQ, TOPLINK

*

*

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

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

không giống nhau cơ phiên bản của ORM là gói gọn cơ sở dữ liệu trong một object. một trong những phần của object sẽ cất data, với phần sót lại lo Việc data xử lý nlỗi như thế nào và đổi mới nó thành cơ sở dữ liệu quan hệ.

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

*

*

3. Ưu và điểm yếu kém ORM

lấy ví dụ về việc tìm kiếm tìm danh sách bản ghi cùng với điều kiện cùng với sql thuần

book_các 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_các mục.add(book);Với ORM, nó sẽ đơn giản dễ dàng nlỗi sau

book_danh mục = BookTable.query(author="Linus");Từ ví dụ đơn giản và dễ dàng trên chúng ta thuận lợi nhận ra những ưu thế sau khi sử dụng ORM

Ưu điểm

Rất các sản phẩm được tiến hành "tự động", liên quan tới câu hỏi up date dữ liệu, vào ví dụ bên trên họ ko yêu cầu quan tâm đến sự việc dùng vòng để convert data trường đoản cú mysql ra, Chỉ nên biết nguồn vào là từ khóa Áp sạc ra trả lại 1 danh sách những quyển sách bao gồm author=LinusViệc áp dụng ORM làm cho các bạn sẽ phải viết code theo mô hình MVC, khiến cho code của công ty dễ dàng sửa thay đổi, bảo trì rộng.Quý khách hàng không cần biết không ít về MYSQL, chúng ta vẫn 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 vận dụng, giỏi nói cách khác, Model thì linch hoạt, do vậy chúng ta cũng có thể thay đổi hoặc sử dụng nó bất kể nơi nàoORM có thể chấp nhận được chúng ta tận dụng tối đa ưu điểm của OOP như thừa kế dữ liệu mà lại chưa hẳn đau đầu

Nhược điểm

Với mỗi framework đã có 1 tlỗi viện ORM khác biệt, tất nhiên là chúng ta nên mất thời gian học nó. Và vị bọn chúng là tlỗi viện phải sẽ tương đối "nặng".Performance ổn đối với những tróc nã vấn thường thì, mà lại Raw Squốc lộ sẽ luôn luôn làm giỏi rộng với các dự án công trình lớn.ORM được xem như là abstracts của DB. Nếu các bạn ko quyên tâm đến các gì đích thực xẩy ra lúc thực hiện ORM. Nó hoàn toàn có thể là dòng mồi nhử cùng với phần đa bài bác tân oán N + 1 query.4 Đánh giá bán performance của ORM

Như tại phần yếu điểm bản thân bao gồm nói ORM sẽ có performance lờ đờ rộng so 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 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

Ở đây các bên thể nghiệm đã insert con số bài viết khác biệt từ bỏ 1000 mang lại 10000 cho cả 2 kinh nghiệm trong những vòng lặp.

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)
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 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 bao gồm biểu đồ gia dụng nhỏng sau

*

4.2 Update

Tại phía trên các bên thể nghiệm vẫn update số lượng nội dung bài viết khác biệt tự 1000 đến 10000 cho cả 2 kỹ năng trong mỗi vòng lặp.

Xem thêm: "Sản Xuất Nông Nghiệp Tiếng Anh Là Gì ? Nông Nghiệp In English

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

Từ bảng bên trên ta gồm biều vật dụng sau

*

4.3 Select

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

4.4 Đánh giá chỉ 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 cụ thể tốt rộng so với ORM trong tất cả những hành vi select, insert, update.

Lí bởi vì ở chỗ này là: ORM đề nghị thời gian sinh sản Model instances, tạo thành những property đến Mã Sản Phẩm với transkhung đối tượng người sử dụng Model thành tài liệu quan hệ trước khi triển khai câu hỏi tiếp xúc với database. Tất cả rất nhiều gì phía sau nó là Laravel đã convert từng code Eloquent ORM thành câu lệnh Squốc lộ tương thích với kế tiếp thực hiện trên tầng database và trả lại kết quả lại tầng application. Vì vậy thời gian để thực hiện 1 tác vụ luôn mất không ít thời gian hơn so với việc cần sử dụng raw sql.

Nhưng khoan, chớ gấp chú ý đông đảo con số trên mà cấp nói ORM là vật dụng loại bỏ đi.

Trong thực tế không ai select vài ba ngàn bạn dạng ghi, xuất xắc triển khai bài toán tạo ra vài ngàn bản ghi vào một cơ hội.

Tức là lúc con số bản ghi càng không nhiều thì độ chênh lênh về hiệu suất sụt giảm đáng chú ý. Lúc kia cộng thêm Việc thực hiện giải pháp kĩ thuật cađậy của ORM tạo cho áp dụng của khách hàng cũng trợ thì gật đầu đồng ý được so với gần như tiện ích về vận tốc vạc tiển ứng dụng(thời gian phân phát triển), sa thải câu hỏi áp dụng code lặp đi lặp lại, bảo mật thông tin xuất sắc rộng vào những sản phẩm công nghệ hoàn hảo nhất không giống nữa.

5. Tổng kết

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

Về kinh nghiệm của phiên bản thân lúc làm cho dự án công trình, bản thân hay phối thân ORM và Raw Squốc lộ sao cho kết quả, cùng với các truy vấn vấn thông thường, ORM là sàng lọc của bản thân mình. Với các trường hợp bắt buộc thao tác với nhiều bản ghi,raw SQL có vẻ như hợp lý hơn. 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.

Cảm ơn chúng ta đang quan sát và theo dõi bài viết trên, trong nội dung bài viết có xem thêm từ bỏ một số mối cung cấp.

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

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

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 *