Đây không phải là câu trả lời trực tiếp cho câu hỏi của bạn, nhưng tôi có một số kinh nghiệm sử dụng truy cập ngẫu nhiên cho các blob (lớn) trong SQLite và tôi khuyên bạn không nên sử dụng nó nếu có thể. Đây là lý do:
Blobs tách hoàn toàn định dạng truy vấn SQL. Nếu dữ liệu blob của bạn cần bất kỳ loại xử lý nào, chắc chắn nó sẽ cần lọc. Dù bạn có cơ chế nào để xử lý việc lọc trong SQL thì sẽ vô ích trong vấn đề này.
Xử lý các đốm màu nhị phân được bao bọc trong cơ sở dữ liệu trái ngược với dữ liệu nhị phân trong tệp thô giới hạn tùy chọn của bạn. Bạn sẽ không thể đọc ngẫu nhiên và ghi vào dữ liệu cùng một lúc từ nhiều quy trình, có thể với các tệp. Bạn không thể sử dụng bất kỳ công cụ nào có liên quan đến dữ liệu này và chỉ cung cấp giao diện I/O tệp. Bạn không thể cắt bớt hoặc thay đổi kích thước blob. Các tệp đơn giản hơn rất nhiều.
Có vẻ thuận tiện khi có mọi thứ chứa trong một tệp, vì nó đơn giản hóa việc sao lưu và chuyển, nhưng nỗi đau khi làm việc với các đốm màu đơn giản là không đáng.
Vì vậy, với tư cách luật sư của bạn, tôi khuyên bạn nên viết blob của bạn dưới dạng tệp thô vào hệ thống tệp và chỉ lưu trữ tham chiếu đến tên tệp trong cơ sở dữ liệu của bạn. Nếu các đốm màu của bạn khá nhỏ và chắc chắn không phát triển, hãy quên lời khuyên của tôi.
Vâng, đôi khi của tôi có thể phát triển , nhưng đó là trong quá trình nâng cấp đầy đủ các dịch vụ, do đó, "an toàn" để nói rằng chúng có độ dài không đổi trong "chu kỳ sản phẩm" (tuy nhiên dài hoặc ngắn có thể) –
Nhưng, tôi hoàn toàn đồng ý với mọi từ bạn nói , Tôi thực sự muốn tránh các đốm màu, nhưng vì cách các thông số kỹ thuật được đặt ra, tôi không có lựa chọn:/ –
Thumbs up. Anh ấy sẽ cần rất nhiều lời khuyên pháp lý trước khi điều này kết thúc. : P – Cray