簡體   English   中英

SQLite 數據庫,用於 Android 應用程序,具有潛在的多個用戶

[英]SQLite database for Android app with potential multiple users

我有一個帶有 SQLite 數據庫的應用程序,用於存儲用戶帳戶的信息。 我在假設應用程序只有一個用戶的情況下設計了數據庫。 因此,用戶的 ID 不存儲在數據庫中(但它存儲在服務器上的中央數據庫中)。 但是,可以注銷應用程序並讓其他用戶登錄,但目前的問題是,他們的數據被下載然后附加到其他用戶的數據中。 這不是我想要發生的,但我不確定如何最好地更改數據庫設計來解決這個問題。 我曾想過:

  1. 每個用戶一個數據庫。 如果用戶只在他們朋友的手機上登錄一次並且再也不會登錄,可能會導致不必要的數據存儲。 另外我想這可能很難管理。
  2. 將用戶 ID 列添加到所有表,因此追加不會導致問題。 還有(1)有的不必要的數據問題,並且失去了1的模塊化。
  3. 用戶注銷時擦除數據庫。 如果用戶在服務器上有很多數據,應用程序啟動時同步數據需要很長時間(這將在另一個線程上完成,但仍然很痛苦)。

這些方法之一好嗎? 還是有更好的方法來做到這一點?

對於選項 1,我會選擇 go。將其保存為單獨的文件將確保擁有多個數據庫不會對性能產生任何影響。

您可以將 append 的用戶 ID 改為數據庫文件名。 如果您有超過 4 個(或者如果您超過一定數量的數據),您可以擁有某種 LRU 系統,您可以在其中自動刪除最舊的數據庫。

此選擇的具體細節取決於您,因為您知道要使用多少數據存儲空間,以及有多少用戶可能在同一設備上使用該應用程序。

這實際上取決於您的要求,但是第三個選項似乎不太實用。 如果您想這樣做,那么它與卸載並重新安裝您的應用程序相同。

我可能更傾向於使用選項 2,但這取決於您想在數據庫中執行的操作。 例如,如果您想要跨所有用戶而不是個人的統計信息或查詢,以及是否存在用戶之間共享的公共數據。

如果您擔心存儲大小,請編寫一個服務來清除屬於任何未在特定時間范圍內登錄的用戶的數據。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM