Orm là gì, nó hoạt động như thế nào và tôi nên sử dụng nó như thế nào?

 - 

Trong bí quyết phát triển ứng dụng web bây chừ chắc hẳn các bạn đang quen thuộc với với trường đoản cú khóa ORM(Object Relational Mapping). lúc mà lại thời đại của các framework ứng cùng với các ngôn ngữ đang đăng quang một giải pháp trẻ trung và tràn trề sức khỏe, ORM gần như là là sự lựa chọn tuyệt vời và hoàn hảo nhất của những công ty phát triển hiện nay.

Bạn đang xem: Orm là gì, nó hoạt động như thế nào và tôi nên sử dụng nó như thế nào?

ORM góp chúng ta dễ dãi thao tác với tài liệu vớiDatabase rộng, giúp bọn họ dễ code, dễ dàng maintain hơn . . . Tại bài viết này tôi sẽ giới thiệu phổ biến về ORM, đi sâu vào so sánh những điểm ưu điểm, yếu điểm với khi nào áp dụng chúng trong số dự án thực tế.

Để đến dễ quan sát và theo dõi từ bỏ thời điểm đó của nội dung bài viết tôi xin được dùng ORM vắt mang đến nhiều trường đoản cú 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 không tính tiền và commercial packages available that persize object-relational mapping, although some programmers opt lớn construct their own ORM tools.

Hiểu một cách dễ dàng thì

ORM là 1 trong kỹ thuật lập trình giúp ánh xạ những record tài liệu vào hệ cai quản trị cửa hàng dữ liệu sang trọng dạng đối tượng người sử dụng đã định nghĩa trong số class - một khái niệm phổ biến được áp dụng trong tất cả các ngữ điệu tân tiến thời nay như: Java, PHPhường, Ruby. Bạn rất có thể vận dụng kĩ thật này cùng với bất cứ dự án làm sao bạn muốn.

*

Theo Martin Fowler có hai patterns được vận dụng cho những cách xây dựng ORM không giống nhau.

Một sốORMlừng danh sử dụng Active sầu Record có thể đề cập thương hiệu là: Eloquent, CachePHPhường., JOOQ, TOPLINK

*

*

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

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

dị kì cơ bạn dạng của ORM là gói gọn gàng DataBase trong một object. một trong những phần của object vẫn chứa data, với phần sót lại lo Việc data giải pháp xử lý nlỗi như thế nào với vươn lên là nó thành cơ sở dữ liệu quan hệ.

ORM giải quyết vụ việc nhất quán thân thứ hạng dữ liệu trả về không giống nhau. Một bên là các đại lý tài liệu, sống đó dữ liệu được thể hiện bên dưới dạng tập hòa hợp các bản ghi. Một mặt là những đối tượng người sử dụng, ngơi nghỉ kia tài liệu được hiện lên bên dưới dạng object

*

*

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

lấy ví dụ như về việc đào bới tìm kiếm kiếm danh sách bản ghi 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ó đã đơn giản và dễ dàng nhỏng sau

book_list = BookTable.query(author="Linus");Từ ví dụ dễ dàng trên bọn họ thuận tiện nhận ra các ưu thế sau khoản thời gian thực hiện ORM

Ưu điểm

Rất các sản phẩm được triển khai "tự động", tương quan tới bài toán cập nhật tài liệu, vào ví dụ bên trên chúng ta ko cần quan tâm tới việc cần sử dụng vòng để convert data trường đoản cú mysql ra, Chỉ cần phải biết nguồn vào là từ khoá áp ra output trả lại 1 list những cuốn sách bao gồm author=LinusViệc thực hiện ORM có tác dụng các bạn sẽ phải viết code theo quy mô MVC, khiến cho code của người tiêu dùng dễ sửa đổi, duy trì hơn.Bạn không nên biết vô số về MYSQL, bạn vẫn hoàn toàn có thể tiếp cận thuận lợi với ORM.Model k ràng buộc chặt chẽ cùng với ứng dụng, tuyệt nói cách khác, Model thì linh hoạt, vị vậy bạn có thể đổi khác hoặc sử dụng nó bất kể địa điểm nàoORM được cho phép các bạn tận dụng tối đa ưu thế của OOPhường nhỏng kế thừa tài liệu cơ mà chưa phải nhức đầu

Nhược điểm

Với từng framework đã có một thư viện ORM khác biệt, tất yếu là các bạn buộc phải mất thời gian học nó. Và vì bọn chúng là thư viện đề xuất sẽ khá "nặng".Performance ổn định so với các truy vấn vấn thông thường, nhưng lại Raw Squốc lộ đã luôn luôn có tác dụng tốt hơn cùng với các dự án to.ORM được xem là abstracts của DB. Nếu chúng ta ko quan tâm đến những gì đích thực xảy ra Lúc thực hiện ORM. Nó hoàn toàn có thể là cái bả với đông đảo bài bác toán thù N + 1 query.4 Đánh giá performance của ORM

Nlỗi ở phần yếu điểm bản thân tất cả nói ORM sẽ sở hữu được performance lờ lững 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 cùng 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: Broadcom NetXtreme BCM5722 Gigabit Ethernet PCI ExpressMemory: 8.0 GBHDD: 2000.4 GBOperating System: CentOS

4.1 Insert

Ở phía trên những công ty xem sét vẫn insert số lượng bài viết khác biệt từ 1000 cho 10000 cho cả 2 kinh nghiệm trong mỗi 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 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
10100001430138014501420,036,05

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

*

4.2 Update

Tại đây những đơn vị thể nghiệm vẫn update con số bài viết khác biệt từ 1000 cho 10000 cho cả 2 kinh nghiệm trong những vòng lặp.

Xem thêm: "Tạo Nghiệp, Hết Mana Là Gì Trong Game Liên Quân, Liên Minh, Võ Lâm

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 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
101000014301380145014đôi mươi,036,05

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

*

4.3 Select

Tại trên đây những sản phẩm nghiệm chia thành 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ể dễ dãi thấy được performance của raw sql rõ ràng giỏi rộng so với ORM trong toàn bộ những hành vi select, insert, update.

Lí vì chưng tại chỗ này là: ORM nên thời gian chế tạo Model instances, tạo nên những property mang đến Model và transkhung đối tượng người sử dụng model thành dữ liệu tình dục trước khi tiến hành bài toán giao tiếp với database. Tất cả đều gì ẩn dưới nó là Laravel vẫn convert từng code Eloquent ORM thành câu lệnh Squốc lộ tương thích và tiếp nối triển khai bên trên tầng database cùng 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 luôn mất quá nhiều thời gian rộng so với câu hỏi dùng raw sql.

Nhưng khoan, chớ gấp chú ý số đông số lượng bên trên nhưng cấp nói ORM là vật vứt đi.

Trong thực tiễn không ai select vài nghìn bạn dạng ghi, hay triển khai câu hỏi tạo nên vài nghìn bạn dạng ghi vào một thời gian.

Tức là khi số lượng bản ghi càng không nhiều thì độ chênh lênh về năng suất sụt giảm đáng kể. Lúc kia cộng thêm câu hỏi áp dụng cách kinh nghiệm cabịt của ORM tạo nên vận dụng của chúng ta cũng tạm đồng ý được so với đầy đủ tác dụng về tốc độ vạc tiển ứng dụng(thời gian phạt triển), loại bỏ vấn đề sử dụng code lặp đi tái diễn, bảo mật thông tin tốt rộng vào nhiều vật dụng hoàn hảo khác nữa.

5. Tổng kết

Tóm lại, đi xuyên suốt cả bài viết, mình đã biểu thị bí quyết buổi giao lưu của ORM, nêu những điểm ưu thế với điểm yếu của ORM. Việc có bắt buộc thực hiện ORMhay không vẫn luôn là chủ đề tranh biện chưa xuất hiện hồi kết.

Về kinh nghiệm tay nghề của phiên bản thân lúc có tác dụng dự án công trình, bản thân thường xuyên phối thân ORM và Raw Squốc lộ làm thế nào cho kết quả, cùng với các tầm nã vấn thường thì, ORM là gạn lọc của bản thân. Với những tình huống đề nghị thao tác làm việc với rất nhiều bạn dạng ghi,raw SQL dường như phù hợp hơn. Nhưng khi sử dụng raw sql chúng ta nên thực sự cẩn thận về vấn đề Sql injection.

Xem thêm: Jual Lagi Promo Karma Gila, Người Ta Sử Dụng Karma Như Thế Nào

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

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

*
. Hẹn gặp gỡ lại các bạn trong các nội dung bài viết sau


Chuyên mục: Chia sẻ