[解決済み】GUID / UUIDデータベースキーの利点と欠点
2022-04-15 21:03:15
質問
私は過去にいくつかのデータベースシステムで作業したことがありますが、もしデータベースのキーがすべて GUID / UUID の値です。何度かこの道を歩もうと考えたことがありますが、特にパフォーマンスや電話では読めないURLなど、常にちょっとした不安がつきまといます。
データベースでGUIDを広範囲に扱ったことのある方はいらっしゃいますか?また、そのような方法でどのような利点があり、どのような落とし穴がありそうですか?
どのように解決するのですか?
メリット
- オフラインで生成できる
- レプリケーションが簡単になる(int型は非常に難しい)
- ORMに好かれる
- アプリケーション間で一意であること。だから、CMSのPK(guid)をアプリ(guid)で使えば、絶対に衝突しないことがわかる。
デメリット
- 使用するスペースが大きくなるが、スペースが安い(笑)
- 挿入順をIDで注文できない。
- URLで醜く見えることがありますが、本当に、URLでリアルなDBのキーを入れているのはWTFですか!?(この点については、以下のコメントで議論されています。)
- 手動デバッグがしにくいが、それほど難しくはない。
個人的には、それなりの規模のシステムであれば、ほとんどのPKに使っていますが、あちこちで複製されているシステムで"trained"を受けたので、どうしても必要だったのです。YMMV。
重複データというのはくだらないと思います。どうやったって重複データはできてしまうのですから。サロゲートキーは、私がこれまで働いてきたところではたいてい嫌われます。しかし、私たちはWordPressのようなシステムを使用しています。
- 行の一意のID(GUID/何でも)。ユーザーには決して見えません。
- 公開IDは、何らかのフィールドから一度だけ生成される(例:タイトル - the-title-of-the-articleとする)。
UPDATEです。 これはよく+1されるのですが、GUID PKの大きな欠点を指摘しておこうと思ったのです。クラスター化インデックス
多くのレコードがあり、GUIDにクラスタ化されたインデックスがある場合、挿入パフォーマンスは最悪です。
したがって、挿入パフォーマンスが必要な場合は、自動インクINTを使用し、誰かと共有したい場合はGUIDを生成するとよいでしょう(たとえば、URLでユーザーにそれを表示する)。
関連
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] SequelizeでfindOrCreateを使う方法
-
[解決済み] DB2 ログファイルの制限、SQLCODE。-964
-
[解決済み] Oracle tnsnames.oraのSIDとService nameの違いについて
-
[解決済み] Hi/Loアルゴリズムとは?
-
[解決済み】すべてのテーブルに主キーを持たせるべきですか?
-
[解決済み】Djangoモデル - 大文字小文字を区別しないクエリ/フィルタリング
-
[解決済み】phpMyAdmin - Error > Incorrect format parameter?
-
[解決済み】BASE用語の解説
-
[解決済み】データベースのMongoDBダンプを作成する方法は?
-
[解決済み】pgadminでherokuのデータベースに接続する。