任何想法在覈心數據字段中存儲Twitter的推特ID(以及其他Twitter數據項ID)的最佳方式是什麼?這是爲了本地緩存推文(以及其他推特數據),並且將用作主要唯一ID來將本地數據與服務器端的數據鏈接起來。也就是說,API返回的任何新的ID值將在本地創建一條記錄,而如果本地數據存儲中存在一個現有的ID,其餘數據將從Twitter API返回的任何地方更新。所以在這個領域會有很多取材。如何將Twitter ID存儲在覈心數據對象中
這是針對Mac OS X/iOS的Core Data庫以及使用的基礎持久性存儲區是SQLite。
正如您所知,目前Twitter defines message IDs as 64-bit unsigned integers。在此基礎上,我可以在本地覺得這些選項店的Twitter ID的:
- 作爲64位有符號整數(核心數據不具有一個無符號整型)
- 作爲一個字符串
- 作爲一個十進制
選項(1)具有兩種危險,我可以預見:
- 整數溢出(符號溢出),主要解析STR時表示該ID。
- 如果Twitter溢出64位並擴大其ID值範圍,該怎麼辦?
選項(2)可能效率較低,因爲此字段經常用於提取。
從SQLite 3 does not have a native variable-length number type開始,選項(3)可能不會比選項(2)更有效。
理想的選擇可能是將它存儲爲128位無符號整數,這使得它們與UUID一樣唯一,並且不會像字符串一樣大。但不幸的是,在SQLite中沒有128位無符號整數類型,並且在使用該字段作爲獲取密鑰時,底層持久性存儲中本機不支持的任何內容都可能導致問題。
在此先感謝。
+1。當你需要擔心溢出時,你將對代碼做出更多更改。我會去整型數據類型。 – paulbailey
我只看了一下Twitter如何生成他們的ID(Snowflake模式),結果表明他們也只使用63位,兩者中最重要的41位都是一個時間戳,應該從2010年開始有效69年。這是一個很好的使用有符號整數保證。 https://github.com/twitter/snowflake#readme – adib