Tôi có ứng dụng iPhone (iOS) giữ dữ liệu trong cơ sở dữ liệu SQLite cục bộ trên mỗi thiết bị. Các ứng dụng được sử dụng để quản lý một tài khoản ngân hàng ảo cho trẻ em để theo dõi trợ cấp của họ, chi tiêu, tiết kiệm, vv (KidsBank và KidsBank miễn phí). Tôi nhận được rất nhiều yêu cầu từ cha mẹ để cung cấp khả năng đồng bộ hóa giữa cha mẹ và thậm chí có thể là thiết bị iOS dành cho trẻ em của họ.Ứng dụng iPhone (iOS) sử dụng sqlite cục bộ và muốn đồng bộ giữa nhiều thiết bị
Tôi đã xem xét một số tùy chọn, nhưng tất cả đều tẻ nhạt và không tầm thường vì điều này về cơ bản đòi hỏi phải nhân rộng cơ sở dữ liệu hoặc kiến trúc mới. Bất kỳ giao dịch nào trên bất kỳ thiết bị nào cũng lý tưởng sẽ xuất hiện (đồng bộ) với tất cả các thiết bị trong gia đình (càng sớm càng tốt).
Lý tưởng nhất, tôi muốn đồng bộ hóa sẽ được tự động & tay tắt
tùy chọn bao gồm (1) Sử dụng iCloud (2) Sử dụng kết nối mạng trực tiếp giữa các thiết bị (wifi) (3) Sử dụng một cơ sở dữ liệu phía máy chủ và web dịch vụ (JSON/RESTful)
(1) iCloud PRO: iCloud cung cấp phân phối tập tin đồng bộ hóa CON: iOS 5 yêu cầu, các file cơ sở dữ liệu SQLite không thể được đồng bộ hóa thông qua iCloud, sao chép cơ sở dữ liệu cổ điển (và không tầm thường)
Sử dụng iCloud là một sự cân nhắc mạnh mẽ. Các thiết bị có thể ghi nhật ký giao dịch tùy chỉnh vào một tệp iCloud trong đó có một tệp cho mỗi thiết bị được xác định bằng một ID thiết bị duy nhất. Id duy nhất toàn cầu (GID) và dấu thời gian thay đổi cuối cùng được thêm vào mỗi bảng. Tất cả các thiết bị tham gia sẽ viết một ID thiết bị duy nhất cho một tệp riêng biệt trong iCloud. Khi khởi chạy ứng dụng hoặc khi thay đổi tệp nhật ký, ứng dụng chạy trên một thiết bị cụ thể sẽ tải tất cả các giao dịch nhưng không phải tất cả các giao dịch được tạo trên thiết bị của riêng chúng từ các tệp qua iCloud. Thiết bị tham gia cuối cùng để tải giao dịch sẽ xóa giao dịch khỏi tệp. Nếu thiết bị không phải là thiết bị tham gia cuối cùng, nó chỉ đơn giản là ký tắt trên giao dịch và cho phép tệp đồng bộ hóa qua iCloud. Có thể có các thuật toán tốt hơn, nhưng ý tưởng cơ bản là giống nhau - sử dụng iCloud để đẩy xung quanh nhật ký thay đổi.
(2) Kết nối wifi trực tiếp sẽ cho phép hai thiết bị được tích hợp theo cách thủ công. PRO: Không phức tạp để quản lý quá trình đồng bộ hóa CON: Người dùng phải chọn đồng bộ hóa từ ứng dụng của họ khi kết nối trên wifi
(3) Di chuyển toàn bộ cơ sở dữ liệu hoặc quản lý giao dịch trên máy chủ. PRO: Đồng bộ hóa không còn cần thiết CON: Vấn đề điển hình cho ứng dụng hướng web. Cần phải viết lại lớp dịch vụ cơ sở dữ liệu (hiện tại trong SQL) để sử dụng dịch vụ web từ xa. Chi phí chạy một máy chủ (tôi sẽ sử dụng AWS).
Có ai có thể cung cấp một số kinh nghiệm trong việc đồng bộ hóa SQLite giữa nhiều thiết bị không? Tôi đang nghiêng về hướng sử dụng iCloud để đẩy các bản ghi giao dịch. Tôi đang cố gắng giảm thiểu chi phí và sự phức tạp.
Câu hỏi hay ... +1 –
iCloud có yêu cầu tất cả các thiết bị phải nằm trên cùng một ID Apple không? Điều đó sẽ không hiệu quả trong gia đình tôi. –