Orm Là Gì

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

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

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

Để mang lại dễ dàng quan sát và theo dõi trường đoản cú thời đặc điểm đó của nội dung bài viết tôi xin được dùng ORM vậy đến cụm 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 free and commercial packages available that perkhung object-relational mapping, although some programmers opt to construct their own ORM tools.

Hiểu một phương pháp dễ dàng thì

ORM là 1 kỹ thuật lập trình sẵn giúp ánh xạ những record tài liệu vào hệ quản trị cơ sở tài liệu lịch sự dạng đối tượng đã định nghĩa trong những class - một định nghĩa thông dụng được thực hiện vào toàn bộ các ngôn ngữ hiện đại ngày này như: Java, PHP, Ruby. Quý Khách hoàn toàn có thể vận dụng kĩ thật này cùng với bất kể dự án nào bạn thích.


*

Theo Martin Fowler có hai patterns được áp dụng cho những bí quyết xây dựng ORM khác biệt.

Một sốORMdanh tiếng áp dụng Active sầu Record có thể nói tên là: Eloquent, CachePHPhường., JOOQ, TOPLINK


*

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

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

khác lại cơ bạn dạng của ORM là gói gọn gàng CSDL trong 1 object. 1 phần của object đang chứa data, cùng phần còn lại lo bài toán data xử trí nlỗi làm sao với biến chuyển nó thành CSDL dục tình.

ORM xử lý vấn đề đồng bộ giữa mẫu mã dữ liệu trả về khác biệt. Một mặt là cửa hàng dữ liệu, nghỉ ngơi kia dữ liệu được miêu tả bên dưới dạng tập đúng theo các phiên bản ghi. Một bên là các đối tượng người tiêu dùng, nghỉ ngơi đó tài liệu đc hiện thị lên dưới dạng object


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

ví dụ như về việc tìm và đào bới tìm list bản ghi cùng với ĐK cùng 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_các mục.add(book);Với ORM, nó vẫn đơn giản như sau

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

Ưu điểm

Rất nhiều thứ được triển khai "từ bỏ động", tương quan tới Việc cập nhật dữ liệu, trong ví dụ trên bọn họ không đề nghị 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 phải biết nguồn vào là từ khoá cổng đầu ra trả lại 1 danh sách những cuốn sách có author=LinusViệc thực hiện ORM làm chúng ta bắt buộc phải viết code theo quy mô MVC, khiến code của chúng ta dễ dàng sửa thay đổi, bảo trì rộng.Quý Khách không nên biết rất nhiều về MYSquốc lộ, các bạn vẫn hoàn toà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 với vận dụng, xuất xắc nói theo một cách khác, Model thì linh hoạt, bởi vậy chúng ta có thể thay đổi hoặc áp dụng nó bất kể vị trí nàoORM có thể chấp nhận được chúng ta tận dụng tối đa điểm mạnh của OOP.. nlỗi kế thừa dữ liệu mà lại không phải đau đầu

Nhược điểm

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

Nlỗi tại vị trí điểm yếu kém mình gồm nói ORM sẽ sở hữu được performance lừ đừ rộng đối với câu hỏi thực hiện raw sql. Dưới đây là một những thống kê cùng với Eloquent ORM của Laravel với 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 trên đây các công ty thể nghiệm vẫn insert con số bài viết không giống nhau trường đoản cú 1000 cho 10000 cho cả 2 kỹ năng trong mỗi 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
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 bên trên ta tất cả biểu vật dụng nlỗi sau


4.2 Update

Ở trên đây những đơn vị thử nghiệm đang update con số bài viết khác nhau trường đoản cú 1000 mang đến 10000 cho tất cả 2 kỹ năng trong mỗi vòng lặp.

Xem thêm: Cách Chơi Varus - Varus Mùa 11: Bảng Ngọc, Cách Lên Đồ Varus

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
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,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 bên trên ta gồm biều đồ vật sau


4.3 Select

Ở trên đây những lắp thêm nghiệm chia thành 3 lượt

4.4 Đánh giá bán và phân tích

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

Lí vị ở đây là: ORM bắt buộc thời gian tạo ra Model instances, tạo thành các property cho Model và transform đối tượng người tiêu dùng Mã Sản Phẩm thành tài liệu quan hệ tình dục trước khi thực hiện Việc tiếp xúc 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 tương thích và tiếp đến xúc tiến bên trên tầng database với trả lại công dụng lại tầng application. Vì vậy thời hạn để thực hiện 1 tác vụ luôn mất nhiều thời hạn hơn so với Việc dùng raw sql.

Nhưng khoan, chớ vội vàng nhìn mọi con số bên trên nhưng mà cấp nói ORM là thiết bị loại bỏ đi.

Trong thực tế không có ai select vài ba nghìn phiên bản ghi, tốt tiến hành câu hỏi tạo nên vài ngàn bản ghi vào một lúc.

Tức là khi con số bạn dạng ghi càng không nhiều thì độ chênh lênh về hiệu suất giảm xuống đáng kể. Lúc đó thêm vào đó Việc thực hiện bí quyết kinh nghiệm cache của ORM tạo nên ứng dụng của chúng ta cũng trợ thì gật đầu đồng ý được đối với đều công dụng về vận tốc vạc tiển ứng dụng(thời gian vạc triển), thải trừ bài toán áp dụng code lặp đi tái diễn, bảo mật xuất sắc rộng vào nhiều đồ vật hoàn hảo nhất khác nữa.

5. Tổng kết

Tóm lại, đi xuyên thấu cả bài viết, mình đã diễn đạt cách hoạt động của ORM, nêu những điểm điểm mạnh và nhược điểm của ORM. Việc gồm yêu cầu sử dụng ORMhay là không vẫn luôn là vấn đề bàn cãi chưa tồn tại hồi kết.

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

Cảm ơn các bạn đã theo dõi bài viết trên, trong bài viết tất cả xem thêm tự một số mối cung cấp.

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

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

| W88Vuive | xosoketqua.com