Tôi đang nghĩ về việc sử dụng/triển khai một số loại khóa-giá trị (hoặc tài liệu) được nhúng cho ứng dụng Windows trên máy tính để bàn của tôi. Tôi muốn có thể lưu trữ các loại dữ liệu khác nhau (theo dõi GPS sẽ là một ví dụ) và tất nhiên có thể truy vấn dữ liệu này. Số lượng dữ liệu sẽ được như vậy mà nó không thể tất cả được nạp vào bộ nhớ cùng một lúc.Lưu trữ dữ liệu không quan hệ (nosql) nhúng
Tôi đang suy nghĩ về việc sử dụng sqlite làm công cụ lưu trữ cho kho khóa-giá trị, chẳng hạn như y-serial, nhưng được viết bằng .NET. Tôi cũng đã đọc về FriendFeed's usage of MySQL to store schema-less data, là một con trỏ tốt về cách sử dụng RDBMS cho dữ liệu phi quan hệ. sqlite có vẻ là một lựa chọn tốt vì tính đơn giản, tính di động và kích thước thư viện của nó.
Câu hỏi của tôi là liệu có bất kỳ tùy chọn nào khác cho một cửa hàng không liên quan được nhúng không? Nó không cần phải được phân phối và nó không phải hỗ trợ các giao dịch, nhưng nó có thể truy cập được từ .NET và nó phải có kích thước tải xuống nhỏ.
CẬP NHẬT: Tôi đã tìm thấy một bài viết có tiêu đề SQLite as a Key-Value Database so sánh sqlite với Berkeley DB, một thư viện lưu trữ khóa-giá trị được nhúng.
Nhưng anh ấy muốn có một cửa hàng không có lược đồ .... –
Astor là đúng: Tôi muốn tránh mô hình quan hệ. Tôi muốn có thể lưu trữ thực tế bất kỳ loại dữ liệu nào mà không cần phải chuẩn bị lược đồ cơ sở dữ liệu cho nó. Ngoài ra, có một mô hình quan hệ chặt chẽ có thể có vấn đề nếu cấu trúc dữ liệu thay đổi sau này - tôi sẽ cần viết các kịch bản lệnh SQL thay đổi cho dữ liệu hiện có trong cửa hàng. –
Tôi biết những gì ông đang tìm kiếm nhưng các công cụ như NHibernate với thế hệ lược đồ ẩn các khía cạnh quan hệ gần như hoàn toàn. Bạn không cần phải định nghĩa bất kỳ lược đồ nào nhưng chỉ lập bản đồ cho bạn các lớp (thực sự là thẳng về phía trước với Fluent NHibernate) và khi các lớp của bạn thay đổi, bạn sẽ cần thực hiện một số cập nhật trong bất kỳ chiến lược kiên trì nào. –