2012-02-22 35 views
6

Hiện tại tôi đang làm việc trong desing và triển khai phần mềm có triển khai các hoạt động CRUD qua hai bảng với kiến ​​trúc chi tiết chính. Tiêu đề có khoảng nửa triệu hàng và chi tiết về hàng triệu hàng.Thực tiễn tốt nhất với số liệu lớn trong C#

Điền tất cả dữ liệu này vào tập dữ liệu là điên, dữ liệu cũng có thể thay đổi và tôi không quan tâm đến bản sao cơ sở dữ liệu cục bộ. Tôi quan tâm đến phần mềm đó hoạt động trôi chảy. Mặc dù tập dữ liệu có thể không phải là giải pháp tốt nhất, tôi nên sử dụng giải pháp này để nhất quán với các phần mềm khác.

Trước tiên, tôi nghĩ sử dụng TypedDataset và một số methos như GetNext(), GetFirst(), GetByCod() nhưng tôi không chắc là giải pháp tốt nhất .... Tôi đang làm một thử nghiệm nhỏ và không làm việc rất trôi chảy.

Tôi muốn biết các nhà phát triển khác thực hiện điều này như thế nào, Các phương pháp hay nhất và "lựa chọn tốt nhất" là gì để thực hiện các hoạt động với dữ liệu lớn.

Tôi đang sử dụng Visual Studio 2008 và SQL Server 2005.

thêm: Khi bạn nói về sử dụng SqlDataReader bạn đang đề cập một cái gì đó như thế này?

using (SqlConnection con = new SqlConnection(CON)) { 

      con.Open(); 
      SqlCommand cmd = new SqlCommand("SELECT * FROM TABLE"); 
      cmd.Connection = con; 
      SqlDataReader rd = cmd.ExecuteReader(); 
      BindingSource bindingSource = new BindingSource(); 
      bindingSource.DataSource = rd; 
      bindingNavigator1.BindingSource = bindingSource; 

      txtFCOD.DataBindings.Add("Text", bindingSource, "FIELD"); 
     } 
+1

Trước hết, tôi sẽ không sử dụng Tập dữ liệu. Và bạn có thể truy vấn tất cả các hàng cùng một lúc không? Khi bạn phải xử lý một lượng lớn adta, tôi sẽ sử dụng trình quản lý dữ liệu, khi bạn phải cung cấp giao diện dễ dàng, tôi khuyên bạn nên sử dụng OR Mapper –

+0

Có, tôi đồng ý với Boas Enkler. Chỉ truy vấn dữ liệu bắt buộc vào thời gian bắt buộc. –

+0

Chú ý đến các truy vấn của bạn để sử dụng các chỉ mục trên bảng của bạn và chỉ yêu cầu thông tin cụ thể trong truy vấn của bạn. Hãy để cơ sở dữ liệu làm việc đó :-) – Schwarzie2478

Trả lời

4

Tôi nghĩ không có cách nào để quản lý tập dữ liệu lớn.

Bạn cần DataReader chứ không phải DataSet.

bản sao địa phương của cơ sở dữ liệu với số tiền thực sự lớn của dữ liệu được cách hiệu quả để đạt được một cái gì đó như thế này (phản ứng nhanh từ ứng dụng của bạn), nhưng bạn sẽ có vấn đề với đồng bộ hóa (sao chép), đồng thời vv ..

nhất thực hành chỉ nhận được từ máy chủ mà dữ liệu mà người dùng thực sự cần. Bạn phải sử dụng xử lý phía máy chủ, theo các thủ tục được lưu trữ, v.v.

Tôi vẫn không biết dữ liệu nào bạn muốn thao tác và mục đích ứng dụng của bạn là gì, nhưng có một bất lợi khác về số lượng lớn dữ liệu phía máy khách - ứng dụng của bạn sẽ cần rất nhiều ram và CPU nhanh. Có thể máy tính của bạn nhanh và có khả năng xử lý việc này, nhưng hãy cân nhắc điều gì sẽ xảy ra khi ai đó cài đặt ứng dụng của bạn trên máy tính bảng với CPU Atom 1GHz. Đó sẽ là thảm họa.

+0

@arturn Bạn muốn làm gì với tập dữ liệu lớn này? –

+0

Tôi đang thực hiện Biểu mẫu chi tiết chính CRUD. – arturn

+0

Biểu mẫu có hàng triệu hàng? Điều này thật điên rồ. – Kamil

3

Ít khi có trường hợp bạn cần truy xuất tất cả dữ liệu cùng một lúc.

Bạn có thể cân nhắc những điều sau đây:

  • Dùng Lần phục vụ bộ nhỏ dữ liệu cụ thể.
  • Cân nhắc sử dụng phân trang bằng chức năng OVER() được giới thiệu trong SQL Server 2005
  • Không sử dụng bộ dữ liệu cho lượng lớn dữ liệu. DataReaders có nhiều hiệu quả hơn trong trường hợp này là .

Cá nhân tôi nghĩ bạn nên tránh tải lượng lớn dữ liệu vào bộ nhớ trừ khi bạn có toàn quyền kiểm soát số lượng đang được tải và khi nào nó được xử lý. Hãy nhớ rằng, nếu xử lý dữ liệu phía máy chủ, bạn đang sử dụng các tài nguyên mà quá trình khác có thể cần.

Bạn nên luôn cố gắng và làm việc với các đoạn nhỏ hơn tại một thời điểm, và tốt nhất là trong thời gian ngắn nhất có thể. Điều này ngăn cản quá trình của bạn khỏi hogging bất kỳ tài nguyên nào trong thời gian dài.

+0

Xin chào, cảm ơn bạn đã trả lời! – arturn

Các vấn đề liên quan