UUID
UUID (ゆーゆーあいでぃー)
UUID とは、 Universally Unique Identifier の略。
「Universally Unique」、つまり、世界中で重複しないIDのこと。
では、「Universally Unique ではないID」とはどういうものかというと、通常のIDのこと。
たいていのデータベース製品では、各テーブルのデフォルトのIDは数値。
新しいレコードが追加されるたびに ID が割り振られるが、そのIDの値は、 1, 2, 3, ... と、1 から順番に割り振られていくのが普通。
これだと、そのテーブル内では重複しない。
しかし、別のテーブルもまたIDは 1, 2, 3, ... と割り振られていくので、これは、「Universally Unique」ではない。
UUID は、UUID用の生成アルゴリズムに従って生成され、以下のような類の値を取る。
6bbecba2-a915-4a0f-ad53-55389c605ebb
この値は、規定のアルゴリズムに則って生成されたものであれば、世界中のどこで探しても、別のところで生成された同じ値のものを見つけることはまずできないとされている。
「何万年に1回みつかるかどうか」とか、そういうレベルの話(数字は適当) 。
UUIDを使う理由は、主に2つある。
1つは、IDを推測されたくない場合。
たとえば、このサイトの「ITセンスがよくなるエクセル講座」のページは以下のもの。
ここで、最後の「9」は、講座データベースでのこの講座のIDをそのまま利用している。
https://forum.pc5bai.com/lesson/course/9/
となると、「さて、ほかのページのIDは、8とか10とかだな」と、推測されやすくなる。
この状況は、システムの脆弱性をつこうと種々のページの動作を調査している悪意ある利用者に有利に働く。
そこで、そのような状況を避けたいならば、講座のIDをUUIDのような値にする。
UUIDの使途はもう1つは、データベースのテーブルが分散している場合。
世界規模で提供されているサービス(たとえばTwitter)では、利用者データ(たとえばツイート)を保存するテーブルがどこかにある1台のデータベースサーバ内の1つのテーブルに収まっているわけではない。
このような状況では、以下の2つの方法のどちらを選択するかとなれば、後者のほうが圧倒的に容易な実装なので、IDには、UUIDが選択されることになる。
-
実装アイデア1:
- 個別のデータベースサーバが利用者データを保存する都度IDとして利用可能な数値を調べる
- 他のデータベースサーバにはその値を使わないようにと通知し、同意を得る
- その数値をキーとしてデータを保存する
-
実装アイデア2:
- IDはUUIDとする
掲載用語一覧:
TOPへ(新着順に表示できます)i18n
アセンブリ言語 (assembly language)
アンスコ
イテラブル (iterable)
イテレート (iterate)
イミュータブル (immutable)
インスタンス (instance)
WSGI
ウェルノウンポート (well known port)
API
SQL
m17n
MTVフレームワーク (mtv framework)
MVCフレームワーク (mvc framework)
l10n
LTS
演算子 (operator)
オブジェクト指向プログラミング (object oriented programming)
仮想環境 (virtual environment)
関心の分離 (separation of concerns)
git
github
キャメルケース (Camel Case)
クッキー (Cookie)
クライアント (client)
クラス (class)
クラスの継承 (class inheritance)
CRUD
ケバブケース (kebab case)
高階関数 (high order function)
コンパイラ (compiler)
サーバ (server)
CMS
JSON
識別子 (identifier)
辞書 (dictionary)
車輪の再発明 (reinventing the wheel)
シリアライズ (seralize)
スネークケース (snake case)
セッション (Session)
多重継承 (multiple inheritance)
dunder
ディストリビューション (distribution)
デシリアライズ (deserialize)
DRY
認可 (authorization)
認証 (certification)
パスカルケース (Pascal Case)
ハッシュ (hash)
バッテリーインクル-デッド (battery included)
バリデーション (validation)
引数 (argument)
ビルトイン (built in)
フレームワーク (framework)
プロトコル (protocol)
ポート番号 (port number)
メソッド (method)
メンバー (member)
UUID
ライブラリ (library)
LAMP
リクエストメソッド (request method)
RESTful
レンダリング (rendering)
この用語集はこんな人が書いています
2025年04月22日 05:44
AIユーザさん
2025年04月22日 05:42
AIユーザさん
2025年04月19日 19:19
小川 慶一さん
2025年04月18日 09:16
AIユーザさん
2025年04月13日 06:10
AIユーザさん