Tôi có một lượng lớn dữ liệu được lưu trữ trong một tệp XML, 173 MB (4,6 triệu dòng), mà tôi đã lưu trữ trong thư mục làm việc của ứng dụng Windows Forms. Đó là kết quả của việc viết một datatable cho một tập tin XML. Các datatable là originaly dân cư từ một truy vấn đến một máy chủ SQL.Tìm kiếm ý tưởng về lưu trữ dữ liệu trên đĩa cục bộ
Lý do tôi lưu trữ cục bộ thay vì yêu cầu từ máy chủ là yêu cầu dữ liệu mất tối đa 40 giây và thời gian hết giờ và dữ liệu tĩnh và sẽ không bao giờ thay đổi, hơn nữa người dùng có thể ngoại tuyến và vẫn sử dụng dữ liệu.
Tải tệp trở lại vào bảng dữ liệu mất 20-30 giây. Tôi không quá lo lắng về thời gian cần tải từ đĩa vì tôi cho người dùng biết rằng dữ liệu đang tải và kiên nhẫn. Tuy nhiên tôi không thích định dạng tệp XML và tôi đang tìm các ý tưởng khác để lưu trữ đĩa.
Bảng dữ liệu chỉ được sử dụng làm người trung gian cho số lượng cuối cùng của đối tượng thu thập. Nếu bạn có sugestions tôi muốn nghe họ.
Tôi hy vọng sẽ tránh xa một giải pháp cơ sở dữ liệu và dựa vào phương pháp tiếp cận tệp nhị phân. Dưới đây là nỗ lực đầu tiên của tôi, nhưng tôi nhận được một ra khỏi memory exception:
byte[] b = null;
using (MemoryStream stream = new MemoryStream())
{
BinaryFormatter bformatter = new BinaryFormatter();
bformatter.Serialize(stream, timeData);
b = stream.ToArray();
}
using (FileStream fileStream = new
FileStream("brad.bin", FileMode.Create, FileAccess.Write))
{
fileStream.Write(b, 0, b.Length);
}
Ông có thể nói lý do tại sao bạn đang "hy vọng sẽ tránh xa một giải pháp cơ sở dữ liệu"? Như nhiều người trả lời đã chỉ ra, điều này có vẻ phù hợp với cơ sở dữ liệu cục bộ nhẹ: nếu bạn giải thích ràng buộc thiết kế mà bạn cảm thấy làm sai, có thể mọi người có thể đề xuất các lựa chọn thay thế. – itowlson
Tôi chỉ hy vọng tránh nó. nó chỉ dường như ba rất nhiều công việc để đi đến với rất ít benifit – Brad
Nó rất ít công việc thêm. SQLite thậm chí tự lập hóa đơn dưới dạng 'cơ sở dữ liệu không quản trị'. – Joe