Google+には非常に長いユーザーIDがあります
104560124403688998123
(21文字)、BIGINTフィールドに入力することはできません(符号なしではありません)
そのようなIDにはどの列タイプを使用しますか?
varcharは良い考えではないと思います
Google+には非常に長いユーザーIDがあります
104560124403688998123
(21文字)、BIGINTフィールドに入力することはできません(符号なしではありません)
そのようなIDにはどの列タイプを使用しますか?
varcharは良い考えではないと思います
Google IDの長さが予測可能な場合は、静的を使用しchar(length)
、それにインデックスを追加して、(内部)整数の主キーを作成します。アプリケーション内で、データを整数の主キーにマップします。したがって、誰かがgoogle idで検索した場合、このgoogle idの整数主キーを検索し、残りのクエリを整数主キーで実行します。
したがって、スキーマは次のようになります。
マッピングテーブル:
id (integer) | google_id (char(length))
したがって、コメントなどの別のテーブルを作成する場合は、主キーを使用しますid
。特定のgoogleidのすべてのコメントを検索する場合は、最初に内部IDを取得してから、コメントを結合します。このように、予測可能な長さの静的なインデックス付きcharフィールドにクエリ基準が1つしかない場合、他のすべての結合とクエリは整数キーを使用します。
Facebookで使用するのと同じように使用します:varchar。
グーグルからの公式の推薦は見つかりませんが、小数21,0の使用は正しく機能します。
python on appengineでは、ndb.StringPropertyを使用してデータを保存し、正規表現\ d {15}を使用して検証するため、少し余裕があります。このフィールドを検証するための実際の正規表現が何であるかを知ることは本当に素晴らしいことです