rated by 0 users
This post has 10 Replies | 0 Followers

Top 25 Contributor
Male
Posts 17
HuyNQ Posted: 01-29-2010 7:54 AM

Hi all,

Ai đã làm nhiều về LinQ cho mình hỏi một chút nhé. Mình đã được một thời gian nghiên cứu và phát triển web với LinQ. Mình thấy LinQ đơn giản hơn rất nhiều và rất dễ dùng (bản chất vẫn là chuyển về câu lệnh SQL khi thực hiện).

Tuy nhiên mình được biết rằng nếu để thực hiện một bó lệnh thì đưa vào procedure trong SQL Server sẽ thực thi được nhanh hơn rất nhiêu. Nhưng với một câu lệnh thì thế nào. Chạy query bình thường có khác gì so với câu lệnh đó trong procedure không ?

Mình đang thấy điểm mạnh của LinQ nhưng nếu như procedure nhanh hơn thì mình thấy LinQ không giúp được gì cả ?

Ai có ý kiền gì góp ý cho mình nhé. Thanks all

Top 10 Contributor
Male
Posts 194

Câu hỏi rất hay:

 

1- Stored Procedure and compiled SQL query có tốc độ thực thi nhanh nhất vì nó gần với dữ liệu trên CSDL nhất

2- LINQ là thư viện cho phép truy vấn trên nhiều kiểu dữ liệu khác nhau: Object collections, XML, LINQ to SQL (truy vấn cơ sở dữ liệu MS-SQL), LINQ to Dataset, LINQ to Entity (ADO.net Entity Framework), LINQ to SharePoint, LINQ to XML, LINQ to nHIbernate, LINQ to XYZ, LINQ to Azure SQL Service....

Như vậy là cái 1: mục tiêu chạy thật nhanh, nhưng tính mở rộng kém, khả năng bảo trì kém.

Cái 2: một cú pháp lập trình chung--> tính mở rộng rất cao.

 

Khi nào dùng Stored Procedure, SQL query? Khi chúng ta viết ứng dụng Client-Server, khá thuần về công nghệ, ít có sự tương tác với nhiều nguồn dữ liệu khác nhau. Ứng dụng logic có khả năng bảo trì được trong giới hạn cho phép. Phần cứng máy chủ hạn chế, viết Stored Proc để tối ưu tốc độ.

 

Nên viết LINQ khi hệ thống phức tạp, việc bảo trì theo thời gian là rất lớn, Viết LINQ hợp lý sẽ chuyển nhiều logic từ server xử lý lên business layer. Giờ đây xu hướng, chúng ta không viết LINQ to SQL thuần túy nữa, mà chúng ta nên sử dụng ADO.net Entity Framework, EF4. EF4 cho phép:

1- Ánh xạ mềm dẻo cấu trúc bảng ở CSDL vào cấu trúc quan hệ, hướng đối tượng của các object entities trong .NET business layer

2- Vẫn có thể chạy, gọi các câu lệnh dynamic SQL và stored procedure để tận dụng những tính năng lập trình đặc biệt của CSDL

3- Giảm bớt số câu lệnh nặng tính thủ tục (procedural code) để Create Read Update Delete dữ liệu.

4- Thể hiện những mối quan hệ phức tạp như: thừa kế...

Hẹn bạn một buổi seminar về EF4 tại Hà nội, ở đó bạn có thể hỏi tôi thoải mái về LINQ.....

 

Cường,

Top 10 Contributor
Male
Posts 71

Nếu so sánh trên cùng một câu truy vấn giữa LINQ và SP hoặc ANSI SQL thì rõ ràng LINQ thua. Nhưng nếu tính trên phương diện cả bài toán thì chưa chắc. Thực tế mình đã và đang làm việc với REPORT, trong một dự án tầm cỡ quốc gia. REPORT có sử dụng cả SP và LINQ, mình thấy rằng có một số REPORT nếu sử dụng SP phải mất đơn vị hàng 1000 dòng code SQL, trong khi sử dụng LINQ chỉ mất đơn vị là 100 dòng code C#. Tương ứng với nó là performance của LINQ còn khá hơn khi dùng SP. Do đó, hầu hết mình đã dùng LINQ thay thế cho SP.

Top 10 Contributor
Female
Posts 62

hu hu, em cũng muốn ra Hà Nội để gặp các anh chị, và hỏi nhiều về các công nghệ, LINQ vẫn thích hơn, hi hi.

Top 25 Contributor
Male
Posts 17

Thanks all,

Okie với anh Ba Quang. Mọi thứ mình phải cân đối với bài toán mà dùng, không nên áp dụng qua cứng nhắc.

Bạn Quỳnh nói vậy là sao ? Mình chưa tìm hiểu về cái anh Cường nói nên cũng chưa rõ lắm. Theo bạn thì thế nào ?

Top 10 Contributor
Female
Posts 62

Mình thì trình độ code vẫn còn kém lắm, nhưng store produre với mình thì hơi chuối, mình hơi kém về store produre nên khi nghiên cứu LINQ, thấy sử dụng LINQ thích hơn, hi hi.

Top 50 Contributor
Posts 14

LinQ như anh Cường nói thì ok rùi, tuy nhiên mình xin có ý kiến thế này: Mục đích ra đời của linq không chỉ tạo sự mềm dẻo trong việc ánh xạ CSDL, mà tương lai gần linq sẽ là một công nghệ chế tác dữ liệu tốt, phát huy các ưu thế trong xử lí xong xong, tận dụng các hệ thống xử lí đa lõi. Với các hệ thống hiện nay, thường là 4 nhân hoặc dưới 4 nhân thì linq chưa thể hiện nhiều như trên 4 nhân thì sẽ là sự khác biệt. :d

Not Ranked
Posts 1

Xin anh Cường cho địa chỉ tài liệu (bài báo) tham khảo.

Top 50 Contributor
Male
Posts 10

sp chạy nhanh hơn vì nó được biên dịch trước bỏi sql server con khi bạn truy xuất với linq thì linq sẽ biên dịch đoạn mã c# -> t-sql. Vậy đương nhiên là chậm hơn rồi. Tuy nhiên nếu bạn để ý, linq cung cấp các giải pháp khá linh hoạt cho việc lựa chọn sp thay cho việc dùng câu lệnh được biên dịch lúc thực thi. Và cũng hỗ trợ rất tốt việc gọi sp. Đó là chuyển các sp và user function thành 1 phương thức trong lớp data context.

Top 50 Contributor
Male
Posts 13

Mình nghĩ bạn nên xây dựng một FW dùng cho linQ, lúc đó bạn mới cảm nhận đc thực sự thế mạnh của nó. ví dụ

bạn insert 10 bảng dữ liệu, xóa 2 bảng, cập nhật 5 bảng. lúc này linQ xử lý Rollback như thế nào.

Page 1 of 1 (11 items) | RSS