2009-04-16 40 views
6

Tôi đang xây dựng một ứng dụng dựa trên một bảng duy nhất có cột có văn bản. Thỉnh thoảng, một cột liền kề sẽ có một hình ảnh. Tốt hơn là lưu trữ hình ảnh này dưới dạng BLOB trong SQLITE hay tôi nên lưu trữ chúng trên hệ thống tệp và tham chiếu chúng từ chương trình của tôi. Cảm ơn!SQLITE Blob HOẶC hệ thống tệp cho hình ảnh

+0

Chỉ để làm rõ - đây là dành cho ứng dụng iPhone, đúng không? – AnonJr

Trả lời

2

EDIT:

didnt nhận ra rằng mình có nghĩa là cho môi trường iPhone đặc biệt. Trong trường hợp đó tôi sẽ sử dụng DB chỉ vì sự đơn giản của việc có tất cả nội dung ở một nơi. Bạn sẽ không phải lo lắng về khả năng mở rộng vì nó không giống như iphone của bạn sẽ được sử dụng như một máy chủ hoặc bất cứ điều gì.

gốc đáp ứng:

tôi không có bất kỳ liên kết để trở lại này lên, nhưng tôi nhớ đọc trong một số nghiên cứu rằng "cắt đứt" là 1 MB cho hiệu quả blob. Nhưng điều này có thể di chuyển lên đến 10 MB với một mảng đĩa đủ nhanh. Hoàn toàn phụ thuộc vào hệ thống. Vì vậy, về cơ bản, cho hiệu quả của bạn cắt, bất kỳ dữ liệu nhỏ hơn mà tốt hơn sẽ được phục vụ bởi DB, bất cứ điều gì lớn hơn, chỉ cần chỉ số trong DB và để lại trong một bộ nhớ cache tập tin.

+0

Anh ấy đang sử dụng iphone, vì vậy bản thân đĩa không thể nâng cấp được. – Kevlar

+0

ahh, không thấy phần đó. –

1

Nó thực sự phụ thuộc vào ứng dụng của bạn. Có những hình ảnh được lưu trữ trong cơ sở dữ liệu sẽ làm cho cuộc sống của bạn dễ dàng hơn khi bạn dễ dàng truy cập chúng trong một điểm thay vì đưa chúng vào các tệp riêng biệt có thể bị mất. Mặt khác, nhiều hình ảnh, mà là khá lớn, có thể chứng minh quá nhiều cho một cơ sở dữ liệu SQLite. Trong tình huống của bạn, tôi sẽ chỉ tham chiếu chúng trong cơ sở dữ liệu.

3

Tệp sẽ khiến bạn ít gặp sự cố trong thời gian dài. Bạn thực sự không muốn phân phối tấn tệp từ máy chủ cơ sở dữ liệu của mình, đặc biệt khi bạn mở rộng

+1

Các tệp sẽ giúp tải hình ảnh một cách hiệu quả hơn. Nếu bạn sử dụng [UIImage imageNamed: @ "blah.png"], nó sẽ tải hình ảnh vào RAM có thể xóa và tải/dỡ nó ra khỏi tập tin khi cần thiết (tức là khi nó không còn xem được nữa và bạn bị chặt vào bộ nhớ nó bị xóa và sau đó được tải lại khi có thể xem lại) – Gabe

+0

Chà ... vì vậy API được kết hợp với hệ thống tệp chứ không phải là loại trừu tượng? ... –

2

Tôi thích giữ hình ảnh trong hệ thống tệp vì UIImage có thể lưu trữ tệp hình ảnh & tự động lấy chúng khỏi bộ nhớ khi cần. Chỉ cần cẩn thận không thay đổi hoặc xóa tệp hình ảnh được tải vào UIImage hoặc bạn sẽ gặp sự cố hoặc các lỗi lạ khác.

3

Giả sử hình ảnh bạn định sử dụng không quá lớn và không có số lượng cắt cổ trong số chúng tôi sẽ đi với cơ sở dữ liệu.

Tôi hiện đang sử dụng cơ sở dữ liệu Sqlite trên một số thiết bị Windows Mobile và WinCE khác nhau với hơn 10.000 hình ảnh nhỏ được lưu trữ dưới dạng đốm màu và nó hoạt động rất tốt.

Tôi đã thấy phần mềm tương tự như phần mềm chạy trên cùng một phần cứng sử dụng tải hình ảnh dựa trên tệp và tốc độ chậm hơn đáng kể. Tất nhiên điều này là trên WinCE và phần mềm khác nhau, vì vậy đó không phải là thử nghiệm tốt nhất.

Tôi tìm thấy một cơ sở dữ liệu đơn giản hơn nhiều so với nhiều tệp hình ảnh.

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