我正在研究一個應用程序,該程序允許用戶通過facebook
或twitter
進行註冊,我希望能夠從這些網站使用他們的個人數據,並想知道我應該如何存儲它。這裏是我想出迄今:用於存儲來自外部網站的用戶數據的數據庫設計模式
的user
表將存儲應該是目前不論如何,用戶註冊信息,如first_name
。
user_property
該表將工作爲key-value
緩存和存儲信息的特定於facebook
或twitter
(由origin
字段表示)。我將存儲可作爲API
調用或SQL
個別查詢的一部分的屬性,如用戶的facebook id
,我將存儲JSON
格式的其他API
調用的調用結果,例如用戶的facebook friends
。
這樣:
- 我有共同的信息
user
表,使用一個單一SELECT
我可以得到用戶的一些基本有用的信息 - 我有一些額外的屬性從
facebook/twitter
(例如,用戶ID來)單獨存儲,我仍然可以用JOIN
查找user
和user_property
。 - 我可以檢索過於昂貴的存儲標準化的信息(例如,創建一個表來存儲朋友的朋友,並且每個朋友有一個表項)仍然有
JOIN
,位於user
和user_property
之間。
這裏是什麼我不知道現在:
Q1:難道這是一個有點可持續的數據庫設計還是我得到它錯了,會碰到一些問題,如果是這樣,哪個? Q2:當存儲頻繁變化的信息(例如朋友/追隨者列表)時,你如何保持信息是最新的(你是否將信息存儲在數據庫中?如果是的話,你用什麼標準/觸發來決定何時再次提取信息)?
您應該仔細閱讀您正在考慮使用的API的服務條款。他們中的大多數不允許您永久存儲通過其API檢索的任何數據(僅緩存一小段時間)。 –
感謝您的信息。我猜這部分答案是'Q2',因爲如果服務條款說'你只允許緩存24小時',那麼通過每隔24小時提取一次信息,我會遵守這些條款。 – Max
此外,反引號僅用於格式化代碼(如變量或函數名稱)。當您將它用於各種其他術語時,它會讓您感到困惑...... –