コアデータフィールドにTwitterのツイートID(およびその他のTwitterデータアイテムID)を保存する最良の方法は何ですか?これは、つぶやき(および他のTwitterデータ)をローカルにキャッシュするためのもので、ローカルデータをサーバー側のデータとリンクするためのプライマリユニーク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ビット符号付き整数として文字列
- アズ
- (コアデータは、符号なし整数型を持っていません)主STRを解析
- 整数オーバーフロー(符号オーバーフロー):10進数
オプション(1)私は予見することができるに、2つの危険性を有していますその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