2011-12-28 40 views
15

Tôi sẽ phát triển một ứng dụng Android với nhiều dữ liệu (tệp json với một số hàng và CSV cho dữ liệu đồ họa với nhiều hàng), dữ liệu này thay đổi sau 5 phút và thay thế tất cả dữ liệu trước đó (hoặc chủ yếu).Tệp JSON VS SQLite android

Phương pháp tiếp cận tốt nhất để thiết kế điều này là gì? Tôi có 2 tùy chọn:

  • Lưu tất cả dữ liệu trong một sqlite db và đồng bộ hóa dữ liệu này với IntentService.

  • lưu dữ liệu trong tệp json và csv và thay thế dữ liệu này sau mỗi 5 phút.

Cách tiếp cận nào sẽ có hiệu suất tốt nhất? Điều này xem xét thời gian phân tích các tệp, sắp xếp dữ liệu, thời gian tải xuống và tính nhất quán của dữ liệu.

bất kỳ ý tưởng nào khác?

PD: Tôi cần một hệ thống bộ nhớ cache quá, trong trường hợp nếu tôi không có internet và tôi cần các dữ liệu được lưu trữ trước

+0

Từ nơi bạn sẽ nhận được nhiều dữ liệu? –

+0

dữ liệu tài chính từ máy chủ web của chúng tôi –

Trả lời

12

Sqlite chủ yếu được sử dụng khi bạn muốn dữ liệu được lưu và sử dụng trong tương lai. Trong trường hợp dữ liệu của bạn đang thay đổi mỗi 5 minutes do đó tốt hơn là có JSON vì mỗi lần tạo Database connectionstoreretrieve sau 5 minutes sẽ mất một thời gian.

UPDATE:

Tôi cũng đã có ứng dụng tương tự, trong đó dữ liệu được thay đổi mỗi lần. Trong trường hợp đó tôi đã sử dụng Map<K, V>ArrayList để duy trì các giá trị, bởi vì khi dữ liệu đang thay đổi mọi lúc, tôi nghĩ rằng nó không khả thi để lưu trữ dữ liệu trong Sqlite mọi lúc. Nó cần nhiều thời gian để thực hiện lưu trữ kết nối DB, truy xuất, cập nhật dữ liệu trong Sqlite.

-4

Mục đích của JSON và SQLite là hoàn toàn khác nhau từ mỗi khác

  • JSON = được sử dụng gửi và nhận dữ liệu giữa máy chủ và máy khách.
  • SQLite = được sử dụng để lưu trữ dữ liệu.
+12

JSON có thể được sử dụng để lưu trữ ngày. I E. Nó là phổ biến cho tập tin cấu hình ... – user457015

+2

REST được sử dụng để gửi và nhận dữ liệu giữa máy chủ và máy khách. JSON và SQLite đều lưu trữ dữ liệu. Nhưng có, bạn có thể Đăng dữ liệu JSON bằng các phương thức RESTful nhanh hơn. –

+0

JSON cũng được sử dụng để lưu trữ dữ liệu. – VSG24

0

Lý tưởng nhất là điều này phụ thuộc vào việc bạn có cần dữ liệu trước đó hay không, có thể so sánh dữ liệu đó với dữ liệu hiện tại, v.v. Theo quy tắc ngón tay cái, tôi sử dụng SQLite khi bạn cần dữ liệu được lưu trữ và truy xuất ở giai đoạn sau. Trong trường hợp dữ liệu chỉ để hiển thị, tôi thà giữ nó trong bộ nhớ chương trình. Tâm trí bạn điều này không liên quan đến hoạt động tập tin.

+0

Tôi cũng cần một hệ thống bộ nhớ đệm, trong trường hợp nếu tôi không có internet và tôi cần dữ liệu đã lưu trước đó –

+0

thì không sao chép/xóa dữ liệu trừ khi bạn nhận được dữ liệu mới ở định dạng đúng. Bằng cách này, dữ liệu cũ của bạn sẽ tiếp tục ở trong bộ nhớ và đang được sử dụng. – PravinCG

3

tôi khuyên bạn nên sử dụng JSON hoặc một số loại đối tượng serialization trừ:

  • Bạn cần ACID tuân thủ đối với các hoạt động ghi
  • Bạn cần phải báo cáo với các dữ liệu mà có thể liên quan đến việc sao chép dữ liệu vào một RDBMS bên ngoài hoặc
  • Bạn muốn tham gia những đồng lõa trong việc lạm dụng/lạm dụng cơ sở dữ liệu, như thường thấy ngày nay
+0

Hmmm .... ai đó đã ủng hộ tôi về vấn đề này, có lẽ cũng là điểm cuối cùng. Có lẽ tôi cần phải bắt đầu một phong trào. Dù sao, serialization đối tượng cũ tốt thường là con đường để đi. – SPB

7

Ưu điểm của SQLite :

  • Thay đổi là ACID
  • Bạn có thể đưa ra yêu cầu phức tạp nhanh hơn (ví dụ "chỉ cho tôi các trường A, B từ các mục có (C/D)> E")
  • Tôi sẽ đặt cược nhỏ hơn cho dữ liệu lớn (số nguyên được lưu trữ dưới dạng số nguyên thay vì một chuỗi số riêng)
  • Chỉ một nộp
  • Bạn có thể nhập dữ liệu cũ bằng dữ liệu mới một cách dễ dàng
  • Bạn có thể cập nhật dữ liệu hiện tại, ngay cả khi sử dụng nó
  • Concurrency thể được xử lý

Ưu điểm cho JSON/CSV:

  • dễ dàng hơn để gỡ lỗi (plain text)
  • nhanh hơn để làm cho toàn bộ một bản cập nhật (sao chép các tập tin mới + xóa cái cũ)

Đối với câu hỏi ban đầu toàn bộ xóa/thay thế của làm cho dữ liệu JSON/CSV là người chiến thắng.

Tuy nhiên, nếu ứng dụng truy xuất dữ liệu một phần sau mỗi 10 giây và hợp nhất/cập nhật dữ liệu đó với phiên bản trước đó, thì SQLite sẽ là một lựa chọn tốt hơn.