2010-02-11 34 views
5

Tôi có câu hỏi về lưu trữ dữ liệu cho ứng dụng dành cho máy tính để bàn, nếu tôi triển khai ứng dụng không có cơ sở dữ liệu MS SQL, cách tôi có thể tạo điều kiện truy xuất/lưu trữ dữ liệu. Tôi biết tôi cũng có thể tuần tự hóa các đối tượng dữ liệu vào một tệp (chẳng hạn như tệp XML), có cách nào hiệu quả hơn hay hiệu quả hơn không?Cách tốt nhất để lưu trữ/truy xuất dữ liệu cho máy tính để bàn mà không cần sử dụng cơ sở dữ liệu là gì?

Trả lời

1

Có nhiều câu hỏi mà bạn sẽ hỏi để tiếp cận trả lời câu hỏi của bạn. Vì mục đích của câu trả lời này, tôi sẽ giả định:

1) Số lượng dữ liệu hạn chế cần phải được lưu trữ. 2) Khả năng tích hợp (không yêu cầu bên thứ ba hoặc cơ sở dữ liệu).

Cài đặt thuận tiện nhất, được cài đặt sẵn (nội tại cho cơ sở .NET) là Tập dữ liệu - cụ thể là một Số liệu đã nhập.

Bạn có thể thêm số lượng bảng và dữ liệu không xác định vào Số liệu của mình (bị giới hạn bởi bộ nhớ có sẵn) và dễ dàng lưu và tải dữ liệu từ đĩa. DataSet dễ dàng tuần tự hóa dữ liệu Xml theo lược đồ.

+0

@Michael, có, nó sẽ bị giới hạn số lượng dữ liệu nhưng tôi muốn bằng cách vượt qua serialization/XML route nếu có thể. – aggietech

+0

Tôi có hiểu rằng bạn muốn lưu nó vào nhị phân không? Tôi đoán tôi đang cố gắng để hiểu làm thế nào bạn muốn tồn tại dữ liệu trên hệ thống tập tin. – Michael

1

Tôi không nghĩ bạn nên hỏi đó là cách "tốt nhất", nhưng đó sẽ là cách tốt nhất cho BẠN.

Khi bạn nói bạn không thể có cơ sở dữ liệu, tôi cho rằng bạn có nghĩa là ứng dụng cần phải độc lập nhưng có thể sử dụng tệp cơ sở dữ liệu cục bộ? Nếu đó là như vậy và bạn ước tính khối lượng lớn lưu trữ dữ liệu sẽ là cần thiết, thì bạn có thể thấy bạn muốn sử dụng một trong một số sản phẩm cơ sở dữ liệu cục bộ nhỏ gọn. SQLite và InnoDB đến với tâm trí chẳng hạn.

Nếu bạn chỉ lưu trữ một lượng nhỏ dữ liệu, một tệp nhị phân XML hoặc đơn giản có thể tốt hơn cho bạn, vì nó sẽ làm giảm dấu chân ứng dụng của bạn và sẽ loại bỏ sự phụ thuộc vào sản phẩm của bên thứ ba. Đôi khi chúng tôi (và tôi nhấn mạnh rất hiếm khi!) Vẫn sử dụng tệp INI cổ điển vì nó được hỗ trợ tốt trong mã và kết quả là mã cực kỳ nhỏ gọn.

Về hiệu quả và hiệu quả, tất cả đều hướng đến cách bạn quyết định thực hiện truy cập dữ liệu của mình. Cấp, loại cơ sở dữ liệu bạn sử dụng có tác động, nhưng bạn cũng phải hỗ trợ bất cứ điều gì bạn triển khai, vì vậy sẽ trả tiền để xem cách API cơ sở dữ liệu được xác định và ghi lại như thế nào, cho dù nó có một cộng đồng hỗ trợ tích cực, v.v ... và chọn cái bạn cảm thấy thoải mái nhất khi làm việc.

1

Nếu bạn đang sử dụng Windows và cần truy vấn dữ liệu một cách đơn giản, hãy xem xét công cụ cơ sở dữ liệu ESENT tích hợp (http://blogs.msdn.com/windowssdk/archive/2008/10/23/esent-extensible-storage-engine-api-in-the-windows-sdk.aspx). CodePlex có một trình bao bọc .NET bao gồm một lớp PersistentDictionary (http://managedesent.codeplex.com/) hoạt động như một từ điển .NET, nhưng được hỗ trợ bởi một tệp cơ sở dữ liệu trên đĩa.

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