タグ

関連タグで絞り込む (2)

タグの絞り込みを解除

ユニークキーに関するhoge256のブックマーク (3)

  • Facebook, Twitter, Instagram等がどうやってIDを生成しているのか まとめ - Qiita

    まえがき データにIDを持たせたいとき、単純な方法としては、DBの提供するauto incrementを使う場合やUUIDを利用することがある。それぞれの方法の利点欠点は以下の通り。 データベースのauto incrementを使う場合 利点: 特別な実装が必要ない 欠点: DBを1台で運用するとデータベースがパフォーマンス・障害のボトルネックになる DBを二台にするとIDのユニークさや順序の保証が困難 UUID(v4)※1を利用する場合 利点: 分散環境で各々がIDを生成しても衝突しない IDを公開したくない場合に、推測されにくいIDを生成できる 欠点: 128ビット必要、DBのインデクシングやプログラミング言語で扱うときに不利なことがある IDから時間の情報が失われる、例えば2つのIDを比べてどちらが古い投稿か判断できない 世界の大企業がどうしてるか 調べてみると多くの企業がブログなど

    Facebook, Twitter, Instagram等がどうやってIDを生成しているのか まとめ - Qiita
  • 短縮ハッシュ値の生成 - 怒涛のめもめもリンク集

    短縮ハッシュ値の生成 データベース(SQLite)への値の特定用idとして「id integer primary key」とはしているが、これだと最終項目を削除した際に新規追加でその値を取るものが出てきて都合が悪い(削除せずにフラグでオフにしてもいいかもしれないが、それはそれで…)。 →「integer primary key」の削除時の重複除外は「autoincrement」を付ければよかったらしい。 AUTOINCREMENT – テーブルの作成 – SQLite入門 このため別の文字列idとして、phpだとuniqid()関数(とrand()やmd5()と組み合わせたり)を使ったりしている: PHP: uniqid – Manual より高速に、推測困難な一意なIDを生成する方法 – [サンプルコード/PHP] ぺんたん info md5は衝突性(コリジョン)があることが証明されてい

  • 短縮URLなどのランダム文字列を作りたい

    Youtube だったり bit.ly を見ていると URL の後ろに英数字の文字列がついていますよね。 色々方法はあると思いますが、そのままランダムな文字列をキーとしてデータベースに登録しても、テーブルに登録される情報が膨大になってくるとどうしても速度的な問題が発生してきます。 文字列をキーとして扱うのはデータベースにとって都合が悪いことが多いのです。 やはり高速なのは数値型の整数フィールドを主キーとして、その主キーを WHERE 句で指定して絞り込む方法です。 そこで、調べていていいなと思ったのは基数変換を使った方法。 例えば32進数や63進数、64進数などを使って、URL にはその N 進数の文字列を使ってアクセスします。 例: http://example.com/index.php?key=aY8rszM データベースにはこのキー文字列を10進数に変換した値を主キーとして保存しま

    短縮URLなどのランダム文字列を作りたい
  • 1