Tôi có nhiều cấu trúc dữ liệu phong phú (chủ yếu là cây) mà tôi muốn tồn tại trên đĩa, nghĩa là tôi không chỉ muốn ghi chúng vào đĩa mà tôi muốn đảm bảo rằng dữ liệu đã được ghi đầy đủ và sẽ tồn tại -xuống.Làm thế nào để bạn lưu dữ liệu vào đĩa từ .NET?
Những người khác dường như thiết kế các cách mã hóa cấu trúc dữ liệu phong phú trong bảng cơ sở dữ liệu dạng phẳng dưới dạng bảng tra cứu từ nút cha sang con. Điều này tạo điều kiện cho chạy các truy vấn SQL chống lại các dữ liệu nhưng tôi không cần cho rằng: Tôi chỉ muốn lưu và tải cây của tôi.
Giải pháp rõ ràng là lưu trữ mọi thứ dưới dạng blob trong cơ sở dữ liệu: một mục nhập duy nhất có thể chứa chuỗi dài. Đó có phải là lạm dụng cơ sở dữ liệu hoặc thực tiễn được khuyến nghị không? Một giải pháp khác có thể là sử dụng một cơ sở dữ liệu XML? Có bất kỳ lựa chọn thay thế cho cơ sở dữ liệu mà tôi nên xem xét?
Cuối cùng, tôi đang làm điều này từ F # do đó, một giải pháp chìa khóa trao tay cho sự bền bỉ dữ liệu từ NET sẽ là lý tưởng ...
EDIT: Xin lưu ý rằng định dạng (ví dụ serialization) là không thích hợp như tôi có thể trivially chuyển đổi giữa các định dạng với F #. Đây là về việc thừa nhận rằng một ghi đã được hoàn thành tất cả các con đường xuống cửa hàng không dễ bay hơi (tức là đĩa đĩa) và không có phần nào của dữ liệu văn bản vẫn được giữ trong kho lưu trữ dễ bay hơi (ví dụ: bộ đệm RAM) để Tôi có thể tiếp tục an toàn trong kiến thức đó (ví dụ: bằng cách xóa phiên bản cũ của dữ liệu khỏi đĩa).
Re "giải pháp chìa khóa trao tay" - một số (không phải tất cả) cấu trúc F # có thể nằm ngoài cửa sổ * điển hình mong đợi bởi nhiều lớp kiên trì - sẽ sử dụng một lớp lớp DTO (ngay trước khi serialization) được chấp nhận nếu nó đơn giản hóa mọi thứ? Ngoài ra - Tôi nghi ngờ bạn có thể muốn xem xét các phần * serialization * và * ACID * một cách riêng biệt. –
Nếu (xem nhận xét của bạn về Reed) khía cạnh tuần tự hóa không phải là vấn đề, thì có lẽ là bất kỳ cơ sở dữ liệu ACID * tài liệu nào *. –
@Marc: "Cơ sở dữ liệu tài liệu ACID". Tuyệt vời, cảm ơn! –